viem 2.4.0 → 2.5.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/CHANGELOG.md +12 -0
- package/_cjs/chains/definitions/blastSepolia.js +26 -0
- package/_cjs/chains/definitions/blastSepolia.js.map +1 -0
- package/_cjs/chains/index.js +6 -4
- package/_cjs/chains/index.js.map +1 -1
- package/_cjs/clients/transports/http.js +8 -5
- package/_cjs/clients/transports/http.js.map +1 -1
- package/_cjs/clients/transports/ipc.js +77 -0
- package/_cjs/clients/transports/ipc.js.map +1 -0
- package/_cjs/clients/transports/webSocket.js +11 -7
- package/_cjs/clients/transports/webSocket.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/node/index.js +8 -0
- package/_cjs/node/index.js.map +1 -0
- package/_cjs/utils/index.js +13 -6
- package/_cjs/utils/index.js.map +1 -1
- package/_cjs/utils/rpc/compat.js +35 -0
- package/_cjs/utils/rpc/compat.js.map +1 -0
- package/_cjs/utils/rpc/http.js +74 -0
- package/_cjs/utils/rpc/http.js.map +1 -0
- package/_cjs/utils/rpc/id.js +17 -0
- package/_cjs/utils/rpc/id.js.map +1 -0
- package/_cjs/utils/rpc/ipc.js +75 -0
- package/_cjs/utils/rpc/ipc.js.map +1 -0
- package/_cjs/utils/rpc/socket.js +85 -0
- package/_cjs/utils/rpc/socket.js.map +1 -0
- package/_cjs/utils/rpc/webSocket.js +50 -0
- package/_cjs/utils/rpc/webSocket.js.map +1 -0
- package/_esm/chains/definitions/blastSepolia.js +23 -0
- package/_esm/chains/definitions/blastSepolia.js.map +1 -0
- package/_esm/chains/index.js +1 -0
- package/_esm/chains/index.js.map +1 -1
- package/_esm/clients/transports/http.js +8 -5
- package/_esm/clients/transports/http.js.map +1 -1
- package/_esm/clients/transports/ipc.js +77 -0
- package/_esm/clients/transports/ipc.js.map +1 -0
- package/_esm/clients/transports/webSocket.js +10 -6
- package/_esm/clients/transports/webSocket.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/node/index.js +3 -0
- package/_esm/node/index.js.map +1 -0
- package/_esm/utils/index.js +4 -1
- package/_esm/utils/index.js.map +1 -1
- package/_esm/utils/rpc/compat.js +86 -0
- package/_esm/utils/rpc/compat.js.map +1 -0
- package/_esm/utils/rpc/http.js +70 -0
- package/_esm/utils/rpc/http.js.map +1 -0
- package/_esm/utils/rpc/id.js +13 -0
- package/_esm/utils/rpc/id.js.map +1 -0
- package/_esm/utils/rpc/ipc.js +71 -0
- package/_esm/utils/rpc/ipc.js.map +1 -0
- package/_esm/utils/rpc/socket.js +90 -0
- package/_esm/utils/rpc/socket.js.map +1 -0
- package/_esm/utils/rpc/webSocket.js +48 -0
- package/_esm/utils/rpc/webSocket.js.map +1 -0
- package/_types/chains/definitions/blastSepolia.d.ts +34 -0
- package/_types/chains/definitions/blastSepolia.d.ts.map +1 -0
- package/_types/chains/index.d.ts +1 -0
- package/_types/chains/index.d.ts.map +1 -1
- package/_types/clients/transports/http.d.ts +2 -2
- package/_types/clients/transports/http.d.ts.map +1 -1
- package/_types/clients/transports/ipc.d.ts +46 -0
- package/_types/clients/transports/ipc.d.ts.map +1 -0
- package/_types/clients/transports/webSocket.d.ts +6 -1
- package/_types/clients/transports/webSocket.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/node/index.d.ts +3 -0
- package/_types/node/index.d.ts.map +1 -0
- package/_types/types/rpc.d.ts +35 -0
- package/_types/types/rpc.d.ts.map +1 -1
- package/_types/utils/buildRequest.d.ts +2 -2
- package/_types/utils/buildRequest.d.ts.map +1 -1
- package/_types/utils/index.d.ts +4 -1
- package/_types/utils/index.d.ts.map +1 -1
- package/_types/utils/rpc/compat.d.ts +78 -0
- package/_types/utils/rpc/compat.d.ts.map +1 -0
- package/_types/utils/rpc/http.d.ts +20 -0
- package/_types/utils/rpc/http.d.ts.map +1 -0
- package/_types/utils/rpc/id.d.ts +11 -0
- package/_types/utils/rpc/id.d.ts.map +1 -0
- package/_types/utils/rpc/ipc.d.ts +8 -0
- package/_types/utils/rpc/ipc.d.ts.map +1 -0
- package/_types/utils/rpc/socket.d.ts +45 -0
- package/_types/utils/rpc/socket.d.ts.map +1 -0
- package/_types/utils/rpc/webSocket.d.ts +3 -0
- package/_types/utils/rpc/webSocket.d.ts.map +1 -0
- package/chains/definitions/blastSepolia.ts +23 -0
- package/chains/index.ts +1 -0
- package/clients/transports/http.ts +15 -6
- package/clients/transports/ipc.ts +144 -0
- package/clients/transports/webSocket.ts +16 -6
- package/errors/version.ts +1 -1
- package/node/index.ts +11 -0
- package/node/package.json +6 -0
- package/package.json +9 -1
- package/types/rpc.ts +44 -0
- package/utils/buildRequest.ts +2 -2
- package/utils/index.ts +19 -8
- package/utils/rpc/compat.ts +117 -0
- package/utils/rpc/http.ts +132 -0
- package/utils/rpc/id.ts +13 -0
- package/utils/rpc/ipc.ts +89 -0
- package/utils/rpc/socket.ts +162 -0
- package/utils/rpc/webSocket.ts +63 -0
- package/_cjs/utils/rpc.js +0 -154
- package/_cjs/utils/rpc.js.map +0 -1
- package/_esm/utils/rpc.js +0 -160
- package/_esm/utils/rpc.js.map +0 -1
- package/_types/utils/rpc.d.ts +0 -80
- package/_types/utils/rpc.d.ts.map +0 -1
- package/utils/rpc.ts +0 -318
@@ -0,0 +1,63 @@
|
|
1
|
+
import type { MessageEvent } from 'isows'
|
2
|
+
|
3
|
+
import { WebSocketRequestError } from '../../errors/request.js'
|
4
|
+
import {
|
5
|
+
type Socket,
|
6
|
+
type SocketRpcClient,
|
7
|
+
getSocketRpcClient,
|
8
|
+
} from './socket.js'
|
9
|
+
|
10
|
+
export async function getWebSocketRpcClient(
|
11
|
+
url: string,
|
12
|
+
): Promise<SocketRpcClient<WebSocket>> {
|
13
|
+
return getSocketRpcClient({
|
14
|
+
async getSocket({ onResponse }) {
|
15
|
+
const WebSocket = await import('isows').then((module) => module.WebSocket)
|
16
|
+
const socket = new WebSocket(url)
|
17
|
+
|
18
|
+
function onClose() {
|
19
|
+
socket.removeEventListener('close', onClose)
|
20
|
+
socket.removeEventListener('message', onMessage)
|
21
|
+
}
|
22
|
+
function onMessage({ data }: MessageEvent) {
|
23
|
+
onResponse(JSON.parse(data))
|
24
|
+
}
|
25
|
+
|
26
|
+
// Setup event listeners for RPC & subscription responses.
|
27
|
+
socket.addEventListener('close', onClose)
|
28
|
+
socket.addEventListener('message', onMessage)
|
29
|
+
|
30
|
+
// Wait for the socket to open.
|
31
|
+
if (socket.readyState === WebSocket.CONNECTING) {
|
32
|
+
await new Promise((resolve, reject) => {
|
33
|
+
if (!socket) return
|
34
|
+
socket.onopen = resolve
|
35
|
+
socket.onerror = reject
|
36
|
+
})
|
37
|
+
}
|
38
|
+
|
39
|
+
const { close: close_ } = socket
|
40
|
+
|
41
|
+
return Object.assign(socket, {
|
42
|
+
close() {
|
43
|
+
close_.bind(socket)()
|
44
|
+
onClose()
|
45
|
+
},
|
46
|
+
request({ body }) {
|
47
|
+
if (
|
48
|
+
socket.readyState === socket.CLOSED ||
|
49
|
+
socket.readyState === socket.CLOSING
|
50
|
+
)
|
51
|
+
throw new WebSocketRequestError({
|
52
|
+
body,
|
53
|
+
url: socket.url,
|
54
|
+
details: 'Socket is closed.',
|
55
|
+
})
|
56
|
+
|
57
|
+
return socket.send(JSON.stringify(body))
|
58
|
+
},
|
59
|
+
} as Socket<WebSocket>)
|
60
|
+
},
|
61
|
+
url,
|
62
|
+
})
|
63
|
+
}
|
package/_cjs/utils/rpc.js
DELETED
@@ -1,154 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.rpc = exports.getSocket = exports.socketsCache = void 0;
|
4
|
-
const request_js_1 = require("../errors/request.js");
|
5
|
-
const createBatchScheduler_js_1 = require("./promise/createBatchScheduler.js");
|
6
|
-
const withTimeout_js_1 = require("./promise/withTimeout.js");
|
7
|
-
const stringify_js_1 = require("./stringify.js");
|
8
|
-
let id = 0;
|
9
|
-
async function http(url, { body, fetchOptions = {}, timeout = 10000 }) {
|
10
|
-
const { headers, method, signal: signal_ } = fetchOptions;
|
11
|
-
try {
|
12
|
-
const response = await (0, withTimeout_js_1.withTimeout)(async ({ signal }) => {
|
13
|
-
const response = await fetch(url, {
|
14
|
-
...fetchOptions,
|
15
|
-
body: Array.isArray(body)
|
16
|
-
? (0, stringify_js_1.stringify)(body.map((body) => ({
|
17
|
-
jsonrpc: '2.0',
|
18
|
-
id: body.id ?? id++,
|
19
|
-
...body,
|
20
|
-
})))
|
21
|
-
: (0, stringify_js_1.stringify)({ jsonrpc: '2.0', id: body.id ?? id++, ...body }),
|
22
|
-
headers: {
|
23
|
-
...headers,
|
24
|
-
'Content-Type': 'application/json',
|
25
|
-
},
|
26
|
-
method: method || 'POST',
|
27
|
-
signal: signal_ || (timeout > 0 ? signal : undefined),
|
28
|
-
});
|
29
|
-
return response;
|
30
|
-
}, {
|
31
|
-
errorInstance: new request_js_1.TimeoutError({ body, url }),
|
32
|
-
timeout,
|
33
|
-
signal: true,
|
34
|
-
});
|
35
|
-
let data;
|
36
|
-
if (response.headers.get('Content-Type')?.startsWith('application/json')) {
|
37
|
-
data = await response.json();
|
38
|
-
}
|
39
|
-
else {
|
40
|
-
data = await response.text();
|
41
|
-
}
|
42
|
-
if (!response.ok) {
|
43
|
-
throw new request_js_1.HttpRequestError({
|
44
|
-
body,
|
45
|
-
details: (0, stringify_js_1.stringify)(data.error) || response.statusText,
|
46
|
-
headers: response.headers,
|
47
|
-
status: response.status,
|
48
|
-
url,
|
49
|
-
});
|
50
|
-
}
|
51
|
-
return data;
|
52
|
-
}
|
53
|
-
catch (err) {
|
54
|
-
if (err instanceof request_js_1.HttpRequestError)
|
55
|
-
throw err;
|
56
|
-
if (err instanceof request_js_1.TimeoutError)
|
57
|
-
throw err;
|
58
|
-
throw new request_js_1.HttpRequestError({
|
59
|
-
body,
|
60
|
-
details: err.message,
|
61
|
-
url,
|
62
|
-
});
|
63
|
-
}
|
64
|
-
}
|
65
|
-
exports.socketsCache = new Map();
|
66
|
-
async function getSocket(url) {
|
67
|
-
let socket = exports.socketsCache.get(url);
|
68
|
-
if (socket)
|
69
|
-
return socket;
|
70
|
-
const { schedule } = (0, createBatchScheduler_js_1.createBatchScheduler)({
|
71
|
-
id: url,
|
72
|
-
fn: async () => {
|
73
|
-
const WebSocket = await Promise.resolve().then(() => require('isows')).then((module) => module.WebSocket);
|
74
|
-
const webSocket = new WebSocket(url);
|
75
|
-
const requests = new Map();
|
76
|
-
const subscriptions = new Map();
|
77
|
-
const onMessage = ({ data }) => {
|
78
|
-
const message = JSON.parse(data);
|
79
|
-
const isSubscription = message.method === 'eth_subscription';
|
80
|
-
const id = isSubscription ? message.params.subscription : message.id;
|
81
|
-
const cache = isSubscription ? subscriptions : requests;
|
82
|
-
const callback = cache.get(id);
|
83
|
-
if (callback)
|
84
|
-
callback({ data });
|
85
|
-
if (!isSubscription)
|
86
|
-
cache.delete(id);
|
87
|
-
};
|
88
|
-
const onClose = () => {
|
89
|
-
exports.socketsCache.delete(url);
|
90
|
-
webSocket.removeEventListener('close', onClose);
|
91
|
-
webSocket.removeEventListener('message', onMessage);
|
92
|
-
};
|
93
|
-
webSocket.addEventListener('close', onClose);
|
94
|
-
webSocket.addEventListener('message', onMessage);
|
95
|
-
if (webSocket.readyState === WebSocket.CONNECTING) {
|
96
|
-
await new Promise((resolve, reject) => {
|
97
|
-
if (!webSocket)
|
98
|
-
return;
|
99
|
-
webSocket.onopen = resolve;
|
100
|
-
webSocket.onerror = reject;
|
101
|
-
});
|
102
|
-
}
|
103
|
-
socket = Object.assign(webSocket, {
|
104
|
-
requests,
|
105
|
-
subscriptions,
|
106
|
-
});
|
107
|
-
exports.socketsCache.set(url, socket);
|
108
|
-
return [socket];
|
109
|
-
},
|
110
|
-
});
|
111
|
-
const [_, [socket_]] = await schedule();
|
112
|
-
return socket_;
|
113
|
-
}
|
114
|
-
exports.getSocket = getSocket;
|
115
|
-
function webSocket(socket, { body, onResponse }) {
|
116
|
-
if (socket.readyState === socket.CLOSED ||
|
117
|
-
socket.readyState === socket.CLOSING)
|
118
|
-
throw new request_js_1.WebSocketRequestError({
|
119
|
-
body,
|
120
|
-
url: socket.url,
|
121
|
-
details: 'Socket is closed.',
|
122
|
-
});
|
123
|
-
const id_ = id++;
|
124
|
-
const callback = ({ data }) => {
|
125
|
-
const message = JSON.parse(data);
|
126
|
-
if (typeof message.id === 'number' && id_ !== message.id)
|
127
|
-
return;
|
128
|
-
onResponse?.(message);
|
129
|
-
if (body.method === 'eth_subscribe' && typeof message.result === 'string') {
|
130
|
-
socket.subscriptions.set(message.result, callback);
|
131
|
-
}
|
132
|
-
if (body.method === 'eth_unsubscribe') {
|
133
|
-
socket.subscriptions.delete(body.params?.[0]);
|
134
|
-
}
|
135
|
-
};
|
136
|
-
socket.requests.set(id_, callback);
|
137
|
-
socket.send(JSON.stringify({ jsonrpc: '2.0', ...body, id: id_ }));
|
138
|
-
return socket;
|
139
|
-
}
|
140
|
-
async function webSocketAsync(socket, { body, timeout = 10000 }) {
|
141
|
-
return (0, withTimeout_js_1.withTimeout)(() => new Promise((onResponse) => exports.rpc.webSocket(socket, {
|
142
|
-
body,
|
143
|
-
onResponse,
|
144
|
-
})), {
|
145
|
-
errorInstance: new request_js_1.TimeoutError({ body, url: socket.url }),
|
146
|
-
timeout,
|
147
|
-
});
|
148
|
-
}
|
149
|
-
exports.rpc = {
|
150
|
-
http,
|
151
|
-
webSocket,
|
152
|
-
webSocketAsync,
|
153
|
-
};
|
154
|
-
//# sourceMappingURL=rpc.js.map
|
package/_cjs/utils/rpc.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../utils/rpc.ts"],"names":[],"mappings":"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"}
|
package/_esm/utils/rpc.js
DELETED
@@ -1,160 +0,0 @@
|
|
1
|
-
import { HttpRequestError, TimeoutError, WebSocketRequestError, } from '../errors/request.js';
|
2
|
-
import { createBatchScheduler, } from './promise/createBatchScheduler.js';
|
3
|
-
import { withTimeout, } from './promise/withTimeout.js';
|
4
|
-
import { stringify } from './stringify.js';
|
5
|
-
let id = 0;
|
6
|
-
async function http(url, { body, fetchOptions = {}, timeout = 10000 }) {
|
7
|
-
const { headers, method, signal: signal_ } = fetchOptions;
|
8
|
-
try {
|
9
|
-
const response = await withTimeout(async ({ signal }) => {
|
10
|
-
const response = await fetch(url, {
|
11
|
-
...fetchOptions,
|
12
|
-
body: Array.isArray(body)
|
13
|
-
? stringify(body.map((body) => ({
|
14
|
-
jsonrpc: '2.0',
|
15
|
-
id: body.id ?? id++,
|
16
|
-
...body,
|
17
|
-
})))
|
18
|
-
: stringify({ jsonrpc: '2.0', id: body.id ?? id++, ...body }),
|
19
|
-
headers: {
|
20
|
-
...headers,
|
21
|
-
'Content-Type': 'application/json',
|
22
|
-
},
|
23
|
-
method: method || 'POST',
|
24
|
-
signal: signal_ || (timeout > 0 ? signal : undefined),
|
25
|
-
});
|
26
|
-
return response;
|
27
|
-
}, {
|
28
|
-
errorInstance: new TimeoutError({ body, url }),
|
29
|
-
timeout,
|
30
|
-
signal: true,
|
31
|
-
});
|
32
|
-
let data;
|
33
|
-
if (response.headers.get('Content-Type')?.startsWith('application/json')) {
|
34
|
-
data = await response.json();
|
35
|
-
}
|
36
|
-
else {
|
37
|
-
data = await response.text();
|
38
|
-
}
|
39
|
-
if (!response.ok) {
|
40
|
-
throw new HttpRequestError({
|
41
|
-
body,
|
42
|
-
details: stringify(data.error) || response.statusText,
|
43
|
-
headers: response.headers,
|
44
|
-
status: response.status,
|
45
|
-
url,
|
46
|
-
});
|
47
|
-
}
|
48
|
-
return data;
|
49
|
-
}
|
50
|
-
catch (err) {
|
51
|
-
if (err instanceof HttpRequestError)
|
52
|
-
throw err;
|
53
|
-
if (err instanceof TimeoutError)
|
54
|
-
throw err;
|
55
|
-
throw new HttpRequestError({
|
56
|
-
body,
|
57
|
-
details: err.message,
|
58
|
-
url,
|
59
|
-
});
|
60
|
-
}
|
61
|
-
}
|
62
|
-
export const socketsCache = /*#__PURE__*/ new Map();
|
63
|
-
export async function getSocket(url) {
|
64
|
-
let socket = socketsCache.get(url);
|
65
|
-
// If the socket already exists, return it.
|
66
|
-
if (socket)
|
67
|
-
return socket;
|
68
|
-
const { schedule } = createBatchScheduler({
|
69
|
-
id: url,
|
70
|
-
fn: async () => {
|
71
|
-
const WebSocket = await import('isows').then((module) => module.WebSocket);
|
72
|
-
const webSocket = new WebSocket(url);
|
73
|
-
// Set up a cache for incoming "synchronous" requests.
|
74
|
-
const requests = new Map();
|
75
|
-
// Set up a cache for subscriptions (eth_subscribe).
|
76
|
-
const subscriptions = new Map();
|
77
|
-
const onMessage = ({ data }) => {
|
78
|
-
const message = JSON.parse(data);
|
79
|
-
const isSubscription = message.method === 'eth_subscription';
|
80
|
-
const id = isSubscription ? message.params.subscription : message.id;
|
81
|
-
const cache = isSubscription ? subscriptions : requests;
|
82
|
-
const callback = cache.get(id);
|
83
|
-
if (callback)
|
84
|
-
callback({ data });
|
85
|
-
if (!isSubscription)
|
86
|
-
cache.delete(id);
|
87
|
-
};
|
88
|
-
const onClose = () => {
|
89
|
-
socketsCache.delete(url);
|
90
|
-
webSocket.removeEventListener('close', onClose);
|
91
|
-
webSocket.removeEventListener('message', onMessage);
|
92
|
-
};
|
93
|
-
// Setup event listeners for RPC & subscription responses.
|
94
|
-
webSocket.addEventListener('close', onClose);
|
95
|
-
webSocket.addEventListener('message', onMessage);
|
96
|
-
// Wait for the socket to open.
|
97
|
-
if (webSocket.readyState === WebSocket.CONNECTING) {
|
98
|
-
await new Promise((resolve, reject) => {
|
99
|
-
if (!webSocket)
|
100
|
-
return;
|
101
|
-
webSocket.onopen = resolve;
|
102
|
-
webSocket.onerror = reject;
|
103
|
-
});
|
104
|
-
}
|
105
|
-
// Create a new socket instance.
|
106
|
-
socket = Object.assign(webSocket, {
|
107
|
-
requests,
|
108
|
-
subscriptions,
|
109
|
-
});
|
110
|
-
socketsCache.set(url, socket);
|
111
|
-
return [socket];
|
112
|
-
},
|
113
|
-
});
|
114
|
-
const [_, [socket_]] = await schedule();
|
115
|
-
return socket_;
|
116
|
-
}
|
117
|
-
function webSocket(socket, { body, onResponse }) {
|
118
|
-
if (socket.readyState === socket.CLOSED ||
|
119
|
-
socket.readyState === socket.CLOSING)
|
120
|
-
throw new WebSocketRequestError({
|
121
|
-
body,
|
122
|
-
url: socket.url,
|
123
|
-
details: 'Socket is closed.',
|
124
|
-
});
|
125
|
-
const id_ = id++;
|
126
|
-
const callback = ({ data }) => {
|
127
|
-
const message = JSON.parse(data);
|
128
|
-
if (typeof message.id === 'number' && id_ !== message.id)
|
129
|
-
return;
|
130
|
-
onResponse?.(message);
|
131
|
-
// If we are subscribing to a topic, we want to set up a listener for incoming
|
132
|
-
// messages.
|
133
|
-
if (body.method === 'eth_subscribe' && typeof message.result === 'string') {
|
134
|
-
socket.subscriptions.set(message.result, callback);
|
135
|
-
}
|
136
|
-
// If we are unsubscribing from a topic, we want to remove the listener.
|
137
|
-
if (body.method === 'eth_unsubscribe') {
|
138
|
-
socket.subscriptions.delete(body.params?.[0]);
|
139
|
-
}
|
140
|
-
};
|
141
|
-
socket.requests.set(id_, callback);
|
142
|
-
socket.send(JSON.stringify({ jsonrpc: '2.0', ...body, id: id_ }));
|
143
|
-
return socket;
|
144
|
-
}
|
145
|
-
async function webSocketAsync(socket, { body, timeout = 10000 }) {
|
146
|
-
return withTimeout(() => new Promise((onResponse) => rpc.webSocket(socket, {
|
147
|
-
body,
|
148
|
-
onResponse,
|
149
|
-
})), {
|
150
|
-
errorInstance: new TimeoutError({ body, url: socket.url }),
|
151
|
-
timeout,
|
152
|
-
});
|
153
|
-
}
|
154
|
-
///////////////////////////////////////////////////
|
155
|
-
export const rpc = {
|
156
|
-
http,
|
157
|
-
webSocket,
|
158
|
-
webSocketAsync,
|
159
|
-
};
|
160
|
-
//# sourceMappingURL=rpc.js.map
|
package/_esm/utils/rpc.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../utils/rpc.ts"],"names":[],"mappings":"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"}
|
package/_types/utils/rpc.d.ts
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
import { type HttpRequestErrorType, type TimeoutErrorType, WebSocketRequestError } from '../errors/request.js';
|
2
|
-
import type { ErrorType } from '../errors/utils.js';
|
3
|
-
import { type CreateBatchSchedulerErrorType } from './promise/createBatchScheduler.js';
|
4
|
-
import { type WithTimeoutErrorType } from './promise/withTimeout.js';
|
5
|
-
type SuccessResult<T> = {
|
6
|
-
method?: never;
|
7
|
-
result: T;
|
8
|
-
error?: never;
|
9
|
-
};
|
10
|
-
type ErrorResult<T> = {
|
11
|
-
method?: never;
|
12
|
-
result?: never;
|
13
|
-
error: T;
|
14
|
-
};
|
15
|
-
type Subscription<TResult, TError> = {
|
16
|
-
method: 'eth_subscription';
|
17
|
-
error?: never;
|
18
|
-
result?: never;
|
19
|
-
params: {
|
20
|
-
subscription: string;
|
21
|
-
} & ({
|
22
|
-
result: TResult;
|
23
|
-
error?: never;
|
24
|
-
} | {
|
25
|
-
result?: never;
|
26
|
-
error: TError;
|
27
|
-
});
|
28
|
-
};
|
29
|
-
export type RpcRequest = {
|
30
|
-
method: string;
|
31
|
-
params?: any;
|
32
|
-
id?: number;
|
33
|
-
};
|
34
|
-
export type RpcResponse<TResult = any, TError = any> = {
|
35
|
-
jsonrpc: `${number}`;
|
36
|
-
id: number;
|
37
|
-
} & (SuccessResult<TResult> | ErrorResult<TError> | Subscription<TResult, TError>);
|
38
|
-
export type HttpOptions<TBody extends RpcRequest | RpcRequest[] = RpcRequest> = {
|
39
|
-
body: TBody;
|
40
|
-
fetchOptions?: Omit<RequestInit, 'body'>;
|
41
|
-
timeout?: number;
|
42
|
-
};
|
43
|
-
export type HttpReturnType<TBody extends RpcRequest | RpcRequest[] = RpcRequest> = TBody extends RpcRequest[] ? RpcResponse[] : RpcResponse;
|
44
|
-
export type HttpErrorType = HttpRequestErrorType | TimeoutErrorType | WithTimeoutErrorType | ErrorType;
|
45
|
-
declare function http<TBody extends RpcRequest | RpcRequest[]>(url: string, { body, fetchOptions, timeout }: HttpOptions<TBody>): Promise<HttpReturnType<TBody>>;
|
46
|
-
type Id = string | number;
|
47
|
-
type CallbackFn = (message: any) => void;
|
48
|
-
type CallbackMap = Map<Id, CallbackFn>;
|
49
|
-
export type Socket = WebSocket & {
|
50
|
-
requests: CallbackMap;
|
51
|
-
subscriptions: CallbackMap;
|
52
|
-
};
|
53
|
-
export type GetSocketErrorType = CreateBatchSchedulerErrorType | ErrorType;
|
54
|
-
export declare const socketsCache: Map<string, Socket>;
|
55
|
-
export declare function getSocket(url: string): Promise<Socket>;
|
56
|
-
export type WebSocketOptions = {
|
57
|
-
/** The RPC request body. */
|
58
|
-
body: RpcRequest;
|
59
|
-
/** The callback to invoke on response. */
|
60
|
-
onResponse?: (message: RpcResponse) => void;
|
61
|
-
};
|
62
|
-
export type WebSocketReturnType = Socket;
|
63
|
-
export type WebSocketErrorType = WebSocketRequestError | ErrorType;
|
64
|
-
declare function webSocket(socket: Socket, { body, onResponse }: WebSocketOptions): WebSocketReturnType;
|
65
|
-
export type WebSocketAsyncOptions = {
|
66
|
-
/** The RPC request body. */
|
67
|
-
body: RpcRequest;
|
68
|
-
/** The timeout (in ms) for the request. */
|
69
|
-
timeout?: number;
|
70
|
-
};
|
71
|
-
export type WebSocketAsyncReturnType = RpcResponse;
|
72
|
-
export type WebSocketAsyncErrorType = WebSocketErrorType | TimeoutErrorType | WithTimeoutErrorType | ErrorType;
|
73
|
-
declare function webSocketAsync(socket: Socket, { body, timeout }: WebSocketAsyncOptions): Promise<WebSocketAsyncReturnType>;
|
74
|
-
export declare const rpc: {
|
75
|
-
http: typeof http;
|
76
|
-
webSocket: typeof webSocket;
|
77
|
-
webSocketAsync: typeof webSocketAsync;
|
78
|
-
};
|
79
|
-
export {};
|
80
|
-
//# sourceMappingURL=rpc.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../utils/rpc.ts"],"names":[],"mappings":"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"}
|