@lido-nestjs/execution 1.14.2 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/error/codes/error-codes.d.ts +2 -1
- package/dist/error/codes/error-codes.js +1 -0
- package/dist/error/index.d.ts +1 -0
- package/dist/error/request-timeout.error.d.ts +5 -0
- package/dist/error/request-timeout.error.js +14 -0
- package/dist/index.js +2 -0
- package/dist/interfaces/simple-fallback-provider-config.d.ts +1 -0
- package/dist/provider/simple-fallback-json-rpc-batch-provider.d.ts +1 -0
- package/dist/provider/simple-fallback-json-rpc-batch-provider.js +17 -1
- package/package.json +1 -1
|
@@ -6,4 +6,5 @@ exports.ErrorCode = void 0;
|
|
|
6
6
|
(function (ErrorCode) {
|
|
7
7
|
ErrorCode["UNEXPECTED_BATCH_RESULT"] = "UNEXPECTED_BATCH_RESULT";
|
|
8
8
|
ErrorCode["PARTIAL_BATCH_RESULT"] = "PARTIAL_BATCH_RESULT";
|
|
9
|
+
ErrorCode["REQUEST_TIMEOUT"] = "REQUEST_TIMEOUT";
|
|
9
10
|
})(exports.ErrorCode || (exports.ErrorCode = {}));
|
package/dist/error/index.d.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
class RequestTimeoutError extends Error {
|
|
6
|
+
constructor(message, timeoutMs) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = 'RequestTimeoutError';
|
|
9
|
+
this.timeoutMs = timeoutMs;
|
|
10
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
exports.RequestTimeoutError = RequestTimeoutError;
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ var feeHistory = require('./ethers/fee-history.js');
|
|
|
11
11
|
var allProvidersFailed_error = require('./error/all-providers-failed.error.js');
|
|
12
12
|
var fetch_error = require('./error/fetch.error.js');
|
|
13
13
|
var noNewBlocksWhilePolling_error = require('./error/no-new-blocks-while-polling.error.js');
|
|
14
|
+
var requestTimeout_error = require('./error/request-timeout.error.js');
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
|
|
@@ -37,3 +38,4 @@ exports.getFeeHistory = feeHistory.getFeeHistory;
|
|
|
37
38
|
exports.AllProvidersFailedError = allProvidersFailed_error.AllProvidersFailedError;
|
|
38
39
|
exports.FetchError = fetch_error.FetchError;
|
|
39
40
|
exports.NoNewBlocksWhilePollingError = noNewBlocksWhilePolling_error.NoNewBlocksWhilePollingError;
|
|
41
|
+
exports.RequestTimeoutError = requestTimeout_error.RequestTimeoutError;
|
|
@@ -52,6 +52,7 @@ export declare class SimpleFallbackJsonRpcBatchProvider extends BaseProvider {
|
|
|
52
52
|
protected get provider(): FallbackProvider;
|
|
53
53
|
protected switchToNextProvider(): void;
|
|
54
54
|
protected isNonRetryableError(error: Error | unknown): boolean;
|
|
55
|
+
protected withTimeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T>;
|
|
55
56
|
perform(method: string, params: {
|
|
56
57
|
[name: string]: unknown;
|
|
57
58
|
}): Promise<unknown>;
|
|
@@ -12,6 +12,7 @@ var networks = require('../common/networks.js');
|
|
|
12
12
|
var noNewBlocksWhilePolling_error = require('../error/no-new-blocks-while-polling.error.js');
|
|
13
13
|
var errors = require('../common/errors.js');
|
|
14
14
|
var allProvidersFailed_error = require('../error/all-providers-failed.error.js');
|
|
15
|
+
var requestTimeout_error = require('../error/request-timeout.error.js');
|
|
15
16
|
var feeHistory = require('../ethers/fee-history.js');
|
|
16
17
|
var debugTraceBlockByHash = require('../ethers/debug-trace-block-by-hash.js');
|
|
17
18
|
var events = require('events');
|
|
@@ -120,6 +121,16 @@ exports.SimpleFallbackJsonRpcBatchProvider = class SimpleFallbackJsonRpcBatchPro
|
|
|
120
121
|
errors.isErrorHasCode(error) &&
|
|
121
122
|
errors.nonRetryableErrors.includes(error.code));
|
|
122
123
|
}
|
|
124
|
+
withTimeout(promise, timeoutMs) {
|
|
125
|
+
return Promise.race([
|
|
126
|
+
promise,
|
|
127
|
+
new Promise((_, reject) => {
|
|
128
|
+
setTimeout(() => {
|
|
129
|
+
reject(new requestTimeout_error.RequestTimeoutError(`Request timeout after ${timeoutMs}ms`, timeoutMs));
|
|
130
|
+
}, timeoutMs);
|
|
131
|
+
}),
|
|
132
|
+
]);
|
|
133
|
+
}
|
|
123
134
|
async perform(method, params) {
|
|
124
135
|
const retry = retrier.retrier(this.logger, this.config.maxRetries, this.config.minBackoffMs, this.config.maxBackoffMs, this.config.logRetries, (e) => this.isNonRetryableError(e));
|
|
125
136
|
let attempt = 0;
|
|
@@ -144,7 +155,12 @@ exports.SimpleFallbackJsonRpcBatchProvider = class SimpleFallbackJsonRpcBatchPro
|
|
|
144
155
|
};
|
|
145
156
|
this._eventEmitter.emit('rpc', event);
|
|
146
157
|
performRetryAttempt++;
|
|
147
|
-
|
|
158
|
+
const performPromise = provider.provider.perform(method, params);
|
|
159
|
+
// Apply timeout if configured
|
|
160
|
+
if (this.config.requestTimeoutMs) {
|
|
161
|
+
return this.withTimeout(performPromise, this.config.requestTimeoutMs);
|
|
162
|
+
}
|
|
163
|
+
return performPromise;
|
|
148
164
|
});
|
|
149
165
|
}
|
|
150
166
|
catch (e) {
|