openai 6.33.0 → 6.35.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.
Files changed (222) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/README.md +96 -0
  3. package/auth/index.d.mts +4 -0
  4. package/auth/index.d.mts.map +1 -0
  5. package/auth/index.d.ts +4 -0
  6. package/auth/index.d.ts.map +1 -0
  7. package/auth/index.js +11 -0
  8. package/auth/index.js.map +1 -0
  9. package/auth/index.mjs +3 -0
  10. package/auth/index.mjs.map +1 -0
  11. package/auth/subject-token-providers.d.mts +20 -0
  12. package/auth/subject-token-providers.d.mts.map +1 -0
  13. package/auth/subject-token-providers.d.ts +20 -0
  14. package/auth/subject-token-providers.d.ts.map +1 -0
  15. package/auth/subject-token-providers.js +127 -0
  16. package/auth/subject-token-providers.js.map +1 -0
  17. package/auth/subject-token-providers.mjs +121 -0
  18. package/auth/subject-token-providers.mjs.map +1 -0
  19. package/auth/types.d.mts +23 -0
  20. package/auth/types.d.mts.map +1 -0
  21. package/auth/types.d.ts +23 -0
  22. package/auth/types.d.ts.map +1 -0
  23. package/auth/types.js +3 -0
  24. package/auth/types.js.map +1 -0
  25. package/auth/types.mjs +2 -0
  26. package/auth/types.mjs.map +1 -0
  27. package/auth/workload-identity-auth.d.mts +16 -0
  28. package/auth/workload-identity-auth.d.mts.map +1 -0
  29. package/auth/workload-identity-auth.d.ts +16 -0
  30. package/auth/workload-identity-auth.d.ts.map +1 -0
  31. package/auth/workload-identity-auth.js +92 -0
  32. package/auth/workload-identity-auth.js.map +1 -0
  33. package/auth/workload-identity-auth.mjs +87 -0
  34. package/auth/workload-identity-auth.mjs.map +1 -0
  35. package/azure.d.mts +2 -1
  36. package/azure.d.mts.map +1 -1
  37. package/azure.d.ts +2 -1
  38. package/azure.d.ts.map +1 -1
  39. package/azure.js.map +1 -1
  40. package/azure.mjs.map +1 -1
  41. package/client.d.mts +11 -1
  42. package/client.d.mts.map +1 -1
  43. package/client.d.ts +11 -1
  44. package/client.d.ts.map +1 -1
  45. package/client.js +73 -10
  46. package/client.js.map +1 -1
  47. package/client.mjs +73 -10
  48. package/client.mjs.map +1 -1
  49. package/core/EventEmitter.d.mts +11 -0
  50. package/core/EventEmitter.d.mts.map +1 -1
  51. package/core/EventEmitter.d.ts +11 -0
  52. package/core/EventEmitter.d.ts.map +1 -1
  53. package/core/EventEmitter.js +15 -1
  54. package/core/EventEmitter.js.map +1 -1
  55. package/core/EventEmitter.mjs +13 -0
  56. package/core/EventEmitter.mjs.map +1 -1
  57. package/core/error.d.mts +15 -0
  58. package/core/error.d.mts.map +1 -1
  59. package/core/error.d.ts +15 -0
  60. package/core/error.d.ts.map +1 -1
  61. package/core/error.js +34 -1
  62. package/core/error.js.map +1 -1
  63. package/core/error.mjs +31 -0
  64. package/core/error.mjs.map +1 -1
  65. package/index.d.mts +1 -1
  66. package/index.d.mts.map +1 -1
  67. package/index.d.ts +1 -1
  68. package/index.d.ts.map +1 -1
  69. package/index.js +3 -1
  70. package/index.js.map +1 -1
  71. package/index.mjs +1 -1
  72. package/index.mjs.map +1 -1
  73. package/internal/types.d.mts +6 -6
  74. package/internal/types.d.mts.map +1 -1
  75. package/internal/types.d.ts +6 -6
  76. package/internal/types.d.ts.map +1 -1
  77. package/internal/utils/env.js +2 -2
  78. package/internal/utils/env.js.map +1 -1
  79. package/internal/utils/env.mjs +2 -2
  80. package/internal/utils/env.mjs.map +1 -1
  81. package/internal/ws-adapter-browser.d.mts +34 -0
  82. package/internal/ws-adapter-browser.d.mts.map +1 -0
  83. package/internal/ws-adapter-browser.d.ts +34 -0
  84. package/internal/ws-adapter-browser.d.ts.map +1 -0
  85. package/internal/ws-adapter-browser.js +88 -0
  86. package/internal/ws-adapter-browser.js.map +1 -0
  87. package/internal/ws-adapter-browser.mjs +84 -0
  88. package/internal/ws-adapter-browser.mjs.map +1 -0
  89. package/internal/ws-adapter-node.d.mts +27 -0
  90. package/internal/ws-adapter-node.d.mts.map +1 -0
  91. package/internal/ws-adapter-node.d.ts +27 -0
  92. package/internal/ws-adapter-node.d.ts.map +1 -0
  93. package/internal/ws-adapter-node.js +90 -0
  94. package/internal/ws-adapter-node.js.map +1 -0
  95. package/internal/ws-adapter-node.mjs +86 -0
  96. package/internal/ws-adapter-node.mjs.map +1 -0
  97. package/internal/ws-adapter.d.mts +24 -0
  98. package/internal/ws-adapter.d.mts.map +1 -0
  99. package/internal/ws-adapter.d.ts +24 -0
  100. package/internal/ws-adapter.d.ts.map +1 -0
  101. package/internal/ws-adapter.js +11 -0
  102. package/internal/ws-adapter.js.map +1 -0
  103. package/internal/ws-adapter.mjs +8 -0
  104. package/internal/ws-adapter.mjs.map +1 -0
  105. package/internal/ws.d.mts +80 -0
  106. package/internal/ws.d.mts.map +1 -0
  107. package/internal/ws.d.ts +80 -0
  108. package/internal/ws.d.ts.map +1 -0
  109. package/internal/ws.js +153 -0
  110. package/internal/ws.js.map +1 -0
  111. package/internal/ws.mjs +147 -0
  112. package/internal/ws.mjs.map +1 -0
  113. package/package.json +23 -13
  114. package/resources/audio/speech.d.mts +2 -2
  115. package/resources/audio/speech.d.ts +2 -2
  116. package/resources/audio/speech.js +2 -2
  117. package/resources/audio/speech.mjs +2 -2
  118. package/resources/chat/completions/completions.d.mts +1 -1
  119. package/resources/chat/completions/completions.d.ts +1 -1
  120. package/resources/completions.d.mts +1 -1
  121. package/resources/completions.d.ts +1 -1
  122. package/resources/conversations/conversations.d.mts +7 -0
  123. package/resources/conversations/conversations.d.mts.map +1 -1
  124. package/resources/conversations/conversations.d.ts +7 -0
  125. package/resources/conversations/conversations.d.ts.map +1 -1
  126. package/resources/conversations/conversations.js.map +1 -1
  127. package/resources/conversations/conversations.mjs.map +1 -1
  128. package/resources/realtime/calls.d.mts +3 -2
  129. package/resources/realtime/calls.d.mts.map +1 -1
  130. package/resources/realtime/calls.d.ts +3 -2
  131. package/resources/realtime/calls.d.ts.map +1 -1
  132. package/resources/realtime/client-secrets.d.mts +3 -2
  133. package/resources/realtime/client-secrets.d.mts.map +1 -1
  134. package/resources/realtime/client-secrets.d.ts +3 -2
  135. package/resources/realtime/client-secrets.d.ts.map +1 -1
  136. package/resources/realtime/realtime.d.mts +6 -4
  137. package/resources/realtime/realtime.d.mts.map +1 -1
  138. package/resources/realtime/realtime.d.ts +6 -4
  139. package/resources/realtime/realtime.d.ts.map +1 -1
  140. package/resources/realtime/realtime.js.map +1 -1
  141. package/resources/realtime/realtime.mjs.map +1 -1
  142. package/resources/responses/index.d.mts +2 -0
  143. package/resources/responses/index.d.mts.map +1 -1
  144. package/resources/responses/index.d.ts +2 -0
  145. package/resources/responses/index.d.ts.map +1 -1
  146. package/resources/responses/internal-base.d.mts +24 -2
  147. package/resources/responses/internal-base.d.mts.map +1 -1
  148. package/resources/responses/internal-base.d.ts +24 -2
  149. package/resources/responses/internal-base.d.ts.map +1 -1
  150. package/resources/responses/internal-base.js +5 -9
  151. package/resources/responses/internal-base.js.map +1 -1
  152. package/resources/responses/internal-base.mjs +5 -9
  153. package/resources/responses/internal-base.mjs.map +1 -1
  154. package/resources/responses/responses.d.mts +19 -3
  155. package/resources/responses/responses.d.mts.map +1 -1
  156. package/resources/responses/responses.d.ts +19 -3
  157. package/resources/responses/responses.d.ts.map +1 -1
  158. package/resources/responses/responses.js.map +1 -1
  159. package/resources/responses/responses.mjs.map +1 -1
  160. package/resources/responses/ws-base.d.mts +106 -0
  161. package/resources/responses/ws-base.d.mts.map +1 -0
  162. package/resources/responses/ws-base.d.ts +106 -0
  163. package/resources/responses/ws-base.d.ts.map +1 -0
  164. package/resources/responses/ws-base.js +474 -0
  165. package/resources/responses/ws-base.js.map +1 -0
  166. package/resources/responses/ws-base.mjs +470 -0
  167. package/resources/responses/ws-base.mjs.map +1 -0
  168. package/resources/responses/ws.d.mts +9 -38
  169. package/resources/responses/ws.d.mts.map +1 -1
  170. package/resources/responses/ws.d.ts +9 -38
  171. package/resources/responses/ws.d.ts.map +1 -1
  172. package/resources/responses/ws.js +17 -171
  173. package/resources/responses/ws.js.map +1 -1
  174. package/resources/responses/ws.mjs +17 -171
  175. package/resources/responses/ws.mjs.map +1 -1
  176. package/resources/shared.d.mts +1 -0
  177. package/resources/shared.d.mts.map +1 -1
  178. package/resources/shared.d.ts +1 -0
  179. package/resources/shared.d.ts.map +1 -1
  180. package/resources/vector-stores/file-batches.d.mts +9 -5
  181. package/resources/vector-stores/file-batches.d.mts.map +1 -1
  182. package/resources/vector-stores/file-batches.d.ts +9 -5
  183. package/resources/vector-stores/file-batches.d.ts.map +1 -1
  184. package/resources/vector-stores/files.d.mts +3 -1
  185. package/resources/vector-stores/files.d.mts.map +1 -1
  186. package/resources/vector-stores/files.d.ts +3 -1
  187. package/resources/vector-stores/files.d.ts.map +1 -1
  188. package/src/auth/index.ts +9 -0
  189. package/src/auth/subject-token-providers.ts +185 -0
  190. package/src/auth/types.ts +28 -0
  191. package/src/auth/workload-identity-auth.ts +118 -0
  192. package/src/azure.ts +2 -1
  193. package/src/client.ts +112 -9
  194. package/src/core/EventEmitter.ts +16 -0
  195. package/src/core/error.ts +40 -0
  196. package/src/index.ts +2 -0
  197. package/src/internal/types.ts +6 -8
  198. package/src/internal/utils/env.ts +2 -2
  199. package/src/internal/ws-adapter-browser.ts +123 -0
  200. package/src/internal/ws-adapter-node.ts +105 -0
  201. package/src/internal/ws-adapter.ts +30 -0
  202. package/src/internal/ws.ts +193 -0
  203. package/src/resources/audio/speech.ts +2 -2
  204. package/src/resources/chat/completions/completions.ts +1 -1
  205. package/src/resources/completions.ts +1 -1
  206. package/src/resources/conversations/conversations.ts +8 -0
  207. package/src/resources/realtime/calls.ts +3 -2
  208. package/src/resources/realtime/client-secrets.ts +3 -2
  209. package/src/resources/realtime/realtime.ts +6 -4
  210. package/src/resources/responses/index.ts +2 -0
  211. package/src/resources/responses/internal-base.ts +26 -10
  212. package/src/resources/responses/responses.ts +22 -3
  213. package/src/resources/responses/ws-base.ts +609 -0
  214. package/src/resources/responses/ws.ts +23 -186
  215. package/src/resources/shared.ts +2 -0
  216. package/src/resources/vector-stores/file-batches.ts +9 -5
  217. package/src/resources/vector-stores/files.ts +3 -1
  218. package/src/version.ts +1 -1
  219. package/version.d.mts +1 -1
  220. package/version.d.ts +1 -1
  221. package/version.js +1 -1
  222. package/version.mjs +1 -1
@@ -0,0 +1,34 @@
1
+ import type { WebSocketLike } from "./ws-adapter.js";
2
+ /** A generic event listener callback. */
3
+ type Listener = (...args: any[]) => void;
4
+ /** A DOM-style event handler passed to addEventListener/removeEventListener. */
5
+ type DOMEventHandler = (ev: any) => void;
6
+ declare class WebSocket {
7
+ readonly readyState: number;
8
+ binaryType: string;
9
+ send(data: string | ArrayBufferLike | ArrayBufferView): void;
10
+ close(code?: number, reason?: string): void;
11
+ addEventListener(type: string, listener: DOMEventHandler): void;
12
+ removeEventListener(type: string, listener: DOMEventHandler): void;
13
+ }
14
+ export declare class BrowserWebSocket implements WebSocketLike {
15
+ private _ws;
16
+ private _listenerMap;
17
+ constructor(ws: WebSocket);
18
+ /** The underlying platform-specific socket. Code that accesses this will not be isomorphic across server and browser environments. */
19
+ get platformSocket(): WebSocket;
20
+ get readyState(): number;
21
+ send(data: string | ArrayBufferLike | ArrayBufferView): void;
22
+ close(code?: number, reason?: string): void;
23
+ on(event: string, listener: Listener): void;
24
+ off(event: string, listener: Listener): void;
25
+ once(event: string, listener: Listener): void;
26
+ private _listenersFor;
27
+ /**
28
+ * Converts browser event objects to positional arguments matching the
29
+ * {@link WebSocketLike} interface.
30
+ */
31
+ private _wrapListener;
32
+ }
33
+ export {};
34
+ //# sourceMappingURL=ws-adapter-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-adapter-browser.d.ts","sourceRoot":"","sources":["../src/internal/ws-adapter-browser.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,aAAa,EAAE;AAE7B,yCAAyC;AACzC,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAEzC,gFAAgF;AAChF,KAAK,eAAe,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;AAGzC,OAAO,OAAO,SAAS;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI;IAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAC3C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI;IAC/D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI;CACnE;AAWD,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,YAAY,CAAqD;gBAE7D,EAAE,EAAE,SAAS;IAKzB,sIAAsI;IACtI,IAAI,cAAc,IAAI,SAAS,CAE9B;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI;IAI5D,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI3C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAM3C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAU5C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAU7C,OAAO,CAAC,aAAa;IASrB;;;OAGG;IACH,OAAO,CAAC,aAAa;CA8BtB"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BrowserWebSocket = void 0;
4
+ class BrowserWebSocket {
5
+ constructor(ws) {
6
+ this._listenerMap = new Map();
7
+ this._ws = ws;
8
+ this._ws.binaryType = 'arraybuffer';
9
+ }
10
+ /** The underlying platform-specific socket. Code that accesses this will not be isomorphic across server and browser environments. */
11
+ get platformSocket() {
12
+ return this._ws;
13
+ }
14
+ get readyState() {
15
+ return this._ws.readyState;
16
+ }
17
+ send(data) {
18
+ this._ws.send(data);
19
+ }
20
+ close(code, reason) {
21
+ this._ws.close(code, reason);
22
+ }
23
+ on(event, listener) {
24
+ const wrapped = this._wrapListener(event, listener);
25
+ this._listenersFor(event).set(listener, wrapped);
26
+ this._ws.addEventListener(event, wrapped);
27
+ }
28
+ off(event, listener) {
29
+ const byListener = this._listenerMap.get(event);
30
+ if (!byListener)
31
+ return;
32
+ const wrapped = byListener.get(listener);
33
+ if (wrapped) {
34
+ byListener.delete(listener);
35
+ this._ws.removeEventListener(event, wrapped);
36
+ }
37
+ }
38
+ once(event, listener) {
39
+ const onceListener = (...args) => {
40
+ this.off(event, listener);
41
+ listener(...args);
42
+ };
43
+ const wrapped = this._wrapListener(event, onceListener);
44
+ this._listenersFor(event).set(listener, wrapped);
45
+ this._ws.addEventListener(event, wrapped);
46
+ }
47
+ _listenersFor(event) {
48
+ let map = this._listenerMap.get(event);
49
+ if (!map) {
50
+ map = new Map();
51
+ this._listenerMap.set(event, map);
52
+ }
53
+ return map;
54
+ }
55
+ /**
56
+ * Converts browser event objects to positional arguments matching the
57
+ * {@link WebSocketLike} interface.
58
+ */
59
+ _wrapListener(event, listener) {
60
+ switch (event) {
61
+ case 'message':
62
+ return (ev) => {
63
+ const isBinary = typeof ev.data !== 'string';
64
+ listener(ev.data, isBinary);
65
+ };
66
+ case 'close':
67
+ return (ev) => {
68
+ listener(ev.code, ev.reason);
69
+ };
70
+ case 'error':
71
+ return (ev) => {
72
+ // Some environments provide an ErrorEvent with a `.message`;
73
+ // fall back to a generic message when the event carries nothing.
74
+ const message = ev?.message || ev?.error?.message || 'WebSocket error';
75
+ const err = new Error(message);
76
+ if (ev?.error) {
77
+ err.cause = ev.error;
78
+ }
79
+ listener(err);
80
+ };
81
+ case 'open':
82
+ default:
83
+ return listener;
84
+ }
85
+ }
86
+ }
87
+ exports.BrowserWebSocket = BrowserWebSocket;
88
+ //# sourceMappingURL=ws-adapter-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-adapter-browser.js","sourceRoot":"","sources":["../src/internal/ws-adapter-browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ export class BrowserWebSocket {
2
+ constructor(ws) {
3
+ this._listenerMap = new Map();
4
+ this._ws = ws;
5
+ this._ws.binaryType = 'arraybuffer';
6
+ }
7
+ /** The underlying platform-specific socket. Code that accesses this will not be isomorphic across server and browser environments. */
8
+ get platformSocket() {
9
+ return this._ws;
10
+ }
11
+ get readyState() {
12
+ return this._ws.readyState;
13
+ }
14
+ send(data) {
15
+ this._ws.send(data);
16
+ }
17
+ close(code, reason) {
18
+ this._ws.close(code, reason);
19
+ }
20
+ on(event, listener) {
21
+ const wrapped = this._wrapListener(event, listener);
22
+ this._listenersFor(event).set(listener, wrapped);
23
+ this._ws.addEventListener(event, wrapped);
24
+ }
25
+ off(event, listener) {
26
+ const byListener = this._listenerMap.get(event);
27
+ if (!byListener)
28
+ return;
29
+ const wrapped = byListener.get(listener);
30
+ if (wrapped) {
31
+ byListener.delete(listener);
32
+ this._ws.removeEventListener(event, wrapped);
33
+ }
34
+ }
35
+ once(event, listener) {
36
+ const onceListener = (...args) => {
37
+ this.off(event, listener);
38
+ listener(...args);
39
+ };
40
+ const wrapped = this._wrapListener(event, onceListener);
41
+ this._listenersFor(event).set(listener, wrapped);
42
+ this._ws.addEventListener(event, wrapped);
43
+ }
44
+ _listenersFor(event) {
45
+ let map = this._listenerMap.get(event);
46
+ if (!map) {
47
+ map = new Map();
48
+ this._listenerMap.set(event, map);
49
+ }
50
+ return map;
51
+ }
52
+ /**
53
+ * Converts browser event objects to positional arguments matching the
54
+ * {@link WebSocketLike} interface.
55
+ */
56
+ _wrapListener(event, listener) {
57
+ switch (event) {
58
+ case 'message':
59
+ return (ev) => {
60
+ const isBinary = typeof ev.data !== 'string';
61
+ listener(ev.data, isBinary);
62
+ };
63
+ case 'close':
64
+ return (ev) => {
65
+ listener(ev.code, ev.reason);
66
+ };
67
+ case 'error':
68
+ return (ev) => {
69
+ // Some environments provide an ErrorEvent with a `.message`;
70
+ // fall back to a generic message when the event carries nothing.
71
+ const message = ev?.message || ev?.error?.message || 'WebSocket error';
72
+ const err = new Error(message);
73
+ if (ev?.error) {
74
+ err.cause = ev.error;
75
+ }
76
+ listener(err);
77
+ };
78
+ case 'open':
79
+ default:
80
+ return listener;
81
+ }
82
+ }
83
+ }
84
+ //# sourceMappingURL=ws-adapter-browser.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-adapter-browser.mjs","sourceRoot":"","sources":["../src/internal/ws-adapter-browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type * as WS from 'ws';
2
+ import type { WebSocketLike } from "./ws-adapter.mjs";
3
+ /** A generic event listener callback. */
4
+ type Listener = (...args: any[]) => void;
5
+ export declare class NodeWebSocket implements WebSocketLike {
6
+ private _ws;
7
+ /** Maps `(event, originalListener)` -> wrapped listener for correct `off()` removal. */
8
+ private _listenerMap;
9
+ constructor(ws: WS.WebSocket);
10
+ /** The underlying platform-specific socket. Code that accesses this will not be isomorphic across server and browser environments. */
11
+ get platformSocket(): WS.WebSocket;
12
+ get readyState(): number;
13
+ send(data: string | ArrayBufferLike | ArrayBufferView): void;
14
+ close(code?: number, reason?: string): void;
15
+ on(event: string, listener: Listener): void;
16
+ off(event: string, listener: Listener): void;
17
+ once(event: string, listener: Listener): void;
18
+ private _listenersFor;
19
+ /**
20
+ * Normalizes `ws` message payloads: text frames become strings,
21
+ * binary frames stay as `Buffer`, and fragmented frames are merged.
22
+ */
23
+ private static _normalizeMessageData;
24
+ private _wrapListener;
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=ws-adapter-node.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-adapter-node.d.mts","sourceRoot":"","sources":["../src/internal/ws-adapter-node.ts"],"names":[],"mappings":"OAAO,KAAK,KAAK,EAAE,MAAM,IAAI;OACtB,KAAK,EAAE,aAAa,EAAE;AAE7B,yCAAyC;AACzC,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAEzC,qBAAa,aAAc,YAAW,aAAa;IACjD,OAAO,CAAC,GAAG,CAAe;IAE1B,wFAAwF;IACxF,OAAO,CAAC,YAAY,CAA8C;gBAEtD,EAAE,EAAE,EAAE,CAAC,SAAS;IAI5B,sIAAsI;IACtI,IAAI,cAAc,IAAI,EAAE,CAAC,SAAS,CAEjC;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI;IAI5D,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI3C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAM3C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAU5C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAU7C,OAAO,CAAC,aAAa;IASrB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAepC,OAAO,CAAC,aAAa;CAiBtB"}
@@ -0,0 +1,27 @@
1
+ import type * as WS from 'ws';
2
+ import type { WebSocketLike } from "./ws-adapter.js";
3
+ /** A generic event listener callback. */
4
+ type Listener = (...args: any[]) => void;
5
+ export declare class NodeWebSocket implements WebSocketLike {
6
+ private _ws;
7
+ /** Maps `(event, originalListener)` -> wrapped listener for correct `off()` removal. */
8
+ private _listenerMap;
9
+ constructor(ws: WS.WebSocket);
10
+ /** The underlying platform-specific socket. Code that accesses this will not be isomorphic across server and browser environments. */
11
+ get platformSocket(): WS.WebSocket;
12
+ get readyState(): number;
13
+ send(data: string | ArrayBufferLike | ArrayBufferView): void;
14
+ close(code?: number, reason?: string): void;
15
+ on(event: string, listener: Listener): void;
16
+ off(event: string, listener: Listener): void;
17
+ once(event: string, listener: Listener): void;
18
+ private _listenersFor;
19
+ /**
20
+ * Normalizes `ws` message payloads: text frames become strings,
21
+ * binary frames stay as `Buffer`, and fragmented frames are merged.
22
+ */
23
+ private static _normalizeMessageData;
24
+ private _wrapListener;
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=ws-adapter-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-adapter-node.d.ts","sourceRoot":"","sources":["../src/internal/ws-adapter-node.ts"],"names":[],"mappings":"OAAO,KAAK,KAAK,EAAE,MAAM,IAAI;OACtB,KAAK,EAAE,aAAa,EAAE;AAE7B,yCAAyC;AACzC,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAEzC,qBAAa,aAAc,YAAW,aAAa;IACjD,OAAO,CAAC,GAAG,CAAe;IAE1B,wFAAwF;IACxF,OAAO,CAAC,YAAY,CAA8C;gBAEtD,EAAE,EAAE,EAAE,CAAC,SAAS;IAI5B,sIAAsI;IACtI,IAAI,cAAc,IAAI,EAAE,CAAC,SAAS,CAEjC;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI;IAI5D,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI3C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAM3C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAU5C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAU7C,OAAO,CAAC,aAAa;IASrB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAepC,OAAO,CAAC,aAAa;CAiBtB"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeWebSocket = void 0;
4
+ class NodeWebSocket {
5
+ constructor(ws) {
6
+ /** Maps `(event, originalListener)` -> wrapped listener for correct `off()` removal. */
7
+ this._listenerMap = new Map();
8
+ this._ws = ws;
9
+ }
10
+ /** The underlying platform-specific socket. Code that accesses this will not be isomorphic across server and browser environments. */
11
+ get platformSocket() {
12
+ return this._ws;
13
+ }
14
+ get readyState() {
15
+ return this._ws.readyState;
16
+ }
17
+ send(data) {
18
+ this._ws.send(data);
19
+ }
20
+ close(code, reason) {
21
+ this._ws.close(code, reason);
22
+ }
23
+ on(event, listener) {
24
+ const wrapped = this._wrapListener(event, listener);
25
+ this._listenersFor(event).set(listener, wrapped);
26
+ this._ws.on(event, wrapped);
27
+ }
28
+ off(event, listener) {
29
+ const byListener = this._listenerMap.get(event);
30
+ if (!byListener)
31
+ return;
32
+ const wrapped = byListener.get(listener);
33
+ if (wrapped) {
34
+ byListener.delete(listener);
35
+ this._ws.removeListener(event, wrapped);
36
+ }
37
+ }
38
+ once(event, listener) {
39
+ const onceListener = (...args) => {
40
+ this.off(event, listener);
41
+ listener(...args);
42
+ };
43
+ const wrapped = this._wrapListener(event, onceListener);
44
+ this._listenersFor(event).set(listener, wrapped);
45
+ this._ws.on(event, wrapped);
46
+ }
47
+ _listenersFor(event) {
48
+ let map = this._listenerMap.get(event);
49
+ if (!map) {
50
+ map = new Map();
51
+ this._listenerMap.set(event, map);
52
+ }
53
+ return map;
54
+ }
55
+ /**
56
+ * Normalizes `ws` message payloads: text frames become strings,
57
+ * binary frames stay as `Buffer`, and fragmented frames are merged.
58
+ */
59
+ static _normalizeMessageData(data, isBinary) {
60
+ if (!isBinary) {
61
+ if (Array.isArray(data))
62
+ return Buffer.concat(data).toString();
63
+ if (data instanceof ArrayBuffer)
64
+ return Buffer.from(data).toString();
65
+ return data.toString();
66
+ }
67
+ if (Array.isArray(data))
68
+ return Buffer.concat(data);
69
+ if (data instanceof ArrayBuffer)
70
+ return Buffer.from(data);
71
+ return data;
72
+ }
73
+ _wrapListener(event, listener) {
74
+ switch (event) {
75
+ case 'message':
76
+ return (data, isBinary) => {
77
+ listener(NodeWebSocket._normalizeMessageData(data, isBinary), isBinary);
78
+ };
79
+ case 'close':
80
+ return (code, reason) => {
81
+ listener(code, reason.toString());
82
+ };
83
+ // 'open' and 'error' pass through unchanged
84
+ default:
85
+ return listener;
86
+ }
87
+ }
88
+ }
89
+ exports.NodeWebSocket = NodeWebSocket;
90
+ //# sourceMappingURL=ws-adapter-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-adapter-node.js","sourceRoot":"","sources":["../src/internal/ws-adapter-node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ export class NodeWebSocket {
2
+ constructor(ws) {
3
+ /** Maps `(event, originalListener)` -> wrapped listener for correct `off()` removal. */
4
+ this._listenerMap = new Map();
5
+ this._ws = ws;
6
+ }
7
+ /** The underlying platform-specific socket. Code that accesses this will not be isomorphic across server and browser environments. */
8
+ get platformSocket() {
9
+ return this._ws;
10
+ }
11
+ get readyState() {
12
+ return this._ws.readyState;
13
+ }
14
+ send(data) {
15
+ this._ws.send(data);
16
+ }
17
+ close(code, reason) {
18
+ this._ws.close(code, reason);
19
+ }
20
+ on(event, listener) {
21
+ const wrapped = this._wrapListener(event, listener);
22
+ this._listenersFor(event).set(listener, wrapped);
23
+ this._ws.on(event, wrapped);
24
+ }
25
+ off(event, listener) {
26
+ const byListener = this._listenerMap.get(event);
27
+ if (!byListener)
28
+ return;
29
+ const wrapped = byListener.get(listener);
30
+ if (wrapped) {
31
+ byListener.delete(listener);
32
+ this._ws.removeListener(event, wrapped);
33
+ }
34
+ }
35
+ once(event, listener) {
36
+ const onceListener = (...args) => {
37
+ this.off(event, listener);
38
+ listener(...args);
39
+ };
40
+ const wrapped = this._wrapListener(event, onceListener);
41
+ this._listenersFor(event).set(listener, wrapped);
42
+ this._ws.on(event, wrapped);
43
+ }
44
+ _listenersFor(event) {
45
+ let map = this._listenerMap.get(event);
46
+ if (!map) {
47
+ map = new Map();
48
+ this._listenerMap.set(event, map);
49
+ }
50
+ return map;
51
+ }
52
+ /**
53
+ * Normalizes `ws` message payloads: text frames become strings,
54
+ * binary frames stay as `Buffer`, and fragmented frames are merged.
55
+ */
56
+ static _normalizeMessageData(data, isBinary) {
57
+ if (!isBinary) {
58
+ if (Array.isArray(data))
59
+ return Buffer.concat(data).toString();
60
+ if (data instanceof ArrayBuffer)
61
+ return Buffer.from(data).toString();
62
+ return data.toString();
63
+ }
64
+ if (Array.isArray(data))
65
+ return Buffer.concat(data);
66
+ if (data instanceof ArrayBuffer)
67
+ return Buffer.from(data);
68
+ return data;
69
+ }
70
+ _wrapListener(event, listener) {
71
+ switch (event) {
72
+ case 'message':
73
+ return (data, isBinary) => {
74
+ listener(NodeWebSocket._normalizeMessageData(data, isBinary), isBinary);
75
+ };
76
+ case 'close':
77
+ return (code, reason) => {
78
+ listener(code, reason.toString());
79
+ };
80
+ // 'open' and 'error' pass through unchanged
81
+ default:
82
+ return listener;
83
+ }
84
+ }
85
+ }
86
+ //# sourceMappingURL=ws-adapter-node.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-adapter-node.mjs","sourceRoot":"","sources":["../src/internal/ws-adapter-node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Normalized WebSocket interface that abstracts over the `ws` package (Node.js)
3
+ * and the native WebSocket API (browser).
4
+ */
5
+ export interface WebSocketLike {
6
+ readonly readyState: number;
7
+ send(data: string | ArrayBufferLike | ArrayBufferView): void;
8
+ close(code?: number, reason?: string): void;
9
+ on(event: 'open', listener: () => void): void;
10
+ on(event: 'message', listener: (data: string | ArrayBuffer | ArrayBufferView, isBinary: boolean) => void): void;
11
+ on(event: 'close', listener: (code: number, reason: string) => void): void;
12
+ on(event: 'error', listener: (err: Error) => void): void;
13
+ on(event: string, listener: (...args: any[]) => void): void;
14
+ off(event: string, listener: (...args: any[]) => void): void;
15
+ once(event: string, listener: (...args: any[]) => void): void;
16
+ }
17
+ /** Standard WebSocket readyState values (RFC 6455). */
18
+ export declare const ReadyState: {
19
+ readonly CONNECTING: 0;
20
+ readonly OPEN: 1;
21
+ readonly CLOSING: 2;
22
+ readonly CLOSED: 3;
23
+ };
24
+ //# sourceMappingURL=ws-adapter.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-adapter.d.mts","sourceRoot":"","sources":["../src/internal/ws-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC9C,EAAE,CACA,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GAClF,IAAI,CAAC;IACR,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3E,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IACzD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAE5D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CAC/D;AAED,uDAAuD;AACvD,eAAO,MAAM,UAAU;;;;;CAKb,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Normalized WebSocket interface that abstracts over the `ws` package (Node.js)
3
+ * and the native WebSocket API (browser).
4
+ */
5
+ export interface WebSocketLike {
6
+ readonly readyState: number;
7
+ send(data: string | ArrayBufferLike | ArrayBufferView): void;
8
+ close(code?: number, reason?: string): void;
9
+ on(event: 'open', listener: () => void): void;
10
+ on(event: 'message', listener: (data: string | ArrayBuffer | ArrayBufferView, isBinary: boolean) => void): void;
11
+ on(event: 'close', listener: (code: number, reason: string) => void): void;
12
+ on(event: 'error', listener: (err: Error) => void): void;
13
+ on(event: string, listener: (...args: any[]) => void): void;
14
+ off(event: string, listener: (...args: any[]) => void): void;
15
+ once(event: string, listener: (...args: any[]) => void): void;
16
+ }
17
+ /** Standard WebSocket readyState values (RFC 6455). */
18
+ export declare const ReadyState: {
19
+ readonly CONNECTING: 0;
20
+ readonly OPEN: 1;
21
+ readonly CLOSING: 2;
22
+ readonly CLOSED: 3;
23
+ };
24
+ //# sourceMappingURL=ws-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-adapter.d.ts","sourceRoot":"","sources":["../src/internal/ws-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC9C,EAAE,CACA,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,GAClF,IAAI,CAAC;IACR,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3E,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IACzD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAE5D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CAC/D;AAED,uDAAuD;AACvD,eAAO,MAAM,UAAU;;;;;CAKb,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReadyState = void 0;
4
+ /** Standard WebSocket readyState values (RFC 6455). */
5
+ exports.ReadyState = {
6
+ CONNECTING: 0,
7
+ OPEN: 1,
8
+ CLOSING: 2,
9
+ CLOSED: 3,
10
+ };
11
+ //# sourceMappingURL=ws-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-adapter.js","sourceRoot":"","sources":["../src/internal/ws-adapter.ts"],"names":[],"mappings":";;;AAuBA,uDAAuD;AAC1C,QAAA,UAAU,GAAG;IACxB,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;CACD,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** Standard WebSocket readyState values (RFC 6455). */
2
+ export const ReadyState = {
3
+ CONNECTING: 0,
4
+ OPEN: 1,
5
+ CLOSING: 2,
6
+ CLOSED: 3,
7
+ };
8
+ //# sourceMappingURL=ws-adapter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-adapter.mjs","sourceRoot":"","sources":["../src/internal/ws-adapter.ts"],"names":[],"mappings":"AAuBA,uDAAuD;AACvD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;CACD,CAAC"}
@@ -0,0 +1,80 @@
1
+ /** Reconnection event passed to the `onReconnecting` handler and event listeners. */
2
+ export interface ReconnectingEvent<Parameters = Record<string, unknown>> {
3
+ /** Which retry attempt this is (1-based). */
4
+ readonly attempt: number;
5
+ /** Total attempts that will be made. */
6
+ readonly maxAttempts: number;
7
+ /** Delay in ms before this attempt connects. */
8
+ readonly delay: number;
9
+ /** The WebSocket close code that triggered reconnection. */
10
+ readonly closeCode: number;
11
+ /** The current query parameters. */
12
+ readonly parameters: (Parameters & Record<string, unknown>) | undefined;
13
+ }
14
+ /**
15
+ * Optional overrides returned from the `onReconnecting` handler
16
+ * to customize the next reconnection attempt.
17
+ */
18
+ export type ReconnectingOverrides<Parameters = Record<string, unknown>> = {
19
+ /**
20
+ * If provided, assigns the query parameters for the next connection.
21
+ * Set to `undefined` to clear all query parameters.
22
+ */
23
+ parameters?: (Parameters & Record<string, unknown>) | undefined;
24
+ } | {
25
+ /**
26
+ * If set, will stop attempting to reconnect.
27
+ */
28
+ abort: true;
29
+ };
30
+ /**
31
+ * Raw data types that can be sent over a WebSocket without serialization.
32
+ */
33
+ export type RawWebSocketData = string | ArrayBufferLike | ArrayBufferView | ArrayBufferView[];
34
+ export type UnsentMessage<T> = {
35
+ type: 'message';
36
+ message: T;
37
+ } | {
38
+ type: 'raw';
39
+ data: RawWebSocketData;
40
+ };
41
+ /**
42
+ * Flatten `ArrayBufferView[]` fragments into a single `Uint8Array` so that
43
+ * `ws.send()` transmits the correct bytes.
44
+ */
45
+ export declare function flattenRawData(data: RawWebSocketData): Exclude<RawWebSocketData, ArrayBufferView[]>;
46
+ /**
47
+ * A bounded queue for outgoing WebSocket messages. JSON messages are
48
+ * serialized on enqueue; raw messages are stored as-is. The queue enforces
49
+ * a configurable byte-size limit and can return the original messages via
50
+ * {@link drain} when the connection permanently closes.
51
+ */
52
+ export declare class SendQueue<T = unknown> {
53
+ private _queue;
54
+ private _bytes;
55
+ private _maxBytes;
56
+ constructor(maxBytes?: number);
57
+ /**
58
+ * Serialize and enqueue a JSON message. Returns `true` if the message was
59
+ * accepted, `false` if it would exceed the byte-size limit.
60
+ */
61
+ enqueue(event: T): boolean;
62
+ /**
63
+ * Enqueue raw data without serialization. Returns `true` if the data was
64
+ * accepted, `false` if it would exceed the byte-size limit.
65
+ */
66
+ enqueueRaw(data: RawWebSocketData): boolean;
67
+ /**
68
+ * Send every queued message via `send`. If `send` throws, the failing
69
+ * message and all subsequent messages are re-queued and the error is
70
+ * re-thrown so the caller can report it.
71
+ */
72
+ flush(send: (data: RawWebSocketData) => void): void;
73
+ /**
74
+ * Drain the queue and return the unsent messages. JSON messages are
75
+ * deserialized back to their original form. Resets byte tracking to zero.
76
+ */
77
+ drain(): UnsentMessage<T>[];
78
+ }
79
+ export declare function isRecoverableClose(code: number): boolean;
80
+ //# sourceMappingURL=ws.d.mts.map