@0xtorch/evm 0.0.49 → 0.0.51

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.
@@ -2,11 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createViemClient = void 0;
4
4
  const viem_1 = require("../externals/viem");
5
- const middleware_1 = require("../externals/viem/middleware");
6
5
  const defineClient_1 = require("./defineClient");
7
6
  const createViemClient = ({ chain, httpRpcs, }) => (0, defineClient_1.defineClient)({
8
7
  httpRpcCount: httpRpcs.length,
9
- call: async (caller, config) => (0, middleware_1.createViemClient)(chain, httpRpcs).wrapper(caller, undefined, config?.timeout, config?.logger),
8
+ call: async (caller, config) => (0, viem_1.createViemInstance)(chain, httpRpcs).call(caller, config?.timeout ?? 60_000),
10
9
  estimateFeesPerGas: async (type, config) => (0, viem_1.estimateFeesPerGas)({ chain, httpRpcs, type }, config),
11
10
  getBalance: async (address, config) => (0, viem_1.getBalance)({ chain, httpRpcs, address }, config),
12
11
  getBlock: async (blockNumber, config) => (0, viem_1.getBlock)({ chain, httpRpcs, blockNumber }, config),
@@ -1 +1 @@
1
- {"version":3,"file":"viemClient.js","sourceRoot":"","sources":["../../../clients/definitions/viemClient.ts"],"names":[],"mappings":";;;AAeA,4CAW0B;AAC1B,6DAAuF;AACvF,iDAA6C;AAOtC,MAAM,gBAAgB,GAAG,CAA2B,EACzD,KAAK,EACL,QAAQ,GAC2B,EAAE,EAAE,CACvC,IAAA,2BAAY,EAAC;IACX,YAAY,EAAE,QAAQ,CAAC,MAAM;IAC7B,IAAI,EAAE,KAAK,EACT,MAAqE,EACrE,MAKa,EACb,EAAE,CACF,IAAA,6BAAoB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAC3C,MAAM,EACN,SAAS,EACT,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,CACf;IACH,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CACzC,IAAA,yBAAkB,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;IACvD,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CACpC,IAAA,iBAAU,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC;IAClD,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,CACtC,IAAA,eAAQ,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC;IACpD,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAC/B,IAAA,qBAAc,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC;IAC7C,YAAY,EAAE,KAAK,EACjB,UAKC,EACD,MAGC,EACsC,EAAE,CACzC,IAAA,mBAAY,EAAC,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC;IAC1D,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAC/B,IAAA,qBAAc,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;IACnD,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAC7C,IAAA,0BAAmB,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC;IAC3D,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAC5C,IAAA,4BAAqB,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;IAC1D,SAAS,EAAE,KAAK,EACd,UAA2C,EAC3C,MAGC,EACyC,EAAE,CAC5C,IAAA,gBAAS,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC;IACpD,YAAY,EAAE,KAAK,EAIjB,UAAuD,EACvD,MAGC,EACqD,EAAE,CACxD,IAAA,mBAAY,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC;CACxD,CAAC,CAAA;AAnES,QAAA,gBAAgB,oBAmEzB"}
1
+ {"version":3,"file":"viemClient.js","sourceRoot":"","sources":["../../../clients/definitions/viemClient.ts"],"names":[],"mappings":";;;AAeA,4CAY0B;AAC1B,iDAA6C;AAOtC,MAAM,gBAAgB,GAAG,CAA2B,EACzD,KAAK,EACL,QAAQ,GAC2B,EAAE,EAAE,CACvC,IAAA,2BAAY,EAAC;IACX,YAAY,EAAE,QAAQ,CAAC,MAAM;IAC7B,IAAI,EAAE,KAAK,EACT,MAA4C,EAC5C,MAKa,EACb,EAAE,CACF,IAAA,yBAAkB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CACtC,MAAM,EACN,MAAM,EAAE,OAAO,IAAI,MAAM,CAC1B;IACH,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CACzC,IAAA,yBAAkB,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;IACvD,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CACpC,IAAA,iBAAU,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC;IAClD,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,CACtC,IAAA,eAAQ,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC;IACpD,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAC/B,IAAA,qBAAc,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC;IAC7C,YAAY,EAAE,KAAK,EACjB,UAKC,EACD,MAGC,EACsC,EAAE,CACzC,IAAA,mBAAY,EAAC,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC;IAC1D,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAC/B,IAAA,qBAAc,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;IACnD,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAC7C,IAAA,0BAAmB,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC;IAC3D,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAC5C,IAAA,4BAAqB,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;IAC1D,SAAS,EAAE,KAAK,EACd,UAA2C,EAC3C,MAGC,EACyC,EAAE,CAC5C,IAAA,gBAAS,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC;IACpD,YAAY,EAAE,KAAK,EAIjB,UAAuD,EACvD,MAGC,EACqD,EAAE,CACxD,IAAA,mBAAY,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC;CACxD,CAAC,CAAA;AAjES,QAAA,gBAAgB,oBAiEzB"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createViemInstance = void 0;
4
+ const viem_1 = require("viem");
5
+ const utils_1 = require("../../../utils");
6
+ exports.createViemInstance = (() => {
7
+ const mut_endpoints = [];
8
+ const endpointChainIds = new Map();
9
+ const endpointIsArchives = new Map();
10
+ const endpointGetLogsIsUsables = new Map();
11
+ const endpointGetLogsMaxBlockRanges = new Map();
12
+ const busyEndpoints = new Set();
13
+ const cooldownEndpoints = new Map();
14
+ const getAvailableEndpoint = async (chainId, timeout, rpcCondition) => {
15
+ const start = Date.now();
16
+ const repeat = true;
17
+ while (repeat) {
18
+ const now = Date.now();
19
+ const availableEndpoint = mut_endpoints.find((endpoint) => endpointChainIds.get(endpoint) === chainId &&
20
+ !busyEndpoints.has(endpoint) &&
21
+ (!cooldownEndpoints.has(endpoint) ||
22
+ cooldownEndpoints.get(endpoint) <= now) &&
23
+ (rpcCondition?.isArchive !== true ||
24
+ endpointIsArchives.get(endpoint) === true) &&
25
+ (rpcCondition?.getLogsIsUsable !== true ||
26
+ endpointGetLogsIsUsables.get(endpoint) === true));
27
+ if (availableEndpoint !== undefined) {
28
+ return availableEndpoint;
29
+ }
30
+ if (Date.now() - start > timeout) {
31
+ throw new Error('Timeout');
32
+ }
33
+ await new Promise((resolve) => setTimeout(resolve, 100));
34
+ }
35
+ throw new Error('No available endpoint');
36
+ };
37
+ const cooldownEndpoint = (endpoint, time = 60_000) => {
38
+ cooldownEndpoints.set(endpoint, Date.now() + time);
39
+ };
40
+ const call = async (chain, caller, timeout, rpcCondition) => {
41
+ const start = Date.now();
42
+ const endpoint = await getAvailableEndpoint(chain.id, timeout, rpcCondition);
43
+ console.debug('Selected endpoint:', endpoint);
44
+ busyEndpoints.add(endpoint);
45
+ try {
46
+ const client = (0, viem_1.createPublicClient)({
47
+ chain,
48
+ transport: (0, viem_1.http)(endpoint),
49
+ });
50
+ return await caller(client);
51
+ }
52
+ catch (error) {
53
+ console.debug(error);
54
+ if (error instanceof viem_1.HttpRequestError && error.status === 429) {
55
+ cooldownEndpoint(endpoint);
56
+ return await call(chain, caller, timeout - (Date.now() - start));
57
+ }
58
+ else if (error instanceof viem_1.TransactionReceiptNotFoundError) {
59
+ cooldownEndpoint(endpoint, 5000);
60
+ return await call(chain, caller, timeout - (Date.now() - start));
61
+ }
62
+ throw error;
63
+ }
64
+ finally {
65
+ busyEndpoints.delete(endpoint);
66
+ }
67
+ };
68
+ const getLogs = async (chain, { address, event, fromBlock, toBlock, }, timeout) => {
69
+ const start = Date.now();
70
+ const mut_logs = [];
71
+ let mut_currentFromBlock = fromBlock;
72
+ let mut_currentToBlock = 0n;
73
+ while (mut_currentFromBlock <= toBlock) {
74
+ const remain = timeout - (Date.now() - start);
75
+ const endpoint = await getAvailableEndpoint(chain.id, remain, {
76
+ isArchive: true,
77
+ getLogsIsUsable: true,
78
+ });
79
+ busyEndpoints.add(endpoint);
80
+ const getLogsMaxBlockRange = endpointGetLogsMaxBlockRanges.get(endpoint) ?? 1000n;
81
+ try {
82
+ const client = (0, viem_1.createPublicClient)({
83
+ chain,
84
+ transport: (0, viem_1.http)(endpoint),
85
+ });
86
+ mut_currentToBlock = (0, utils_1.bigIntMin)(mut_currentFromBlock + getLogsMaxBlockRange - 1n, toBlock);
87
+ const logs = await client.getLogs({
88
+ address,
89
+ event,
90
+ fromBlock: mut_currentFromBlock,
91
+ toBlock: mut_currentToBlock,
92
+ });
93
+ mut_logs.push(logs);
94
+ mut_currentFromBlock = mut_currentToBlock + 1n;
95
+ }
96
+ catch (error) {
97
+ if (error instanceof viem_1.HttpRequestError && error.status === 429) {
98
+ cooldownEndpoint(endpoint);
99
+ }
100
+ else {
101
+ throw error;
102
+ }
103
+ }
104
+ finally {
105
+ busyEndpoints.delete(endpoint);
106
+ }
107
+ }
108
+ const allLogs = mut_logs
109
+ .flat()
110
+ .toSorted((a, b) => Number(a.blockNumber - b.blockNumber));
111
+ return allLogs;
112
+ };
113
+ return (chain, rpcs) => {
114
+ for (const { url, isArchive, getLogsIsUsable, getLogsMaxBlockRange, } of rpcs) {
115
+ if (!mut_endpoints.includes(url)) {
116
+ mut_endpoints.push(url);
117
+ endpointChainIds.set(url, chain.id);
118
+ endpointIsArchives.set(url, isArchive);
119
+ endpointGetLogsIsUsables.set(url, getLogsIsUsable);
120
+ endpointGetLogsMaxBlockRanges.set(url, getLogsMaxBlockRange);
121
+ }
122
+ }
123
+ return {
124
+ call: (caller, timeout, rpcCondition) => call(chain, caller, timeout, rpcCondition),
125
+ getLogs: async (parameters, timeout) => getLogs(chain, parameters, timeout),
126
+ };
127
+ };
128
+ })();
129
+ //# sourceMappingURL=createViemInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createViemInstance.js","sourceRoot":"","sources":["../../../../clients/externals/viem/createViemInstance.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readContract = exports.multicall = exports.getTransactionReceipt = exports.getTransactionCount = exports.getTransaction = exports.getEventLogs = exports.getBlockNumber = exports.getBlock = exports.getBalance = exports.estimateFeesPerGas = void 0;
3
+ exports.readContract = exports.multicall = exports.getTransactionReceipt = exports.getTransactionCount = exports.getTransaction = exports.getEventLogs = exports.getBlockNumber = exports.getBlock = exports.getBalance = exports.estimateFeesPerGas = exports.createViemInstance = void 0;
4
+ var createViemInstance_1 = require("./createViemInstance");
5
+ Object.defineProperty(exports, "createViemInstance", { enumerable: true, get: function () { return createViemInstance_1.createViemInstance; } });
4
6
  var estimateFeesPerGas_1 = require("./estimateFeesPerGas");
5
7
  Object.defineProperty(exports, "estimateFeesPerGas", { enumerable: true, get: function () { return estimateFeesPerGas_1.estimateFeesPerGas; } });
6
8
  var getBalance_1 = require("./getBalance");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../clients/externals/viem/index.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,mDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AACrB,mDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,6DAA2D;AAAlD,0HAAA,mBAAmB,OAAA;AAC5B,iEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,yCAAuC;AAA9B,sGAAA,SAAS,OAAA;AAClB,+CAA6C;AAApC,4GAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../clients/externals/viem/index.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,mDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AACrB,mDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,6DAA2D;AAAlD,0HAAA,mBAAmB,OAAA;AAC5B,iEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,yCAAuC;AAA9B,sGAAA,SAAS,OAAA;AAClB,+CAA6C;AAApC,4GAAA,YAAY,OAAA"}
@@ -1,9 +1,8 @@
1
- import { estimateFeesPerGas, getBalance, getBlock, getBlockNumber, getEventLogs, getTransaction, getTransactionCount, getTransactionReceipt, multicall, readContract, } from '../externals/viem';
2
- import { createViemClient as createViemMiddleware } from '../externals/viem/middleware';
1
+ import { createViemInstance, estimateFeesPerGas, getBalance, getBlock, getBlockNumber, getEventLogs, getTransaction, getTransactionCount, getTransactionReceipt, multicall, readContract, } from '../externals/viem';
3
2
  import { defineClient } from './defineClient';
4
3
  export const createViemClient = ({ chain, httpRpcs, }) => defineClient({
5
4
  httpRpcCount: httpRpcs.length,
6
- call: async (caller, config) => createViemMiddleware(chain, httpRpcs).wrapper(caller, undefined, config?.timeout, config?.logger),
5
+ call: async (caller, config) => createViemInstance(chain, httpRpcs).call(caller, config?.timeout ?? 60_000),
7
6
  estimateFeesPerGas: async (type, config) => estimateFeesPerGas({ chain, httpRpcs, type }, config),
8
7
  getBalance: async (address, config) => getBalance({ chain, httpRpcs, address }, config),
9
8
  getBlock: async (blockNumber, config) => getBlock({ chain, httpRpcs, blockNumber }, config),
@@ -1 +1 @@
1
- {"version":3,"file":"viemClient.js","sourceRoot":"","sources":["../../../clients/definitions/viemClient.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,SAAS,EACT,YAAY,GACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAO7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAA2B,EACzD,KAAK,EACL,QAAQ,GAC2B,EAAE,EAAE,CACvC,YAAY,CAAC;IACX,YAAY,EAAE,QAAQ,CAAC,MAAM;IAC7B,IAAI,EAAE,KAAK,EACT,MAAqE,EACrE,MAKa,EACb,EAAE,CACF,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAC3C,MAAM,EACN,SAAS,EACT,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,CACf;IACH,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CACzC,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;IACvD,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CACpC,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC;IAClD,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,CACtC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC;IACpD,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAC/B,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC;IAC7C,YAAY,EAAE,KAAK,EACjB,UAKC,EACD,MAGC,EACsC,EAAE,CACzC,YAAY,CAAC,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC;IAC1D,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAC/B,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;IACnD,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAC7C,mBAAmB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC;IAC3D,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAC5C,qBAAqB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;IAC1D,SAAS,EAAE,KAAK,EACd,UAA2C,EAC3C,MAGC,EACyC,EAAE,CAC5C,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC;IACpD,YAAY,EAAE,KAAK,EAIjB,UAAuD,EACvD,MAGC,EACqD,EAAE,CACxD,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC;CACxD,CAAC,CAAA"}
1
+ {"version":3,"file":"viemClient.js","sourceRoot":"","sources":["../../../clients/definitions/viemClient.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,SAAS,EACT,YAAY,GACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAO7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAA2B,EACzD,KAAK,EACL,QAAQ,GAC2B,EAAE,EAAE,CACvC,YAAY,CAAC;IACX,YAAY,EAAE,QAAQ,CAAC,MAAM;IAC7B,IAAI,EAAE,KAAK,EACT,MAA4C,EAC5C,MAKa,EACb,EAAE,CACF,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CACtC,MAAM,EACN,MAAM,EAAE,OAAO,IAAI,MAAM,CAC1B;IACH,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CACzC,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;IACvD,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CACpC,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC;IAClD,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,CACtC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC;IACpD,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAC/B,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC;IAC7C,YAAY,EAAE,KAAK,EACjB,UAKC,EACD,MAGC,EACsC,EAAE,CACzC,YAAY,CAAC,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC;IAC1D,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAC/B,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;IACnD,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAC7C,mBAAmB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC;IAC3D,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAC5C,qBAAqB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;IAC1D,SAAS,EAAE,KAAK,EACd,UAA2C,EAC3C,MAGC,EACyC,EAAE,CAC5C,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC;IACpD,YAAY,EAAE,KAAK,EAIjB,UAAuD,EACvD,MAGC,EACqD,EAAE,CACxD,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC;CACxD,CAAC,CAAA"}
@@ -0,0 +1,128 @@
1
+ import { HttpRequestError, TransactionReceiptNotFoundError, createPublicClient, http, } from 'viem';
2
+ import { bigIntMin } from '../../../utils';
3
+ export const createViemInstance = (() => {
4
+ const mut_endpoints = [];
5
+ const endpointChainIds = new Map();
6
+ const endpointIsArchives = new Map();
7
+ const endpointGetLogsIsUsables = new Map();
8
+ const endpointGetLogsMaxBlockRanges = new Map();
9
+ const busyEndpoints = new Set();
10
+ const cooldownEndpoints = new Map();
11
+ const getAvailableEndpoint = async (chainId, timeout, rpcCondition) => {
12
+ const start = Date.now();
13
+ const repeat = true;
14
+ while (repeat) {
15
+ const now = Date.now();
16
+ const availableEndpoint = mut_endpoints.find((endpoint) => endpointChainIds.get(endpoint) === chainId &&
17
+ !busyEndpoints.has(endpoint) &&
18
+ (!cooldownEndpoints.has(endpoint) ||
19
+ cooldownEndpoints.get(endpoint) <= now) &&
20
+ (rpcCondition?.isArchive !== true ||
21
+ endpointIsArchives.get(endpoint) === true) &&
22
+ (rpcCondition?.getLogsIsUsable !== true ||
23
+ endpointGetLogsIsUsables.get(endpoint) === true));
24
+ if (availableEndpoint !== undefined) {
25
+ return availableEndpoint;
26
+ }
27
+ if (Date.now() - start > timeout) {
28
+ throw new Error('Timeout');
29
+ }
30
+ await new Promise((resolve) => setTimeout(resolve, 100));
31
+ }
32
+ throw new Error('No available endpoint');
33
+ };
34
+ const cooldownEndpoint = (endpoint, time = 60_000) => {
35
+ cooldownEndpoints.set(endpoint, Date.now() + time);
36
+ };
37
+ const call = async (chain, caller, timeout, rpcCondition) => {
38
+ const start = Date.now();
39
+ const endpoint = await getAvailableEndpoint(chain.id, timeout, rpcCondition);
40
+ // TODO 後で消す
41
+ console.debug('Selected endpoint:', endpoint);
42
+ busyEndpoints.add(endpoint);
43
+ try {
44
+ const client = createPublicClient({
45
+ chain,
46
+ transport: http(endpoint),
47
+ });
48
+ return await caller(client);
49
+ }
50
+ catch (error) {
51
+ // TODO 後で消す
52
+ console.debug(error);
53
+ if (error instanceof HttpRequestError && error.status === 429) {
54
+ cooldownEndpoint(endpoint);
55
+ return await call(chain, caller, timeout - (Date.now() - start));
56
+ }
57
+ else if (error instanceof TransactionReceiptNotFoundError) {
58
+ cooldownEndpoint(endpoint, 5000);
59
+ return await call(chain, caller, timeout - (Date.now() - start));
60
+ }
61
+ throw error;
62
+ }
63
+ finally {
64
+ busyEndpoints.delete(endpoint);
65
+ }
66
+ };
67
+ const getLogs = async (chain, { address, event, fromBlock, toBlock, }, timeout) => {
68
+ const start = Date.now();
69
+ const mut_logs = [];
70
+ let mut_currentFromBlock = fromBlock;
71
+ let mut_currentToBlock = 0n;
72
+ while (mut_currentFromBlock <= toBlock) {
73
+ const remain = timeout - (Date.now() - start);
74
+ const endpoint = await getAvailableEndpoint(chain.id, remain, {
75
+ isArchive: true,
76
+ getLogsIsUsable: true,
77
+ });
78
+ busyEndpoints.add(endpoint);
79
+ const getLogsMaxBlockRange = endpointGetLogsMaxBlockRanges.get(endpoint) ?? 1000n;
80
+ try {
81
+ const client = createPublicClient({
82
+ chain,
83
+ transport: http(endpoint),
84
+ });
85
+ mut_currentToBlock = bigIntMin(mut_currentFromBlock + getLogsMaxBlockRange - 1n, toBlock);
86
+ const logs = await client.getLogs({
87
+ address,
88
+ event,
89
+ fromBlock: mut_currentFromBlock,
90
+ toBlock: mut_currentToBlock,
91
+ });
92
+ mut_logs.push(logs);
93
+ mut_currentFromBlock = mut_currentToBlock + 1n;
94
+ }
95
+ catch (error) {
96
+ if (error instanceof HttpRequestError && error.status === 429) {
97
+ cooldownEndpoint(endpoint);
98
+ }
99
+ else {
100
+ throw error;
101
+ }
102
+ }
103
+ finally {
104
+ busyEndpoints.delete(endpoint);
105
+ }
106
+ }
107
+ const allLogs = mut_logs
108
+ .flat()
109
+ .toSorted((a, b) => Number(a.blockNumber - b.blockNumber));
110
+ return allLogs;
111
+ };
112
+ return (chain, rpcs) => {
113
+ for (const { url, isArchive, getLogsIsUsable, getLogsMaxBlockRange, } of rpcs) {
114
+ if (!mut_endpoints.includes(url)) {
115
+ mut_endpoints.push(url);
116
+ endpointChainIds.set(url, chain.id);
117
+ endpointIsArchives.set(url, isArchive);
118
+ endpointGetLogsIsUsables.set(url, getLogsIsUsable);
119
+ endpointGetLogsMaxBlockRanges.set(url, getLogsMaxBlockRange);
120
+ }
121
+ }
122
+ return {
123
+ call: (caller, timeout, rpcCondition) => call(chain, caller, timeout, rpcCondition),
124
+ getLogs: async (parameters, timeout) => getLogs(chain, parameters, timeout),
125
+ };
126
+ };
127
+ })();
128
+ //# sourceMappingURL=createViemInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createViemInstance.js","sourceRoot":"","sources":["../../../../clients/externals/viem/createViemInstance.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export { createViemInstance } from './createViemInstance';
1
2
  export { estimateFeesPerGas } from './estimateFeesPerGas';
2
3
  export { getBalance } from './getBalance';
3
4
  export { getBlock } from './getBlock';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../clients/externals/viem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../clients/externals/viem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { Logger } from '@0xtorch/core';
2
2
  import type { AbiEvent } from 'abitype';
3
- import type { Abi, ContractFunctionName, createPublicClient, GetLogsReturnType, MulticallParameters, MulticallReturnType, ReadContractParameters, ReadContractReturnType, Chain as ViemChain } from 'viem';
3
+ import type { Abi, ContractFunctionName, GetLogsReturnType, MulticallParameters, MulticallReturnType, PublicClient, ReadContractParameters, ReadContractReturnType, Chain as ViemChain } from 'viem';
4
4
  import type { HttpRpc } from '../../chains';
5
5
  import type { LowerHex } from '../../types';
6
6
  type CreateViemClientParameters<TChain extends ViemChain> = {
@@ -9,7 +9,7 @@ type CreateViemClientParameters<TChain extends ViemChain> = {
9
9
  };
10
10
  export declare const createViemClient: <TChain extends ViemChain>({ chain, httpRpcs, }: CreateViemClientParameters<TChain>) => {
11
11
  readonly httpRpcCount: number;
12
- readonly call: <T>(caller: (client: ReturnType<typeof createPublicClient>) => Promise<T>, config: {
12
+ readonly call: <T>(caller: (client: PublicClient) => Promise<T>, config: {
13
13
  readonly timeout?: number;
14
14
  readonly logger?: Logger;
15
15
  } | undefined) => Promise<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"viemClient.d.ts","sourceRoot":"","sources":["../../../clients/definitions/viemClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,KAAK,EACV,GAAG,EACH,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,IAAI,SAAS,EACnB,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAgB3C,KAAK,0BAA0B,CAAC,MAAM,SAAS,SAAS,IAAI;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,gBAAgB;;wCAON,WAAW,yBAAyB,CAAC,yBAElD;QACE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KACzB,GACD,SAAS;;;;;;;;;;;;;;;;;;kCAkBe,QAAQ;;4BAEd,MAAM;0BACR,MAAM;gBAEjB;QACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KACzB;;;;;;;;;;;;;4HAWQ;QACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KACzB;oNAQQ;QACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KACzB;CAGH,CAAA"}
1
+ {"version":3,"file":"viemClient.d.ts","sourceRoot":"","sources":["../../../clients/definitions/viemClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,KAAK,EACV,GAAG,EACH,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,IAAI,SAAS,EACnB,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAgB3C,KAAK,0BAA0B,CAAC,MAAM,SAAS,SAAS,IAAI;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,gBAAgB;;wCAON,YAAY,yBAEzB;QACE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KACzB,GACD,SAAS;;;;;;;;;;;;;;;;;;kCAgBe,QAAQ;;4BAEd,MAAM;0BACR,MAAM;gBAEjB;QACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KACzB;;;;;;;;;;;;;4HAWQ;QACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KACzB;oNAQQ;QACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KACzB;CAGH,CAAA"}
@@ -0,0 +1,19 @@
1
+ import type { AbiEvent } from 'abitype';
2
+ import type { Chain, GetLogsReturnType, PublicClient } from 'viem';
3
+ import type { HttpRpc } from '../../../chains';
4
+ import type { LowerHex } from '../../../types';
5
+ type RpcCondition = {
6
+ isArchive?: boolean;
7
+ getLogsIsUsable?: boolean;
8
+ };
9
+ export declare const createViemInstance: (chain: Chain, rpcs: readonly HttpRpc[]) => {
10
+ call: <T>(caller: (client: PublicClient) => Promise<T>, timeout: number, rpcCondition?: RpcCondition) => Promise<T>;
11
+ getLogs: <T_1 extends AbiEvent>(parameters: {
12
+ readonly address: LowerHex;
13
+ readonly event: T_1;
14
+ readonly fromBlock: bigint;
15
+ readonly toBlock: bigint;
16
+ }, timeout: number) => Promise<GetLogsReturnType<T_1>>;
17
+ };
18
+ export {};
19
+ //# sourceMappingURL=createViemInstance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createViemInstance.d.ts","sourceRoot":"","sources":["../../../../clients/externals/viem/createViemInstance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAOlE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAG9C,KAAK,YAAY,GAAG;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,kBAAkB,UAiJd,KAAK,QAAQ,SAAS,OAAO,EAAE;+BAkBvB,YAAY,0BACpB,MAAM,iBACA,YAAY;;0BAIP,QAAQ;;4BAEN,MAAM;0BACR,MAAM;gBAEjB,MAAM;CAInB,CAAA"}
@@ -1,3 +1,4 @@
1
+ export { createViemInstance } from './createViemInstance';
1
2
  export { estimateFeesPerGas } from './estimateFeesPerGas';
2
3
  export { getBalance } from './getBalance';
3
4
  export { getBlock } from './getBlock';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../clients/externals/viem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../clients/externals/viem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { Logger } from '@0xtorch/core';
2
2
  import type { AbiEvent } from 'abitype';
3
- import type { Abi, Block, ContractFunctionName, createPublicClient, FeeValues, GetLogsReturnType, MulticallParameters, MulticallReturnType, ReadContractParameters, ReadContractReturnType, Transaction, TransactionReceipt } from 'viem';
3
+ import type { Abi, Block, ContractFunctionName, FeeValues, GetLogsReturnType, MulticallParameters, MulticallReturnType, PublicClient, ReadContractParameters, ReadContractReturnType, Transaction, TransactionReceipt } from 'viem';
4
4
  import type { Hex, LowerHex } from '../types';
5
5
  export type Client = {
6
6
  readonly httpRpcCount: number;
@@ -16,7 +16,6 @@ export type Client = {
16
16
  readonly multicall: FunctionMulticall;
17
17
  readonly readContract: FunctionReadContract;
18
18
  };
19
- type PublicClient = ReturnType<typeof createPublicClient>;
20
19
  type FunctionCall = <T>(caller: (client: PublicClient) => Promise<T>, config?: {
21
20
  readonly timeout?: number;
22
21
  readonly logger?: Logger;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../clients/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,KAAK,EACV,GAAG,EACH,KAAK,EACL,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,kBAAkB,EACnB,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE7C,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,CAAA;IACvD,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAA;IACvC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAA;IAC/C,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAA;IAC3C,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAA;IAC/C,QAAQ,CAAC,mBAAmB,EAAE,2BAA2B,CAAA;IACzD,QAAQ,CAAC,qBAAqB,EAAE,6BAA6B,CAAA;IAC7D,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAA;IACrC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAA;CAC5C,CAAA;AAED,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEzD,KAAK,YAAY,GAAG,CAAC,CAAC,EACpB,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,EAC5C,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,KACE,OAAO,CAAC,CAAC,CAAC,CAAA;AAEf,KAAK,0BAA0B,GAAG,CAChC,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,EAC3B,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,KACE,OAAO,CAAC,SAAS,CAAC,CAAA;AAEvB,KAAK,kBAAkB,GAAG,CACxB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,KACE,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpB,KAAK,gBAAgB,GAAG,CACtB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,KACE,OAAO,CAAC,KAAK,CAAC,CAAA;AAEnB,KAAK,sBAAsB,GAAG,CAAC,MAAM,CAAC,EAAE;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAErB,KAAK,oBAAoB,GAAG,CAAC,KAAK,CAAC,SAAS,SAAS,QAAQ,EAC3D,UAAU,EAAE;IACV,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,EACD,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,KACE,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAA;AAE1C,KAAK,sBAAsB,GAAG,CAC5B,IAAI,EAAE,GAAG,EACT,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,KACE,OAAO,CAAC,WAAW,CAAC,CAAA;AAEzB,KAAK,2BAA2B,GAAG,CACjC,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,KACE,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpB,KAAK,6BAA6B,GAAG,CACnC,IAAI,EAAE,GAAG,EACT,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,KACE,OAAO,CAAC,kBAAkB,CAAC,CAAA;AAEhC,KAAK,iBAAiB,GAAG,CAAC,KAAK,CAAC,UAAU,SAAS,SAAS,OAAO,EAAE,EACnE,UAAU,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAC3C,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,KACE,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAA;AAE7C,KAAK,oBAAoB,GAAG,CAC1B,KAAK,CAAC,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EAC3C,KAAK,CAAC,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,EAEvE,UAAU,EAAE,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,EACvD,MAAM,CAAC,EAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB,KACE,OAAO,CAAC,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../clients/types.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,10 @@ import type { AbiEvent } from 'abitype'
3
3
  import type {
4
4
  Abi,
5
5
  ContractFunctionName,
6
- createPublicClient,
7
6
  GetLogsReturnType,
8
7
  MulticallParameters,
9
8
  MulticallReturnType,
9
+ PublicClient,
10
10
  ReadContractParameters,
11
11
  ReadContractReturnType,
12
12
  Chain as ViemChain,
@@ -14,6 +14,7 @@ import type {
14
14
  import type { HttpRpc } from '../../chains'
15
15
  import type { LowerHex } from '../../types'
16
16
  import {
17
+ createViemInstance,
17
18
  estimateFeesPerGas,
18
19
  getBalance,
19
20
  getBlock,
@@ -25,7 +26,6 @@ import {
25
26
  multicall,
26
27
  readContract,
27
28
  } from '../externals/viem'
28
- import { createViemClient as createViemMiddleware } from '../externals/viem/middleware'
29
29
  import { defineClient } from './defineClient'
30
30
 
31
31
  type CreateViemClientParameters<TChain extends ViemChain> = {
@@ -40,7 +40,7 @@ export const createViemClient = <TChain extends ViemChain>({
40
40
  defineClient({
41
41
  httpRpcCount: httpRpcs.length,
42
42
  call: async <T>(
43
- caller: (client: ReturnType<typeof createPublicClient>) => Promise<T>,
43
+ caller: (client: PublicClient) => Promise<T>,
44
44
  config:
45
45
  | {
46
46
  readonly timeout?: number
@@ -48,11 +48,9 @@ export const createViemClient = <TChain extends ViemChain>({
48
48
  }
49
49
  | undefined,
50
50
  ) =>
51
- createViemMiddleware(chain, httpRpcs).wrapper<T>(
51
+ createViemInstance(chain, httpRpcs).call(
52
52
  caller,
53
- undefined,
54
- config?.timeout,
55
- config?.logger,
53
+ config?.timeout ?? 60_000,
56
54
  ),
57
55
  estimateFeesPerGas: async (type, config) =>
58
56
  estimateFeesPerGas({ chain, httpRpcs, type }, config),
@@ -0,0 +1,196 @@
1
+ import type { AbiEvent } from 'abitype'
2
+ import type { Chain, GetLogsReturnType, PublicClient } from 'viem'
3
+ import {
4
+ HttpRequestError,
5
+ TransactionReceiptNotFoundError,
6
+ createPublicClient,
7
+ http,
8
+ } from 'viem'
9
+ import type { HttpRpc } from '../../../chains'
10
+ import type { LowerHex } from '../../../types'
11
+ import { bigIntMin } from '../../../utils'
12
+
13
+ type RpcCondition = {
14
+ isArchive?: boolean
15
+ getLogsIsUsable?: boolean
16
+ }
17
+
18
+ export const createViemInstance = (() => {
19
+ const mut_endpoints: string[] = []
20
+ const endpointChainIds = new Map<string, number>()
21
+ const endpointIsArchives = new Map<string, boolean>()
22
+ const endpointGetLogsIsUsables = new Map<string, boolean>()
23
+ const endpointGetLogsMaxBlockRanges = new Map<string, bigint>()
24
+ const busyEndpoints = new Set<string>()
25
+ const cooldownEndpoints = new Map<string, number>()
26
+
27
+ const getAvailableEndpoint = async (
28
+ chainId: number,
29
+ timeout: number,
30
+ rpcCondition?: RpcCondition,
31
+ ): Promise<string> => {
32
+ const start = Date.now()
33
+ const repeat = true
34
+ while (repeat) {
35
+ const now = Date.now()
36
+ const availableEndpoint = mut_endpoints.find(
37
+ (endpoint) =>
38
+ endpointChainIds.get(endpoint) === chainId &&
39
+ !busyEndpoints.has(endpoint) &&
40
+ (!cooldownEndpoints.has(endpoint) ||
41
+ cooldownEndpoints.get(endpoint)! <= now) &&
42
+ (rpcCondition?.isArchive !== true ||
43
+ endpointIsArchives.get(endpoint) === true) &&
44
+ (rpcCondition?.getLogsIsUsable !== true ||
45
+ endpointGetLogsIsUsables.get(endpoint) === true),
46
+ )
47
+
48
+ if (availableEndpoint !== undefined) {
49
+ return availableEndpoint
50
+ }
51
+
52
+ if (Date.now() - start > timeout) {
53
+ throw new Error('Timeout')
54
+ }
55
+
56
+ await new Promise((resolve) => setTimeout(resolve, 100))
57
+ }
58
+ throw new Error('No available endpoint')
59
+ }
60
+
61
+ const cooldownEndpoint = (endpoint: string, time = 60_000): void => {
62
+ cooldownEndpoints.set(endpoint, Date.now() + time)
63
+ }
64
+
65
+ const call = async <T>(
66
+ chain: Chain,
67
+ caller: (client: PublicClient) => Promise<T>,
68
+ timeout: number,
69
+ rpcCondition?: RpcCondition,
70
+ ): Promise<T> => {
71
+ const start = Date.now()
72
+ const endpoint = await getAvailableEndpoint(chain.id, timeout, rpcCondition)
73
+ // TODO 後で消す
74
+ console.debug('Selected endpoint:', endpoint)
75
+ busyEndpoints.add(endpoint)
76
+
77
+ try {
78
+ const client = createPublicClient({
79
+ chain,
80
+ transport: http(endpoint),
81
+ })
82
+ return await caller(client)
83
+ } catch (error) {
84
+ // TODO 後で消す
85
+ console.debug(error)
86
+ if (error instanceof HttpRequestError && error.status === 429) {
87
+ cooldownEndpoint(endpoint)
88
+ return await call(chain, caller, timeout - (Date.now() - start))
89
+ } else if (error instanceof TransactionReceiptNotFoundError) {
90
+ cooldownEndpoint(endpoint, 5000)
91
+ return await call(chain, caller, timeout - (Date.now() - start))
92
+ }
93
+ throw error
94
+ } finally {
95
+ busyEndpoints.delete(endpoint)
96
+ }
97
+ }
98
+
99
+ const getLogs = async <T extends AbiEvent>(
100
+ chain: Chain,
101
+ {
102
+ address,
103
+ event,
104
+ fromBlock,
105
+ toBlock,
106
+ }: {
107
+ readonly address: LowerHex
108
+ readonly event: T
109
+ readonly fromBlock: bigint
110
+ readonly toBlock: bigint
111
+ },
112
+ timeout: number,
113
+ ) => {
114
+ const start = Date.now()
115
+
116
+ const mut_logs: GetLogsReturnType<T>[] = []
117
+ let mut_currentFromBlock = fromBlock
118
+ let mut_currentToBlock = 0n
119
+ while (mut_currentFromBlock <= toBlock) {
120
+ const remain = timeout - (Date.now() - start)
121
+ const endpoint = await getAvailableEndpoint(chain.id, remain, {
122
+ isArchive: true,
123
+ getLogsIsUsable: true,
124
+ })
125
+ busyEndpoints.add(endpoint)
126
+ const getLogsMaxBlockRange =
127
+ endpointGetLogsMaxBlockRanges.get(endpoint) ?? 1000n
128
+
129
+ try {
130
+ const client = createPublicClient({
131
+ chain,
132
+ transport: http(endpoint),
133
+ })
134
+ mut_currentToBlock = bigIntMin(
135
+ mut_currentFromBlock + getLogsMaxBlockRange - 1n,
136
+ toBlock,
137
+ )
138
+ const logs = await client.getLogs({
139
+ address,
140
+ event,
141
+ fromBlock: mut_currentFromBlock,
142
+ toBlock: mut_currentToBlock,
143
+ })
144
+ mut_logs.push(logs)
145
+ mut_currentFromBlock = mut_currentToBlock + 1n
146
+ } catch (error) {
147
+ if (error instanceof HttpRequestError && error.status === 429) {
148
+ cooldownEndpoint(endpoint)
149
+ } else {
150
+ throw error
151
+ }
152
+ } finally {
153
+ busyEndpoints.delete(endpoint)
154
+ }
155
+ }
156
+
157
+ const allLogs = mut_logs
158
+ .flat()
159
+ .toSorted((a, b) => Number(a.blockNumber - b.blockNumber))
160
+ return allLogs
161
+ }
162
+
163
+ return (chain: Chain, rpcs: readonly HttpRpc[]) => {
164
+ for (const {
165
+ url,
166
+ isArchive,
167
+ getLogsIsUsable,
168
+ getLogsMaxBlockRange,
169
+ } of rpcs) {
170
+ if (!mut_endpoints.includes(url)) {
171
+ mut_endpoints.push(url)
172
+ endpointChainIds.set(url, chain.id)
173
+ endpointIsArchives.set(url, isArchive)
174
+ endpointGetLogsIsUsables.set(url, getLogsIsUsable)
175
+ endpointGetLogsMaxBlockRanges.set(url, getLogsMaxBlockRange)
176
+ }
177
+ }
178
+
179
+ return {
180
+ call: <T>(
181
+ caller: (client: PublicClient) => Promise<T>,
182
+ timeout: number,
183
+ rpcCondition?: RpcCondition,
184
+ ) => call(chain, caller, timeout, rpcCondition),
185
+ getLogs: async <T extends AbiEvent>(
186
+ parameters: {
187
+ readonly address: LowerHex
188
+ readonly event: T
189
+ readonly fromBlock: bigint
190
+ readonly toBlock: bigint
191
+ },
192
+ timeout: number,
193
+ ): Promise<GetLogsReturnType<T>> => getLogs(chain, parameters, timeout),
194
+ }
195
+ }
196
+ })()
@@ -1,3 +1,4 @@
1
+ export { createViemInstance } from './createViemInstance'
1
2
  export { estimateFeesPerGas } from './estimateFeesPerGas'
2
3
  export { getBalance } from './getBalance'
3
4
  export { getBlock } from './getBlock'
package/clients/types.ts CHANGED
@@ -4,11 +4,11 @@ import type {
4
4
  Abi,
5
5
  Block,
6
6
  ContractFunctionName,
7
- createPublicClient,
8
7
  FeeValues,
9
8
  GetLogsReturnType,
10
9
  MulticallParameters,
11
10
  MulticallReturnType,
11
+ PublicClient,
12
12
  ReadContractParameters,
13
13
  ReadContractReturnType,
14
14
  Transaction,
@@ -31,8 +31,6 @@ export type Client = {
31
31
  readonly readContract: FunctionReadContract
32
32
  }
33
33
 
34
- type PublicClient = ReturnType<typeof createPublicClient>
35
-
36
34
  type FunctionCall = <T>(
37
35
  caller: (client: PublicClient) => Promise<T>,
38
36
  config?: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xtorch/evm",
3
- "version": "0.0.49",
3
+ "version": "0.0.51",
4
4
  "description": "Cryptorch EVM extension",
5
5
  "keywords": [
6
6
  "cryptorch",