viem 0.0.0 → 0.0.1-alpha.1
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/LICENSE +21 -0
- package/README.md +16 -0
- package/actions/package.json +4 -0
- package/chains/package.json +4 -0
- package/clients/package.json +4 -0
- package/dist/BaseError-7688f84e.d.ts +18 -0
- package/dist/actions/index.d.ts +8 -0
- package/dist/actions/index.js +123 -0
- package/dist/chains.d.ts +113 -0
- package/dist/chains.js +133 -0
- package/dist/chunk-LLYFXUSV.js +1098 -0
- package/dist/chunk-OQTFTQTO.js +277 -0
- package/dist/chunk-Z6LRV6XI.js +1978 -0
- package/dist/clients/index.d.ts +8 -0
- package/dist/clients/index.js +25 -0
- package/dist/createWalletClient-915223f3.d.ts +130 -0
- package/dist/eip1193-8f7c22ce.d.ts +987 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +290 -0
- package/dist/parseGwei-bbc055e4.d.ts +326 -0
- package/dist/rpc-3c0e3985.d.ts +98 -0
- package/dist/rpc-655c0ba4.d.ts +292 -0
- package/dist/transactionRequest-ade896ac.d.ts +44 -0
- package/dist/utils/index.d.ts +18 -0
- package/dist/utils/index.js +154 -0
- package/dist/watchAsset-04ab8db5.d.ts +533 -0
- package/dist/webSocket-c6e0d26f.d.ts +88 -0
- package/dist/window.d.ts +9 -0
- package/dist/window.js +0 -0
- package/package.json +111 -7
- package/utils/package.json +4 -0
- package/window/package.json +4 -0
@@ -0,0 +1,277 @@
|
|
1
|
+
import {
|
2
|
+
BaseError,
|
3
|
+
buildRequest,
|
4
|
+
getSocket,
|
5
|
+
rpc
|
6
|
+
} from "./chunk-Z6LRV6XI.js";
|
7
|
+
|
8
|
+
// src/clients/transports/createTransport.ts
|
9
|
+
function createTransport(config, value) {
|
10
|
+
return {
|
11
|
+
config,
|
12
|
+
value
|
13
|
+
};
|
14
|
+
}
|
15
|
+
|
16
|
+
// src/clients/transports/errors.ts
|
17
|
+
var UrlRequiredError = class extends BaseError {
|
18
|
+
constructor() {
|
19
|
+
super(
|
20
|
+
"No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.",
|
21
|
+
{
|
22
|
+
docsPath: "/TODO"
|
23
|
+
}
|
24
|
+
);
|
25
|
+
}
|
26
|
+
};
|
27
|
+
|
28
|
+
// src/clients/transports/custom.ts
|
29
|
+
function custom(provider, { key = "custom", name = "Custom Provider" } = {}) {
|
30
|
+
return () => createTransport({
|
31
|
+
key,
|
32
|
+
name,
|
33
|
+
request: provider.request.bind(provider),
|
34
|
+
type: "custom"
|
35
|
+
});
|
36
|
+
}
|
37
|
+
|
38
|
+
// src/clients/transports/fallback.ts
|
39
|
+
function fallback(transports, { key = "fallback", name = "Fallback" } = {}) {
|
40
|
+
return ({ chain }) => {
|
41
|
+
return createTransport(
|
42
|
+
{
|
43
|
+
key,
|
44
|
+
name,
|
45
|
+
async request({ method, params }) {
|
46
|
+
const fetch = async (i = 0) => {
|
47
|
+
const transport = transports[i]({ chain });
|
48
|
+
try {
|
49
|
+
return await transport.config.request({
|
50
|
+
method,
|
51
|
+
params
|
52
|
+
});
|
53
|
+
} catch (err) {
|
54
|
+
if (i < transports.length - 1)
|
55
|
+
return fetch(i + 1);
|
56
|
+
throw err;
|
57
|
+
}
|
58
|
+
};
|
59
|
+
return fetch();
|
60
|
+
},
|
61
|
+
type: "fallback"
|
62
|
+
},
|
63
|
+
{
|
64
|
+
transports: transports.map(
|
65
|
+
(fn) => fn({ chain })
|
66
|
+
)
|
67
|
+
}
|
68
|
+
);
|
69
|
+
};
|
70
|
+
}
|
71
|
+
|
72
|
+
// src/clients/transports/http.ts
|
73
|
+
function http(url, { key = "http", name = "HTTP JSON-RPC" } = {}) {
|
74
|
+
return ({ chain }) => {
|
75
|
+
const url_ = url || chain?.rpcUrls.default.http[0];
|
76
|
+
if (!url_)
|
77
|
+
throw new UrlRequiredError();
|
78
|
+
return createTransport(
|
79
|
+
{
|
80
|
+
key,
|
81
|
+
name,
|
82
|
+
async request({ method, params }) {
|
83
|
+
const { result } = await rpc.http(url_, {
|
84
|
+
body: {
|
85
|
+
method,
|
86
|
+
params
|
87
|
+
}
|
88
|
+
});
|
89
|
+
return result;
|
90
|
+
},
|
91
|
+
type: "http"
|
92
|
+
},
|
93
|
+
{
|
94
|
+
url
|
95
|
+
}
|
96
|
+
);
|
97
|
+
};
|
98
|
+
}
|
99
|
+
|
100
|
+
// src/clients/transports/webSocket.ts
|
101
|
+
function webSocket(url, {
|
102
|
+
key = "webSocket",
|
103
|
+
name = "WebSocket JSON-RPC"
|
104
|
+
} = {}) {
|
105
|
+
return ({ chain }) => {
|
106
|
+
const url_ = url || chain?.rpcUrls.default.webSocket?.[0];
|
107
|
+
if (!url_)
|
108
|
+
throw new UrlRequiredError();
|
109
|
+
return createTransport(
|
110
|
+
{
|
111
|
+
key,
|
112
|
+
name,
|
113
|
+
async request({ method, params }) {
|
114
|
+
const socket = await getSocket(url_);
|
115
|
+
const { result } = await rpc.webSocketAsync(socket, {
|
116
|
+
body: { method, params }
|
117
|
+
});
|
118
|
+
return result;
|
119
|
+
},
|
120
|
+
type: "webSocket"
|
121
|
+
},
|
122
|
+
{
|
123
|
+
getSocket() {
|
124
|
+
return getSocket(url_);
|
125
|
+
},
|
126
|
+
async subscribe({ params, onData, onError }) {
|
127
|
+
const socket = await getSocket(url_);
|
128
|
+
const { result: subscriptionId } = await new Promise(
|
129
|
+
(resolve, reject) => rpc.webSocket(socket, {
|
130
|
+
body: {
|
131
|
+
method: "eth_subscribe",
|
132
|
+
params
|
133
|
+
},
|
134
|
+
onData: (data) => {
|
135
|
+
if (typeof data.id === "number") {
|
136
|
+
resolve(data);
|
137
|
+
return;
|
138
|
+
}
|
139
|
+
onData(data);
|
140
|
+
},
|
141
|
+
onError: (error) => {
|
142
|
+
reject(error);
|
143
|
+
onError?.(error);
|
144
|
+
}
|
145
|
+
})
|
146
|
+
);
|
147
|
+
return {
|
148
|
+
subscriptionId,
|
149
|
+
async unsubscribe() {
|
150
|
+
return new Promise(
|
151
|
+
(resolve, reject) => rpc.webSocket(socket, {
|
152
|
+
body: {
|
153
|
+
method: "eth_unsubscribe",
|
154
|
+
params: [subscriptionId]
|
155
|
+
},
|
156
|
+
onData: resolve,
|
157
|
+
onError: reject
|
158
|
+
})
|
159
|
+
);
|
160
|
+
}
|
161
|
+
};
|
162
|
+
}
|
163
|
+
}
|
164
|
+
);
|
165
|
+
};
|
166
|
+
}
|
167
|
+
|
168
|
+
// src/utils/uid.ts
|
169
|
+
var size = 256;
|
170
|
+
var index = size;
|
171
|
+
var buffer;
|
172
|
+
function uid(length = 11) {
|
173
|
+
if (!buffer || index + length > size * 2) {
|
174
|
+
buffer = "";
|
175
|
+
index = 0;
|
176
|
+
for (let i = 0; i < size; i++) {
|
177
|
+
buffer += (256 + Math.random() * 256 | 0).toString(16).substring(1);
|
178
|
+
}
|
179
|
+
}
|
180
|
+
return buffer.substring(index, index++ + length);
|
181
|
+
}
|
182
|
+
|
183
|
+
// src/clients/createClient.ts
|
184
|
+
function createClient({
|
185
|
+
chain,
|
186
|
+
key = "base",
|
187
|
+
name = "Base Client",
|
188
|
+
pollingInterval = 4e3,
|
189
|
+
transport,
|
190
|
+
type = "base"
|
191
|
+
}) {
|
192
|
+
const { config, value } = transport({ chain });
|
193
|
+
return {
|
194
|
+
chain,
|
195
|
+
key,
|
196
|
+
name,
|
197
|
+
pollingInterval,
|
198
|
+
request: buildRequest(config.request),
|
199
|
+
transport: { ...config, ...value },
|
200
|
+
type,
|
201
|
+
uid: uid()
|
202
|
+
};
|
203
|
+
}
|
204
|
+
|
205
|
+
// src/clients/createPublicClient.ts
|
206
|
+
function createPublicClient({
|
207
|
+
chain,
|
208
|
+
key = "public",
|
209
|
+
name = "Public Client",
|
210
|
+
transport,
|
211
|
+
pollingInterval
|
212
|
+
}) {
|
213
|
+
chain;
|
214
|
+
return {
|
215
|
+
...createClient({
|
216
|
+
chain,
|
217
|
+
key,
|
218
|
+
name,
|
219
|
+
pollingInterval,
|
220
|
+
transport,
|
221
|
+
type: "publicClient"
|
222
|
+
})
|
223
|
+
};
|
224
|
+
}
|
225
|
+
|
226
|
+
// src/clients/createTestClient.ts
|
227
|
+
function createTestClient({
|
228
|
+
chain,
|
229
|
+
key = "test",
|
230
|
+
name = "Test Client",
|
231
|
+
mode,
|
232
|
+
pollingInterval,
|
233
|
+
transport
|
234
|
+
}) {
|
235
|
+
return {
|
236
|
+
...createClient({
|
237
|
+
chain,
|
238
|
+
key,
|
239
|
+
name,
|
240
|
+
pollingInterval,
|
241
|
+
transport,
|
242
|
+
type: "testClient"
|
243
|
+
}),
|
244
|
+
mode
|
245
|
+
};
|
246
|
+
}
|
247
|
+
|
248
|
+
// src/clients/createWalletClient.ts
|
249
|
+
function createWalletClient({
|
250
|
+
transport,
|
251
|
+
key = "wallet",
|
252
|
+
name = "Wallet Client",
|
253
|
+
pollingInterval
|
254
|
+
}) {
|
255
|
+
return {
|
256
|
+
...createClient({
|
257
|
+
key,
|
258
|
+
name,
|
259
|
+
pollingInterval,
|
260
|
+
transport,
|
261
|
+
type: "walletClient"
|
262
|
+
})
|
263
|
+
};
|
264
|
+
}
|
265
|
+
|
266
|
+
export {
|
267
|
+
createTransport,
|
268
|
+
UrlRequiredError,
|
269
|
+
custom,
|
270
|
+
fallback,
|
271
|
+
http,
|
272
|
+
webSocket,
|
273
|
+
createClient,
|
274
|
+
createPublicClient,
|
275
|
+
createTestClient,
|
276
|
+
createWalletClient
|
277
|
+
};
|