@0xtorch/evm 0.0.122 → 0.0.123

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.
Files changed (109) hide show
  1. package/_cjs/chain/definitions/arbitrumOne.js +0 -10
  2. package/_cjs/chain/definitions/arbitrumOne.js.map +1 -1
  3. package/_cjs/chain/definitions/avalancheC.js +0 -5
  4. package/_cjs/chain/definitions/avalancheC.js.map +1 -1
  5. package/_cjs/chain/definitions/base.js +0 -5
  6. package/_cjs/chain/definitions/base.js.map +1 -1
  7. package/_cjs/chain/definitions/blast.js +0 -10
  8. package/_cjs/chain/definitions/blast.js.map +1 -1
  9. package/_cjs/chain/definitions/bsc.js +8 -13
  10. package/_cjs/chain/definitions/bsc.js.map +1 -1
  11. package/_cjs/chain/definitions/ethereum.js +1 -6
  12. package/_cjs/chain/definitions/ethereum.js.map +1 -1
  13. package/_cjs/chain/definitions/fantom.js +0 -10
  14. package/_cjs/chain/definitions/fantom.js.map +1 -1
  15. package/_cjs/chain/definitions/linea.js +0 -5
  16. package/_cjs/chain/definitions/linea.js.map +1 -1
  17. package/_cjs/chain/definitions/mantaPacific.js +0 -5
  18. package/_cjs/chain/definitions/mantaPacific.js.map +1 -1
  19. package/_cjs/chain/definitions/opBnb.js +2 -2
  20. package/_cjs/chain/definitions/opBnb.js.map +1 -1
  21. package/_cjs/chain/definitions/optimism.js +2 -22
  22. package/_cjs/chain/definitions/optimism.js.map +1 -1
  23. package/_cjs/chain/definitions/polygonPos.js +2 -7
  24. package/_cjs/chain/definitions/polygonPos.js.map +1 -1
  25. package/_cjs/chain/definitions/polygonZkEvm.js +0 -5
  26. package/_cjs/chain/definitions/polygonZkEvm.js.map +1 -1
  27. package/_cjs/chain/definitions/ronin.js +0 -10
  28. package/_cjs/chain/definitions/ronin.js.map +1 -1
  29. package/_cjs/chain/definitions/scroll.js +2 -7
  30. package/_cjs/chain/definitions/scroll.js.map +1 -1
  31. package/_cjs/chain/definitions/zkSyncEra.js +0 -10
  32. package/_cjs/chain/definitions/zkSyncEra.js.map +1 -1
  33. package/_cjs/client/create.js +120 -67
  34. package/_cjs/client/create.js.map +1 -1
  35. package/_esm/chain/definitions/arbitrumOne.js +12 -10
  36. package/_esm/chain/definitions/arbitrumOne.js.map +1 -1
  37. package/_esm/chain/definitions/avalancheC.js +6 -5
  38. package/_esm/chain/definitions/avalancheC.js.map +1 -1
  39. package/_esm/chain/definitions/base.js +6 -5
  40. package/_esm/chain/definitions/base.js.map +1 -1
  41. package/_esm/chain/definitions/blast.js +12 -10
  42. package/_esm/chain/definitions/blast.js.map +1 -1
  43. package/_esm/chain/definitions/bsc.js +14 -13
  44. package/_esm/chain/definitions/bsc.js.map +1 -1
  45. package/_esm/chain/definitions/ethereum.js +8 -7
  46. package/_esm/chain/definitions/ethereum.js.map +1 -1
  47. package/_esm/chain/definitions/fantom.js +12 -10
  48. package/_esm/chain/definitions/fantom.js.map +1 -1
  49. package/_esm/chain/definitions/linea.js +6 -5
  50. package/_esm/chain/definitions/linea.js.map +1 -1
  51. package/_esm/chain/definitions/mantaPacific.js +6 -5
  52. package/_esm/chain/definitions/mantaPacific.js.map +1 -1
  53. package/_esm/chain/definitions/opBnb.js +2 -2
  54. package/_esm/chain/definitions/opBnb.js.map +1 -1
  55. package/_esm/chain/definitions/optimism.js +26 -22
  56. package/_esm/chain/definitions/optimism.js.map +1 -1
  57. package/_esm/chain/definitions/polygonPos.js +8 -7
  58. package/_esm/chain/definitions/polygonPos.js.map +1 -1
  59. package/_esm/chain/definitions/polygonZkEvm.js +6 -5
  60. package/_esm/chain/definitions/polygonZkEvm.js.map +1 -1
  61. package/_esm/chain/definitions/ronin.js +12 -10
  62. package/_esm/chain/definitions/ronin.js.map +1 -1
  63. package/_esm/chain/definitions/scroll.js +8 -7
  64. package/_esm/chain/definitions/scroll.js.map +1 -1
  65. package/_esm/chain/definitions/zkSyncEra.js +12 -10
  66. package/_esm/chain/definitions/zkSyncEra.js.map +1 -1
  67. package/_esm/client/create.js +121 -67
  68. package/_esm/client/create.js.map +1 -1
  69. package/_types/chain/definitions/arbitrumOne.d.ts.map +1 -1
  70. package/_types/chain/definitions/avalancheC.d.ts.map +1 -1
  71. package/_types/chain/definitions/base.d.ts.map +1 -1
  72. package/_types/chain/definitions/blast.d.ts.map +1 -1
  73. package/_types/chain/definitions/bsc.d.ts.map +1 -1
  74. package/_types/chain/definitions/ethereum.d.ts.map +1 -1
  75. package/_types/chain/definitions/fantom.d.ts.map +1 -1
  76. package/_types/chain/definitions/linea.d.ts.map +1 -1
  77. package/_types/chain/definitions/mantaPacific.d.ts.map +1 -1
  78. package/_types/chain/definitions/optimism.d.ts.map +1 -1
  79. package/_types/chain/definitions/polygonPos.d.ts.map +1 -1
  80. package/_types/chain/definitions/polygonZkEvm.d.ts.map +1 -1
  81. package/_types/chain/definitions/ronin.d.ts.map +1 -1
  82. package/_types/chain/definitions/scroll.d.ts.map +1 -1
  83. package/_types/chain/definitions/zkSyncEra.d.ts.map +1 -1
  84. package/_types/client/create.d.ts.map +1 -1
  85. package/chain/definitions/arbitrumOne.ts +12 -10
  86. package/chain/definitions/avalancheC.ts +6 -5
  87. package/chain/definitions/base.ts +6 -5
  88. package/chain/definitions/blast.ts +12 -10
  89. package/chain/definitions/bsc.ts +14 -13
  90. package/chain/definitions/ethereum.ts +8 -7
  91. package/chain/definitions/fantom.ts +12 -10
  92. package/chain/definitions/linea.ts +6 -5
  93. package/chain/definitions/mantaPacific.ts +6 -5
  94. package/chain/definitions/opBnb.ts +2 -2
  95. package/chain/definitions/optimism.ts +26 -22
  96. package/chain/definitions/polygonPos.ts +8 -7
  97. package/chain/definitions/polygonZkEvm.ts +6 -5
  98. package/chain/definitions/ronin.ts +12 -10
  99. package/chain/definitions/scroll.ts +8 -7
  100. package/chain/definitions/zkSyncEra.ts +12 -10
  101. package/client/create.ts +161 -76
  102. package/package.json +1 -1
  103. package/_cjs/client/rpcManager.js +0 -94
  104. package/_cjs/client/rpcManager.js.map +0 -1
  105. package/_esm/client/rpcManager.js +0 -90
  106. package/_esm/client/rpcManager.js.map +0 -1
  107. package/_types/client/rpcManager.d.ts +0 -20
  108. package/_types/client/rpcManager.d.ts.map +0 -1
  109. package/client/rpcManager.ts +0 -135
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createRpcManager = void 0;
4
- const viem_1 = require("viem");
5
- const createRpcManager = ({ chain, httpRpcs, }) => {
6
- const endpoints = httpRpcs.map((httpRpc) => httpRpc.url);
7
- const getLogsIsUsableEndpoints = new Set();
8
- const endpointGetLogsMaxBlockRanges = new Map();
9
- for (const httpRpc of httpRpcs) {
10
- if (httpRpc.getLogsIsUsable) {
11
- getLogsIsUsableEndpoints.add(httpRpc.url);
12
- }
13
- endpointGetLogsMaxBlockRanges.set(httpRpc.url, httpRpc.getLogsMaxBlockRange);
14
- }
15
- const busyEndpoints = new Set();
16
- const cooldownEndpoints = new Map();
17
- const getAvailableEndpoint = async (timeout, getLogsIsUsable = false) => {
18
- const now = Date.now();
19
- const endpoint = endpoints.find((endpoint) => !busyEndpoints.has(endpoint) &&
20
- (!cooldownEndpoints.has(endpoint) ||
21
- (cooldownEndpoints.get(endpoint) ?? 0) <= now) &&
22
- (getLogsIsUsable !== true || getLogsIsUsableEndpoints.has(endpoint)));
23
- if (endpoint !== undefined) {
24
- return endpoint;
25
- }
26
- return new Promise((resolve, reject) => {
27
- const start = Date.now();
28
- const poll = () => {
29
- const now = Date.now();
30
- const endpoint = endpoints.find((endpoint) => !busyEndpoints.has(endpoint) &&
31
- (!cooldownEndpoints.has(endpoint) ||
32
- (cooldownEndpoints.get(endpoint) ?? 0) <= now) &&
33
- (getLogsIsUsable !== true ||
34
- getLogsIsUsableEndpoints.has(endpoint)));
35
- if (endpoint !== undefined) {
36
- resolve(endpoint);
37
- return;
38
- }
39
- if (now - start > timeout) {
40
- reject(new Error('Timeout'));
41
- return;
42
- }
43
- setTimeout(poll, 100);
44
- };
45
- poll();
46
- });
47
- };
48
- const cooldownEndpoint = (endpoint, time = 60_000) => {
49
- cooldownEndpoints.set(endpoint, Date.now() + time);
50
- };
51
- const call = async ({ clientCall, timeout = 60_000, }) => {
52
- const start = Date.now();
53
- const endpoint = await getAvailableEndpoint(timeout);
54
- busyEndpoints.add(endpoint);
55
- try {
56
- const client = (0, viem_1.createPublicClient)({
57
- chain,
58
- transport: (0, viem_1.http)(endpoint),
59
- });
60
- return await clientCall(client);
61
- }
62
- catch (error) {
63
- if ((error instanceof viem_1.HttpRequestError && error.status === 429) ||
64
- (error instanceof Error &&
65
- error.message.includes('The request timed out.'))) {
66
- console.debug(error);
67
- cooldownEndpoint(endpoint);
68
- return await call({
69
- clientCall,
70
- timeout: timeout - (Date.now() - start),
71
- });
72
- }
73
- if (error instanceof viem_1.TransactionReceiptNotFoundError ||
74
- error instanceof viem_1.HttpRequestError ||
75
- error instanceof viem_1.InvalidInputRpcError) {
76
- console.debug(error);
77
- cooldownEndpoint(endpoint, 5000);
78
- return await call({
79
- clientCall,
80
- timeout: timeout - (Date.now() - start),
81
- });
82
- }
83
- throw error;
84
- }
85
- finally {
86
- busyEndpoints.delete(endpoint);
87
- }
88
- };
89
- return {
90
- call,
91
- };
92
- };
93
- exports.createRpcManager = createRpcManager;
94
- //# sourceMappingURL=rpcManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpcManager.js","sourceRoot":"","sources":["../../client/rpcManager.ts"],"names":[],"mappings":"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"}
@@ -1,90 +0,0 @@
1
- import { http, HttpRequestError, InvalidInputRpcError, TransactionReceiptNotFoundError, createPublicClient, } from 'viem';
2
- export const createRpcManager = ({ chain, httpRpcs, }) => {
3
- const endpoints = httpRpcs.map((httpRpc) => httpRpc.url);
4
- const getLogsIsUsableEndpoints = new Set();
5
- const endpointGetLogsMaxBlockRanges = new Map();
6
- for (const httpRpc of httpRpcs) {
7
- if (httpRpc.getLogsIsUsable) {
8
- getLogsIsUsableEndpoints.add(httpRpc.url);
9
- }
10
- endpointGetLogsMaxBlockRanges.set(httpRpc.url, httpRpc.getLogsMaxBlockRange);
11
- }
12
- const busyEndpoints = new Set();
13
- const cooldownEndpoints = new Map();
14
- const getAvailableEndpoint = async (timeout, getLogsIsUsable = false) => {
15
- const now = Date.now();
16
- const endpoint = endpoints.find((endpoint) => !busyEndpoints.has(endpoint) &&
17
- (!cooldownEndpoints.has(endpoint) ||
18
- (cooldownEndpoints.get(endpoint) ?? 0) <= now) &&
19
- (getLogsIsUsable !== true || getLogsIsUsableEndpoints.has(endpoint)));
20
- if (endpoint !== undefined) {
21
- return endpoint;
22
- }
23
- return new Promise((resolve, reject) => {
24
- const start = Date.now();
25
- const poll = () => {
26
- const now = Date.now();
27
- const endpoint = endpoints.find((endpoint) => !busyEndpoints.has(endpoint) &&
28
- (!cooldownEndpoints.has(endpoint) ||
29
- (cooldownEndpoints.get(endpoint) ?? 0) <= now) &&
30
- (getLogsIsUsable !== true ||
31
- getLogsIsUsableEndpoints.has(endpoint)));
32
- if (endpoint !== undefined) {
33
- resolve(endpoint);
34
- return;
35
- }
36
- if (now - start > timeout) {
37
- reject(new Error('Timeout'));
38
- return;
39
- }
40
- setTimeout(poll, 100);
41
- };
42
- poll();
43
- });
44
- };
45
- const cooldownEndpoint = (endpoint, time = 60_000) => {
46
- cooldownEndpoints.set(endpoint, Date.now() + time);
47
- };
48
- const call = async ({ clientCall, timeout = 60_000, }) => {
49
- const start = Date.now();
50
- const endpoint = await getAvailableEndpoint(timeout);
51
- busyEndpoints.add(endpoint);
52
- try {
53
- const client = createPublicClient({
54
- chain,
55
- transport: http(endpoint),
56
- });
57
- return await clientCall(client);
58
- }
59
- catch (error) {
60
- if ((error instanceof HttpRequestError && error.status === 429) ||
61
- (error instanceof Error &&
62
- error.message.includes('The request timed out.'))) {
63
- console.debug(error);
64
- cooldownEndpoint(endpoint);
65
- return await call({
66
- clientCall,
67
- timeout: timeout - (Date.now() - start),
68
- });
69
- }
70
- if (error instanceof TransactionReceiptNotFoundError ||
71
- error instanceof HttpRequestError ||
72
- error instanceof InvalidInputRpcError) {
73
- console.debug(error);
74
- cooldownEndpoint(endpoint, 5000);
75
- return await call({
76
- clientCall,
77
- timeout: timeout - (Date.now() - start),
78
- });
79
- }
80
- throw error;
81
- }
82
- finally {
83
- busyEndpoints.delete(endpoint);
84
- }
85
- };
86
- return {
87
- call,
88
- };
89
- };
90
- //# sourceMappingURL=rpcManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpcManager.js","sourceRoot":"","sources":["../../client/rpcManager.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { type Chain, type PublicClient } from 'viem';
2
- import type { HttpRpc } from '../chain';
3
- export type RpcManager = {
4
- call: <T>(parameters: {
5
- clientCall: (client: PublicClient) => Promise<T>;
6
- timeout?: number;
7
- }) => Promise<T>;
8
- };
9
- type CreateRpcManagerParameters = {
10
- chain: Chain;
11
- httpRpcs: HttpRpc[];
12
- };
13
- export declare const createRpcManager: ({ chain, httpRpcs, }: CreateRpcManagerParameters) => {
14
- call: <T>({ clientCall, timeout, }: {
15
- clientCall: (client: PublicClient) => Promise<T>;
16
- timeout?: number;
17
- }) => Promise<T>;
18
- };
19
- export {};
20
- //# sourceMappingURL=rpcManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpcManager.d.ts","sourceRoot":"","sources":["../../client/rpcManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EAGV,KAAK,YAAY,EAGlB,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAEvC,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE;QACpB,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;QAChD,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;CACjB,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,KAAK,EAAE,KAAK,CAAA;IACZ,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,gBAAgB,yBAG1B,0BAA0B;WA0DP,CAAC,4BAGlB;QACD,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;QAChD,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,KAAG,OAAO,CAAC,CAAC,CAAC;CA4Cf,CAAA"}
@@ -1,135 +0,0 @@
1
- import {
2
- http,
3
- type Chain,
4
- HttpRequestError,
5
- InvalidInputRpcError,
6
- type PublicClient,
7
- TransactionReceiptNotFoundError,
8
- createPublicClient,
9
- } from 'viem'
10
- import type { HttpRpc } from '../chain'
11
-
12
- export type RpcManager = {
13
- call: <T>(parameters: {
14
- clientCall: (client: PublicClient) => Promise<T>
15
- timeout?: number
16
- }) => Promise<T>
17
- }
18
-
19
- type CreateRpcManagerParameters = {
20
- chain: Chain
21
- httpRpcs: HttpRpc[]
22
- }
23
-
24
- export const createRpcManager = ({
25
- chain,
26
- httpRpcs,
27
- }: CreateRpcManagerParameters) => {
28
- const endpoints = httpRpcs.map((httpRpc) => httpRpc.url)
29
- const getLogsIsUsableEndpoints = new Set<string>()
30
- const endpointGetLogsMaxBlockRanges = new Map<string, bigint>()
31
- for (const httpRpc of httpRpcs) {
32
- if (httpRpc.getLogsIsUsable) {
33
- getLogsIsUsableEndpoints.add(httpRpc.url)
34
- }
35
- endpointGetLogsMaxBlockRanges.set(httpRpc.url, httpRpc.getLogsMaxBlockRange)
36
- }
37
- const busyEndpoints = new Set<string>()
38
- const cooldownEndpoints = new Map<string, number>()
39
-
40
- const getAvailableEndpoint = async (
41
- timeout: number,
42
- getLogsIsUsable = false,
43
- ): Promise<string> => {
44
- const now = Date.now()
45
- const endpoint = endpoints.find(
46
- (endpoint) =>
47
- !busyEndpoints.has(endpoint) &&
48
- (!cooldownEndpoints.has(endpoint) ||
49
- (cooldownEndpoints.get(endpoint) ?? 0) <= now) &&
50
- (getLogsIsUsable !== true || getLogsIsUsableEndpoints.has(endpoint)),
51
- )
52
- if (endpoint !== undefined) {
53
- return endpoint
54
- }
55
- return new Promise<string>((resolve, reject) => {
56
- const start = Date.now()
57
- const poll = () => {
58
- const now = Date.now()
59
- const endpoint = endpoints.find(
60
- (endpoint) =>
61
- !busyEndpoints.has(endpoint) &&
62
- (!cooldownEndpoints.has(endpoint) ||
63
- (cooldownEndpoints.get(endpoint) ?? 0) <= now) &&
64
- (getLogsIsUsable !== true ||
65
- getLogsIsUsableEndpoints.has(endpoint)),
66
- )
67
- if (endpoint !== undefined) {
68
- resolve(endpoint)
69
- return
70
- }
71
- if (now - start > timeout) {
72
- reject(new Error('Timeout'))
73
- return
74
- }
75
- setTimeout(poll, 100)
76
- }
77
- poll()
78
- })
79
- }
80
-
81
- const cooldownEndpoint = (endpoint: string, time = 60_000): void => {
82
- cooldownEndpoints.set(endpoint, Date.now() + time)
83
- }
84
-
85
- const call = async <T>({
86
- clientCall,
87
- timeout = 60_000,
88
- }: {
89
- clientCall: (client: PublicClient) => Promise<T>
90
- timeout?: number
91
- }): Promise<T> => {
92
- const start = Date.now()
93
- const endpoint = await getAvailableEndpoint(timeout)
94
- busyEndpoints.add(endpoint)
95
- try {
96
- const client = createPublicClient({
97
- chain,
98
- transport: http(endpoint),
99
- })
100
- return await clientCall(client)
101
- } catch (error) {
102
- if (
103
- (error instanceof HttpRequestError && error.status === 429) ||
104
- (error instanceof Error &&
105
- error.message.includes('The request timed out.'))
106
- ) {
107
- console.debug(error)
108
- cooldownEndpoint(endpoint)
109
- return await call({
110
- clientCall,
111
- timeout: timeout - (Date.now() - start),
112
- })
113
- }
114
- if (
115
- error instanceof TransactionReceiptNotFoundError ||
116
- error instanceof HttpRequestError ||
117
- error instanceof InvalidInputRpcError
118
- ) {
119
- console.debug(error)
120
- cooldownEndpoint(endpoint, 5000)
121
- return await call({
122
- clientCall,
123
- timeout: timeout - (Date.now() - start),
124
- })
125
- }
126
- throw error
127
- } finally {
128
- busyEndpoints.delete(endpoint)
129
- }
130
- }
131
-
132
- return {
133
- call,
134
- }
135
- }