@nktkas/hyperliquid 0.19.2 → 0.21.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.
- package/README.md +61 -79
- package/esm/mod.d.ts +5 -3
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +4 -3
- package/esm/src/base.d.ts +1 -47
- package/esm/src/base.d.ts.map +1 -1
- package/esm/src/base.js +1 -8
- package/{script/src/clients/wallet.d.ts → esm/src/clients/exchange.d.ts} +111 -112
- package/esm/src/clients/exchange.d.ts.map +1 -0
- package/esm/src/clients/{wallet.js → exchange.js} +96 -306
- package/esm/src/clients/{public.d.ts → info.d.ts} +121 -102
- package/esm/src/clients/info.d.ts.map +1 -0
- package/esm/src/clients/{public.js → info.js} +73 -57
- package/{script/src/clients/event.d.ts → esm/src/clients/subscription.d.ts} +61 -80
- package/esm/src/clients/subscription.d.ts.map +1 -0
- package/esm/src/clients/{event.js → subscription.js} +106 -136
- package/esm/src/signing.d.ts +4 -0
- package/esm/src/signing.d.ts.map +1 -1
- package/esm/src/signing.js +23 -5
- package/esm/src/transports/base.d.ts +47 -0
- package/esm/src/transports/base.d.ts.map +1 -0
- package/esm/src/transports/base.js +8 -0
- package/esm/src/transports/http/http_transport.d.ts +8 -5
- package/esm/src/transports/http/http_transport.d.ts.map +1 -1
- package/esm/src/transports/http/http_transport.js +15 -62
- package/esm/src/transports/websocket/_hyperliquid_event_target.d.ts +36 -39
- package/esm/src/transports/websocket/_hyperliquid_event_target.d.ts.map +1 -1
- package/esm/src/transports/websocket/_reconnecting_websocket.d.ts +21 -27
- package/esm/src/transports/websocket/_reconnecting_websocket.d.ts.map +1 -1
- package/esm/src/transports/websocket/_reconnecting_websocket.js +89 -182
- package/{script/src/transports/websocket/_websocket_request_dispatcher.d.ts → esm/src/transports/websocket/_websocket_async_request.d.ts} +17 -19
- package/esm/src/transports/websocket/_websocket_async_request.d.ts.map +1 -0
- package/esm/src/transports/websocket/_websocket_async_request.js +177 -0
- package/esm/src/transports/websocket/websocket_transport.d.ts +54 -41
- package/esm/src/transports/websocket/websocket_transport.d.ts.map +1 -1
- package/esm/src/transports/websocket/websocket_transport.js +101 -113
- package/esm/src/types/info/accounts.d.ts +1 -0
- package/esm/src/types/info/accounts.d.ts.map +1 -1
- package/esm/src/types/info/assets.d.ts +0 -48
- package/esm/src/types/info/assets.d.ts.map +1 -1
- package/esm/src/types/info/markets.d.ts +52 -0
- package/esm/src/types/info/markets.d.ts.map +1 -0
- package/esm/src/types/info/markets.js +1 -0
- package/esm/src/types/info/requests.d.ts +9 -0
- package/esm/src/types/info/requests.d.ts.map +1 -1
- package/esm/src/types/mod.d.ts +3 -0
- package/esm/src/types/mod.d.ts.map +1 -1
- package/esm/src/types/mod.js +2 -0
- package/package.json +12 -9
- package/script/mod.d.ts +5 -3
- package/script/mod.d.ts.map +1 -1
- package/script/mod.js +5 -4
- package/script/src/base.d.ts +1 -47
- package/script/src/base.d.ts.map +1 -1
- package/script/src/base.js +2 -10
- package/{esm/src/clients/wallet.d.ts → script/src/clients/exchange.d.ts} +111 -112
- package/script/src/clients/exchange.d.ts.map +1 -0
- package/script/src/clients/{wallet.js → exchange.js} +98 -308
- package/script/src/clients/{public.d.ts → info.d.ts} +121 -102
- package/script/src/clients/info.d.ts.map +1 -0
- package/script/src/clients/{public.js → info.js} +75 -59
- package/{esm/src/clients/event.d.ts → script/src/clients/subscription.d.ts} +61 -80
- package/script/src/clients/subscription.d.ts.map +1 -0
- package/script/src/clients/{event.js → subscription.js} +108 -138
- package/script/src/signing.d.ts +4 -0
- package/script/src/signing.d.ts.map +1 -1
- package/script/src/signing.js +25 -7
- package/script/src/transports/base.d.ts +47 -0
- package/script/src/transports/base.d.ts.map +1 -0
- package/script/src/transports/base.js +22 -0
- package/script/src/transports/http/http_transport.d.ts +8 -5
- package/script/src/transports/http/http_transport.d.ts.map +1 -1
- package/script/src/transports/http/http_transport.js +16 -63
- package/script/src/transports/websocket/_hyperliquid_event_target.d.ts +36 -39
- package/script/src/transports/websocket/_hyperliquid_event_target.d.ts.map +1 -1
- package/script/src/transports/websocket/_reconnecting_websocket.d.ts +21 -27
- package/script/src/transports/websocket/_reconnecting_websocket.d.ts.map +1 -1
- package/script/src/transports/websocket/_reconnecting_websocket.js +90 -183
- package/{esm/src/transports/websocket/_websocket_request_dispatcher.d.ts → script/src/transports/websocket/_websocket_async_request.d.ts} +17 -19
- package/script/src/transports/websocket/_websocket_async_request.d.ts.map +1 -0
- package/script/src/transports/websocket/_websocket_async_request.js +192 -0
- package/script/src/transports/websocket/websocket_transport.d.ts +54 -41
- package/script/src/transports/websocket/websocket_transport.d.ts.map +1 -1
- package/script/src/transports/websocket/websocket_transport.js +103 -115
- package/script/src/types/info/accounts.d.ts +1 -0
- package/script/src/types/info/accounts.d.ts.map +1 -1
- package/script/src/types/info/assets.d.ts +0 -48
- package/script/src/types/info/assets.d.ts.map +1 -1
- package/script/src/types/info/markets.d.ts +52 -0
- package/script/src/types/info/markets.d.ts.map +1 -0
- package/script/{deps/jsr.io/@noble/hashes/1.8.0/src/crypto.js → src/types/info/markets.js} +0 -2
- package/script/src/types/info/requests.d.ts +9 -0
- package/script/src/types/info/requests.d.ts.map +1 -1
- package/script/src/types/mod.d.ts +3 -0
- package/script/src/types/mod.d.ts.map +1 -1
- package/script/src/types/mod.js +2 -0
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.d.ts +0 -55
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.d.ts.map +0 -1
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.js +0 -66
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/crypto.d.ts +0 -2
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/crypto.d.ts.map +0 -1
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/crypto.js +0 -1
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.d.ts +0 -53
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.d.ts.map +0 -1
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.js +0 -294
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/utils.d.ts +0 -161
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/utils.d.ts.map +0 -1
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/utils.js +0 -280
- package/esm/src/clients/event.d.ts.map +0 -1
- package/esm/src/clients/public.d.ts.map +0 -1
- package/esm/src/clients/wallet.d.ts.map +0 -1
- package/esm/src/transports/websocket/_websocket_request_dispatcher.d.ts.map +0 -1
- package/esm/src/transports/websocket/_websocket_request_dispatcher.js +0 -191
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.d.ts +0 -55
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.d.ts.map +0 -1
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.js +0 -99
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/crypto.d.ts +0 -2
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/crypto.d.ts.map +0 -1
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.d.ts +0 -53
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.d.ts.map +0 -1
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.js +0 -309
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/utils.d.ts +0 -161
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/utils.d.ts.map +0 -1
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/utils.js +0 -322
- package/script/src/clients/event.d.ts.map +0 -1
- package/script/src/clients/public.d.ts.map +0 -1
- package/script/src/clients/wallet.d.ts.map +0 -1
- package/script/src/transports/websocket/_websocket_request_dispatcher.d.ts.map +0 -1
- package/script/src/transports/websocket/_websocket_request_dispatcher.js +0 -206
|
@@ -1,191 +0,0 @@
|
|
|
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
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Manages WebSocket requests to the Hyperliquid API.
|
|
15
|
-
* Handles request creation, sending, and mapping responses to their corresponding requests.
|
|
16
|
-
*/
|
|
17
|
-
export class WebSocketRequestDispatcher {
|
|
18
|
-
/**
|
|
19
|
-
* Creates a new WebSocket request dispatcher.
|
|
20
|
-
* @param socket - WebSocket connection instance for sending requests to the Hyperliquid WebSocket API
|
|
21
|
-
* @param hlEvents - Used to recognize Hyperliquid responses and match them with sent requests
|
|
22
|
-
*/
|
|
23
|
-
constructor(socket, hlEvents) {
|
|
24
|
-
Object.defineProperty(this, "socket", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
configurable: true,
|
|
27
|
-
writable: true,
|
|
28
|
-
value: socket
|
|
29
|
-
});
|
|
30
|
-
/** Last used post request ID */
|
|
31
|
-
Object.defineProperty(this, "lastId", {
|
|
32
|
-
enumerable: true,
|
|
33
|
-
configurable: true,
|
|
34
|
-
writable: true,
|
|
35
|
-
value: 0
|
|
36
|
-
});
|
|
37
|
-
/** Map of pending requests waiting for responses */
|
|
38
|
-
Object.defineProperty(this, "pending", {
|
|
39
|
-
enumerable: true,
|
|
40
|
-
configurable: true,
|
|
41
|
-
writable: true,
|
|
42
|
-
value: new Map()
|
|
43
|
-
});
|
|
44
|
-
// Monitor responses and match the pending request
|
|
45
|
-
hlEvents.addEventListener("subscriptionResponse", (event) => {
|
|
46
|
-
// Use a stringified request as an id
|
|
47
|
-
const id = WebSocketRequestDispatcher.requestToId(event.detail.subscription);
|
|
48
|
-
this.pending.get(id)?.resolve(event.detail);
|
|
49
|
-
});
|
|
50
|
-
hlEvents.addEventListener("post", (event) => {
|
|
51
|
-
const data = event.detail.response.type === "info"
|
|
52
|
-
? event.detail.response.payload.data
|
|
53
|
-
: event.detail.response.payload;
|
|
54
|
-
this.pending.get(event.detail.id)?.resolve(data);
|
|
55
|
-
});
|
|
56
|
-
hlEvents.addEventListener("error", (event) => {
|
|
57
|
-
try {
|
|
58
|
-
// Error event doesn't have an id, use original request to match
|
|
59
|
-
const request = event.detail.match(/{.*}/)?.[0];
|
|
60
|
-
if (request) {
|
|
61
|
-
const parsedRequest = JSON.parse(request);
|
|
62
|
-
if ("id" in parsedRequest && typeof parsedRequest.id === "number") {
|
|
63
|
-
// If a post request was sent, it is possible to get the id from the request
|
|
64
|
-
this.pending.get(parsedRequest.id)?.reject(new WebSocketRequestError(`Cannot complete WebSocket request: ${event.detail}`));
|
|
65
|
-
}
|
|
66
|
-
else if ("subscription" in parsedRequest &&
|
|
67
|
-
typeof parsedRequest.subscription === "object" &&
|
|
68
|
-
parsedRequest.subscription !== null) {
|
|
69
|
-
// If a subscription/unsubscribe request was sent, use the request as an id
|
|
70
|
-
const id = WebSocketRequestDispatcher.requestToId(parsedRequest.subscription);
|
|
71
|
-
this.pending.get(id)?.reject(new WebSocketRequestError(`Cannot complete WebSocket request: ${event.detail}`));
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
// If the request is not recognized, use the parsed request as an id
|
|
75
|
-
const id = WebSocketRequestDispatcher.requestToId(parsedRequest);
|
|
76
|
-
this.pending.get(id)?.reject(new WebSocketRequestError(`Cannot complete WebSocket request: ${event.detail}`));
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
// Ignore JSON parsing errors
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
// Throws all pending requests if the connection is dropped
|
|
85
|
-
socket.addEventListener("close", () => {
|
|
86
|
-
this.pending.forEach(({ reject }) => {
|
|
87
|
-
reject(new WebSocketRequestError("Cannot complete WebSocket request: connection is closed"));
|
|
88
|
-
});
|
|
89
|
-
this.pending.clear();
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Sends a request to the Hyperliquid API.
|
|
94
|
-
* @param method - The method of websocket request.
|
|
95
|
-
* @param payload - The payload to send with the request.
|
|
96
|
-
* @param signal - An optional abort signal.
|
|
97
|
-
* @returns A promise that resolves with the parsed JSON response body.
|
|
98
|
-
*/
|
|
99
|
-
async request(method, payload, signal) {
|
|
100
|
-
// Reject the request if the signal is aborted
|
|
101
|
-
if (signal?.aborted)
|
|
102
|
-
return Promise.reject(signal.reason);
|
|
103
|
-
// Create a request object
|
|
104
|
-
let id;
|
|
105
|
-
let request;
|
|
106
|
-
if (method === "post") {
|
|
107
|
-
id = ++this.lastId;
|
|
108
|
-
request = { method, id, request: payload };
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
id = WebSocketRequestDispatcher.requestToId(payload);
|
|
112
|
-
request = { method, subscription: payload };
|
|
113
|
-
}
|
|
114
|
-
// Send the request
|
|
115
|
-
this.socket.send(JSON.stringify(request));
|
|
116
|
-
// Wait for a response
|
|
117
|
-
let onAbort;
|
|
118
|
-
return await new Promise((resolve, reject) => {
|
|
119
|
-
// Add an abort listener
|
|
120
|
-
onAbort = () => reject(signal?.reason);
|
|
121
|
-
signal?.addEventListener("abort", onAbort, { once: true });
|
|
122
|
-
// Add the promise to the pending list
|
|
123
|
-
this.pending.set(id, { resolve, reject });
|
|
124
|
-
}).finally(() => {
|
|
125
|
-
// Remove the abort listener when the promise is settled
|
|
126
|
-
signal?.removeEventListener("abort", onAbort);
|
|
127
|
-
// Clean up the pending list
|
|
128
|
-
this.pending.delete(id);
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Normalizes a request object to an ID.
|
|
133
|
-
* @param value - A request object.
|
|
134
|
-
* @returns A stringified request.
|
|
135
|
-
*/
|
|
136
|
-
static requestToId(value) {
|
|
137
|
-
const lowerHex = containsUppercaseHex(value) ? deepLowerHex(value) : value;
|
|
138
|
-
const sorted = deepSortKeys(lowerHex);
|
|
139
|
-
return JSON.stringify(sorted); // Also removes undefined
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Deeply converts hexadecimal strings in an object/array to lowercase.
|
|
144
|
-
* @param obj - The object/array to convert hexadecimal strings to lowercase.
|
|
145
|
-
* @returns A new object/array with hexadecimal strings converted to lowercase.
|
|
146
|
-
*/
|
|
147
|
-
function deepLowerHex(obj) {
|
|
148
|
-
if (typeof obj === "string") {
|
|
149
|
-
return /^(0X[0-9a-fA-F]*|0x[0-9a-fA-F]*[A-F][0-9a-fA-F]*)$/.test(obj) ? obj.toLowerCase() : obj;
|
|
150
|
-
}
|
|
151
|
-
if (Array.isArray(obj)) {
|
|
152
|
-
return obj.map(deepLowerHex);
|
|
153
|
-
}
|
|
154
|
-
if (typeof obj === "object" && obj !== null) {
|
|
155
|
-
const result = {};
|
|
156
|
-
const entries = Object.entries(obj);
|
|
157
|
-
for (const [key, value] of entries) {
|
|
158
|
-
result[key] = deepLowerHex(value);
|
|
159
|
-
}
|
|
160
|
-
return result;
|
|
161
|
-
}
|
|
162
|
-
return obj;
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Check if an object contains uppercase hexadecimal strings.
|
|
166
|
-
* @param obj - The object to check.
|
|
167
|
-
* @returns True if the object contains uppercase hexadecimal strings, false otherwise.
|
|
168
|
-
*/
|
|
169
|
-
function containsUppercaseHex(obj) {
|
|
170
|
-
const str = JSON.stringify(obj);
|
|
171
|
-
return /0X[0-9a-fA-F]*|0x[0-9a-fA-F]*[A-F][0-9a-fA-F]*/.test(str);
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Deeply sort the keys of an object.
|
|
175
|
-
* @param obj - An object to sort the keys of.
|
|
176
|
-
* @returns A new object with sorted keys.
|
|
177
|
-
*/
|
|
178
|
-
function deepSortKeys(obj) {
|
|
179
|
-
if (typeof obj !== "object" || obj === null) {
|
|
180
|
-
return obj;
|
|
181
|
-
}
|
|
182
|
-
if (Array.isArray(obj)) {
|
|
183
|
-
return obj.map(deepSortKeys);
|
|
184
|
-
}
|
|
185
|
-
const result = {};
|
|
186
|
-
const keys = Object.keys(obj).sort();
|
|
187
|
-
for (const key of keys) {
|
|
188
|
-
result[key] = deepSortKeys(obj[key]);
|
|
189
|
-
}
|
|
190
|
-
return result;
|
|
191
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
declare function fromBig(n: bigint, le?: boolean): {
|
|
2
|
-
h: number;
|
|
3
|
-
l: number;
|
|
4
|
-
};
|
|
5
|
-
declare function split(lst: bigint[], le?: boolean): Uint32Array[];
|
|
6
|
-
declare const toBig: (h: number, l: number) => bigint;
|
|
7
|
-
declare const shrSH: (h: number, _l: number, s: number) => number;
|
|
8
|
-
declare const shrSL: (h: number, l: number, s: number) => number;
|
|
9
|
-
declare const rotrSH: (h: number, l: number, s: number) => number;
|
|
10
|
-
declare const rotrSL: (h: number, l: number, s: number) => number;
|
|
11
|
-
declare const rotrBH: (h: number, l: number, s: number) => number;
|
|
12
|
-
declare const rotrBL: (h: number, l: number, s: number) => number;
|
|
13
|
-
declare const rotr32H: (_h: number, l: number) => number;
|
|
14
|
-
declare const rotr32L: (h: number, _l: number) => number;
|
|
15
|
-
declare const rotlSH: (h: number, l: number, s: number) => number;
|
|
16
|
-
declare const rotlSL: (h: number, l: number, s: number) => number;
|
|
17
|
-
declare const rotlBH: (h: number, l: number, s: number) => number;
|
|
18
|
-
declare const rotlBL: (h: number, l: number, s: number) => number;
|
|
19
|
-
declare function add(Ah: number, Al: number, Bh: number, Bl: number): {
|
|
20
|
-
h: number;
|
|
21
|
-
l: number;
|
|
22
|
-
};
|
|
23
|
-
declare const add3L: (Al: number, Bl: number, Cl: number) => number;
|
|
24
|
-
declare const add3H: (low: number, Ah: number, Bh: number, Ch: number) => number;
|
|
25
|
-
declare const add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number;
|
|
26
|
-
declare const add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number;
|
|
27
|
-
declare const add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number;
|
|
28
|
-
declare const add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number;
|
|
29
|
-
export { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig };
|
|
30
|
-
declare const u64: {
|
|
31
|
-
fromBig: typeof fromBig;
|
|
32
|
-
split: typeof split;
|
|
33
|
-
toBig: (h: number, l: number) => bigint;
|
|
34
|
-
shrSH: (h: number, _l: number, s: number) => number;
|
|
35
|
-
shrSL: (h: number, l: number, s: number) => number;
|
|
36
|
-
rotrSH: (h: number, l: number, s: number) => number;
|
|
37
|
-
rotrSL: (h: number, l: number, s: number) => number;
|
|
38
|
-
rotrBH: (h: number, l: number, s: number) => number;
|
|
39
|
-
rotrBL: (h: number, l: number, s: number) => number;
|
|
40
|
-
rotr32H: (_h: number, l: number) => number;
|
|
41
|
-
rotr32L: (h: number, _l: number) => number;
|
|
42
|
-
rotlSH: (h: number, l: number, s: number) => number;
|
|
43
|
-
rotlSL: (h: number, l: number, s: number) => number;
|
|
44
|
-
rotlBH: (h: number, l: number, s: number) => number;
|
|
45
|
-
rotlBL: (h: number, l: number, s: number) => number;
|
|
46
|
-
add: typeof add;
|
|
47
|
-
add3L: (Al: number, Bl: number, Cl: number) => number;
|
|
48
|
-
add3H: (low: number, Ah: number, Bh: number, Ch: number) => number;
|
|
49
|
-
add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number;
|
|
50
|
-
add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number;
|
|
51
|
-
add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number;
|
|
52
|
-
add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number;
|
|
53
|
-
};
|
|
54
|
-
export default u64;
|
|
55
|
-
//# sourceMappingURL=_u64.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_u64.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
(function (factory) {
|
|
2
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
-
var v = factory(require, exports);
|
|
4
|
-
if (v !== undefined) module.exports = v;
|
|
5
|
-
}
|
|
6
|
-
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports"], factory);
|
|
8
|
-
}
|
|
9
|
-
})(function (require, exports) {
|
|
10
|
-
"use strict";
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.toBig = exports.shrSL = exports.shrSH = exports.rotrSL = exports.rotrSH = exports.rotrBL = exports.rotrBH = exports.rotr32L = exports.rotr32H = exports.rotlSL = exports.rotlSH = exports.rotlBL = exports.rotlBH = exports.add5L = exports.add5H = exports.add4L = exports.add4H = exports.add3L = exports.add3H = void 0;
|
|
13
|
-
exports.add = add;
|
|
14
|
-
exports.fromBig = fromBig;
|
|
15
|
-
exports.split = split;
|
|
16
|
-
/**
|
|
17
|
-
* Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.
|
|
18
|
-
* @todo re-check https://issues.chromium.org/issues/42212588
|
|
19
|
-
* @module
|
|
20
|
-
*/
|
|
21
|
-
const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);
|
|
22
|
-
const _32n = /* @__PURE__ */ BigInt(32);
|
|
23
|
-
function fromBig(n, le = false) {
|
|
24
|
-
if (le)
|
|
25
|
-
return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };
|
|
26
|
-
return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };
|
|
27
|
-
}
|
|
28
|
-
function split(lst, le = false) {
|
|
29
|
-
const len = lst.length;
|
|
30
|
-
let Ah = new Uint32Array(len);
|
|
31
|
-
let Al = new Uint32Array(len);
|
|
32
|
-
for (let i = 0; i < len; i++) {
|
|
33
|
-
const { h, l } = fromBig(lst[i], le);
|
|
34
|
-
[Ah[i], Al[i]] = [h, l];
|
|
35
|
-
}
|
|
36
|
-
return [Ah, Al];
|
|
37
|
-
}
|
|
38
|
-
const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);
|
|
39
|
-
exports.toBig = toBig;
|
|
40
|
-
// for Shift in [0, 32)
|
|
41
|
-
const shrSH = (h, _l, s) => h >>> s;
|
|
42
|
-
exports.shrSH = shrSH;
|
|
43
|
-
const shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);
|
|
44
|
-
exports.shrSL = shrSL;
|
|
45
|
-
// Right rotate for Shift in [1, 32)
|
|
46
|
-
const rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));
|
|
47
|
-
exports.rotrSH = rotrSH;
|
|
48
|
-
const rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);
|
|
49
|
-
exports.rotrSL = rotrSL;
|
|
50
|
-
// Right rotate for Shift in (32, 64), NOTE: 32 is special case.
|
|
51
|
-
const rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));
|
|
52
|
-
exports.rotrBH = rotrBH;
|
|
53
|
-
const rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));
|
|
54
|
-
exports.rotrBL = rotrBL;
|
|
55
|
-
// Right rotate for shift===32 (just swaps l&h)
|
|
56
|
-
const rotr32H = (_h, l) => l;
|
|
57
|
-
exports.rotr32H = rotr32H;
|
|
58
|
-
const rotr32L = (h, _l) => h;
|
|
59
|
-
exports.rotr32L = rotr32L;
|
|
60
|
-
// Left rotate for Shift in [1, 32)
|
|
61
|
-
const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));
|
|
62
|
-
exports.rotlSH = rotlSH;
|
|
63
|
-
const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));
|
|
64
|
-
exports.rotlSL = rotlSL;
|
|
65
|
-
// Left rotate for Shift in (32, 64), NOTE: 32 is special case.
|
|
66
|
-
const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));
|
|
67
|
-
exports.rotlBH = rotlBH;
|
|
68
|
-
const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));
|
|
69
|
-
exports.rotlBL = rotlBL;
|
|
70
|
-
// JS uses 32-bit signed integers for bitwise operations which means we cannot
|
|
71
|
-
// simple take carry out of low bit sum by shift, we need to use division.
|
|
72
|
-
function add(Ah, Al, Bh, Bl) {
|
|
73
|
-
const l = (Al >>> 0) + (Bl >>> 0);
|
|
74
|
-
return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };
|
|
75
|
-
}
|
|
76
|
-
// Addition with more than 2 elements
|
|
77
|
-
const add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);
|
|
78
|
-
exports.add3L = add3L;
|
|
79
|
-
const add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;
|
|
80
|
-
exports.add3H = add3H;
|
|
81
|
-
const add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);
|
|
82
|
-
exports.add4L = add4L;
|
|
83
|
-
const add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;
|
|
84
|
-
exports.add4H = add4H;
|
|
85
|
-
const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);
|
|
86
|
-
exports.add5L = add5L;
|
|
87
|
-
const add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;
|
|
88
|
-
exports.add5H = add5H;
|
|
89
|
-
// prettier-ignore
|
|
90
|
-
const u64 = {
|
|
91
|
-
fromBig, split, toBig,
|
|
92
|
-
shrSH, shrSL,
|
|
93
|
-
rotrSH, rotrSL, rotrBH, rotrBL,
|
|
94
|
-
rotr32H, rotr32L,
|
|
95
|
-
rotlSH, rotlSL, rotlBH, rotlBL,
|
|
96
|
-
add, add3L, add3H, add4L, add4H, add5H, add5L,
|
|
97
|
-
};
|
|
98
|
-
exports.default = u64;
|
|
99
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@noble/hashes/1.8.0/src/crypto.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,MAAM,EAAE,GACqE,CAAC"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Hash, type CHash, type CHashXO, type HashXOF, type Input } from './utils.js';
|
|
2
|
-
/** `keccakf1600` internal function, additionally allows to adjust round count. */
|
|
3
|
-
export declare function keccakP(s: Uint32Array, rounds?: number): void;
|
|
4
|
-
/** Keccak sponge function. */
|
|
5
|
-
export declare class Keccak extends Hash<Keccak> implements HashXOF<Keccak> {
|
|
6
|
-
protected state: Uint8Array;
|
|
7
|
-
protected pos: number;
|
|
8
|
-
protected posOut: number;
|
|
9
|
-
protected finished: boolean;
|
|
10
|
-
protected state32: Uint32Array;
|
|
11
|
-
protected destroyed: boolean;
|
|
12
|
-
blockLen: number;
|
|
13
|
-
suffix: number;
|
|
14
|
-
outputLen: number;
|
|
15
|
-
protected enableXOF: boolean;
|
|
16
|
-
protected rounds: number;
|
|
17
|
-
constructor(blockLen: number, suffix: number, outputLen: number, enableXOF?: boolean, rounds?: number);
|
|
18
|
-
clone(): Keccak;
|
|
19
|
-
protected keccak(): void;
|
|
20
|
-
update(data: Input): this;
|
|
21
|
-
protected finish(): void;
|
|
22
|
-
protected writeInto(out: Uint8Array): Uint8Array;
|
|
23
|
-
xofInto(out: Uint8Array): Uint8Array;
|
|
24
|
-
xof(bytes: number): Uint8Array;
|
|
25
|
-
digestInto(out: Uint8Array): Uint8Array;
|
|
26
|
-
digest(): Uint8Array;
|
|
27
|
-
destroy(): void;
|
|
28
|
-
_cloneInto(to?: Keccak): Keccak;
|
|
29
|
-
}
|
|
30
|
-
/** SHA3-224 hash function. */
|
|
31
|
-
export declare const sha3_224: CHash;
|
|
32
|
-
/** SHA3-256 hash function. Different from keccak-256. */
|
|
33
|
-
export declare const sha3_256: CHash;
|
|
34
|
-
/** SHA3-384 hash function. */
|
|
35
|
-
export declare const sha3_384: CHash;
|
|
36
|
-
/** SHA3-512 hash function. */
|
|
37
|
-
export declare const sha3_512: CHash;
|
|
38
|
-
/** keccak-224 hash function. */
|
|
39
|
-
export declare const keccak_224: CHash;
|
|
40
|
-
/** keccak-256 hash function. Different from SHA3-256. */
|
|
41
|
-
export declare const keccak_256: CHash;
|
|
42
|
-
/** keccak-384 hash function. */
|
|
43
|
-
export declare const keccak_384: CHash;
|
|
44
|
-
/** keccak-512 hash function. */
|
|
45
|
-
export declare const keccak_512: CHash;
|
|
46
|
-
export type ShakeOpts = {
|
|
47
|
-
dkLen?: number;
|
|
48
|
-
};
|
|
49
|
-
/** SHAKE128 XOF with 128-bit security. */
|
|
50
|
-
export declare const shake128: CHashXO;
|
|
51
|
-
/** SHAKE256 XOF with 256-bit security. */
|
|
52
|
-
export declare const shake256: CHashXO;
|
|
53
|
-
//# sourceMappingURL=sha3.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sha3.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.ts"],"names":[],"mappings":"AAaA,OAAO,EAE6B,IAAI,EAGtC,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EACnD,MAAM,YAAY,CAAC;AAoCpB,kFAAkF;AAClF,wBAAgB,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAE,MAAW,GAAG,IAAI,CAyCjE;AAED,8BAA8B;AAC9B,qBAAa,MAAO,SAAQ,IAAI,CAAC,MAAM,CAAE,YAAW,OAAO,CAAC,MAAM,CAAC;IACjE,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC;IAC5B,SAAS,CAAC,GAAG,SAAK;IAClB,SAAS,CAAC,MAAM,SAAK;IACrB,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC;IAC/B,SAAS,CAAC,SAAS,UAAS;IAErB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,SAAS,UAAS;IAC5B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAIvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,UAAQ,EACjB,MAAM,GAAE,MAAW;IAiBrB,KAAK,IAAI,MAAM;IAGf,SAAS,CAAC,MAAM,IAAI,IAAI;IAOxB,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAazB,SAAS,CAAC,MAAM,IAAI,IAAI;IAUxB,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;IAehD,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;IAKpC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAI9B,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;IAOvC,MAAM,IAAI,UAAU;IAGpB,OAAO,IAAI,IAAI;IAIf,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;CAehC;AAKD,8BAA8B;AAC9B,eAAO,MAAM,QAAQ,EAAE,KAAyD,CAAC;AACjF,yDAAyD;AACzD,eAAO,MAAM,QAAQ,EAAE,KAAyD,CAAC;AACjF,8BAA8B;AAC9B,eAAO,MAAM,QAAQ,EAAE,KAAyD,CAAC;AACjF,8BAA8B;AAC9B,eAAO,MAAM,QAAQ,EAAE,KAAwD,CAAC;AAEhF,gCAAgC;AAChC,eAAO,MAAM,UAAU,EAAE,KAAyD,CAAC;AACnF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,KAAyD,CAAC;AACnF,gCAAgC;AAChC,eAAO,MAAM,UAAU,EAAE,KAAyD,CAAC;AACnF,gCAAgC;AAChC,eAAO,MAAM,UAAU,EAAE,KAAwD,CAAC;AAElF,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAQ3C,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,EAAE,OAAgE,CAAC;AACxF,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,EAAE,OAAgE,CAAC"}
|