Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | 1x 1x 1x 1x 2x 20x 20x 20x 20x 20x 20x 20x 20x 20x 20x 20x 5x 5x 5x 5x 4x 4x 4x 4x 5x 5x 5x 5x 5x 5x 20x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 15x 14x 14x 14x 20x 2x | import {handler, type IMeta, type ITypedError} from '@feasibleone/blong/types';
import {type Response} from 'got';
export default handler(({errors}) => ({
async receive(
response: Response<{
jsonrpc?: string;
error?: unknown;
validation?: unknown;
debug?: unknown;
checkpoints?: unknown[];
}>,
$meta?: IMeta,
) {
const {body} = super.receive ? await super.receive(response) : response;
if (body?.error !== undefined) {
const error: ITypedError = body.jsonrpc
? Object.assign(new Error(), body.error)
: typeof body.error === 'string'
? new Error(body.error)
: Object.assign(new Error(), body.error);
if (error.type)
Object.defineProperty(error, 'name', {
value: error.type,
configurable: true,
enumerable: false,
});
error.req = response.request && {
httpVersion: response.httpVersion,
url: response.request.requestUrl as URL,
method: response.request.options.method,
// ...config.debug && this.sanitize(params, $meta)
};
error.res = {
httpVersion: response.httpVersion,
statusCode: response.statusCode,
};
throw error;
} else if (response.statusCode < 200 || response.statusCode >= 300) {
throw errors.jsonrpcHttp({
statusCode: response.statusCode,
// statusText: response.statusText,
statusMessage: response.statusMessage,
httpVersion: response.httpVersion,
validation: response.body?.validation,
debug: response.body?.debug,
body: response.body,
params: {
code: response.statusCode,
},
...(response.request && {
url: response.request.requestUrl,
method: response.request.options.method,
}),
});
} else if (typeof body === 'object' && 'result' in body && !('error' in body)) {
if ($meta && body.checkpoints?.length) {
($meta.checkpoints ??= []).push(...body.checkpoints);
}
return body.result;
} else {
throw errors.jsonrpcEmpty();
}
},
}));
|