@across-protocol/sdk 3.1.18 → 3.1.20

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 (78) hide show
  1. package/dist/cjs/index.d.ts +1 -0
  2. package/dist/cjs/index.js +2 -1
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/providers/cachedProvider.d.ts +17 -0
  5. package/dist/cjs/providers/cachedProvider.js +149 -0
  6. package/dist/cjs/providers/cachedProvider.js.map +1 -0
  7. package/dist/cjs/providers/constants.d.ts +4 -0
  8. package/dist/cjs/providers/constants.js +8 -0
  9. package/dist/cjs/providers/constants.js.map +1 -0
  10. package/dist/cjs/providers/index.d.ts +5 -0
  11. package/dist/cjs/providers/index.js +9 -0
  12. package/dist/cjs/providers/index.js.map +1 -0
  13. package/dist/cjs/providers/rateLimitedProvider.d.ts +10 -0
  14. package/dist/cjs/providers/rateLimitedProvider.js +88 -0
  15. package/dist/cjs/providers/rateLimitedProvider.js.map +1 -0
  16. package/dist/cjs/providers/retryProvider.d.ts +16 -0
  17. package/dist/cjs/providers/retryProvider.js +224 -0
  18. package/dist/cjs/providers/retryProvider.js.map +1 -0
  19. package/dist/cjs/providers/utils.d.ts +21 -0
  20. package/dist/cjs/providers/utils.js +63 -0
  21. package/dist/cjs/providers/utils.js.map +1 -0
  22. package/dist/cjs/utils/NetworkUtils.d.ts +1 -0
  23. package/dist/cjs/utils/NetworkUtils.js +10 -1
  24. package/dist/cjs/utils/NetworkUtils.js.map +1 -1
  25. package/dist/cjs/utils/ObjectUtils.js.map +1 -1
  26. package/dist/esm/index.d.ts +1 -0
  27. package/dist/esm/index.js +2 -0
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/providers/cachedProvider.d.ts +17 -0
  30. package/dist/esm/providers/cachedProvider.js +167 -0
  31. package/dist/esm/providers/cachedProvider.js.map +1 -0
  32. package/dist/esm/providers/constants.d.ts +7 -0
  33. package/dist/esm/providers/constants.js +10 -0
  34. package/dist/esm/providers/constants.js.map +1 -0
  35. package/dist/esm/providers/index.d.ts +5 -0
  36. package/dist/esm/providers/index.js +6 -0
  37. package/dist/esm/providers/index.js.map +1 -0
  38. package/dist/esm/providers/rateLimitedProvider.d.ts +10 -0
  39. package/dist/esm/providers/rateLimitedProvider.js +101 -0
  40. package/dist/esm/providers/rateLimitedProvider.js.map +1 -0
  41. package/dist/esm/providers/retryProvider.d.ts +16 -0
  42. package/dist/esm/providers/retryProvider.js +249 -0
  43. package/dist/esm/providers/retryProvider.js.map +1 -0
  44. package/dist/esm/providers/utils.d.ts +39 -0
  45. package/dist/esm/providers/utils.js +89 -0
  46. package/dist/esm/providers/utils.js.map +1 -0
  47. package/dist/esm/utils/NetworkUtils.d.ts +6 -0
  48. package/dist/esm/utils/NetworkUtils.js +13 -0
  49. package/dist/esm/utils/NetworkUtils.js.map +1 -1
  50. package/dist/esm/utils/ObjectUtils.js +1 -1
  51. package/dist/esm/utils/ObjectUtils.js.map +1 -1
  52. package/dist/types/index.d.ts +1 -0
  53. package/dist/types/index.d.ts.map +1 -1
  54. package/dist/types/providers/cachedProvider.d.ts +18 -0
  55. package/dist/types/providers/cachedProvider.d.ts.map +1 -0
  56. package/dist/types/providers/constants.d.ts +8 -0
  57. package/dist/types/providers/constants.d.ts.map +1 -0
  58. package/dist/types/providers/index.d.ts +6 -0
  59. package/dist/types/providers/index.d.ts.map +1 -0
  60. package/dist/types/providers/rateLimitedProvider.d.ts +11 -0
  61. package/dist/types/providers/rateLimitedProvider.d.ts.map +1 -0
  62. package/dist/types/providers/retryProvider.d.ts +17 -0
  63. package/dist/types/providers/retryProvider.d.ts.map +1 -0
  64. package/dist/types/providers/utils.d.ts +40 -0
  65. package/dist/types/providers/utils.d.ts.map +1 -0
  66. package/dist/types/utils/NetworkUtils.d.ts +6 -0
  67. package/dist/types/utils/NetworkUtils.d.ts.map +1 -1
  68. package/dist/types/utils/ObjectUtils.d.ts.map +1 -1
  69. package/package.json +6 -2
  70. package/src/index.ts +1 -0
  71. package/src/providers/cachedProvider.ts +155 -0
  72. package/src/providers/constants.ts +11 -0
  73. package/src/providers/index.ts +5 -0
  74. package/src/providers/rateLimitedProvider.ts +94 -0
  75. package/src/providers/retryProvider.ts +262 -0
  76. package/src/providers/utils.ts +119 -0
  77. package/src/utils/NetworkUtils.ts +13 -0
  78. package/src/utils/ObjectUtils.ts +1 -0
@@ -0,0 +1,249 @@
1
+ import { __awaiter, __extends, __generator, __spreadArray } from "tslib";
2
+ import { ethers, logger } from "ethers";
3
+ import { delay, isDefined, isPromiseFulfilled, isPromiseRejected } from "../utils";
4
+ import { getOriginFromURL } from "../utils/NetworkUtils";
5
+ import { CacheProvider } from "./cachedProvider";
6
+ import { compareRpcResults, createSendErrorWithMessage, formatProviderError } from "./utils";
7
+ import { PROVIDER_CACHE_TTL } from "./constants";
8
+ var RetryProvider = /** @class */ (function (_super) {
9
+ __extends(RetryProvider, _super);
10
+ function RetryProvider(params, chainId, nodeQuorumThreshold, retries, delay, maxConcurrency, providerCacheNamespace, pctRpcCallsLogged, redisClient, standardTtlBlockDistance, noTtlBlockDistance, providerCacheTtl, logger) {
11
+ if (providerCacheTtl === void 0) { providerCacheTtl = PROVIDER_CACHE_TTL; }
12
+ var _this =
13
+ // Initialize the super just with the chainId, which stops it from trying to immediately send out a .send before
14
+ // this derived class is initialized.
15
+ _super.call(this, undefined, chainId) || this;
16
+ _this.nodeQuorumThreshold = nodeQuorumThreshold;
17
+ _this.retries = retries;
18
+ _this.delay = delay;
19
+ _this.maxConcurrency = maxConcurrency;
20
+ _this.providers = params.map(function (inputs) {
21
+ return new (CacheProvider.bind.apply(CacheProvider, __spreadArray([void 0, providerCacheNamespace,
22
+ redisClient,
23
+ standardTtlBlockDistance,
24
+ noTtlBlockDistance,
25
+ providerCacheTtl,
26
+ maxConcurrency,
27
+ pctRpcCallsLogged,
28
+ logger], inputs, false)))();
29
+ });
30
+ if (_this.nodeQuorumThreshold < 1 || !Number.isInteger(_this.nodeQuorumThreshold)) {
31
+ throw new Error("nodeQuorum,Threshold cannot be < 1 and must be an integer. Currently set to ".concat(_this.nodeQuorumThreshold));
32
+ }
33
+ if (_this.retries < 0 || !Number.isInteger(_this.retries)) {
34
+ throw new Error("retries cannot be < 0 and must be an integer. Currently set to ".concat(_this.retries));
35
+ }
36
+ if (_this.delay < 0) {
37
+ throw new Error("delay cannot be < 0. Currently set to ".concat(_this.delay));
38
+ }
39
+ if (_this.nodeQuorumThreshold > _this.providers.length) {
40
+ throw new Error("nodeQuorumThreshold (".concat(_this.nodeQuorumThreshold, ") must be <= the number of providers (").concat(_this.providers.length, ")"));
41
+ }
42
+ return _this;
43
+ }
44
+ RetryProvider.prototype.send = function (method, params) {
45
+ var _a;
46
+ return __awaiter(this, void 0, void 0, function () {
47
+ var quorumThreshold, requiredProviders, fallbackProviders, errors, tryWithFallback, results, errorTexts, successfulProviderUrls, values, throwQuorumError, fallbackResults, fallbackValues, counts, _b, quorumResult, count, mismatchedProviders, quorumProviders;
48
+ var _this = this;
49
+ return __generator(this, function (_c) {
50
+ switch (_c.label) {
51
+ case 0:
52
+ quorumThreshold = this._getQuorum(method, params);
53
+ requiredProviders = this.providers.slice(0, quorumThreshold);
54
+ fallbackProviders = this.providers.slice(quorumThreshold);
55
+ errors = [];
56
+ tryWithFallback = function (provider) {
57
+ return _this._trySend(provider, method, params)
58
+ .then(function (result) { return [provider, result]; })
59
+ .catch(function (err) {
60
+ // Append the provider and error to the error array.
61
+ errors.push([provider, (err === null || err === void 0 ? void 0 : err.stack) || (err === null || err === void 0 ? void 0 : err.toString())]);
62
+ // If there are no new fallback providers to use, terminate the recursion by throwing an error.
63
+ // Otherwise, we can try to call another provider.
64
+ if (fallbackProviders.length === 0) {
65
+ throw err;
66
+ }
67
+ // This line does two things:
68
+ // 1. Removes a fallback provider from the array so it cannot be used as a fallback for another required
69
+ // provider.
70
+ // 2. Recursively calls this method with that provider so it goes through the same try logic as the previous one.
71
+ return tryWithFallback(fallbackProviders.shift());
72
+ });
73
+ };
74
+ return [4 /*yield*/, Promise.allSettled(requiredProviders.map(tryWithFallback))];
75
+ case 1:
76
+ results = _c.sent();
77
+ if (!results.every(isPromiseFulfilled)) {
78
+ errorTexts = errors.map(function (_a) {
79
+ var provider = _a[0], errorText = _a[1];
80
+ return formatProviderError(provider, errorText);
81
+ });
82
+ successfulProviderUrls = results.filter(isPromiseFulfilled).map(function (result) { return result.value[0].connection.url; });
83
+ throw createSendErrorWithMessage("Not enough providers succeeded. Errors:\n".concat(errorTexts.join("\n"), "\n") +
84
+ "Successful Providers:\n".concat(successfulProviderUrls.join("\n")), (_a = results.find(isPromiseRejected)) === null || _a === void 0 ? void 0 : _a.reason);
85
+ }
86
+ values = results.map(function (result) { return result.value; });
87
+ // Start at element 1 and begin comparing.
88
+ // If _all_ values are equal, we have hit quorum, so return.
89
+ if (values.slice(1).every(function (_a) {
90
+ var output = _a[1];
91
+ return compareRpcResults(method, values[0][1], output);
92
+ })) {
93
+ return [2 /*return*/, values[0][1]];
94
+ }
95
+ throwQuorumError = function () {
96
+ var errorTexts = errors.map(function (_a) {
97
+ var provider = _a[0], errorText = _a[1];
98
+ return formatProviderError(provider, errorText);
99
+ });
100
+ var successfulProviderUrls = values.map(function (_a) {
101
+ var provider = _a[0];
102
+ return provider.connection.url;
103
+ });
104
+ throw new Error("Not enough providers agreed to meet quorum.\n" +
105
+ "Providers that errored:\n" +
106
+ "".concat(errorTexts.join("\n"), "\n") +
107
+ "Providers that succeeded, but some failed to match:\n" +
108
+ successfulProviderUrls.join("\n"));
109
+ };
110
+ // Exit early if there are no fallback providers left.
111
+ if (fallbackProviders.length === 0) {
112
+ throwQuorumError();
113
+ }
114
+ return [4 /*yield*/, Promise.allSettled(fallbackProviders.map(function (provider) {
115
+ return _this._trySend(provider, method, params)
116
+ .then(function (result) { return [provider, result]; })
117
+ .catch(function (err) {
118
+ errors.push([provider, (err === null || err === void 0 ? void 0 : err.stack) || (err === null || err === void 0 ? void 0 : err.toString())]);
119
+ throw new Error("No fallbacks during quorum search");
120
+ });
121
+ }))];
122
+ case 2:
123
+ fallbackResults = _c.sent();
124
+ fallbackValues = fallbackResults.filter(isPromiseFulfilled).map(function (promise) { return promise.value; });
125
+ counts = __spreadArray(__spreadArray([], values, true), fallbackValues, true).reduce(function (acc, curr) {
126
+ var result = curr[1];
127
+ // Find the first result that matches the return value.
128
+ var existingMatch = acc.find(function (_a) {
129
+ var existingResult = _a[0];
130
+ return compareRpcResults(method, existingResult, result);
131
+ });
132
+ // Increment the count if a match is found, else add a new element to the match array with a count of 1.
133
+ if (existingMatch) {
134
+ existingMatch[1]++;
135
+ }
136
+ else {
137
+ acc.push([result, 1]);
138
+ }
139
+ // Return the same acc object because it was modified in place.
140
+ return acc;
141
+ }, [[undefined, 0]] // Initialize with [undefined, 0] as the first element so something is always returned.
142
+ );
143
+ // Sort so the result with the highest count is first.
144
+ counts.sort(function (_a, _b) {
145
+ var a = _a[1];
146
+ var b = _b[1];
147
+ return b - a;
148
+ });
149
+ _b = counts[0], quorumResult = _b[0], count = _b[1];
150
+ // If this count is less than we need for quorum, throw the quorum error.
151
+ if (count < quorumThreshold) {
152
+ throwQuorumError();
153
+ }
154
+ mismatchedProviders = Object.fromEntries(__spreadArray(__spreadArray([], values, true), fallbackValues, true).filter(function (_a) {
155
+ var result = _a[1];
156
+ return !compareRpcResults(method, result, quorumResult);
157
+ })
158
+ .map(function (_a) {
159
+ var provider = _a[0], result = _a[1];
160
+ return [provider.connection.url, result];
161
+ }));
162
+ quorumProviders = __spreadArray(__spreadArray([], values, true), fallbackValues, true).filter(function (_a) {
163
+ var result = _a[1];
164
+ return compareRpcResults(method, result, quorumResult);
165
+ })
166
+ .map(function (_a) {
167
+ var provider = _a[0];
168
+ return provider.connection.url;
169
+ });
170
+ if (Object.keys(mismatchedProviders).length > 0 || errors.length > 0) {
171
+ logger.warn({
172
+ at: "ProviderUtils",
173
+ message: "Some providers mismatched with the quorum result or failed 🚸",
174
+ notificationPath: "across-warn",
175
+ method: method,
176
+ params: params,
177
+ quorumProviders: quorumProviders,
178
+ mismatchedProviders: mismatchedProviders,
179
+ erroringProviders: errors.map(function (_a) {
180
+ var provider = _a[0], errorText = _a[1];
181
+ return formatProviderError(provider, errorText);
182
+ }),
183
+ });
184
+ }
185
+ return [2 /*return*/, quorumResult];
186
+ }
187
+ });
188
+ });
189
+ };
190
+ RetryProvider.prototype._validateResponse = function (method, _, response) {
191
+ // Basic validation logic to start.
192
+ // Note: eth_getTransactionReceipt is ignored here because null responses are expected in the case that ethers is
193
+ // polling for the transaction receipt and receiving null until it does.
194
+ return isDefined(response) || method === "eth_getTransactionReceipt";
195
+ };
196
+ RetryProvider.prototype._sendAndValidate = function (provider, method, params) {
197
+ return __awaiter(this, void 0, void 0, function () {
198
+ var response;
199
+ return __generator(this, function (_a) {
200
+ switch (_a.label) {
201
+ case 0: return [4 /*yield*/, provider.send(method, params)];
202
+ case 1:
203
+ response = _a.sent();
204
+ if (!this._validateResponse(method, params, response)) {
205
+ // Not a warning to avoid spam since this could trigger a lot.
206
+ logger.debug({
207
+ at: "ProviderUtils",
208
+ message: "Provider returned invalid response",
209
+ provider: getOriginFromURL(provider.connection.url),
210
+ method: method,
211
+ params: params,
212
+ response: response,
213
+ });
214
+ throw new Error("Response failed validation");
215
+ }
216
+ return [2 /*return*/, response];
217
+ }
218
+ });
219
+ });
220
+ };
221
+ RetryProvider.prototype._trySend = function (provider, method, params) {
222
+ var _this = this;
223
+ var promise = this._sendAndValidate(provider, method, params);
224
+ for (var i = 0; i < this.retries; i++) {
225
+ promise = promise.catch(function () { return delay(_this.delay).then(function () { return _this._sendAndValidate(provider, method, params); }); });
226
+ }
227
+ return promise;
228
+ };
229
+ RetryProvider.prototype._getQuorum = function (method, params) {
230
+ // Only use quorum if this is a historical query that doesn't depend on the current block number.
231
+ // All logs queries should use quorum.
232
+ if (method === "eth_getLogs") {
233
+ return this.nodeQuorumThreshold;
234
+ }
235
+ // getBlockByNumber should only use the quorum if it's not asking for the latest block.
236
+ if (method === "eth_getBlockByNumber" && params[0] !== "latest") {
237
+ return this.nodeQuorumThreshold;
238
+ }
239
+ // eth_call should only use quorum for queries at a specific past block.
240
+ if (method === "eth_call" && params[1] !== "latest") {
241
+ return this.nodeQuorumThreshold;
242
+ }
243
+ // All other calls should use quorum 1 to avoid errors due to sync differences.
244
+ return 1;
245
+ };
246
+ return RetryProvider;
247
+ }(ethers.providers.StaticJsonRpcProvider));
248
+ export { RetryProvider };
249
+ //# sourceMappingURL=retryProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retryProvider.js","sourceRoot":"","sources":["../../../src/providers/retryProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { providers } from "ethers";
2
+ export declare function compareResultsAndFilterIgnoredKeys(ignoredKeys: string[], _objA: Record<string, unknown>, _objB: Record<string, unknown>): boolean;
3
+ export declare function compareArrayResultsWithIgnoredKeys(ignoredKeys: string[], objA: unknown[], objB: unknown[]): boolean;
4
+ /**
5
+ * This is the type we pass to define a request "task".
6
+ */
7
+ export interface RateLimitTask {
8
+ sendArgs: [string, Array<unknown>];
9
+ resolve: (result: unknown) => void;
10
+ reject: (err: unknown) => void;
11
+ }
12
+ /**
13
+ * A helper function to format an error message for a provider.
14
+ * @param provider The provider that failed.
15
+ * @param rawErrorText The raw error text.
16
+ * @returns The formatted error message.
17
+ */
18
+ export declare function formatProviderError(provider: providers.StaticJsonRpcProvider, rawErrorText: string): string;
19
+ export declare function createSendErrorWithMessage(message: string, sendError: Record<string, unknown>): {
20
+ name: string;
21
+ message: string;
22
+ stack?: string | undefined;
23
+ cause?: unknown;
24
+ };
25
+ /**
26
+ * Compares two RPC results, filtering out fields that are known to differ between providers.
27
+ * Note: this function references `IGNORED_ERROR_CODES` which is a record of error codes that correspond to fields
28
+ * that should be ignored when comparing RPC results.
29
+ * @param method The method that was called - conditionally filters out fields based on the method.
30
+ * @param rpcResultA The first RPC result.
31
+ * @param rpcResultB The second RPC result.
32
+ * @returns True if the results are equal, false otherwise.
33
+ */
34
+ export declare function compareRpcResults(method: string, rpcResultA: unknown, rpcResultB: unknown): boolean;
35
+ export declare enum CacheType {
36
+ NONE = 0,
37
+ WITH_TTL = 1,
38
+ NO_TTL = 2
39
+ }
@@ -0,0 +1,89 @@
1
+ // The async/queue library has a task-based interface for building a concurrent queue.
2
+ import { __assign } from "tslib";
3
+ import { isDefined } from "../utils";
4
+ import { isEqual } from "lodash";
5
+ /**
6
+ * Deletes keys from an object and returns new copy of object without ignored keys
7
+ * @param ignoredKeys
8
+ * @param obj
9
+ * @returns Objects with ignored keys removed
10
+ */
11
+ function deleteIgnoredKeys(ignoredKeys, obj) {
12
+ if (!isDefined(obj)) {
13
+ return;
14
+ }
15
+ var newObj = __assign({}, obj);
16
+ for (var _i = 0, ignoredKeys_1 = ignoredKeys; _i < ignoredKeys_1.length; _i++) {
17
+ var key = ignoredKeys_1[_i];
18
+ delete newObj[key];
19
+ }
20
+ return newObj;
21
+ }
22
+ export function compareResultsAndFilterIgnoredKeys(ignoredKeys, _objA, _objB) {
23
+ // Remove ignored keys from copied objects.
24
+ var filteredA = deleteIgnoredKeys(ignoredKeys, _objA);
25
+ var filteredB = deleteIgnoredKeys(ignoredKeys, _objB);
26
+ // Compare objects without the ignored keys.
27
+ return isEqual(filteredA, filteredB);
28
+ }
29
+ export function compareArrayResultsWithIgnoredKeys(ignoredKeys, objA, objB) {
30
+ // Remove ignored keys from each element of copied arrays.
31
+ var filteredA = objA === null || objA === void 0 ? void 0 : objA.map(function (obj) { return deleteIgnoredKeys(ignoredKeys, obj); });
32
+ var filteredB = objB === null || objB === void 0 ? void 0 : objB.map(function (obj) { return deleteIgnoredKeys(ignoredKeys, obj); });
33
+ // Compare objects without the ignored keys.
34
+ return isDefined(filteredA) && isDefined(filteredB) && isEqual(filteredA, filteredB);
35
+ }
36
+ /**
37
+ * A helper function to format an error message for a provider.
38
+ * @param provider The provider that failed.
39
+ * @param rawErrorText The raw error text.
40
+ * @returns The formatted error message.
41
+ */
42
+ export function formatProviderError(provider, rawErrorText) {
43
+ return "Provider ".concat(provider.connection.url, " failed with error: ").concat(rawErrorText);
44
+ }
45
+ export function createSendErrorWithMessage(message, sendError) {
46
+ var error = new Error(message);
47
+ return __assign(__assign({}, sendError), error);
48
+ }
49
+ /**
50
+ * Compares two RPC results, filtering out fields that are known to differ between providers.
51
+ * Note: this function references `IGNORED_ERROR_CODES` which is a record of error codes that correspond to fields
52
+ * that should be ignored when comparing RPC results.
53
+ * @param method The method that was called - conditionally filters out fields based on the method.
54
+ * @param rpcResultA The first RPC result.
55
+ * @param rpcResultB The second RPC result.
56
+ * @returns True if the results are equal, false otherwise.
57
+ */
58
+ export function compareRpcResults(method, rpcResultA, rpcResultB) {
59
+ if (method === "eth_getBlockByNumber") {
60
+ // We've seen RPC's disagree on the miner field, for example when Polygon nodes updated software that
61
+ // led alchemy and quicknode to disagree on the miner field's value.
62
+ return compareResultsAndFilterIgnoredKeys([
63
+ "miner",
64
+ "l1BatchNumber",
65
+ "l1BatchTimestamp",
66
+ "size",
67
+ "totalDifficulty", // Quicknode/Alchemy (sometimes)
68
+ ], rpcResultA, rpcResultB);
69
+ }
70
+ else if (method === "eth_getLogs") {
71
+ // We've seen some RPC's like QuickNode add in transactionLogIndex which isn't in the
72
+ // JSON RPC spec: https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges
73
+ // Additional reference: https://github.com/ethers-io/ethers.js/issues/1721
74
+ // 2023-08-31 Added blockHash because of upstream zkSync provider disagreements. Consider removing later.
75
+ // 2024-05-07 Added l1BatchNumber and logType due to Alchemy. Consider removing later.
76
+ // 2024-07-11 Added blockTimestamp after zkSync rolled out a new node release.
77
+ return compareArrayResultsWithIgnoredKeys(["blockTimestamp", "transactionLogIndex", "l1BatchNumber", "logType"], rpcResultA, rpcResultB);
78
+ }
79
+ else {
80
+ return isEqual(rpcResultA, rpcResultB);
81
+ }
82
+ }
83
+ export var CacheType;
84
+ (function (CacheType) {
85
+ CacheType[CacheType["NONE"] = 0] = "NONE";
86
+ CacheType[CacheType["WITH_TTL"] = 1] = "WITH_TTL";
87
+ CacheType[CacheType["NO_TTL"] = 2] = "NO_TTL";
88
+ })(CacheType || (CacheType = {}));
89
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/providers/utils.ts"],"names":[],"mappings":"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"}
@@ -64,3 +64,9 @@ export declare function chainIsCCTPEnabled(chainId: number): boolean;
64
64
  * @returns True if chainId requires manual L1 -> L2 finalization, otherwise false.
65
65
  */
66
66
  export declare function chainRequiresL1ToL2Finalization(chainId: number): boolean;
67
+ /**
68
+ * Returns the origin of a URL.
69
+ * @param url A URL.
70
+ * @returns The origin of the URL, or "UNKNOWN" if the URL is invalid.
71
+ */
72
+ export declare function getOriginFromURL(url: string): string;
@@ -106,4 +106,17 @@ export function chainIsCCTPEnabled(chainId) {
106
106
  export function chainRequiresL1ToL2Finalization(chainId) {
107
107
  return chainIsCCTPEnabled(chainId) || chainIsLinea(chainId);
108
108
  }
109
+ /**
110
+ * Returns the origin of a URL.
111
+ * @param url A URL.
112
+ * @returns The origin of the URL, or "UNKNOWN" if the URL is invalid.
113
+ */
114
+ export function getOriginFromURL(url) {
115
+ try {
116
+ return new URL(url).origin;
117
+ }
118
+ catch (e) {
119
+ return "UNKNOWN";
120
+ }
121
+ }
109
122
  //# sourceMappingURL=NetworkUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkUtils.js","sourceRoot":"","sources":["../../../src/utils/NetworkUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE7G,IAAM,WAAW,GAA2B;IAC1C,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,SAA0B;;IACvD,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9B,OAAO,MAAA,MAAA,MAAA,eAAe,CAAC,SAAS,CAAC,0CAAE,IAAI,mCAAI,WAAW,CAAC,SAAS,CAAC,mCAAI,SAAS,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB;;IAC3D,OAAO,MAAA,MAAA,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,0CAAE,WAAW,mCAAI,KAAK,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;;IAC5C,OAAO,MAAA,CAAA,MAAA,eAAe,CAAC,OAAO,CAAC,0CAAE,MAAM,MAAK,WAAW,CAAC,QAAQ,mCAAI,KAAK,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO;QACL,WAAW;QACX,SAAS,CAAC,IAAI;QACd,SAAS,CAAC,QAAQ;QAClB,SAAS,CAAC,QAAQ;QAClB,SAAS,CAAC,OAAO;QACjB,WAAW;QACX,SAAS,CAAC,YAAY;QACtB,SAAS,CAAC,gBAAgB;QAC1B,SAAS,CAAC,gBAAgB;QAC1B,SAAS,CAAC,YAAY;KACvB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAAe;IAC7D,OAAO,kBAAkB,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"NetworkUtils.js","sourceRoot":"","sources":["../../../src/utils/NetworkUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE7G,IAAM,WAAW,GAA2B;IAC1C,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,SAA0B;;IACvD,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9B,OAAO,MAAA,MAAA,MAAA,eAAe,CAAC,SAAS,CAAC,0CAAE,IAAI,mCAAI,WAAW,CAAC,SAAS,CAAC,mCAAI,SAAS,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB;;IAC3D,OAAO,MAAA,MAAA,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,0CAAE,WAAW,mCAAI,KAAK,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;;IAC5C,OAAO,MAAA,CAAA,MAAA,eAAe,CAAC,OAAO,CAAC,0CAAE,MAAM,MAAK,WAAW,CAAC,QAAQ,mCAAI,KAAK,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO;QACL,WAAW;QACX,SAAS,CAAC,IAAI;QACd,SAAS,CAAC,QAAQ;QAClB,SAAS,CAAC,QAAQ;QAClB,SAAS,CAAC,OAAO;QACjB,WAAW;QACX,SAAS,CAAC,YAAY;QACtB,SAAS,CAAC,gBAAgB;QAC1B,SAAS,CAAC,gBAAgB;QAC1B,SAAS,CAAC,YAAY;KACvB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAAe;IAC7D,OAAO,kBAAkB,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI;QACF,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;KAC5B;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,SAAS,CAAC;KAClB;AACH,CAAC"}
@@ -1,8 +1,8 @@
1
- import { __assign, __spreadArray } from "tslib";
2
1
  /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
3
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
4
3
  // Append value along the keyPath to object. For example assign(deposits, ['1337', '31337'], [{depositId:1}]) will create
5
4
  // deposits = {1337:{31337:[{depositId:1}]}}. Note that if the path into the object exists then this will append. This
5
+ import { __assign, __spreadArray } from "tslib";
6
6
  // function respects the destination type; if it is an object then deep merge and if an array effectively will push.
7
7
  export function assign(obj, keyPath, value) {
8
8
  var lastKeyIndex = keyPath.length - 1;
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectUtils.js","sourceRoot":"","sources":["../../../src/utils/ObjectUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ObjectUtils.js","sourceRoot":"","sources":["../../../src/utils/ObjectUtils.ts"],"names":[],"mappings":"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"}
@@ -13,4 +13,5 @@ export * as typeguards from "./typeguards";
13
13
  export * as clients from "./clients";
14
14
  export * as typechain from "./typechain";
15
15
  export * as caching from "./caching";
16
+ export * as providers from "./providers";
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { CachingMechanismInterface } from "../interfaces";
2
+ import { RateLimitedProvider } from "./rateLimitedProvider";
3
+ export declare class CacheProvider extends RateLimitedProvider {
4
+ readonly redisClient?: CachingMechanismInterface | undefined;
5
+ readonly standardTtlBlockDistance: number;
6
+ readonly noTtlBlockDistance: number;
7
+ readonly providerCacheTtl: number;
8
+ readonly getBlockByNumberPrefix: string;
9
+ readonly getLogsCachePrefix: string;
10
+ readonly callCachePrefix: string;
11
+ readonly baseTTL: number;
12
+ constructor(providerCacheNamespace: string, redisClient?: CachingMechanismInterface | undefined, standardTtlBlockDistance: number, noTtlBlockDistance: number, providerCacheTtl: number, ...jsonRpcConstructorParams: ConstructorParameters<typeof RateLimitedProvider>);
13
+ send(method: string, params: Array<unknown>): Promise<unknown>;
14
+ private buildRedisKey;
15
+ private cacheType;
16
+ private cacheTypeForBlock;
17
+ }
18
+ //# sourceMappingURL=cachedProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cachedProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/cachedProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,qBAAa,aAAc,SAAQ,mBAAmB;IAQlD,QAAQ,CAAC,WAAW,CAAC;IAErB,QAAQ,CAAC,wBAAwB;IAEjC,QAAQ,CAAC,kBAAkB;IAC3B,QAAQ,CAAC,gBAAgB;IAZ3B,SAAgB,sBAAsB,EAAE,MAAM,CAAC;IAC/C,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAC3C,SAAgB,eAAe,EAAE,MAAM,CAAC;IACxC,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAG9B,sBAAsB,EAAE,MAAM,EACrB,WAAW,CAAC,uCAA2B,EAEvC,wBAAwB,QAA2B,EAEnD,kBAAkB,QAA2B,EAC7C,gBAAgB,QAAqB,EAC9C,GAAG,wBAAwB,EAAE,qBAAqB,CAAC,OAAO,mBAAmB,CAAC;IAmBjE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAwC7E,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,SAAS;YAuCH,iBAAiB;CAsBhC"}
@@ -0,0 +1,8 @@
1
+ export declare const BLOCK_NUMBER_TTL = 60;
2
+ export declare const PROVIDER_CACHE_TTL = 3600;
3
+ export declare const PROVIDER_CACHE_TTL_MODIFIER = 0.15;
4
+ /**
5
+ * A default timeout for requests of 60 seconds.
6
+ */
7
+ export declare const defaultTimeout: number;
8
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/providers/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAGnC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,cAAc,QAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from "./rateLimitedProvider";
2
+ export * from "./cachedProvider";
3
+ export * from "./retryProvider";
4
+ export * from "./constants";
5
+ export * from "./utils";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ethers } from "ethers";
2
+ import { Logger } from "winston";
3
+ export declare class RateLimitedProvider extends ethers.providers.StaticJsonRpcProvider {
4
+ readonly pctRpcCallsLogged: number;
5
+ readonly logger: Logger;
6
+ private queue;
7
+ constructor(maxConcurrency: number, pctRpcCallsLogged: number, logger?: Logger, ...cacheConstructorParams: ConstructorParameters<typeof ethers.providers.StaticJsonRpcProvider>);
8
+ wrapSendWithLog(method: string, params: Array<unknown>): Promise<any>;
9
+ send(method: string, params: Array<unknown>): Promise<unknown>;
10
+ }
11
+ //# sourceMappingURL=rateLimitedProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimitedProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/rateLimitedProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKjC,qBAAa,mBAAoB,SAAQ,MAAM,CAAC,SAAS,CAAC,qBAAqB;IAQ3E,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAPzB,OAAO,CAAC,KAAK,CAA6B;gBAKxC,cAAc,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,EACzB,MAAM,GAAE,MAAkB,EACnC,GAAG,sBAAsB,EAAE,qBAAqB,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC;IAiB3F,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IAwCnD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CAaxE"}
@@ -0,0 +1,17 @@
1
+ import { ethers } from "ethers";
2
+ import { CachingMechanismInterface } from "../interfaces";
3
+ import { AugmentedLogger } from "@uma/logger";
4
+ export declare class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
5
+ readonly nodeQuorumThreshold: number;
6
+ readonly retries: number;
7
+ readonly delay: number;
8
+ readonly maxConcurrency: number;
9
+ readonly providers: ethers.providers.StaticJsonRpcProvider[];
10
+ constructor(params: ConstructorParameters<typeof ethers.providers.StaticJsonRpcProvider>[], chainId: number, nodeQuorumThreshold: number, retries: number, delay: number, maxConcurrency: number, providerCacheNamespace: string, pctRpcCallsLogged: number, redisClient?: CachingMechanismInterface, standardTtlBlockDistance?: number, noTtlBlockDistance?: number, providerCacheTtl?: number, logger?: AugmentedLogger);
11
+ send(method: string, params: Array<unknown>): Promise<unknown>;
12
+ _validateResponse(method: string, _: Array<unknown>, response: unknown): boolean;
13
+ _sendAndValidate(provider: ethers.providers.StaticJsonRpcProvider, method: string, params: Array<unknown>): Promise<unknown>;
14
+ _trySend(provider: ethers.providers.StaticJsonRpcProvider, method: string, params: Array<unknown>): Promise<unknown>;
15
+ _getQuorum(method: string, params: Array<unknown>): number;
16
+ }
17
+ //# sourceMappingURL=retryProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retryProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/retryProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAK1D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,qBAAa,aAAc,SAAQ,MAAM,CAAC,SAAS,CAAC,qBAAqB;IAKrE,QAAQ,CAAC,mBAAmB,EAAE,MAAM;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM;IAPjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;gBAE3D,MAAM,EAAE,qBAAqB,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE,EAC9E,OAAO,EAAE,MAAM,EACN,mBAAmB,EAAE,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EAC/B,sBAAsB,EAAE,MAAM,EAC9B,iBAAiB,EAAE,MAAM,EACzB,WAAW,CAAC,EAAE,yBAAyB,EACvC,wBAAwB,CAAC,EAAE,MAAM,EACjC,kBAAkB,CAAC,EAAE,MAAM,EAC3B,gBAAgB,SAAqB,EACrC,MAAM,CAAC,EAAE,eAAe;IAqCX,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IA+I7E,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO;IAO1E,gBAAgB,CACpB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAChD,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GACrB,OAAO,CAAC,OAAO,CAAC;IAiBnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAQpH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM;CAqB3D"}
@@ -0,0 +1,40 @@
1
+ import { providers } from "ethers";
2
+ export declare function compareResultsAndFilterIgnoredKeys(ignoredKeys: string[], _objA: Record<string, unknown>, _objB: Record<string, unknown>): boolean;
3
+ export declare function compareArrayResultsWithIgnoredKeys(ignoredKeys: string[], objA: unknown[], objB: unknown[]): boolean;
4
+ /**
5
+ * This is the type we pass to define a request "task".
6
+ */
7
+ export interface RateLimitTask {
8
+ sendArgs: [string, Array<unknown>];
9
+ resolve: (result: unknown) => void;
10
+ reject: (err: unknown) => void;
11
+ }
12
+ /**
13
+ * A helper function to format an error message for a provider.
14
+ * @param provider The provider that failed.
15
+ * @param rawErrorText The raw error text.
16
+ * @returns The formatted error message.
17
+ */
18
+ export declare function formatProviderError(provider: providers.StaticJsonRpcProvider, rawErrorText: string): string;
19
+ export declare function createSendErrorWithMessage(message: string, sendError: Record<string, unknown>): {
20
+ name: string;
21
+ message: string;
22
+ stack?: string | undefined;
23
+ cause?: unknown;
24
+ };
25
+ /**
26
+ * Compares two RPC results, filtering out fields that are known to differ between providers.
27
+ * Note: this function references `IGNORED_ERROR_CODES` which is a record of error codes that correspond to fields
28
+ * that should be ignored when comparing RPC results.
29
+ * @param method The method that was called - conditionally filters out fields based on the method.
30
+ * @param rpcResultA The first RPC result.
31
+ * @param rpcResultB The second RPC result.
32
+ * @returns True if the results are equal, false otherwise.
33
+ */
34
+ export declare function compareRpcResults(method: string, rpcResultA: unknown, rpcResultB: unknown): boolean;
35
+ export declare enum CacheType {
36
+ NONE = 0,
37
+ WITH_TTL = 1,
38
+ NO_TTL = 2
39
+ }
40
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/providers/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAqBnC,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAOT;AAED,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAOnH;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAE5B,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAInC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,qBAAqB,EAAE,YAAY,EAAE,MAAM,UAElG;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;EAG7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CA8BnG;AAED,oBAAY,SAAS;IACnB,IAAI,IAAA;IACJ,QAAQ,IAAA;IACR,MAAM,IAAA;CACP"}