@psalomo/jsonrpc-client 1.0.3 → 1.2.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/dist/index.mjs CHANGED
@@ -1,202 +1,43 @@
1
- // src/client.ts
2
- function camelToSnake(str) {
3
- return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
4
- }
5
- function snakeToCamel(str) {
6
- return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
7
- }
8
- function convertKeysToSnakeCase(obj) {
9
- if (obj === null || typeof obj !== "object") {
10
- return obj;
11
- }
12
- if (Array.isArray(obj)) {
13
- return obj.map(convertKeysToSnakeCase);
14
- }
15
- const converted = {};
16
- for (const [key, value] of Object.entries(obj)) {
17
- const snakeKey = camelToSnake(key);
18
- converted[snakeKey] = convertKeysToSnakeCase(value);
19
- }
20
- return converted;
21
- }
22
- function convertKeysToCamelCase(obj) {
23
- if (obj === null || typeof obj !== "object") {
24
- return obj;
25
- }
26
- if (Array.isArray(obj)) {
27
- return obj.map(convertKeysToCamelCase);
28
- }
29
- const converted = {};
30
- for (const [key, value] of Object.entries(obj)) {
31
- const camelKey = snakeToCamel(key);
32
- converted[camelKey] = convertKeysToCamelCase(value);
33
- }
34
- return converted;
35
- }
36
- var REQUEST_ID = "dontcare";
37
- var JsonRpcClientError = class extends Error {
38
- constructor(message, code, data) {
39
- super(message);
40
- this.code = code;
41
- this.data = data;
42
- this.name = "JsonRpcClientError";
43
- }
44
- };
45
- var JsonRpcNetworkError = class extends Error {
46
- constructor(message, originalError, responseBody) {
47
- super(message);
48
- this.originalError = originalError;
49
- this.responseBody = responseBody;
50
- this.name = "JsonRpcNetworkError";
51
- }
52
- };
53
- var NearRpcClient = class _NearRpcClient {
54
- endpoint;
55
- headers;
56
- timeout;
57
- retries;
58
- validation;
59
- constructor(config) {
60
- if (typeof config === "string") {
61
- this.endpoint = config;
62
- this.headers = {};
63
- this.timeout = 3e4;
64
- this.retries = 3;
65
- } else {
66
- this.endpoint = config.endpoint;
67
- this.headers = config.headers || {};
68
- this.timeout = config.timeout || 3e4;
69
- this.retries = config.retries || 3;
70
- if (config.validation) {
71
- this.validation = config.validation;
72
- }
73
- }
74
- }
75
- /**
76
- * Make a raw JSON-RPC request
77
- * This is used internally by the standalone RPC functions
78
- */
79
- async makeRequest(method, params) {
80
- const requestForValidation = {
81
- jsonrpc: "2.0",
82
- id: REQUEST_ID,
83
- method,
84
- params: params !== void 0 ? params : null
85
- };
86
- if (this.validation) {
87
- if ("validateMethodRequest" in this.validation) {
88
- this.validation.validateMethodRequest(method, requestForValidation);
89
- } else {
90
- this.validation.validateRequest(requestForValidation);
91
- }
92
- }
93
- const snakeCaseParams = params !== void 0 ? convertKeysToSnakeCase(params) : null;
94
- const request = {
95
- jsonrpc: "2.0",
96
- id: REQUEST_ID,
97
- method,
98
- params: snakeCaseParams
99
- };
100
- let lastError = null;
101
- for (let attempt = 0; attempt <= this.retries; attempt++) {
102
- try {
103
- const controller = new AbortController();
104
- const timeoutId = setTimeout(() => controller.abort(), this.timeout);
105
- const response = await fetch(this.endpoint, {
106
- method: "POST",
107
- headers: {
108
- "Content-Type": "application/json",
109
- ...this.headers
110
- },
111
- body: JSON.stringify(request),
112
- signal: controller.signal
113
- });
114
- clearTimeout(timeoutId);
115
- let jsonResponse;
116
- try {
117
- jsonResponse = await response.json();
118
- } catch (parseError) {
119
- if (!response.ok) {
120
- throw new JsonRpcNetworkError(
121
- `HTTP error! status: ${response.status} - Failed to parse JSON response`,
122
- parseError
123
- );
124
- }
125
- throw new JsonRpcNetworkError(
126
- "Failed to parse JSON response",
127
- parseError
128
- );
129
- }
130
- if (jsonResponse.error) {
131
- throw new JsonRpcClientError(
132
- jsonResponse.error.message,
133
- jsonResponse.error.code,
134
- jsonResponse.error.data
135
- );
136
- }
137
- if (!response.ok) {
138
- throw new JsonRpcNetworkError(
139
- `HTTP error! status: ${response.status}`,
140
- void 0,
141
- jsonResponse
142
- );
143
- }
144
- if (this.validation) {
145
- this.validation.validateResponse(jsonResponse);
146
- }
147
- const camelCaseResult = jsonResponse.result ? convertKeysToCamelCase(jsonResponse.result) : jsonResponse.result;
148
- if (this.validation && "validateMethodResponse" in this.validation) {
149
- const camelCaseResponse = {
150
- ...jsonResponse,
151
- result: camelCaseResult
152
- };
153
- this.validation.validateMethodResponse(method, camelCaseResponse);
154
- }
155
- return camelCaseResult;
156
- } catch (error) {
157
- lastError = error;
158
- if (error instanceof JsonRpcClientError) {
159
- throw error;
160
- }
161
- if (attempt === this.retries) {
162
- break;
163
- }
164
- await new Promise(
165
- (resolve) => setTimeout(resolve, Math.pow(2, attempt) * 1e3)
166
- );
167
- }
168
- }
169
- throw new JsonRpcNetworkError(
170
- lastError?.message || "Request failed after all retries",
171
- lastError || void 0
172
- );
173
- }
174
- /**
175
- * Create a new client with modified configuration
176
- */
177
- withConfig(config) {
178
- return new _NearRpcClient({
179
- endpoint: config.endpoint ?? this.endpoint,
180
- headers: config.headers ?? this.headers,
181
- timeout: config.timeout ?? this.timeout,
182
- retries: config.retries ?? this.retries,
183
- ...config.validation !== void 0 ? { validation: config.validation } : this.validation !== void 0 ? { validation: this.validation } : {}
184
- });
185
- }
186
- };
187
- var defaultClient = new NearRpcClient({
188
- endpoint: "https://rpc.mainnet.near.org"
189
- });
190
-
191
- // src/types.ts
192
- var NearRpcError = class extends Error {
193
- constructor(code, message, data) {
194
- super(message);
195
- this.code = code;
196
- this.data = data;
197
- this.name = "NearRpcError";
198
- }
199
- };
1
+ import {
2
+ JsonRpcClientError,
3
+ JsonRpcNetworkError,
4
+ NearRpcClient,
5
+ NearRpcError,
6
+ block,
7
+ blockEffects,
8
+ broadcastTxAsync,
9
+ broadcastTxCommit,
10
+ changes,
11
+ chunk,
12
+ clientConfig,
13
+ defaultClient,
14
+ experimentalChanges,
15
+ experimentalChangesInBlock,
16
+ experimentalCongestionLevel,
17
+ experimentalGenesisConfig,
18
+ experimentalLightClientBlockProof,
19
+ experimentalLightClientProof,
20
+ experimentalMaintenanceWindows,
21
+ experimentalProtocolConfig,
22
+ experimentalReceipt,
23
+ experimentalSplitStorageInfo,
24
+ experimentalTxStatus,
25
+ experimentalValidatorsOrdered,
26
+ gasPrice,
27
+ genesisConfig,
28
+ health,
29
+ lightClientProof,
30
+ maintenanceWindows,
31
+ networkInfo,
32
+ nextLightClientBlock,
33
+ parseCallResultToJson,
34
+ query,
35
+ sendTx,
36
+ status,
37
+ tx,
38
+ validators,
39
+ viewFunctionAsJson
40
+ } from "./chunk-GCIU6ZLN.mjs";
200
41
 
201
42
  // src/index.ts
202
43
  import {
@@ -205,102 +46,53 @@ import {
205
46
  } from "@psalomo/jsonrpc-types";
206
47
  import { RPC_METHODS } from "@psalomo/jsonrpc-types";
207
48
 
208
- // src/generated-types.ts
209
- async function experimentalChanges(client, params) {
210
- return client.makeRequest("EXPERIMENTAL_changes", params);
211
- }
212
- async function experimentalChangesInBlock(client, params) {
213
- return client.makeRequest("EXPERIMENTAL_changes_in_block", params);
214
- }
215
- async function experimentalCongestionLevel(client, params) {
216
- return client.makeRequest("EXPERIMENTAL_congestion_level", params);
217
- }
218
- async function experimentalGenesisConfig(client, params) {
219
- return client.makeRequest("EXPERIMENTAL_genesis_config", params);
220
- }
221
- async function experimentalLightClientBlockProof(client, params) {
222
- return client.makeRequest("EXPERIMENTAL_light_client_block_proof", params);
223
- }
224
- async function experimentalLightClientProof(client, params) {
225
- return client.makeRequest("EXPERIMENTAL_light_client_proof", params);
226
- }
227
- async function experimentalMaintenanceWindows(client, params) {
228
- return client.makeRequest("EXPERIMENTAL_maintenance_windows", params);
229
- }
230
- async function experimentalProtocolConfig(client, params) {
231
- return client.makeRequest("EXPERIMENTAL_protocol_config", params);
232
- }
233
- async function experimentalReceipt(client, params) {
234
- return client.makeRequest("EXPERIMENTAL_receipt", params);
235
- }
236
- async function experimentalSplitStorageInfo(client, params) {
237
- return client.makeRequest("EXPERIMENTAL_split_storage_info", params);
238
- }
239
- async function experimentalTxStatus(client, params) {
240
- return client.makeRequest("EXPERIMENTAL_tx_status", params);
241
- }
242
- async function experimentalValidatorsOrdered(client, params) {
243
- return client.makeRequest("EXPERIMENTAL_validators_ordered", params);
244
- }
245
- async function block(client, params) {
246
- return client.makeRequest("block", params);
247
- }
248
- async function blockEffects(client, params) {
249
- return client.makeRequest("block_effects", params);
250
- }
251
- async function broadcastTxAsync(client, params) {
252
- return client.makeRequest("broadcast_tx_async", params);
253
- }
254
- async function broadcastTxCommit(client, params) {
255
- return client.makeRequest("broadcast_tx_commit", params);
256
- }
257
- async function changes(client, params) {
258
- return client.makeRequest("changes", params);
259
- }
260
- async function chunk(client, params) {
261
- return client.makeRequest("chunk", params);
262
- }
263
- async function clientConfig(client, params) {
264
- return client.makeRequest("client_config", params);
265
- }
266
- async function gasPrice(client, params) {
267
- return client.makeRequest("gas_price", params);
268
- }
269
- async function genesisConfig(client, params) {
270
- return client.makeRequest("genesis_config", params);
271
- }
272
- async function health(client, params) {
273
- return client.makeRequest("health", params);
274
- }
275
- async function lightClientProof(client, params) {
276
- return client.makeRequest("light_client_proof", params);
277
- }
278
- async function maintenanceWindows(client, params) {
279
- return client.makeRequest("maintenance_windows", params);
280
- }
281
- async function networkInfo(client, params) {
282
- return client.makeRequest("network_info", params);
283
- }
284
- async function nextLightClientBlock(client, params) {
285
- return client.makeRequest("next_light_client_block", params);
286
- }
287
- async function query(client, params) {
288
- return client.makeRequest("query", params);
289
- }
290
- async function sendTx(client, params) {
291
- return client.makeRequest("send_tx", params);
292
- }
293
- async function status(client, params) {
294
- return client.makeRequest("status", params);
295
- }
296
- async function tx(client, params) {
297
- return client.makeRequest("tx", params);
298
- }
299
- async function validators(client, params) {
300
- return client.makeRequest("validators", params);
301
- }
302
-
303
- // src/convenience.ts
49
+ // src/validated/index.ts
50
+ import {
51
+ CryptoHashSchema,
52
+ GenesisConfigRequestSchema,
53
+ GenesisConfigSchema,
54
+ RpcBlockRequestSchema,
55
+ RpcBlockResponseSchema,
56
+ RpcChunkRequestSchema,
57
+ RpcChunkResponseSchema,
58
+ RpcClientConfigRequestSchema,
59
+ RpcClientConfigResponseSchema,
60
+ RpcCongestionLevelRequestSchema,
61
+ RpcCongestionLevelResponseSchema,
62
+ RpcGasPriceRequestSchema,
63
+ RpcGasPriceResponseSchema,
64
+ RpcHealthRequestSchema,
65
+ RpcHealthResponseSchema,
66
+ RpcLightClientBlockProofRequestSchema,
67
+ RpcLightClientBlockProofResponseSchema,
68
+ RpcLightClientExecutionProofRequestSchema,
69
+ RpcLightClientExecutionProofResponseSchema,
70
+ RpcLightClientNextBlockRequestSchema,
71
+ RpcLightClientNextBlockResponseSchema,
72
+ RpcMaintenanceWindowsRequestSchema,
73
+ RpcNetworkInfoRequestSchema,
74
+ RpcNetworkInfoResponseSchema,
75
+ RpcProtocolConfigRequestSchema,
76
+ RpcProtocolConfigResponseSchema,
77
+ RpcQueryRequestSchema,
78
+ RpcQueryResponseSchema,
79
+ RpcReceiptRequestSchema,
80
+ RpcReceiptResponseSchema,
81
+ RpcSendTransactionRequestSchema,
82
+ RpcSplitStorageInfoRequestSchema,
83
+ RpcSplitStorageInfoResponseSchema,
84
+ RpcStateChangesInBlockByTypeRequestSchema,
85
+ RpcStateChangesInBlockByTypeResponseSchema,
86
+ RpcStateChangesInBlockRequestSchema,
87
+ RpcStateChangesInBlockResponseSchema,
88
+ RpcStatusRequestSchema,
89
+ RpcStatusResponseSchema,
90
+ RpcTransactionResponseSchema,
91
+ RpcTransactionStatusRequestSchema,
92
+ RpcValidatorRequestSchema,
93
+ RpcValidatorResponseSchema,
94
+ RpcValidatorsOrderedRequestSchema
95
+ } from "@psalomo/jsonrpc-types";
304
96
  async function viewAccount(client, params) {
305
97
  const queryParams = params.blockId ? {
306
98
  requestType: "view_account",
@@ -311,7 +103,7 @@ async function viewAccount(client, params) {
311
103
  accountId: params.accountId,
312
104
  finality: params.finality || "final"
313
105
  };
314
- return query(client, queryParams);
106
+ return query2(client, queryParams);
315
107
  }
316
108
  async function viewFunction(client, params) {
317
109
  const baseParams = {
@@ -319,10 +111,9 @@ async function viewFunction(client, params) {
319
111
  accountId: params.accountId,
320
112
  methodName: params.methodName,
321
113
  argsBase64: params.argsBase64 ?? ""
322
- // Default to empty string if no arguments
323
114
  };
324
115
  const queryParams = params.blockId ? { ...baseParams, blockId: params.blockId } : { ...baseParams, finality: params.finality || "final" };
325
- return query(client, queryParams);
116
+ return query2(client, queryParams);
326
117
  }
327
118
  async function viewAccessKey(client, params) {
328
119
  const queryParams = params.blockId ? {
@@ -336,7 +127,556 @@ async function viewAccessKey(client, params) {
336
127
  publicKey: params.publicKey,
337
128
  finality: params.finality || "final"
338
129
  };
339
- return query(client, queryParams);
130
+ return query2(client, queryParams);
131
+ }
132
+ async function experimentalChanges2(client, params) {
133
+ const requestSchema = RpcStateChangesInBlockByTypeRequestSchema();
134
+ if (params !== void 0) {
135
+ try {
136
+ requestSchema.parse(params);
137
+ } catch (error) {
138
+ throw new Error(`Request validation failed: ${error}`);
139
+ }
140
+ }
141
+ const result = await experimentalChanges(client, params);
142
+ const responseSchema = RpcStateChangesInBlockResponseSchema();
143
+ try {
144
+ responseSchema.parse(result);
145
+ } catch (error) {
146
+ throw new Error(`Response validation failed: ${error}`);
147
+ }
148
+ return result;
149
+ }
150
+ async function experimentalChangesInBlock2(client, params) {
151
+ const requestSchema = RpcStateChangesInBlockRequestSchema();
152
+ if (params !== void 0) {
153
+ try {
154
+ requestSchema.parse(params);
155
+ } catch (error) {
156
+ throw new Error(`Request validation failed: ${error}`);
157
+ }
158
+ }
159
+ const result = await experimentalChangesInBlock(client, params);
160
+ const responseSchema = RpcStateChangesInBlockByTypeResponseSchema();
161
+ try {
162
+ responseSchema.parse(result);
163
+ } catch (error) {
164
+ throw new Error(`Response validation failed: ${error}`);
165
+ }
166
+ return result;
167
+ }
168
+ async function experimentalCongestionLevel2(client, params) {
169
+ const requestSchema = RpcCongestionLevelRequestSchema();
170
+ if (params !== void 0) {
171
+ try {
172
+ requestSchema.parse(params);
173
+ } catch (error) {
174
+ throw new Error(`Request validation failed: ${error}`);
175
+ }
176
+ }
177
+ const result = await experimentalCongestionLevel(
178
+ client,
179
+ params
180
+ );
181
+ const responseSchema = RpcCongestionLevelResponseSchema();
182
+ try {
183
+ responseSchema.parse(result);
184
+ } catch (error) {
185
+ throw new Error(`Response validation failed: ${error}`);
186
+ }
187
+ return result;
188
+ }
189
+ async function experimentalGenesisConfig2(client, params) {
190
+ const requestSchema = GenesisConfigRequestSchema();
191
+ if (params !== void 0) {
192
+ try {
193
+ requestSchema.parse(params);
194
+ } catch (error) {
195
+ throw new Error(`Request validation failed: ${error}`);
196
+ }
197
+ }
198
+ const result = await experimentalGenesisConfig(client, params);
199
+ const responseSchema = GenesisConfigSchema();
200
+ try {
201
+ responseSchema.parse(result);
202
+ } catch (error) {
203
+ throw new Error(`Response validation failed: ${error}`);
204
+ }
205
+ return result;
206
+ }
207
+ async function experimentalLightClientBlockProof2(client, params) {
208
+ const requestSchema = RpcLightClientBlockProofRequestSchema();
209
+ if (params !== void 0) {
210
+ try {
211
+ requestSchema.parse(params);
212
+ } catch (error) {
213
+ throw new Error(`Request validation failed: ${error}`);
214
+ }
215
+ }
216
+ const result = await experimentalLightClientBlockProof(
217
+ client,
218
+ params
219
+ );
220
+ const responseSchema = RpcLightClientBlockProofResponseSchema();
221
+ try {
222
+ responseSchema.parse(result);
223
+ } catch (error) {
224
+ throw new Error(`Response validation failed: ${error}`);
225
+ }
226
+ return result;
227
+ }
228
+ async function experimentalLightClientProof2(client, params) {
229
+ const requestSchema = RpcLightClientExecutionProofRequestSchema();
230
+ if (params !== void 0) {
231
+ try {
232
+ requestSchema.parse(params);
233
+ } catch (error) {
234
+ throw new Error(`Request validation failed: ${error}`);
235
+ }
236
+ }
237
+ const result = await experimentalLightClientProof(
238
+ client,
239
+ params
240
+ );
241
+ const responseSchema = RpcLightClientExecutionProofResponseSchema();
242
+ try {
243
+ responseSchema.parse(result);
244
+ } catch (error) {
245
+ throw new Error(`Response validation failed: ${error}`);
246
+ }
247
+ return result;
248
+ }
249
+ async function experimentalMaintenanceWindows2(client, params) {
250
+ const requestSchema = RpcMaintenanceWindowsRequestSchema();
251
+ if (params !== void 0) {
252
+ try {
253
+ requestSchema.parse(params);
254
+ } catch (error) {
255
+ throw new Error(`Request validation failed: ${error}`);
256
+ }
257
+ }
258
+ return experimentalMaintenanceWindows(client, params);
259
+ }
260
+ async function experimentalProtocolConfig2(client, params) {
261
+ const requestSchema = RpcProtocolConfigRequestSchema();
262
+ if (params !== void 0) {
263
+ try {
264
+ requestSchema.parse(params);
265
+ } catch (error) {
266
+ throw new Error(`Request validation failed: ${error}`);
267
+ }
268
+ }
269
+ const result = await experimentalProtocolConfig(client, params);
270
+ const responseSchema = RpcProtocolConfigResponseSchema();
271
+ try {
272
+ responseSchema.parse(result);
273
+ } catch (error) {
274
+ throw new Error(`Response validation failed: ${error}`);
275
+ }
276
+ return result;
277
+ }
278
+ async function experimentalReceipt2(client, params) {
279
+ const requestSchema = RpcReceiptRequestSchema();
280
+ if (params !== void 0) {
281
+ try {
282
+ requestSchema.parse(params);
283
+ } catch (error) {
284
+ throw new Error(`Request validation failed: ${error}`);
285
+ }
286
+ }
287
+ const result = await experimentalReceipt(client, params);
288
+ const responseSchema = RpcReceiptResponseSchema();
289
+ try {
290
+ responseSchema.parse(result);
291
+ } catch (error) {
292
+ throw new Error(`Response validation failed: ${error}`);
293
+ }
294
+ return result;
295
+ }
296
+ async function experimentalSplitStorageInfo2(client, params) {
297
+ const requestSchema = RpcSplitStorageInfoRequestSchema();
298
+ if (params !== void 0) {
299
+ try {
300
+ requestSchema.parse(params);
301
+ } catch (error) {
302
+ throw new Error(`Request validation failed: ${error}`);
303
+ }
304
+ }
305
+ const result = await experimentalSplitStorageInfo(
306
+ client,
307
+ params
308
+ );
309
+ const responseSchema = RpcSplitStorageInfoResponseSchema();
310
+ try {
311
+ responseSchema.parse(result);
312
+ } catch (error) {
313
+ throw new Error(`Response validation failed: ${error}`);
314
+ }
315
+ return result;
316
+ }
317
+ async function experimentalTxStatus2(client, params) {
318
+ const requestSchema = RpcTransactionStatusRequestSchema();
319
+ if (params !== void 0) {
320
+ try {
321
+ requestSchema.parse(params);
322
+ } catch (error) {
323
+ throw new Error(`Request validation failed: ${error}`);
324
+ }
325
+ }
326
+ const result = await experimentalTxStatus(client, params);
327
+ const responseSchema = RpcTransactionResponseSchema();
328
+ try {
329
+ responseSchema.parse(result);
330
+ } catch (error) {
331
+ throw new Error(`Response validation failed: ${error}`);
332
+ }
333
+ return result;
334
+ }
335
+ async function experimentalValidatorsOrdered2(client, params) {
336
+ const requestSchema = RpcValidatorsOrderedRequestSchema();
337
+ if (params !== void 0) {
338
+ try {
339
+ requestSchema.parse(params);
340
+ } catch (error) {
341
+ throw new Error(`Request validation failed: ${error}`);
342
+ }
343
+ }
344
+ return experimentalValidatorsOrdered(client, params);
345
+ }
346
+ async function block2(client, params) {
347
+ const requestSchema = RpcBlockRequestSchema();
348
+ if (params !== void 0) {
349
+ try {
350
+ requestSchema.parse(params);
351
+ } catch (error) {
352
+ throw new Error(`Request validation failed: ${error}`);
353
+ }
354
+ }
355
+ const result = await block(client, params);
356
+ const responseSchema = RpcBlockResponseSchema();
357
+ try {
358
+ responseSchema.parse(result);
359
+ } catch (error) {
360
+ throw new Error(`Response validation failed: ${error}`);
361
+ }
362
+ return result;
363
+ }
364
+ async function blockEffects2(client, params) {
365
+ const requestSchema = RpcStateChangesInBlockRequestSchema();
366
+ if (params !== void 0) {
367
+ try {
368
+ requestSchema.parse(params);
369
+ } catch (error) {
370
+ throw new Error(`Request validation failed: ${error}`);
371
+ }
372
+ }
373
+ const result = await blockEffects(client, params);
374
+ const responseSchema = RpcStateChangesInBlockByTypeResponseSchema();
375
+ try {
376
+ responseSchema.parse(result);
377
+ } catch (error) {
378
+ throw new Error(`Response validation failed: ${error}`);
379
+ }
380
+ return result;
381
+ }
382
+ async function broadcastTxAsync2(client, params) {
383
+ const requestSchema = RpcSendTransactionRequestSchema();
384
+ if (params !== void 0) {
385
+ try {
386
+ requestSchema.parse(params);
387
+ } catch (error) {
388
+ throw new Error(`Request validation failed: ${error}`);
389
+ }
390
+ }
391
+ const result = await broadcastTxAsync(client, params);
392
+ const responseSchema = CryptoHashSchema();
393
+ try {
394
+ responseSchema.parse(result);
395
+ } catch (error) {
396
+ throw new Error(`Response validation failed: ${error}`);
397
+ }
398
+ return result;
399
+ }
400
+ async function broadcastTxCommit2(client, params) {
401
+ const requestSchema = RpcSendTransactionRequestSchema();
402
+ if (params !== void 0) {
403
+ try {
404
+ requestSchema.parse(params);
405
+ } catch (error) {
406
+ throw new Error(`Request validation failed: ${error}`);
407
+ }
408
+ }
409
+ const result = await broadcastTxCommit(client, params);
410
+ const responseSchema = RpcTransactionResponseSchema();
411
+ try {
412
+ responseSchema.parse(result);
413
+ } catch (error) {
414
+ throw new Error(`Response validation failed: ${error}`);
415
+ }
416
+ return result;
417
+ }
418
+ async function changes2(client, params) {
419
+ const requestSchema = RpcStateChangesInBlockByTypeRequestSchema();
420
+ if (params !== void 0) {
421
+ try {
422
+ requestSchema.parse(params);
423
+ } catch (error) {
424
+ throw new Error(`Request validation failed: ${error}`);
425
+ }
426
+ }
427
+ const result = await changes(client, params);
428
+ const responseSchema = RpcStateChangesInBlockResponseSchema();
429
+ try {
430
+ responseSchema.parse(result);
431
+ } catch (error) {
432
+ throw new Error(`Response validation failed: ${error}`);
433
+ }
434
+ return result;
435
+ }
436
+ async function chunk2(client, params) {
437
+ const requestSchema = RpcChunkRequestSchema();
438
+ if (params !== void 0) {
439
+ try {
440
+ requestSchema.parse(params);
441
+ } catch (error) {
442
+ throw new Error(`Request validation failed: ${error}`);
443
+ }
444
+ }
445
+ const result = await chunk(client, params);
446
+ const responseSchema = RpcChunkResponseSchema();
447
+ try {
448
+ responseSchema.parse(result);
449
+ } catch (error) {
450
+ throw new Error(`Response validation failed: ${error}`);
451
+ }
452
+ return result;
453
+ }
454
+ async function clientConfig2(client, params) {
455
+ const requestSchema = RpcClientConfigRequestSchema();
456
+ if (params !== void 0) {
457
+ try {
458
+ requestSchema.parse(params);
459
+ } catch (error) {
460
+ throw new Error(`Request validation failed: ${error}`);
461
+ }
462
+ }
463
+ const result = await clientConfig(client, params);
464
+ const responseSchema = RpcClientConfigResponseSchema();
465
+ try {
466
+ responseSchema.parse(result);
467
+ } catch (error) {
468
+ throw new Error(`Response validation failed: ${error}`);
469
+ }
470
+ return result;
471
+ }
472
+ async function gasPrice2(client, params) {
473
+ const requestSchema = RpcGasPriceRequestSchema();
474
+ if (params !== void 0) {
475
+ try {
476
+ requestSchema.parse(params);
477
+ } catch (error) {
478
+ throw new Error(`Request validation failed: ${error}`);
479
+ }
480
+ }
481
+ const result = await gasPrice(client, params);
482
+ const responseSchema = RpcGasPriceResponseSchema();
483
+ try {
484
+ responseSchema.parse(result);
485
+ } catch (error) {
486
+ throw new Error(`Response validation failed: ${error}`);
487
+ }
488
+ return result;
489
+ }
490
+ async function genesisConfig2(client, params) {
491
+ const requestSchema = GenesisConfigRequestSchema();
492
+ if (params !== void 0) {
493
+ try {
494
+ requestSchema.parse(params);
495
+ } catch (error) {
496
+ throw new Error(`Request validation failed: ${error}`);
497
+ }
498
+ }
499
+ const result = await genesisConfig(client, params);
500
+ const responseSchema = GenesisConfigSchema();
501
+ try {
502
+ responseSchema.parse(result);
503
+ } catch (error) {
504
+ throw new Error(`Response validation failed: ${error}`);
505
+ }
506
+ return result;
507
+ }
508
+ async function health2(client, params) {
509
+ const requestSchema = RpcHealthRequestSchema();
510
+ if (params !== void 0) {
511
+ try {
512
+ requestSchema.parse(params);
513
+ } catch (error) {
514
+ throw new Error(`Request validation failed: ${error}`);
515
+ }
516
+ }
517
+ const result = await health(client, params);
518
+ const responseSchema = RpcHealthResponseSchema();
519
+ try {
520
+ responseSchema.parse(result);
521
+ } catch (error) {
522
+ throw new Error(`Response validation failed: ${error}`);
523
+ }
524
+ return result;
525
+ }
526
+ async function lightClientProof2(client, params) {
527
+ const requestSchema = RpcLightClientExecutionProofRequestSchema();
528
+ if (params !== void 0) {
529
+ try {
530
+ requestSchema.parse(params);
531
+ } catch (error) {
532
+ throw new Error(`Request validation failed: ${error}`);
533
+ }
534
+ }
535
+ const result = await lightClientProof(client, params);
536
+ const responseSchema = RpcLightClientExecutionProofResponseSchema();
537
+ try {
538
+ responseSchema.parse(result);
539
+ } catch (error) {
540
+ throw new Error(`Response validation failed: ${error}`);
541
+ }
542
+ return result;
543
+ }
544
+ async function maintenanceWindows2(client, params) {
545
+ const requestSchema = RpcMaintenanceWindowsRequestSchema();
546
+ if (params !== void 0) {
547
+ try {
548
+ requestSchema.parse(params);
549
+ } catch (error) {
550
+ throw new Error(`Request validation failed: ${error}`);
551
+ }
552
+ }
553
+ return maintenanceWindows(client, params);
554
+ }
555
+ async function networkInfo2(client, params) {
556
+ const requestSchema = RpcNetworkInfoRequestSchema();
557
+ if (params !== void 0) {
558
+ try {
559
+ requestSchema.parse(params);
560
+ } catch (error) {
561
+ throw new Error(`Request validation failed: ${error}`);
562
+ }
563
+ }
564
+ const result = await networkInfo(client, params);
565
+ const responseSchema = RpcNetworkInfoResponseSchema();
566
+ try {
567
+ responseSchema.parse(result);
568
+ } catch (error) {
569
+ throw new Error(`Response validation failed: ${error}`);
570
+ }
571
+ return result;
572
+ }
573
+ async function nextLightClientBlock2(client, params) {
574
+ const requestSchema = RpcLightClientNextBlockRequestSchema();
575
+ if (params !== void 0) {
576
+ try {
577
+ requestSchema.parse(params);
578
+ } catch (error) {
579
+ throw new Error(`Request validation failed: ${error}`);
580
+ }
581
+ }
582
+ const result = await nextLightClientBlock(client, params);
583
+ const responseSchema = RpcLightClientNextBlockResponseSchema();
584
+ try {
585
+ responseSchema.parse(result);
586
+ } catch (error) {
587
+ throw new Error(`Response validation failed: ${error}`);
588
+ }
589
+ return result;
590
+ }
591
+ async function query2(client, params) {
592
+ const requestSchema = RpcQueryRequestSchema();
593
+ if (params !== void 0) {
594
+ try {
595
+ requestSchema.parse(params);
596
+ } catch (error) {
597
+ throw new Error(`Request validation failed: ${error}`);
598
+ }
599
+ }
600
+ const result = await query(client, params);
601
+ const responseSchema = RpcQueryResponseSchema();
602
+ try {
603
+ responseSchema.parse(result);
604
+ } catch (error) {
605
+ throw new Error(`Response validation failed: ${error}`);
606
+ }
607
+ return result;
608
+ }
609
+ async function sendTx2(client, params) {
610
+ const requestSchema = RpcSendTransactionRequestSchema();
611
+ if (params !== void 0) {
612
+ try {
613
+ requestSchema.parse(params);
614
+ } catch (error) {
615
+ throw new Error(`Request validation failed: ${error}`);
616
+ }
617
+ }
618
+ const result = await sendTx(client, params);
619
+ const responseSchema = RpcTransactionResponseSchema();
620
+ try {
621
+ responseSchema.parse(result);
622
+ } catch (error) {
623
+ throw new Error(`Response validation failed: ${error}`);
624
+ }
625
+ return result;
626
+ }
627
+ async function status2(client, params) {
628
+ const requestSchema = RpcStatusRequestSchema();
629
+ if (params !== void 0) {
630
+ try {
631
+ requestSchema.parse(params);
632
+ } catch (error) {
633
+ throw new Error(`Request validation failed: ${error}`);
634
+ }
635
+ }
636
+ const result = await status(client, params);
637
+ const responseSchema = RpcStatusResponseSchema();
638
+ try {
639
+ responseSchema.parse(result);
640
+ } catch (error) {
641
+ throw new Error(`Response validation failed: ${error}`);
642
+ }
643
+ return result;
644
+ }
645
+ async function tx2(client, params) {
646
+ const requestSchema = RpcTransactionStatusRequestSchema();
647
+ if (params !== void 0) {
648
+ try {
649
+ requestSchema.parse(params);
650
+ } catch (error) {
651
+ throw new Error(`Request validation failed: ${error}`);
652
+ }
653
+ }
654
+ const result = await tx(client, params);
655
+ const responseSchema = RpcTransactionResponseSchema();
656
+ try {
657
+ responseSchema.parse(result);
658
+ } catch (error) {
659
+ throw new Error(`Response validation failed: ${error}`);
660
+ }
661
+ return result;
662
+ }
663
+ async function validators2(client, params) {
664
+ const requestSchema = RpcValidatorRequestSchema();
665
+ if (params !== void 0) {
666
+ try {
667
+ requestSchema.parse(params);
668
+ } catch (error) {
669
+ throw new Error(`Request validation failed: ${error}`);
670
+ }
671
+ }
672
+ const result = await validators(client, params);
673
+ const responseSchema = RpcValidatorResponseSchema();
674
+ try {
675
+ responseSchema.parse(result);
676
+ } catch (error) {
677
+ throw new Error(`Response validation failed: ${error}`);
678
+ }
679
+ return result;
340
680
  }
341
681
 
342
682
  // src/validation.ts
@@ -386,12 +726,23 @@ function enableValidation() {
386
726
  validateMethodResponse: (method, response) => {
387
727
  try {
388
728
  responseSchema.parse(response);
729
+ if (response.result && typeof response.result === "object" && "error" in response.result) {
730
+ const serverError = response.result.error;
731
+ throw new JsonRpcClientError(
732
+ `Server error: ${serverError}`,
733
+ -32e3,
734
+ response.result
735
+ );
736
+ }
389
737
  const methodSchemas = VALIDATION_SCHEMA_MAP[method];
390
738
  if (methodSchemas?.responseSchema) {
391
739
  const methodResponseSchema = methodSchemas.responseSchema();
392
740
  methodResponseSchema.parse(response);
393
741
  }
394
742
  } catch (error) {
743
+ if (error instanceof JsonRpcClientError) {
744
+ throw error;
745
+ }
395
746
  throw new JsonRpcClientError(
396
747
  `Invalid ${method} response: ${error instanceof Error ? error.message : "Unknown error"}`
397
748
  );
@@ -407,41 +758,43 @@ export {
407
758
  NearRpcClient,
408
759
  NearRpcError,
409
760
  RPC_METHODS,
410
- block,
411
- blockEffects,
412
- broadcastTxAsync,
413
- broadcastTxCommit,
414
- changes,
415
- chunk,
416
- clientConfig,
761
+ block2 as block,
762
+ blockEffects2 as blockEffects,
763
+ broadcastTxAsync2 as broadcastTxAsync,
764
+ broadcastTxCommit2 as broadcastTxCommit,
765
+ changes2 as changes,
766
+ chunk2 as chunk,
767
+ clientConfig2 as clientConfig,
417
768
  NearRpcClient as default,
418
769
  defaultClient,
419
770
  enableValidation,
420
- experimentalChanges,
421
- experimentalChangesInBlock,
422
- experimentalCongestionLevel,
423
- experimentalGenesisConfig,
424
- experimentalLightClientBlockProof,
425
- experimentalLightClientProof,
426
- experimentalMaintenanceWindows,
427
- experimentalProtocolConfig,
428
- experimentalReceipt,
429
- experimentalSplitStorageInfo,
430
- experimentalTxStatus,
431
- experimentalValidatorsOrdered,
432
- gasPrice,
433
- genesisConfig,
434
- health,
435
- lightClientProof,
436
- maintenanceWindows,
437
- networkInfo,
438
- nextLightClientBlock,
439
- query,
440
- sendTx,
441
- status,
442
- tx,
443
- validators,
771
+ experimentalChanges2 as experimentalChanges,
772
+ experimentalChangesInBlock2 as experimentalChangesInBlock,
773
+ experimentalCongestionLevel2 as experimentalCongestionLevel,
774
+ experimentalGenesisConfig2 as experimentalGenesisConfig,
775
+ experimentalLightClientBlockProof2 as experimentalLightClientBlockProof,
776
+ experimentalLightClientProof2 as experimentalLightClientProof,
777
+ experimentalMaintenanceWindows2 as experimentalMaintenanceWindows,
778
+ experimentalProtocolConfig2 as experimentalProtocolConfig,
779
+ experimentalReceipt2 as experimentalReceipt,
780
+ experimentalSplitStorageInfo2 as experimentalSplitStorageInfo,
781
+ experimentalTxStatus2 as experimentalTxStatus,
782
+ experimentalValidatorsOrdered2 as experimentalValidatorsOrdered,
783
+ gasPrice2 as gasPrice,
784
+ genesisConfig2 as genesisConfig,
785
+ health2 as health,
786
+ lightClientProof2 as lightClientProof,
787
+ maintenanceWindows2 as maintenanceWindows,
788
+ networkInfo2 as networkInfo,
789
+ nextLightClientBlock2 as nextLightClientBlock,
790
+ parseCallResultToJson,
791
+ query2 as query,
792
+ sendTx2 as sendTx,
793
+ status2 as status,
794
+ tx2 as tx,
795
+ validators2 as validators,
444
796
  viewAccessKey,
445
797
  viewAccount,
446
- viewFunction
798
+ viewFunction,
799
+ viewFunctionAsJson
447
800
  };