@nktkas/hyperliquid 0.15.0 → 0.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/esm/src/clients/wallet.d.ts +5 -8
- package/esm/src/clients/wallet.d.ts.map +1 -1
- package/esm/src/clients/wallet.js +1 -4
- package/esm/src/signing.d.ts +3 -3
- package/esm/src/signing.d.ts.map +1 -1
- package/esm/src/transports/http/http_transport.d.ts +2 -6
- package/esm/src/transports/http/http_transport.d.ts.map +1 -1
- package/esm/src/transports/http/http_transport.js +2 -4
- package/esm/src/transports/websocket/_reconnecting_websocket.d.ts +22 -42
- package/esm/src/transports/websocket/_reconnecting_websocket.d.ts.map +1 -1
- package/esm/src/transports/websocket/_reconnecting_websocket.js +133 -82
- package/esm/src/transports/websocket/_websocket_request_dispatcher.d.ts +6 -11
- package/esm/src/transports/websocket/_websocket_request_dispatcher.d.ts.map +1 -1
- package/esm/src/transports/websocket/_websocket_request_dispatcher.js +8 -12
- package/esm/src/transports/websocket/websocket_transport.d.ts +2 -4
- package/esm/src/transports/websocket/websocket_transport.d.ts.map +1 -1
- package/esm/src/transports/websocket/websocket_transport.js +14 -12
- package/package.json +1 -1
- package/script/src/clients/wallet.d.ts +5 -8
- package/script/src/clients/wallet.d.ts.map +1 -1
- package/script/src/clients/wallet.js +1 -4
- package/script/src/signing.d.ts +3 -3
- package/script/src/signing.d.ts.map +1 -1
- package/script/src/transports/http/http_transport.d.ts +2 -6
- package/script/src/transports/http/http_transport.d.ts.map +1 -1
- package/script/src/transports/http/http_transport.js +2 -4
- package/script/src/transports/websocket/_reconnecting_websocket.d.ts +22 -42
- package/script/src/transports/websocket/_reconnecting_websocket.d.ts.map +1 -1
- package/script/src/transports/websocket/_reconnecting_websocket.js +133 -82
- package/script/src/transports/websocket/_websocket_request_dispatcher.d.ts +6 -11
- package/script/src/transports/websocket/_websocket_request_dispatcher.d.ts.map +1 -1
- package/script/src/transports/websocket/_websocket_request_dispatcher.js +8 -12
- package/script/src/transports/websocket/websocket_transport.d.ts +2 -4
- package/script/src/transports/websocket/websocket_transport.d.ts.map +1 -1
- package/script/src/transports/websocket/websocket_transport.js +14 -12
|
@@ -13,22 +13,17 @@ export declare class WebSocketRequestError extends TransportError {
|
|
|
13
13
|
* Handles request creation, sending, and mapping responses to their corresponding requests.
|
|
14
14
|
*/
|
|
15
15
|
export declare class WebSocketRequestDispatcher {
|
|
16
|
-
|
|
17
|
-
/** Last used request ID */
|
|
18
|
-
|
|
16
|
+
private socket;
|
|
17
|
+
/** Last used post request ID */
|
|
18
|
+
private lastId;
|
|
19
19
|
/** Map of pending requests waiting for responses */
|
|
20
|
-
|
|
21
|
-
resolve: (value: unknown) => void;
|
|
22
|
-
reject: (reason: unknown) => void;
|
|
23
|
-
}>;
|
|
20
|
+
private pending;
|
|
24
21
|
/**
|
|
25
22
|
* Creates a new WebSocket request dispatcher.
|
|
26
23
|
* @param socket - WebSocket connection instance for sending requests to the Hyperliquid WebSocket API
|
|
27
24
|
* @param hlEvents - Used to recognize Hyperliquid responses and match them with sent requests
|
|
28
25
|
*/
|
|
29
26
|
constructor(socket: WebSocket, hlEvents: HyperliquidEventTarget);
|
|
30
|
-
/** Gets the next request ID */
|
|
31
|
-
protected get nextId(): number;
|
|
32
27
|
/**
|
|
33
28
|
* Sends a request to the Hyperliquid API.
|
|
34
29
|
* @param method - The method of websocket request.
|
|
@@ -42,13 +37,13 @@ export declare class WebSocketRequestDispatcher {
|
|
|
42
37
|
* @param id - A request ID or a stringified request.
|
|
43
38
|
* @param value - A resolution value.
|
|
44
39
|
*/
|
|
45
|
-
|
|
40
|
+
private resolve;
|
|
46
41
|
/**
|
|
47
42
|
* Rejects a pending request.
|
|
48
43
|
* @param id - A request ID or a stringified request.
|
|
49
44
|
* @param reason - A rejection reason.
|
|
50
45
|
*/
|
|
51
|
-
|
|
46
|
+
private reject;
|
|
52
47
|
/**
|
|
53
48
|
* Normalizes a request object to an ID.
|
|
54
49
|
* @param value - A request object.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_websocket_request_dispatcher.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/_websocket_request_dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"_websocket_request_dispatcher.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/_websocket_request_dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAY7E;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;gBACzC,OAAO,EAAE,MAAM;CAI9B;AAED;;;GAGG;AACH,qBAAa,0BAA0B;IAkBvB,OAAO,CAAC,MAAM;IAjB1B,gCAAgC;IAChC,OAAO,CAAC,MAAM,CAAa;IAE3B,oDAAoD;IACpD,OAAO,CAAC,OAAO,CAMD;IAEd;;;;OAIG;gBACiB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAsB;IA2DvE;;;;;;OAMG;IACG,OAAO,CACT,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,EAC5C,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,OAAO,CAAC;IAiCnB;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAKf;;;;OAIG;IACH,OAAO,CAAC,MAAM;IAKd;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;CAK7C"}
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
writable: true,
|
|
41
41
|
value: socket
|
|
42
42
|
});
|
|
43
|
-
/** Last used request ID */
|
|
43
|
+
/** Last used post request ID */
|
|
44
44
|
Object.defineProperty(this, "lastId", {
|
|
45
45
|
enumerable: true,
|
|
46
46
|
configurable: true,
|
|
@@ -102,10 +102,6 @@
|
|
|
102
102
|
this.pending.clear();
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
|
-
/** Gets the next request ID */
|
|
106
|
-
get nextId() {
|
|
107
|
-
return ++this.lastId;
|
|
108
|
-
}
|
|
109
105
|
/**
|
|
110
106
|
* Sends a request to the Hyperliquid API.
|
|
111
107
|
* @param method - The method of websocket request.
|
|
@@ -114,12 +110,14 @@
|
|
|
114
110
|
* @returns A promise that resolves with the parsed JSON response body.
|
|
115
111
|
*/
|
|
116
112
|
async request(method, payload, signal) {
|
|
117
|
-
signal
|
|
113
|
+
// Reject the request if the signal is aborted
|
|
114
|
+
if (signal?.aborted)
|
|
115
|
+
return Promise.reject(signal.reason);
|
|
118
116
|
// Create a request object
|
|
119
117
|
let id;
|
|
120
118
|
let request;
|
|
121
119
|
if (method === "post") {
|
|
122
|
-
id = this.
|
|
120
|
+
id = ++this.lastId;
|
|
123
121
|
request = { method, id, request: payload };
|
|
124
122
|
}
|
|
125
123
|
else {
|
|
@@ -180,18 +178,16 @@
|
|
|
180
178
|
if (Array.isArray(obj)) {
|
|
181
179
|
return obj.map(deepLowerHex);
|
|
182
180
|
}
|
|
183
|
-
|
|
181
|
+
if (typeof obj === "object" && obj !== null) {
|
|
184
182
|
return Object.entries(obj).reduce((acc, [key, val]) => ({
|
|
185
183
|
...acc,
|
|
186
184
|
[key]: deepLowerHex(val),
|
|
187
185
|
}), {});
|
|
188
186
|
}
|
|
189
|
-
|
|
187
|
+
if (typeof obj === "string" && /^0x[0-9A-Fa-f]+$/.test(obj)) {
|
|
190
188
|
return obj.toLowerCase();
|
|
191
189
|
}
|
|
192
|
-
|
|
193
|
-
return obj;
|
|
194
|
-
}
|
|
190
|
+
return obj;
|
|
195
191
|
}
|
|
196
192
|
/**
|
|
197
193
|
* Deeply sort the keys of an object.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ReconnectingWebSocket, type ReconnectingWebSocketOptions } from "./_reconnecting_websocket.js";
|
|
1
|
+
import { type MessageBufferStrategy, ReconnectingWebSocket, ReconnectingWebSocketError, type ReconnectingWebSocketOptions } from "./_reconnecting_websocket.js";
|
|
2
2
|
import { HyperliquidEventTarget } from "./_hyperliquid_event_target.js";
|
|
3
3
|
import { WebSocketRequestDispatcher, WebSocketRequestError } from "./_websocket_request_dispatcher.js";
|
|
4
4
|
import type { IRequestTransport, ISubscriptionTransport, Subscription } from "../../base.js";
|
|
5
5
|
export { WebSocketRequestError };
|
|
6
|
-
export type
|
|
6
|
+
export { type MessageBufferStrategy, ReconnectingWebSocketError, type ReconnectingWebSocketOptions };
|
|
7
7
|
/** Configuration options for the WebSocket transport layer. */
|
|
8
8
|
export interface WebSocketTransportOptions {
|
|
9
9
|
/**
|
|
@@ -105,7 +105,5 @@ export declare class WebSocketTransport implements IRequestTransport, ISubscript
|
|
|
105
105
|
* @returns A promise that resolves when the connection is fully closed.
|
|
106
106
|
*/
|
|
107
107
|
close(signal?: AbortSignal): Promise<void>;
|
|
108
|
-
/** Combines a timeout with an optional abort signal. */
|
|
109
|
-
protected _combineTimeoutWithSignal(timeout?: number | null, signal?: AbortSignal): AbortSignal | undefined;
|
|
110
108
|
}
|
|
111
109
|
//# sourceMappingURL=websocket_transport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket_transport.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/websocket_transport.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"websocket_transport.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/websocket_transport.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,qBAAqB,EAC1B,qBAAqB,EACrB,0BAA0B,EAC1B,KAAK,4BAA4B,EACpC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AACvG,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7F,OAAO,EAAE,qBAAqB,EAAE,CAAC;AACjC,OAAO,EAAE,KAAK,qBAAqB,EAAE,0BAA0B,EAAE,KAAK,4BAA4B,EAAE,CAAC;AAErG,+DAA+D;AAC/D,MAAM,WAAW,yBAAyB;IACtC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAEnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE;QACR;;;;WAIG;QACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,EAAE,4BAA4B,CAAC;CAC5C;AAED,kFAAkF;AAClF,qBAAa,kBAAmB,YAAW,iBAAiB,EAAE,sBAAsB;IAChF,qDAAqD;IACrD,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEhD,iDAAiD;IACjD,SAAS,CAAC,YAAY,EAAE,0BAA0B,CAAC;IAEnD,6CAA6C;IAC7C,SAAS,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAE5C;;;;;OAKG;IACH,SAAS,CAAC,cAAc,EAAE,GAAG,CACzB,MAAM,EACN;QACI,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACrF,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;KACpC,CACJ,CAAa;IAEd;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,yCAAyC;IACzC,QAAQ,CAAC,SAAS,EAAE;QAChB;;;WAGG;QACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KACpC,CAAC;IAEF,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAEvC;;;OAGG;gBACS,OAAO,CAAC,EAAE,yBAAyB;IAuC/C;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBzG;;;;;;;OAOG;IACG,SAAS,CACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,EACrC,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAwExB;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB1C;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAoB7C"}
|
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.WebSocketTransport = exports.WebSocketRequestError = void 0;
|
|
12
|
+
exports.WebSocketTransport = exports.ReconnectingWebSocketError = exports.WebSocketRequestError = void 0;
|
|
13
13
|
const _reconnecting_websocket_js_1 = require("./_reconnecting_websocket.js");
|
|
14
|
+
Object.defineProperty(exports, "ReconnectingWebSocketError", { enumerable: true, get: function () { return _reconnecting_websocket_js_1.ReconnectingWebSocketError; } });
|
|
14
15
|
const _hyperliquid_event_target_js_1 = require("./_hyperliquid_event_target.js");
|
|
15
16
|
const _websocket_request_dispatcher_js_1 = require("./_websocket_request_dispatcher.js");
|
|
16
17
|
Object.defineProperty(exports, "WebSocketRequestError", { enumerable: true, get: function () { return _websocket_request_dispatcher_js_1.WebSocketRequestError; } });
|
|
@@ -123,7 +124,10 @@
|
|
|
123
124
|
return Promise.reject(new _websocket_request_dispatcher_js_1.WebSocketRequestError("Explorer requests are not supported in the Hyperliquid WebSocket API."));
|
|
124
125
|
}
|
|
125
126
|
// Send the request and wait for a response
|
|
126
|
-
const
|
|
127
|
+
const timeoutSignal = this.timeout ? AbortSignal.timeout(this.timeout) : undefined;
|
|
128
|
+
const combinedSignal = signal && timeoutSignal
|
|
129
|
+
? AbortSignal.any([signal, timeoutSignal])
|
|
130
|
+
: signal ?? timeoutSignal;
|
|
127
131
|
return this._wsRequester.request("post", {
|
|
128
132
|
type: type === "exchange" ? "action" : type,
|
|
129
133
|
payload,
|
|
@@ -144,7 +148,10 @@
|
|
|
144
148
|
let subscription = this._subscriptions.get(id);
|
|
145
149
|
if (!subscription) {
|
|
146
150
|
// Send subscription request
|
|
147
|
-
const
|
|
151
|
+
const timeoutSignal = this.timeout ? AbortSignal.timeout(this.timeout) : undefined;
|
|
152
|
+
const combinedSignal = signal && timeoutSignal
|
|
153
|
+
? AbortSignal.any([signal, timeoutSignal])
|
|
154
|
+
: signal ?? timeoutSignal;
|
|
148
155
|
const requestPromise = this._wsRequester.request("subscribe", payload, combinedSignal);
|
|
149
156
|
// Cache subscription info
|
|
150
157
|
subscription = { listeners: new Map(), requestPromise };
|
|
@@ -165,7 +172,10 @@
|
|
|
165
172
|
this._subscriptions.delete(id);
|
|
166
173
|
// If the socket is open, send unsubscription request
|
|
167
174
|
if (this.socket.readyState === WebSocket.OPEN) {
|
|
168
|
-
const
|
|
175
|
+
const timeoutSignal = this.timeout ? AbortSignal.timeout(this.timeout) : undefined;
|
|
176
|
+
const combinedSignal = signal && timeoutSignal
|
|
177
|
+
? AbortSignal.any([signal, timeoutSignal])
|
|
178
|
+
: signal ?? timeoutSignal;
|
|
169
179
|
await this._wsRequester.request("unsubscribe", payload, combinedSignal);
|
|
170
180
|
}
|
|
171
181
|
}
|
|
@@ -240,14 +250,6 @@
|
|
|
240
250
|
this.socket.close();
|
|
241
251
|
});
|
|
242
252
|
}
|
|
243
|
-
/** Combines a timeout with an optional abort signal. */
|
|
244
|
-
_combineTimeoutWithSignal(timeout, signal) {
|
|
245
|
-
if (typeof timeout !== "number")
|
|
246
|
-
return signal;
|
|
247
|
-
if (!(signal instanceof AbortSignal))
|
|
248
|
-
return AbortSignal.timeout(timeout);
|
|
249
|
-
return AbortSignal.any([AbortSignal.timeout(timeout), signal]);
|
|
250
|
-
}
|
|
251
253
|
}
|
|
252
254
|
exports.WebSocketTransport = WebSocketTransport;
|
|
253
255
|
});
|