@nktkas/hyperliquid 0.22.1 → 0.23.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 (230) hide show
  1. package/README.md +125 -70
  2. package/esm/mod.d.ts +1 -1
  3. package/esm/mod.d.ts.map +1 -1
  4. package/esm/src/base.d.ts +4 -1
  5. package/esm/src/base.d.ts.map +1 -1
  6. package/esm/src/base.js +2 -2
  7. package/esm/src/clients/exchange.d.ts +420 -368
  8. package/esm/src/clients/exchange.d.ts.map +1 -1
  9. package/esm/src/clients/exchange.js +721 -551
  10. package/esm/src/clients/info.d.ts +137 -41
  11. package/esm/src/clients/info.d.ts.map +1 -1
  12. package/esm/src/clients/info.js +124 -28
  13. package/esm/src/clients/multiSign.d.ts +406 -484
  14. package/esm/src/clients/multiSign.d.ts.map +1 -1
  15. package/esm/src/clients/multiSign.js +639 -734
  16. package/esm/src/clients/subscription.d.ts +38 -3
  17. package/esm/src/clients/subscription.d.ts.map +1 -1
  18. package/esm/src/clients/subscription.js +36 -3
  19. package/esm/src/signing/_signTypedData/ethers.d.ts +33 -0
  20. package/esm/src/signing/_signTypedData/ethers.d.ts.map +1 -0
  21. package/esm/src/signing/_signTypedData/ethers.js +12 -0
  22. package/esm/src/signing/_signTypedData/mod.d.ts +35 -0
  23. package/esm/src/signing/_signTypedData/mod.d.ts.map +1 -0
  24. package/esm/src/signing/_signTypedData/mod.js +59 -0
  25. package/esm/src/signing/_signTypedData/private_key.d.ts +26 -0
  26. package/esm/src/signing/_signTypedData/private_key.d.ts.map +1 -0
  27. package/esm/src/signing/_signTypedData/private_key.js +144 -0
  28. package/esm/src/signing/_signTypedData/viem.d.ts +23 -0
  29. package/esm/src/signing/_signTypedData/viem.d.ts.map +1 -0
  30. package/esm/src/signing/_signTypedData/viem.js +6 -0
  31. package/esm/src/signing/_signTypedData/window.d.ts +29 -0
  32. package/esm/src/signing/_signTypedData/window.d.ts.map +1 -0
  33. package/esm/src/signing/_signTypedData/window.js +30 -0
  34. package/esm/src/signing/_sorter.d.ts +128 -0
  35. package/esm/src/signing/_sorter.d.ts.map +1 -0
  36. package/esm/src/{signing.js → signing/_sorter.js} +36 -449
  37. package/esm/src/signing/mod.d.ts +272 -0
  38. package/esm/src/signing/mod.d.ts.map +1 -0
  39. package/esm/src/signing/mod.js +306 -0
  40. package/esm/src/transports/base.d.ts +1 -1
  41. package/esm/src/transports/base.d.ts.map +1 -1
  42. package/esm/src/transports/base.js +2 -2
  43. package/esm/src/transports/http/http_transport.d.ts +9 -15
  44. package/esm/src/transports/http/http_transport.d.ts.map +1 -1
  45. package/esm/src/transports/http/http_transport.js +64 -59
  46. package/esm/src/transports/websocket/_hyperliquid_event_target.d.ts +1 -1
  47. package/esm/src/transports/websocket/_hyperliquid_event_target.d.ts.map +1 -1
  48. package/esm/src/transports/websocket/_hyperliquid_event_target.js +1 -1
  49. package/esm/src/transports/websocket/_reconnecting_websocket.d.ts.map +1 -1
  50. package/esm/src/transports/websocket/_reconnecting_websocket.js +17 -4
  51. package/esm/src/transports/websocket/_websocket_async_request.d.ts +0 -9
  52. package/esm/src/transports/websocket/_websocket_async_request.d.ts.map +1 -1
  53. package/esm/src/transports/websocket/_websocket_async_request.js +14 -20
  54. package/esm/src/transports/websocket/websocket_transport.d.ts +8 -4
  55. package/esm/src/transports/websocket/websocket_transport.d.ts.map +1 -1
  56. package/esm/src/transports/websocket/websocket_transport.js +83 -54
  57. package/esm/src/types/exchange/requests.d.ts +27 -51
  58. package/esm/src/types/exchange/requests.d.ts.map +1 -1
  59. package/esm/src/types/explorer/requests.d.ts +5 -8
  60. package/esm/src/types/explorer/requests.d.ts.map +1 -1
  61. package/esm/src/types/info/accounts.d.ts +5 -5
  62. package/esm/src/types/info/accounts.d.ts.map +1 -1
  63. package/esm/src/types/info/delegations.d.ts +1 -1
  64. package/esm/src/types/info/delegations.d.ts.map +1 -1
  65. package/esm/src/types/info/orders.d.ts +1 -1
  66. package/esm/src/types/info/orders.d.ts.map +1 -1
  67. package/esm/src/types/info/requests.d.ts +49 -96
  68. package/esm/src/types/info/requests.d.ts.map +1 -1
  69. package/esm/src/types/subscriptions/requests.d.ts +72 -18
  70. package/esm/src/types/subscriptions/requests.d.ts.map +1 -1
  71. package/esm/src/types/subscriptions/responses.d.ts +2 -0
  72. package/esm/src/types/subscriptions/responses.d.ts.map +1 -1
  73. package/package.json +12 -8
  74. package/script/mod.d.ts +1 -1
  75. package/script/mod.d.ts.map +1 -1
  76. package/script/mod.js +13 -23
  77. package/script/src/base.d.ts +4 -1
  78. package/script/src/base.d.ts.map +1 -1
  79. package/script/src/base.js +10 -20
  80. package/script/src/clients/exchange.d.ts +420 -368
  81. package/script/src/clients/exchange.d.ts.map +1 -1
  82. package/script/src/clients/exchange.js +2000 -1840
  83. package/script/src/clients/info.d.ts +137 -41
  84. package/script/src/clients/info.d.ts.map +1 -1
  85. package/script/src/clients/info.js +1296 -1210
  86. package/script/src/clients/multiSign.d.ts +406 -484
  87. package/script/src/clients/multiSign.d.ts.map +1 -1
  88. package/script/src/clients/multiSign.js +2043 -2148
  89. package/script/src/clients/subscription.d.ts +38 -3
  90. package/script/src/clients/subscription.d.ts.map +1 -1
  91. package/script/src/clients/subscription.js +568 -545
  92. package/script/src/signing/_signTypedData/ethers.d.ts +33 -0
  93. package/script/src/signing/_signTypedData/ethers.d.ts.map +1 -0
  94. package/script/src/signing/_signTypedData/ethers.js +16 -0
  95. package/script/src/signing/_signTypedData/mod.d.ts +35 -0
  96. package/script/src/signing/_signTypedData/mod.d.ts.map +1 -0
  97. package/script/src/signing/_signTypedData/mod.js +67 -0
  98. package/script/src/signing/_signTypedData/private_key.d.ts +26 -0
  99. package/script/src/signing/_signTypedData/private_key.d.ts.map +1 -0
  100. package/script/src/signing/_signTypedData/private_key.js +148 -0
  101. package/script/src/signing/_signTypedData/viem.d.ts +23 -0
  102. package/script/src/signing/_signTypedData/viem.d.ts.map +1 -0
  103. package/script/src/signing/_signTypedData/viem.js +9 -0
  104. package/script/src/signing/_signTypedData/window.d.ts +29 -0
  105. package/script/src/signing/_signTypedData/window.d.ts.map +1 -0
  106. package/script/src/signing/_signTypedData/window.js +34 -0
  107. package/script/src/signing/_sorter.d.ts +128 -0
  108. package/script/src/signing/_sorter.d.ts.map +1 -0
  109. package/script/src/signing/_sorter.js +698 -0
  110. package/script/src/signing/mod.d.ts +272 -0
  111. package/script/src/signing/mod.d.ts.map +1 -0
  112. package/script/src/signing/mod.js +331 -0
  113. package/script/src/transports/base.d.ts +1 -1
  114. package/script/src/transports/base.d.ts.map +1 -1
  115. package/script/src/transports/base.js +11 -21
  116. package/script/src/transports/http/http_transport.d.ts +9 -15
  117. package/script/src/transports/http/http_transport.d.ts.map +1 -1
  118. package/script/src/transports/http/http_transport.js +97 -102
  119. package/script/src/transports/websocket/_hyperliquid_event_target.d.ts +1 -1
  120. package/script/src/transports/websocket/_hyperliquid_event_target.d.ts.map +1 -1
  121. package/script/src/transports/websocket/_hyperliquid_event_target.js +51 -61
  122. package/script/src/transports/websocket/_reconnecting_websocket.d.ts.map +1 -1
  123. package/script/src/transports/websocket/_reconnecting_websocket.js +271 -268
  124. package/script/src/transports/websocket/_websocket_async_request.d.ts +0 -9
  125. package/script/src/transports/websocket/_websocket_async_request.d.ts.map +1 -1
  126. package/script/src/transports/websocket/_websocket_async_request.js +157 -174
  127. package/script/src/transports/websocket/websocket_transport.d.ts +8 -4
  128. package/script/src/transports/websocket/websocket_transport.d.ts.map +1 -1
  129. package/script/src/transports/websocket/websocket_transport.js +209 -189
  130. package/script/src/types/exchange/requests.d.ts +27 -51
  131. package/script/src/types/exchange/requests.d.ts.map +1 -1
  132. package/script/src/types/exchange/requests.js +2 -12
  133. package/script/src/types/exchange/responses.js +2 -12
  134. package/script/src/types/explorer/requests.d.ts +5 -8
  135. package/script/src/types/explorer/requests.d.ts.map +1 -1
  136. package/script/src/types/explorer/requests.js +2 -12
  137. package/script/src/types/explorer/responses.js +2 -12
  138. package/script/src/types/info/accounts.d.ts +5 -5
  139. package/script/src/types/info/accounts.d.ts.map +1 -1
  140. package/script/src/types/info/accounts.js +2 -12
  141. package/script/src/types/info/assets.js +2 -12
  142. package/script/src/types/info/delegations.d.ts +1 -1
  143. package/script/src/types/info/delegations.d.ts.map +1 -1
  144. package/script/src/types/info/delegations.js +2 -12
  145. package/script/src/types/info/markets.js +2 -12
  146. package/script/src/types/info/orders.d.ts +1 -1
  147. package/script/src/types/info/orders.d.ts.map +1 -1
  148. package/script/src/types/info/orders.js +2 -12
  149. package/script/src/types/info/requests.d.ts +49 -96
  150. package/script/src/types/info/requests.d.ts.map +1 -1
  151. package/script/src/types/info/requests.js +2 -12
  152. package/script/src/types/info/vaults.js +2 -12
  153. package/script/src/types/mod.js +2 -12
  154. package/script/src/types/subscriptions/requests.d.ts +72 -18
  155. package/script/src/types/subscriptions/requests.d.ts.map +1 -1
  156. package/script/src/types/subscriptions/requests.js +2 -12
  157. package/script/src/types/subscriptions/responses.d.ts +2 -0
  158. package/script/src/types/subscriptions/responses.d.ts.map +1 -1
  159. package/script/src/types/subscriptions/responses.js +2 -12
  160. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts +0 -2
  161. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts.map +0 -1
  162. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.js +0 -1
  163. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts +0 -95
  164. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts.map +0 -1
  165. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.js +0 -10
  166. package/esm/deps/jsr.io/@std/async/1.0.13/delay.d.ts +0 -43
  167. package/esm/deps/jsr.io/@std/async/1.0.13/delay.d.ts.map +0 -1
  168. package/esm/deps/jsr.io/@std/async/1.0.13/delay.js +0 -63
  169. package/esm/deps/jsr.io/@std/bytes/1.0.6/_types.d.ts +0 -9
  170. package/esm/deps/jsr.io/@std/bytes/1.0.6/_types.d.ts.map +0 -1
  171. package/esm/deps/jsr.io/@std/bytes/1.0.6/_types.js +0 -2
  172. package/esm/deps/jsr.io/@std/bytes/1.0.6/concat.d.ts +0 -21
  173. package/esm/deps/jsr.io/@std/bytes/1.0.6/concat.d.ts.map +0 -1
  174. package/esm/deps/jsr.io/@std/bytes/1.0.6/concat.js +0 -32
  175. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts +0 -23
  176. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts.map +0 -1
  177. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.js +0 -51
  178. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts +0 -4
  179. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts.map +0 -1
  180. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.js +0 -13
  181. package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts +0 -9
  182. package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts.map +0 -1
  183. package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.js +0 -2
  184. package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts +0 -39
  185. package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts.map +0 -1
  186. package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.js +0 -87
  187. package/esm/deps/jsr.io/@std/msgpack/1.0.3/_types.d.ts +0 -9
  188. package/esm/deps/jsr.io/@std/msgpack/1.0.3/_types.d.ts.map +0 -1
  189. package/esm/deps/jsr.io/@std/msgpack/1.0.3/_types.js +0 -2
  190. package/esm/deps/jsr.io/@std/msgpack/1.0.3/encode.d.ts +0 -39
  191. package/esm/deps/jsr.io/@std/msgpack/1.0.3/encode.d.ts.map +0 -1
  192. package/esm/deps/jsr.io/@std/msgpack/1.0.3/encode.js +0 -237
  193. package/esm/src/signing.d.ts +0 -463
  194. package/esm/src/signing.d.ts.map +0 -1
  195. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts +0 -2
  196. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts.map +0 -1
  197. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.js +0 -27
  198. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts +0 -95
  199. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts.map +0 -1
  200. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.js +0 -24
  201. package/script/deps/jsr.io/@std/async/1.0.13/delay.d.ts +0 -43
  202. package/script/deps/jsr.io/@std/async/1.0.13/delay.d.ts.map +0 -1
  203. package/script/deps/jsr.io/@std/async/1.0.13/delay.js +0 -76
  204. package/script/deps/jsr.io/@std/bytes/1.0.6/_types.d.ts +0 -9
  205. package/script/deps/jsr.io/@std/bytes/1.0.6/_types.d.ts.map +0 -1
  206. package/script/deps/jsr.io/@std/bytes/1.0.6/_types.js +0 -13
  207. package/script/deps/jsr.io/@std/bytes/1.0.6/concat.d.ts +0 -21
  208. package/script/deps/jsr.io/@std/bytes/1.0.6/concat.d.ts.map +0 -1
  209. package/script/deps/jsr.io/@std/bytes/1.0.6/concat.js +0 -45
  210. package/script/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts +0 -23
  211. package/script/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts.map +0 -1
  212. package/script/deps/jsr.io/@std/encoding/1.0.10/_common16.js +0 -67
  213. package/script/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts +0 -4
  214. package/script/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts.map +0 -1
  215. package/script/deps/jsr.io/@std/encoding/1.0.10/_common_detach.js +0 -26
  216. package/script/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts +0 -9
  217. package/script/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts.map +0 -1
  218. package/script/deps/jsr.io/@std/encoding/1.0.10/_types.js +0 -13
  219. package/script/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts +0 -39
  220. package/script/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts.map +0 -1
  221. package/script/deps/jsr.io/@std/encoding/1.0.10/hex.js +0 -101
  222. package/script/deps/jsr.io/@std/msgpack/1.0.3/_types.d.ts +0 -9
  223. package/script/deps/jsr.io/@std/msgpack/1.0.3/_types.d.ts.map +0 -1
  224. package/script/deps/jsr.io/@std/msgpack/1.0.3/_types.js +0 -13
  225. package/script/deps/jsr.io/@std/msgpack/1.0.3/encode.d.ts +0 -39
  226. package/script/deps/jsr.io/@std/msgpack/1.0.3/encode.d.ts.map +0 -1
  227. package/script/deps/jsr.io/@std/msgpack/1.0.3/encode.js +0 -250
  228. package/script/src/signing.d.ts +0 -463
  229. package/script/src/signing.d.ts.map +0 -1
  230. package/script/src/signing.js +0 -1129
@@ -1,25 +1,23 @@
1
1
  import { TransportError } from "../base.js";
2
- /**
3
- * Error thrown when an HTTP response is deemed invalid:
4
- * - Non-200 status code
5
- * - Unexpected content type
6
- */
2
+ /** Error thrown when an HTTP request fails. */
7
3
  export class HttpRequestError extends TransportError {
8
4
  response;
9
- responseBody;
10
- /**
11
- * Creates a new HTTP request error.
12
- * @param response - The failed HTTP response.
13
- * @param responseBody - The raw response body content, if available.
14
- */
15
- constructor(response, responseBody) {
16
- let message = `HTTP request failed: status ${response.status}`;
17
- if (responseBody)
18
- message += `, body "${responseBody}"`;
19
- super(message);
20
- this.response = response;
21
- this.responseBody = responseBody;
5
+ body;
6
+ constructor(args, options) {
7
+ const { response, body } = args ?? {};
8
+ let message;
9
+ if (response) {
10
+ message = `${response.status} ${response.statusText}`.trim();
11
+ if (body)
12
+ message += ` - ${body}`;
13
+ }
14
+ else {
15
+ message = "Unknown error while making an HTTP request. See the `cause` for more details.";
16
+ }
17
+ super(message, options);
22
18
  this.name = "HttpRequestError";
19
+ this.response = response;
20
+ this.body = body;
23
21
  }
24
22
  }
25
23
  /** HTTP implementation of the REST transport interface. */
@@ -57,51 +55,58 @@ export class HttpTransport {
57
55
  * @param payload - The payload to send with the request.
58
56
  * @param signal - An optional abort signal.
59
57
  * @returns A promise that resolves with parsed JSON response body.
60
- * @throws {HttpRequestError} - Thrown when an HTTP response is deemed invalid.
61
- * @throws May throw {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/fetch#exceptions | fetch errors}.
58
+ *
59
+ * @throws {HttpRequestError} Thrown when the HTTP request fails.
62
60
  */
63
61
  async request(endpoint, payload, signal) {
64
- // Construct a Request
65
- const url = new URL(endpoint, this.server[this.isTestnet ? "testnet" : "mainnet"][endpoint === "explorer" ? "rpc" : "api"]);
66
- const init = mergeRequestInit({
67
- body: JSON.stringify(payload),
68
- headers: {
69
- "Accept-Encoding": "gzip, deflate, br, zstd",
70
- "Content-Type": "application/json",
71
- },
72
- keepalive: true,
73
- method: "POST",
74
- signal: this.timeout ? AbortSignal.timeout(this.timeout) : undefined,
75
- }, this.fetchOptions, { signal });
76
- let request = new Request(url, init);
77
- // Call the onRequest callback, if provided
78
- if (this.onRequest) {
79
- const customRequest = await this.onRequest(request);
80
- if (customRequest instanceof Request)
81
- request = customRequest;
82
- }
83
- // Send the Request and wait for a Response
84
- let response = await fetch(request);
85
- // Call the onResponse callback, if provided
86
- if (this.onResponse) {
87
- const customResponse = await this.onResponse(response);
88
- if (customResponse instanceof Response)
89
- response = customResponse;
90
- }
91
- // Validate the Response
92
- if (!response.ok || !response.headers.get("Content-Type")?.includes("application/json")) {
93
- // Unload the response body to prevent memory leaks
94
- const body = await response.text().catch(() => undefined);
95
- throw new HttpRequestError(response, body);
62
+ try {
63
+ // Construct a Request
64
+ const url = new URL(endpoint, this.server[this.isTestnet ? "testnet" : "mainnet"][endpoint === "explorer" ? "rpc" : "api"]);
65
+ const init = mergeRequestInit({
66
+ body: JSON.stringify(payload),
67
+ headers: {
68
+ "Accept-Encoding": "gzip, deflate, br, zstd",
69
+ "Content-Type": "application/json",
70
+ },
71
+ keepalive: true,
72
+ method: "POST",
73
+ signal: this.timeout ? AbortSignal.timeout(this.timeout) : undefined,
74
+ }, this.fetchOptions, { signal });
75
+ let request = new Request(url, init);
76
+ // Call the onRequest callback, if provided
77
+ if (this.onRequest) {
78
+ const customRequest = await this.onRequest(request);
79
+ if (customRequest instanceof Request)
80
+ request = customRequest;
81
+ }
82
+ // Send the Request and wait for a Response
83
+ let response = await fetch(request);
84
+ // Call the onResponse callback, if provided
85
+ if (this.onResponse) {
86
+ const customResponse = await this.onResponse(response);
87
+ if (customResponse instanceof Response)
88
+ response = customResponse;
89
+ }
90
+ // Validate the Response
91
+ if (!response.ok || !response.headers.get("Content-Type")?.includes("application/json")) {
92
+ // Unload the response body to prevent memory leaks
93
+ const body = await response.text().catch(() => undefined);
94
+ throw new HttpRequestError({ response, body });
95
+ }
96
+ // Parse the response body
97
+ const body = await response.json();
98
+ // Check if the response is an error
99
+ if (body?.type === "error") {
100
+ throw new HttpRequestError({ response, body: body?.message });
101
+ }
102
+ // Return the response body
103
+ return body;
96
104
  }
97
- // Parse the response body
98
- const body = await response.json();
99
- // Check if the response is an error
100
- if (body?.type === "error") {
101
- throw new HttpRequestError(response, body?.message);
105
+ catch (error) {
106
+ if (error instanceof HttpRequestError)
107
+ throw error; // Re-throw known errors
108
+ throw new HttpRequestError(undefined, { cause: error });
102
109
  }
103
- // Return the response body
104
- return body;
105
110
  }
106
111
  }
107
112
  /** Merges multiple {@linkcode HeadersInit} into one {@linkcode Headers}. */
@@ -1,4 +1,4 @@
1
- import { TypedEventTarget } from "../../../deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.js";
1
+ import { TypedEventTarget } from "typescript-event-target";
2
2
  import type { BlockDetails, TxDetails } from "../../types/explorer/responses.js";
3
3
  import type { BaseExchangeResponse } from "../../types/exchange/responses.js";
4
4
  /** Response to subscribe to or unsubscribe from an event. */
@@ -1 +1 @@
1
- {"version":3,"file":"_hyperliquid_event_target.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/_hyperliquid_event_target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oEAAoE,CAAC;AACtG,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAU9E,6DAA6D;AAC7D,UAAU,oBAAoB;IAC1B,sCAAsC;IACtC,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;IACpC,qCAAqC;IACrC,YAAY,EAAE,OAAO,CAAC;CACzB;AAED,gCAAgC;AAChC,UAAU,YAAY;IAClB,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,QAAQ;IACJ,iDAAiD;IAC/C;QACE,wDAAwD;QACxD,IAAI,EAAE,MAAM,CAAC;QACb,qCAAqC;QACrC,OAAO,EAAE;YACL,0CAA0C;YAC1C,IAAI,EAAE,MAAM,CAAC;YACb,iCAAiC;YACjC,IAAI,EAAE,OAAO,CAAC;SACjB,CAAC;KACL;IACD,yCAAyC;OACvC;QACE,iDAAiD;QACjD,IAAI,EAAE,QAAQ,CAAC;QACf,qBAAqB;QACrB,OAAO,EAAE,oBAAoB,CAAC;KACjC,CAAC;CACT;AAED,mFAAmF;AACnF,UAAU,mBAAmB;IACzB,oBAAoB,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;IACxD,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IAChC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAC7B,cAAc,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACzD,YAAY,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;IAEvC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;CACnC;AAED,iFAAiF;AACjF,qBAAa,sBAAuB,SAAQ,gBAAgB,CAAC,mBAAmB,CAAC;gBACjE,MAAM,EAAE,SAAS;CAiBhC"}
1
+ {"version":3,"file":"_hyperliquid_event_target.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/_hyperliquid_event_target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAU9E,6DAA6D;AAC7D,UAAU,oBAAoB;IAC1B,sCAAsC;IACtC,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;IACpC,qCAAqC;IACrC,YAAY,EAAE,OAAO,CAAC;CACzB;AAED,gCAAgC;AAChC,UAAU,YAAY;IAClB,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,QAAQ;IACJ,iDAAiD;IAC/C;QACE,wDAAwD;QACxD,IAAI,EAAE,MAAM,CAAC;QACb,qCAAqC;QACrC,OAAO,EAAE;YACL,0CAA0C;YAC1C,IAAI,EAAE,MAAM,CAAC;YACb,iCAAiC;YACjC,IAAI,EAAE,OAAO,CAAC;SACjB,CAAC;KACL;IACD,yCAAyC;OACvC;QACE,iDAAiD;QACjD,IAAI,EAAE,QAAQ,CAAC;QACf,qBAAqB;QACrB,OAAO,EAAE,oBAAoB,CAAC;KACjC,CAAC;CACT;AAED,mFAAmF;AACnF,UAAU,mBAAmB;IACzB,oBAAoB,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;IACxD,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IAChC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAC7B,cAAc,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACzD,YAAY,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;IAEvC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;CACnC;AAED,iFAAiF;AACjF,qBAAa,sBAAuB,SAAQ,gBAAgB,CAAC,mBAAmB,CAAC;gBACjE,MAAM,EAAE,SAAS;CAiBhC"}
@@ -1,4 +1,4 @@
1
- import { TypedEventTarget } from "../../../deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.js";
1
+ import { TypedEventTarget } from "typescript-event-target";
2
2
  /** Listens for WebSocket messages and sends them as Hyperliquid typed events. */
3
3
  export class HyperliquidEventTarget extends TypedEventTarget {
4
4
  constructor(socket) {
@@ -1 +1 @@
1
- {"version":3,"file":"_reconnecting_websocket.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/_reconnecting_websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_reconnecting_websocket.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/_reconnecting_websocket.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- // deno-lint-ignore-file no-explicit-any
2
- import { delay } from "../../../deps/jsr.io/@std/async/1.0.13/delay.js";
3
1
  import { TransportError } from "../base.js";
4
2
  /** Simple FIFO (First In, First Out) buffer implementation. */
5
3
  class FIFOMessageBuffer {
@@ -110,7 +108,7 @@ export class ReconnectingWebSocket {
110
108
  : await this.reconnectOptions.connectionDelay(this._attempt, this.reconnectAbortController.signal);
111
109
  if (this.reconnectAbortController.signal.aborted)
112
110
  return;
113
- await delay(reconnectDelay, { signal: this.reconnectAbortController.signal });
111
+ await delay(reconnectDelay, this.reconnectAbortController.signal);
114
112
  // Create a new WebSocket instance
115
113
  const { onclose, onerror, onmessage, onopen } = this._socket;
116
114
  this._socket = this._createSocket(this._socket.url, this._protocols);
@@ -268,10 +266,25 @@ export class ReconnectingWebSocket {
268
266
  return this._socket.dispatchEvent(event);
269
267
  }
270
268
  }
271
- /** Check if two event listeners are the same (just like EventTarget). */
272
269
  function listenersMatch(a, b) {
273
270
  // EventTarget only compares capture in options, even if one is an object and the other is boolean
274
271
  const aCapture = Boolean(typeof a.options === "object" ? a.options.capture : a.options);
275
272
  const bCapture = Boolean(typeof b.options === "object" ? b.options.capture : b.options);
276
273
  return a.type === b.type && a.listener === b.listener && aCapture === bCapture;
277
274
  }
275
+ function delay(ms, signal) {
276
+ if (signal?.aborted)
277
+ return Promise.reject(signal.reason);
278
+ return new Promise((resolve, reject) => {
279
+ const onAbort = () => {
280
+ clearTimeout(timer);
281
+ reject(signal?.reason);
282
+ };
283
+ const onTimeout = () => {
284
+ signal?.removeEventListener("abort", onAbort);
285
+ resolve();
286
+ };
287
+ const timer = setTimeout(onTimeout, ms);
288
+ signal?.addEventListener("abort", onAbort, { once: true });
289
+ });
290
+ }
@@ -1,14 +1,5 @@
1
- import { TransportError } from "../base.js";
2
1
  import type { ReconnectingWebSocket } from "./_reconnecting_websocket.js";
3
2
  import type { HyperliquidEventTarget } from "./_hyperliquid_event_target.js";
4
- /**
5
- * Error thrown when a WebSocket request fails:
6
- * - When the WebSocket connection is closed
7
- * - When the server responds with an error message
8
- */
9
- export declare class WebSocketRequestError extends TransportError {
10
- constructor(message: string);
11
- }
12
3
  /**
13
4
  * Manages WebSocket requests to the Hyperliquid API.
14
5
  * Handles request creation, sending, and mapping responses to their corresponding requests.
@@ -1 +1 @@
1
- {"version":3,"file":"_websocket_async_request.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/_websocket_async_request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAiB7E;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;gBACzC,OAAO,EAAE,MAAM;CAI9B;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAgBlB,SAAS,CAAC,MAAM,EAAE,qBAAqB;IAfnD,SAAS,CAAC,MAAM,EAAE,MAAM,CAAK;IAC7B,SAAS,CAAC,KAAK,EAAE;QACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QAEpB,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAE/B,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;KAClC,EAAE,CAAM;IACT,eAAe,EAAE,MAAM,CAAK;IAE5B;;;;OAIG;gBACmB,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,sBAAsB;IAsFrF;;;OAGG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5D,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IA6ClH,6DAA6D;IAC7D,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;CAK7C"}
1
+ {"version":3,"file":"_websocket_async_request.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/_websocket_async_request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAkB7E;;;GAGG;AACH,qBAAa,qBAAqB;IAgBlB,SAAS,CAAC,MAAM,EAAE,qBAAqB;IAfnD,SAAS,CAAC,MAAM,EAAE,MAAM,CAAK;IAC7B,SAAS,CAAC,KAAK,EAAE;QACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QAEpB,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAE/B,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;KAClC,EAAE,CAAM;IACT,eAAe,EAAE,MAAM,CAAK;IAE5B;;;;OAIG;gBACmB,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,sBAAsB;IAiFrF;;;OAGG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5D,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IA6ClH,6DAA6D;IAC7D,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;CAK7C"}
@@ -1,15 +1,4 @@
1
- import { TransportError } from "../base.js";
2
- /**
3
- * Error thrown when a WebSocket request fails:
4
- * - When the WebSocket connection is closed
5
- * - When the server responds with an error message
6
- */
7
- export class WebSocketRequestError extends TransportError {
8
- constructor(message) {
9
- super(message);
10
- this.name = "WebSocketRequestError";
11
- }
12
- }
1
+ import { WebSocketRequestError } from "./websocket_transport.js";
13
2
  /**
14
3
  * Manages WebSocket requests to the Hyperliquid API.
15
4
  * Handles request creation, sending, and mapping responses to their corresponding requests.
@@ -50,37 +39,42 @@ export class WebSocketAsyncRequest {
50
39
  const parsedRequest = JSON.parse(request);
51
40
  // For `post` requests
52
41
  if ("id" in parsedRequest && typeof parsedRequest.id === "number") {
53
- this.queue.findLast((item) => item.id === parsedRequest.id)?.reject(new WebSocketRequestError(`Cannot complete WebSocket request: ${event.detail}`));
42
+ this.queue.findLast((item) => item.id === parsedRequest.id)
43
+ ?.reject(new WebSocketRequestError(`Server error: ${event.detail}`, { cause: event.detail }));
54
44
  return;
55
45
  }
56
46
  // For `subscribe` and `unsubscribe` requests
57
47
  if ("subscription" in parsedRequest &&
58
48
  typeof parsedRequest.subscription === "object" && parsedRequest.subscription !== null) {
59
49
  const id = WebSocketAsyncRequest.requestToId(parsedRequest);
60
- this.queue.findLast((item) => item.id === id)?.reject(new WebSocketRequestError(`Cannot complete WebSocket request: ${event.detail}`));
50
+ this.queue.findLast((item) => item.id === id)
51
+ ?.reject(new WebSocketRequestError(`Server error: ${event.detail}`, { cause: event.detail }));
61
52
  return;
62
53
  }
63
- // For already/invalid subscribed requests
54
+ // For `Already subscribed` and `Invalid subscription` requests
64
55
  if (event.detail.startsWith("Already subscribed") || event.detail.startsWith("Invalid subscription")) {
65
56
  const id = WebSocketAsyncRequest.requestToId({
66
57
  method: "subscribe",
67
58
  subscription: parsedRequest,
68
59
  });
69
- this.queue.findLast((item) => item.id === id)?.reject(new WebSocketRequestError(`Cannot complete WebSocket request: ${event.detail}`));
60
+ this.queue.findLast((item) => item.id === id)
61
+ ?.reject(new WebSocketRequestError(`Server error: ${event.detail}`, { cause: event.detail }));
70
62
  return;
71
63
  }
72
- // For already unsubscribed requests
64
+ // For `Already unsubscribed` requests
73
65
  if (event.detail.startsWith("Already unsubscribed")) {
74
66
  const id = WebSocketAsyncRequest.requestToId({
75
67
  method: "unsubscribe",
76
68
  subscription: parsedRequest,
77
69
  });
78
- this.queue.findLast((item) => item.id === id)?.reject(new WebSocketRequestError(`Cannot complete WebSocket request: ${event.detail}`));
70
+ this.queue.findLast((item) => item.id === id)
71
+ ?.reject(new WebSocketRequestError(`Server error: ${event.detail}`, { cause: event.detail }));
79
72
  return;
80
73
  }
81
74
  // For unknown requests
82
75
  const id = WebSocketAsyncRequest.requestToId(parsedRequest);
83
- this.queue.findLast((item) => item.id === id)?.reject(new WebSocketRequestError(`Cannot complete WebSocket request: ${event.detail}`));
76
+ this.queue.findLast((item) => item.id === id)
77
+ ?.reject(new WebSocketRequestError(`Server error: ${event.detail}`, { cause: event.detail }));
84
78
  }
85
79
  catch {
86
80
  // Ignore JSON parsing errors
@@ -89,7 +83,7 @@ export class WebSocketAsyncRequest {
89
83
  // Throws all pending requests if the connection is dropped
90
84
  socket.addEventListener("close", () => {
91
85
  this.queue.forEach(({ reject }) => {
92
- reject(new WebSocketRequestError("Cannot complete WebSocket request: connection is closed"));
86
+ reject(new WebSocketRequestError("WebSocket connection closed."));
93
87
  });
94
88
  this.queue = [];
95
89
  });
@@ -1,8 +1,7 @@
1
+ import { type IRequestTransport, type ISubscriptionTransport, type Subscription, TransportError } from "../base.js";
1
2
  import { type MessageBufferStrategy, ReconnectingWebSocket, ReconnectingWebSocketError, type ReconnectingWebSocketOptions } from "./_reconnecting_websocket.js";
2
3
  import { HyperliquidEventTarget } from "./_hyperliquid_event_target.js";
3
- import { WebSocketAsyncRequest, WebSocketRequestError } from "./_websocket_async_request.js";
4
- import type { IRequestTransport, ISubscriptionTransport, Subscription } from "../base.js";
5
- export { WebSocketRequestError };
4
+ import { WebSocketAsyncRequest } from "./_websocket_async_request.js";
6
5
  export { type MessageBufferStrategy, ReconnectingWebSocketError, type ReconnectingWebSocketOptions };
7
6
  /** Configuration options for the WebSocket transport layer. */
8
7
  export interface WebSocketTransportOptions {
@@ -46,6 +45,10 @@ export interface WebSocketTransportOptions {
46
45
  */
47
46
  autoResubscribe?: boolean;
48
47
  }
48
+ /** Error thrown when a WebSocket request fails. */
49
+ export declare class WebSocketRequestError extends TransportError {
50
+ constructor(message?: string, options?: ErrorOptions);
51
+ }
49
52
  /** WebSocket implementation of the REST and Subscription transport interfaces. */
50
53
  export declare class WebSocketTransport implements IRequestTransport, ISubscriptionTransport, AsyncDisposable {
51
54
  protected _wsRequester: WebSocketAsyncRequest;
@@ -95,18 +98,19 @@ export declare class WebSocketTransport implements IRequestTransport, ISubscript
95
98
  * @param payload - The payload to send with the request.
96
99
  * @param signal - An optional abort signal.
97
100
  * @returns A promise that resolves with parsed JSON response body.
101
+ *
98
102
  * @throws {WebSocketRequestError} - An error that occurs when a WebSocket request fails.
99
103
  */
100
104
  request<T>(type: "info" | "exchange" | "explorer", payload: unknown, signal?: AbortSignal): Promise<T>;
101
105
  /**
102
106
  * Subscribes to a Hyperliquid event channel.
103
- *
104
107
  * Sends a subscription request to the server and listens for events.
105
108
  *
106
109
  * @param channel - The event channel to listen to.
107
110
  * @param payload - A payload to send with the subscription request.
108
111
  * @param listener - A function to call when the event is dispatched.
109
112
  * @returns A promise that resolves with a {@link Subscription} object to manage the subscription lifecycle.
113
+ *
110
114
  * @throws {WebSocketRequestError} - An error that occurs when a WebSocket request fails.
111
115
  */
112
116
  subscribe<T>(channel: string, payload: unknown, listener: (data: CustomEvent<T>) => void): Promise<Subscription>;
@@ -1 +1 @@
1
- {"version":3,"file":"websocket_transport.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/websocket_transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket_transport.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/websocket_transport.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,15 @@
1
+ import { TransportError } from "../base.js";
1
2
  import { ReconnectingWebSocket, ReconnectingWebSocketError, } from "./_reconnecting_websocket.js";
2
3
  import { HyperliquidEventTarget } from "./_hyperliquid_event_target.js";
3
- import { WebSocketAsyncRequest, WebSocketRequestError } from "./_websocket_async_request.js";
4
- export { WebSocketRequestError };
4
+ import { WebSocketAsyncRequest } from "./_websocket_async_request.js";
5
5
  export { ReconnectingWebSocketError };
6
+ /** Error thrown when a WebSocket request fails. */
7
+ export class WebSocketRequestError extends TransportError {
8
+ constructor(message, options) {
9
+ super(message, options);
10
+ this.name = "WebSocketRequestError";
11
+ }
12
+ }
6
13
  /** WebSocket implementation of the REST and Subscription transport interfaces. */
7
14
  export class WebSocketTransport {
8
15
  _wsRequester;
@@ -55,75 +62,97 @@ export class WebSocketTransport {
55
62
  * @param payload - The payload to send with the request.
56
63
  * @param signal - An optional abort signal.
57
64
  * @returns A promise that resolves with parsed JSON response body.
65
+ *
58
66
  * @throws {WebSocketRequestError} - An error that occurs when a WebSocket request fails.
59
67
  */
60
- request(type, payload, signal) {
61
- const timeoutSignal = this.timeout ? AbortSignal.timeout(this.timeout) : undefined;
62
- const combinedSignal = signal && timeoutSignal
63
- ? AbortSignal.any([signal, timeoutSignal])
64
- : signal ?? timeoutSignal;
65
- return this._wsRequester.request("post", {
66
- type: type === "exchange" ? "action" : type,
67
- payload,
68
- }, combinedSignal);
68
+ async request(type, payload, signal) {
69
+ try {
70
+ const timeoutSignal = this.timeout ? AbortSignal.timeout(this.timeout) : undefined;
71
+ const combinedSignal = signal && timeoutSignal
72
+ ? AbortSignal.any([signal, timeoutSignal])
73
+ : signal ?? timeoutSignal;
74
+ return await this._wsRequester.request("post", {
75
+ type: type === "exchange" ? "action" : type,
76
+ payload,
77
+ }, combinedSignal);
78
+ }
79
+ catch (error) {
80
+ if (error instanceof WebSocketRequestError)
81
+ throw error; // Re-throw known errors
82
+ throw new WebSocketRequestError("Unknown error while making a WebSocket request. See the `cause` for more details.", { cause: error });
83
+ }
69
84
  }
70
85
  /**
71
86
  * Subscribes to a Hyperliquid event channel.
72
- *
73
87
  * Sends a subscription request to the server and listens for events.
74
88
  *
75
89
  * @param channel - The event channel to listen to.
76
90
  * @param payload - A payload to send with the subscription request.
77
91
  * @param listener - A function to call when the event is dispatched.
78
92
  * @returns A promise that resolves with a {@link Subscription} object to manage the subscription lifecycle.
93
+ *
79
94
  * @throws {WebSocketRequestError} - An error that occurs when a WebSocket request fails.
80
95
  */
81
96
  async subscribe(channel, payload, listener) {
82
- // Create a unique identifier for the subscription
83
- const id = WebSocketAsyncRequest.requestToId(payload);
84
- // Initialize new subscription, if it doesn't exist
85
- let subscription = this._subscriptions.get(id);
86
- if (!subscription) {
87
- // Send subscription request
88
- const promise = this._wsRequester.request("subscribe", payload);
89
- // Cache subscription info
90
- subscription = {
91
- listeners: new Map(),
92
- promise,
93
- resubscribeAbortController: new AbortController(),
94
- };
95
- this._subscriptions.set(id, subscription);
96
- }
97
- // Initialize new listener, if it doesn't exist
98
- let unsubscribe = subscription.listeners.get(listener);
99
- if (!unsubscribe) {
100
- // Create new unsubscribe function
101
- unsubscribe = async () => {
102
- // Remove listener and cleanup
103
- this._hlEvents.removeEventListener(channel, listener);
104
- const subscription = this._subscriptions.get(id);
105
- subscription?.listeners.delete(listener);
106
- // If no listeners remain, remove subscription entirely
107
- if (subscription?.listeners.size === 0) {
108
- // Cleanup subscription
109
- this._subscriptions.delete(id);
110
- // If the socket is open, send unsubscription request
111
- if (this.socket.readyState === ReconnectingWebSocket.OPEN) {
112
- await this._wsRequester.request("unsubscribe", payload);
97
+ try {
98
+ // Create a unique identifier for the subscription
99
+ const id = WebSocketAsyncRequest.requestToId(payload);
100
+ // Initialize new subscription, if it doesn't exist
101
+ let subscription = this._subscriptions.get(id);
102
+ if (!subscription) {
103
+ // Send subscription request
104
+ const promise = this._wsRequester.request("subscribe", payload);
105
+ // Cache subscription info
106
+ subscription = {
107
+ listeners: new Map(),
108
+ promise,
109
+ resubscribeAbortController: new AbortController(),
110
+ };
111
+ this._subscriptions.set(id, subscription);
112
+ }
113
+ // Initialize new listener, if it doesn't exist
114
+ let unsubscribe = subscription.listeners.get(listener);
115
+ if (!unsubscribe) {
116
+ // Create new unsubscribe function
117
+ unsubscribe = async () => {
118
+ try {
119
+ // Remove listener and cleanup
120
+ this._hlEvents.removeEventListener(channel, listener);
121
+ const subscription = this._subscriptions.get(id);
122
+ subscription?.listeners.delete(listener);
123
+ // If no listeners remain, remove subscription entirely
124
+ if (subscription?.listeners.size === 0) {
125
+ // Cleanup subscription
126
+ this._subscriptions.delete(id);
127
+ // If the socket is open, send unsubscription request
128
+ if (this.socket.readyState === ReconnectingWebSocket.OPEN) {
129
+ await this._wsRequester.request("unsubscribe", payload);
130
+ }
131
+ }
113
132
  }
114
- }
133
+ catch (error) {
134
+ if (error instanceof WebSocketRequestError)
135
+ throw error; // Re-throw known errors
136
+ throw new WebSocketRequestError("Unknown error while unsubscribing from a WebSocket channel. See the `cause` for more details.", { cause: error });
137
+ }
138
+ };
139
+ // Add listener and cache unsubscribe function
140
+ this._hlEvents.addEventListener(channel, listener);
141
+ subscription.listeners.set(listener, unsubscribe);
142
+ }
143
+ // Wait for the initial subscription request to complete
144
+ await subscription.promise;
145
+ // Return subscription control object
146
+ return {
147
+ unsubscribe,
148
+ resubscribeSignal: subscription.resubscribeAbortController?.signal,
115
149
  };
116
- // Add listener and cache unsubscribe function
117
- this._hlEvents.addEventListener(channel, listener);
118
- subscription.listeners.set(listener, unsubscribe);
119
150
  }
120
- // Wait for the initial subscription request to complete
121
- await subscription.promise;
122
- // Return subscription control object
123
- return {
124
- unsubscribe,
125
- resubscribeSignal: subscription.resubscribeAbortController?.signal,
126
- };
151
+ catch (error) {
152
+ if (error instanceof WebSocketRequestError)
153
+ throw error; // Re-throw known errors
154
+ throw new WebSocketRequestError("Unknown error while subscribing to a WebSocket channel. See the `cause` for more details.", { cause: error });
155
+ }
127
156
  }
128
157
  /**
129
158
  * Waits until the WebSocket connection is ready.