@aztec/foundation
Advanced tools
Comparing version 0.1.0-alpha40 to 0.1.0-alpha41
@@ -1,2 +0,2 @@ | ||
export { createJsonRpcClient, mustSucceedFetch, defaultFetch } from './json_rpc_client.js'; | ||
export { createJsonRpcClient, mustSucceedFetch, mustSucceedFetchUnlessNoRetry, defaultFetch, makeFetch, } from './json_rpc_client.js'; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -1,2 +0,2 @@ | ||
export { createJsonRpcClient, mustSucceedFetch, defaultFetch } from './json_rpc_client.js'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQyJ9 | ||
export { createJsonRpcClient, mustSucceedFetch, mustSucceedFetchUnlessNoRetry, defaultFetch, makeFetch, } from './json_rpc_client.js'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLDZCQUE2QixFQUM3QixZQUFZLEVBQ1osU0FBUyxHQUNWLE1BQU0sc0JBQXNCLENBQUMifQ== |
import { RemoteObject } from 'comlink'; | ||
import { DebugLogger } from '../../log/index.js'; | ||
import { JsonClassConverterInput, StringClassConverterInput } from '../class_converter.js'; | ||
@@ -10,5 +11,7 @@ export { JsonStringify } from '../convert.js'; | ||
* @param body - The RPC payload. | ||
* @param noRetry - Whether to throw a `NoRetryError` in case the response is not ok and the body contains an error | ||
* message (see `retry` function for more details). | ||
* @returns The parsed JSON response, or throws an error. | ||
*/ | ||
export declare function defaultFetch(host: string, rpcMethod: string, body: any, useApiEndpoints: boolean): Promise<any>; | ||
export declare function defaultFetch(host: string, rpcMethod: string, body: any, useApiEndpoints: boolean, noRetry?: boolean): Promise<any>; | ||
/** | ||
@@ -19,2 +22,14 @@ * A fetch function with retries. | ||
/** | ||
* Makes a fetch function that retries based on the given attempts. | ||
* @param retries - Sequence of intervals (in seconds) to retry. | ||
* @param noRetry - Whether to stop retries on server errors. | ||
* @param log - Optional logger for logging attempts. | ||
* @returns A fetch function. | ||
*/ | ||
export declare function makeFetch(retries: number[], noRetry: boolean, log?: DebugLogger): (host: string, rpcMethod: string, body: any, useApiEndpoints: boolean) => Promise<any>; | ||
/** | ||
* A fetch function with retries unless the error is a NoRetryError. | ||
*/ | ||
export declare function mustSucceedFetchUnlessNoRetry(host: string, rpcMethod: string, body: any, useApiEndpoints: boolean): Promise<any>; | ||
/** | ||
* Creates a Proxy object that delegates over RPC and satisfies RemoteObject<T>. | ||
@@ -21,0 +36,0 @@ * The server should have ran new JsonRpcServer(). |
import { createDebugLogger } from '../../log/index.js'; | ||
import { retry } from '../../retry/index.js'; | ||
import { NoRetryError, makeBackoff, retry } from '../../retry/index.js'; | ||
import { ClassConverter } from '../class_converter.js'; | ||
@@ -13,5 +13,7 @@ import { JsonStringify, convertFromJsonObj, convertToJsonObj } from '../convert.js'; | ||
* @param body - The RPC payload. | ||
* @param noRetry - Whether to throw a `NoRetryError` in case the response is not ok and the body contains an error | ||
* message (see `retry` function for more details). | ||
* @returns The parsed JSON response, or throws an error. | ||
*/ | ||
export async function defaultFetch(host, rpcMethod, body, useApiEndpoints) { | ||
export async function defaultFetch(host, rpcMethod, body, useApiEndpoints, noRetry = false) { | ||
debug(`JsonRpcClient.fetch`, host, rpcMethod, '->', body); | ||
@@ -33,11 +35,21 @@ let resp; | ||
} | ||
if (!resp.ok) { | ||
throw new Error(resp.statusText); | ||
} | ||
let responseJson; | ||
try { | ||
return await resp.json(); | ||
responseJson = await resp.json(); | ||
} | ||
catch (err) { | ||
if (!resp.ok) { | ||
throw new Error(resp.statusText); | ||
} | ||
throw new Error(`Failed to parse body as JSON: ${resp.text()}`); | ||
} | ||
if (!resp.ok) { | ||
if (noRetry) { | ||
throw new NoRetryError(responseJson.error); | ||
} | ||
else { | ||
throw new Error(responseJson.error); | ||
} | ||
} | ||
return responseJson; | ||
} | ||
@@ -51,2 +63,21 @@ /** | ||
/** | ||
* Makes a fetch function that retries based on the given attempts. | ||
* @param retries - Sequence of intervals (in seconds) to retry. | ||
* @param noRetry - Whether to stop retries on server errors. | ||
* @param log - Optional logger for logging attempts. | ||
* @returns A fetch function. | ||
*/ | ||
export function makeFetch(retries, noRetry, log) { | ||
return async (host, rpcMethod, body, useApiEndpoints) => { | ||
return await retry(() => defaultFetch(host, rpcMethod, body, useApiEndpoints, noRetry), 'JsonRpcClient request', makeBackoff(retries), log); | ||
}; | ||
} | ||
/** | ||
* A fetch function with retries unless the error is a NoRetryError. | ||
*/ | ||
export async function mustSucceedFetchUnlessNoRetry(host, rpcMethod, body, useApiEndpoints) { | ||
const noRetry = true; | ||
return await retry(() => defaultFetch(host, rpcMethod, body, useApiEndpoints, noRetry), 'JsonRpcClient request'); | ||
} | ||
/** | ||
* Creates a Proxy object that delegates over RPC and satisfies RemoteObject<T>. | ||
@@ -89,2 +120,2 @@ * The server should have ran new JsonRpcServer(). | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9ycGNfY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb24tcnBjL2NsaWVudC9qc29uX3JwY19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQXNELE1BQU0sdUJBQXVCLENBQUM7QUFDM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlDLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFDNUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUFDLElBQVksRUFBRSxTQUFpQixFQUFFLElBQVMsRUFBRSxlQUF3QjtJQUNyRyxLQUFLLENBQUMscUJBQXFCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUQsSUFBSSxJQUFjLENBQUM7SUFDbkIsSUFBSSxlQUFlLEVBQUU7UUFDbkIsSUFBSSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQ3pDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDekIsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFO1NBQ2hELENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ3ZCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLGFBQWEs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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9ycGNfY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb24tcnBjL2NsaWVudC9qc29uX3JwY19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBc0QsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUMsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUM1RDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FDaEMsSUFBWSxFQUNaLFNBQWlCLEVBQ2pCLElBQVMsRUFDVCxlQUF3QixFQUN4QixPQUFPLEdBQUcsS0FBSztJQUVmLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxJQUFJLElBQWMsQ0FBQztJQUNuQixJQUFJLGVBQWUsRUFBRTtRQUNuQixJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDekMsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQztZQUN6QixPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUU7U0FDaEQsQ0FBQyxDQUFDO0tBQ0o7U0FBTTtRQUNMLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLEVB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 |
@@ -71,9 +71,17 @@ import cors from '@koa/cors'; | ||
const { params = [], jsonrpc, id } = ctx.request.body; | ||
const result = await this.proxy.call(method, params); | ||
ctx.body = { | ||
jsonrpc, | ||
id, | ||
result: convertBigintsInObj(result), | ||
}; | ||
ctx.status = 200; | ||
try { | ||
const result = await this.proxy.call(method, params); | ||
ctx.body = { | ||
jsonrpc, | ||
id, | ||
result: convertBigintsInObj(result), | ||
}; | ||
ctx.status = 200; | ||
} | ||
catch (err) { | ||
// Propagate the error message to the client. Plenty of the errors are expected to occur (e.g. adding | ||
// a duplicate recipient) so this is necessary. | ||
ctx.status = 400; | ||
ctx.body = { error: err.message }; | ||
} | ||
}); | ||
@@ -93,9 +101,19 @@ } | ||
} | ||
const result = await this.proxy.call(method, params); | ||
ctx.body = { | ||
jsonrpc, | ||
id, | ||
result: convertBigintsInObj(result), | ||
}; | ||
ctx.status = 200; | ||
else { | ||
try { | ||
const result = await this.proxy.call(method, params); | ||
ctx.body = { | ||
jsonrpc, | ||
id, | ||
result: convertBigintsInObj(result), | ||
}; | ||
ctx.status = 200; | ||
} | ||
catch (err) { | ||
// Propagate the error message to the client. Plenty of the errors are expected to occur (e.g. adding | ||
// a duplicate recipient) so this is necessary. | ||
ctx.status = 400; | ||
ctx.body = { error: err.message }; | ||
} | ||
} | ||
}); | ||
@@ -115,2 +133,2 @@ } | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9ycGNfc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb24tcnBjL3NlcnZlci9qc29uX3JwY19zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDdEIsT0FBTyxVQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxRQUFRLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLFlBQVksQ0FBQztBQUVoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTVDOzs7R0FHRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQ1UsT0FBZSxFQUN2QixjQUF5QyxFQUN6QyxjQUF1QyxFQUMvQixTQUFrQixFQUNsQixvQkFBOEIsRUFBRSxFQUNoQyxNQUFNLGlCQUFpQixDQUFDLGtDQUFrQyxDQUFDO1FBTDNELFlBQU8sR0FBUCxPQUFPLENBQVE7UUFHZixjQUFTLEdBQVQsU0FBUyxDQUFTO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZTtRQUNoQyxRQUFHLEdBQUgsR0FBRyxDQUF3RDtRQUVuRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxHQUFHLEVBQUU7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxN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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9ycGNfc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb24tcnBjL3NlcnZlci9qc29uX3JwY19zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDdEIsT0FBTyxVQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxRQUFRLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLFlBQVksQ0FBQztBQUVoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTVDOzs7R0FHRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQ1UsT0FBZSxFQUN2QixjQUF5QyxFQUN6QyxjQUF1QyxFQUMvQixTQUFrQixFQUNsQixvQkFBOEIsRUFBRSxFQUNoQyxNQUFNLGlCQUFpQixDQUFDLGtDQUFrQyxDQUFDO1FBTDNELFlBQU8sR0FBUCxPQUFPLENBQVE7UUFHZixjQUFTLEdBQVQsU0FBUyxDQUFTO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZTtRQUNoQyxRQUFHLEdBQUgsR0FBRyxDQUF3RDtRQUVuRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxHQUFHLEVBQUU7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxN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 |
@@ -0,1 +1,4 @@ | ||
/** An error that indicates that the operation should not be retried. */ | ||
export declare class NoRetryError extends Error { | ||
} | ||
/** | ||
@@ -11,2 +14,8 @@ * Generates a backoff sequence for retrying operations with an increasing delay. | ||
/** | ||
* Generates a backoff sequence based on the array of retry intervals to use with the `retry` function. | ||
* @param retries - Intervals to retry (in seconds). | ||
* @returns A generator sequence. | ||
*/ | ||
export declare function makeBackoff(retries: number[]): Generator<number, void, unknown>; | ||
/** | ||
* Retry a given asynchronous function with a specific backoff strategy, until it succeeds or backoff generator ends. | ||
@@ -20,2 +29,3 @@ * It logs the error and retry interval in case an error is caught. The function can be named for better log output. | ||
* @returns A Promise that resolves with the successful result of the provided function, or rejects if backoff generator ends. | ||
* @throws If `NoRetryError` is thrown by the `fn`, it is rethrown. | ||
*/ | ||
@@ -22,0 +32,0 @@ export declare function retry<Result>(fn: () => Promise<Result>, name?: string, backoff?: Generator<number, void, unknown>, log?: import("../log/logger.js").DebugLogger): Promise<Result>; |
import { createDebugLogger } from '../log/index.js'; | ||
import { sleep } from '../sleep/index.js'; | ||
import { Timer } from '../timer/index.js'; | ||
/** An error that indicates that the operation should not be retried. */ | ||
export class NoRetryError extends Error { | ||
} | ||
/** | ||
@@ -20,2 +23,12 @@ * Generates a backoff sequence for retrying operations with an increasing delay. | ||
/** | ||
* Generates a backoff sequence based on the array of retry intervals to use with the `retry` function. | ||
* @param retries - Intervals to retry (in seconds). | ||
* @returns A generator sequence. | ||
*/ | ||
export function* makeBackoff(retries) { | ||
for (const retry of retries) { | ||
yield retry; | ||
} | ||
} | ||
/** | ||
* Retry a given asynchronous function with a specific backoff strategy, until it succeeds or backoff generator ends. | ||
@@ -29,2 +42,3 @@ * It logs the error and retry interval in case an error is caught. The function can be named for better log output. | ||
* @returns A Promise that resolves with the successful result of the provided function, or rejects if backoff generator ends. | ||
* @throws If `NoRetryError` is thrown by the `fn`, it is rethrown. | ||
*/ | ||
@@ -37,2 +51,6 @@ export async function retry(fn, name = 'Operation', backoff = backoffGenerator(), log = createDebugLogger('aztec:foundation:retry')) { | ||
catch (err) { | ||
if (err instanceof NoRetryError) { | ||
// A special error that indicates that the operation should not be retried. Rethrow it. | ||
throw err; | ||
} | ||
const s = backoff.next().value; | ||
@@ -73,2 +91,2 @@ if (s === undefined) { | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmV0cnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxQzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxnQkFBZ0I7SUFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNWLE9BQU8sSUFBSSxFQUFFO1FBQ1gsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdEM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxLQUFLLENBQ3pCLEVBQXlCLEVBQ3pCLElBQUksR0FBRyxXQUFXLEVBQ2xCLE9BQU8sR0FBRyxnQkFBZ0IsRUFBRSxFQUM1QixHQUFHLEdBQUcsaUJBQWlCLENBQUMsd0JBQXdCLENBQUM7SUFFakQsT0FBTyxJQUFJLEVBQUU7UUFDWCxJQUFJO1lBQ0YsT0FBTyxNQUFNLEVBQUUsRUFBRSxDQUFDO1NBQ25CO1FBQUMsT0FBTyxHQUFRLEVBQUU7WUFDakIsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUU7Z0JBQ25CLE1BQU0sR0FBRyxDQUFDO2FBQ1g7WUFDRCxHQUFHLENBQUMsR0FBRyxJQUFJLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNULE1BQU0sS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN0QixTQUFTO1NBQ1Y7S0FDRjtBQUNILENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQUksRUFBZ0MsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUM7SUFDeEcsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUMxQixPQUFPLElBQUksRUFBRTtRQUNYLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDMUIsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLE1BQU0sQ0FBQztTQUNmO1FBRUQsTUFBTSxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBRTdCLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUU7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDaEU7S0FDRjtBQUNILENBQUMifQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmV0cnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyx3RUFBd0U7QUFDeEUsTUFBTSxPQUFPLFlBQWEsU0FBUSxLQUFLO0NBQUc7QUFFMUM7Ozs7Ozs7R0FPRztBQUNILE1BQU0sU0FBUyxDQUFDLENBQUMsZ0JBQWdCO0lBQy9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixPQUFPLElBQUksRUFBRTtRQUNYLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3RDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFpQjtJQUM1QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRTtRQUMzQixNQUFNLEtBQUssQ0FBQztLQUNiO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLEtBQUssQ0FDekIsRUFBeUIsRUFDekIsSUFBSSxHQUFHLFdBQVcsRUFDbEIsT0FBTyxHQUFHLGdCQUFnQixFQUFFLEVBQzVCLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQztJQUVqRCxPQUFPLElBQUksRUFBRTtRQUNYLElBQUk7WUFDRixPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUM7U0FDbkI7UUFBQyxPQUFPLEdBQVEsRUFBRTtZQUNqQixJQUFJLEdBQUcsWUFBWSxZQUFZLEVBQUU7Z0JBQy9CLHVGQUF1RjtnQkFDdkYsTUFBTSxHQUFHLENBQUM7YUFDWDtZQUNELE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDL0IsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO2dCQUNuQixNQUFNLEdBQUcsQ0FBQzthQUNYO1lBQ0QsR0FBRyxDQUFDLEdBQUcsSUFBSSwwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDVCxNQUFNLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDdEIsU0FBUztTQUNWO0tBQ0Y7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsVUFBVSxDQUFJLEVBQWdDLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDO0lBQ3hHLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7SUFDMUIsT0FBTyxJQUFJLEVBQUU7UUFDWCxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQzFCLElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUVELE1BQU0sS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUU3QixJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2hFO0tBQ0Y7QUFDSCxDQUFDIn0= |
{ | ||
"name": "@aztec/foundation", | ||
"version": "0.1.0-alpha40", | ||
"version": "0.1.0-alpha41", | ||
"exports": { | ||
@@ -5,0 +5,0 @@ "./eslint": "./.eslintrc.cjs", |
@@ -1,1 +0,7 @@ | ||
export { createJsonRpcClient, mustSucceedFetch, defaultFetch } from './json_rpc_client.js'; | ||
export { | ||
createJsonRpcClient, | ||
mustSucceedFetch, | ||
mustSucceedFetchUnlessNoRetry, | ||
defaultFetch, | ||
makeFetch, | ||
} from './json_rpc_client.js'; |
@@ -7,4 +7,4 @@ // comlink: | ||
import { createDebugLogger } from '../../log/index.js'; | ||
import { retry } from '../../retry/index.js'; | ||
import { DebugLogger, createDebugLogger } from '../../log/index.js'; | ||
import { NoRetryError, makeBackoff, retry } from '../../retry/index.js'; | ||
import { ClassConverter, JsonClassConverterInput, StringClassConverterInput } from '../class_converter.js'; | ||
@@ -22,5 +22,13 @@ import { JsonStringify, convertFromJsonObj, convertToJsonObj } from '../convert.js'; | ||
* @param body - The RPC payload. | ||
* @param noRetry - Whether to throw a `NoRetryError` in case the response is not ok and the body contains an error | ||
* message (see `retry` function for more details). | ||
* @returns The parsed JSON response, or throws an error. | ||
*/ | ||
export async function defaultFetch(host: string, rpcMethod: string, body: any, useApiEndpoints: boolean) { | ||
export async function defaultFetch( | ||
host: string, | ||
rpcMethod: string, | ||
body: any, | ||
useApiEndpoints: boolean, | ||
noRetry = false, | ||
) { | ||
debug(`JsonRpcClient.fetch`, host, rpcMethod, '->', body); | ||
@@ -42,11 +50,20 @@ let resp: Response; | ||
if (!resp.ok) { | ||
throw new Error(resp.statusText); | ||
} | ||
let responseJson; | ||
try { | ||
return await resp.json(); | ||
responseJson = await resp.json(); | ||
} catch (err) { | ||
if (!resp.ok) { | ||
throw new Error(resp.statusText); | ||
} | ||
throw new Error(`Failed to parse body as JSON: ${resp.text()}`); | ||
} | ||
if (!resp.ok) { | ||
if (noRetry) { | ||
throw new NoRetryError(responseJson.error); | ||
} else { | ||
throw new Error(responseJson.error); | ||
} | ||
} | ||
return responseJson; | ||
} | ||
@@ -62,2 +79,33 @@ | ||
/** | ||
* Makes a fetch function that retries based on the given attempts. | ||
* @param retries - Sequence of intervals (in seconds) to retry. | ||
* @param noRetry - Whether to stop retries on server errors. | ||
* @param log - Optional logger for logging attempts. | ||
* @returns A fetch function. | ||
*/ | ||
export function makeFetch(retries: number[], noRetry: boolean, log?: DebugLogger) { | ||
return async (host: string, rpcMethod: string, body: any, useApiEndpoints: boolean) => { | ||
return await retry( | ||
() => defaultFetch(host, rpcMethod, body, useApiEndpoints, noRetry), | ||
'JsonRpcClient request', | ||
makeBackoff(retries), | ||
log, | ||
); | ||
}; | ||
} | ||
/** | ||
* A fetch function with retries unless the error is a NoRetryError. | ||
*/ | ||
export async function mustSucceedFetchUnlessNoRetry( | ||
host: string, | ||
rpcMethod: string, | ||
body: any, | ||
useApiEndpoints: boolean, | ||
) { | ||
const noRetry = true; | ||
return await retry(() => defaultFetch(host, rpcMethod, body, useApiEndpoints, noRetry), 'JsonRpcClient request'); | ||
} | ||
/** | ||
* Creates a Proxy object that delegates over RPC and satisfies RemoteObject<T>. | ||
@@ -64,0 +112,0 @@ * The server should have ran new JsonRpcServer(). |
@@ -83,9 +83,16 @@ import cors from '@koa/cors'; | ||
const { params = [], jsonrpc, id } = ctx.request.body as any; | ||
const result = await this.proxy.call(method, params); | ||
ctx.body = { | ||
jsonrpc, | ||
id, | ||
result: convertBigintsInObj(result), | ||
}; | ||
ctx.status = 200; | ||
try { | ||
const result = await this.proxy.call(method, params); | ||
ctx.body = { | ||
jsonrpc, | ||
id, | ||
result: convertBigintsInObj(result), | ||
}; | ||
ctx.status = 200; | ||
} catch (err: any) { | ||
// Propagate the error message to the client. Plenty of the errors are expected to occur (e.g. adding | ||
// a duplicate recipient) so this is necessary. | ||
ctx.status = 400; | ||
ctx.body = { error: err.message }; | ||
} | ||
}); | ||
@@ -105,11 +112,19 @@ } | ||
ctx.body = { error: `Invalid method name: ${method}` }; | ||
} else { | ||
try { | ||
const result = await this.proxy.call(method, params); | ||
ctx.body = { | ||
jsonrpc, | ||
id, | ||
result: convertBigintsInObj(result), | ||
}; | ||
ctx.status = 200; | ||
} catch (err: any) { | ||
// Propagate the error message to the client. Plenty of the errors are expected to occur (e.g. adding | ||
// a duplicate recipient) so this is necessary. | ||
ctx.status = 400; | ||
ctx.body = { error: err.message }; | ||
} | ||
} | ||
const result = await this.proxy.call(method, params); | ||
ctx.body = { | ||
jsonrpc, | ||
id, | ||
result: convertBigintsInObj(result), | ||
}; | ||
ctx.status = 200; | ||
}); | ||
@@ -116,0 +131,0 @@ } |
@@ -5,2 +5,5 @@ import { createDebugLogger } from '../log/index.js'; | ||
/** An error that indicates that the operation should not be retried. */ | ||
export class NoRetryError extends Error {} | ||
/** | ||
@@ -23,2 +26,13 @@ * Generates a backoff sequence for retrying operations with an increasing delay. | ||
/** | ||
* Generates a backoff sequence based on the array of retry intervals to use with the `retry` function. | ||
* @param retries - Intervals to retry (in seconds). | ||
* @returns A generator sequence. | ||
*/ | ||
export function* makeBackoff(retries: number[]) { | ||
for (const retry of retries) { | ||
yield retry; | ||
} | ||
} | ||
/** | ||
* Retry a given asynchronous function with a specific backoff strategy, until it succeeds or backoff generator ends. | ||
@@ -32,2 +46,3 @@ * It logs the error and retry interval in case an error is caught. The function can be named for better log output. | ||
* @returns A Promise that resolves with the successful result of the provided function, or rejects if backoff generator ends. | ||
* @throws If `NoRetryError` is thrown by the `fn`, it is rethrown. | ||
*/ | ||
@@ -44,2 +59,6 @@ export async function retry<Result>( | ||
} catch (err: any) { | ||
if (err instanceof NoRetryError) { | ||
// A special error that indicates that the operation should not be retried. Rethrow it. | ||
throw err; | ||
} | ||
const s = backoff.next().value; | ||
@@ -46,0 +65,0 @@ if (s === undefined) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
939887
15273