@lodestar/api 1.20.0-dev.f6d3bce802 → 1.20.0-dev.fe23f68998

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 (228) hide show
  1. package/README.md +2 -2
  2. package/lib/beacon/client/beacon.d.ts +4 -3
  3. package/lib/beacon/client/beacon.js +3 -36
  4. package/lib/beacon/client/beacon.js.map +1 -1
  5. package/lib/beacon/client/config.d.ts +4 -3
  6. package/lib/beacon/client/config.js +3 -6
  7. package/lib/beacon/client/config.js.map +1 -1
  8. package/lib/beacon/client/debug.d.ts +4 -3
  9. package/lib/beacon/client/debug.js +4 -45
  10. package/lib/beacon/client/debug.js.map +1 -1
  11. package/lib/beacon/client/events.d.ts +5 -2
  12. package/lib/beacon/client/events.js +33 -35
  13. package/lib/beacon/client/events.js.map +1 -1
  14. package/lib/beacon/client/index.d.ts +6 -3
  15. package/lib/beacon/client/index.js +2 -2
  16. package/lib/beacon/client/index.js.map +1 -1
  17. package/lib/beacon/client/lightclient.d.ts +4 -3
  18. package/lib/beacon/client/lightclient.js +4 -7
  19. package/lib/beacon/client/lightclient.js.map +1 -1
  20. package/lib/beacon/client/lodestar.d.ts +4 -3
  21. package/lib/beacon/client/lodestar.js +4 -7
  22. package/lib/beacon/client/lodestar.js.map +1 -1
  23. package/lib/beacon/client/node.d.ts +4 -3
  24. package/lib/beacon/client/node.js +4 -7
  25. package/lib/beacon/client/node.js.map +1 -1
  26. package/lib/beacon/client/proof.d.ts +5 -4
  27. package/lib/beacon/client/proof.js +5 -61
  28. package/lib/beacon/client/proof.js.map +1 -1
  29. package/lib/beacon/client/validator.d.ts +4 -3
  30. package/lib/beacon/client/validator.js +4 -7
  31. package/lib/beacon/client/validator.js.map +1 -1
  32. package/lib/beacon/index.d.ts +5 -5
  33. package/lib/beacon/index.js.map +1 -1
  34. package/lib/beacon/routes/beacon/block.d.ts +286 -167
  35. package/lib/beacon/routes/beacon/block.js +317 -117
  36. package/lib/beacon/routes/beacon/block.js.map +1 -1
  37. package/lib/beacon/routes/beacon/index.d.ts +6 -588
  38. package/lib/beacon/routes/beacon/index.js +16 -26
  39. package/lib/beacon/routes/beacon/index.js.map +1 -1
  40. package/lib/beacon/routes/beacon/pool.d.ts +155 -117
  41. package/lib/beacon/routes/beacon/pool.js +146 -42
  42. package/lib/beacon/routes/beacon/pool.js.map +1 -1
  43. package/lib/beacon/routes/beacon/rewards.d.ts +113 -101
  44. package/lib/beacon/routes/beacon/rewards.js +98 -63
  45. package/lib/beacon/routes/beacon/rewards.js.map +1 -1
  46. package/lib/beacon/routes/beacon/state.d.ts +172 -226
  47. package/lib/beacon/routes/beacon/state.js +204 -126
  48. package/lib/beacon/routes/beacon/state.js.map +1 -1
  49. package/lib/beacon/routes/config.d.ts +21 -36
  50. package/lib/beacon/routes/config.js +45 -24
  51. package/lib/beacon/routes/config.js.map +1 -1
  52. package/lib/beacon/routes/debug.d.ts +22 -104
  53. package/lib/beacon/routes/debug.js +53 -45
  54. package/lib/beacon/routes/debug.js.map +1 -1
  55. package/lib/beacon/routes/events.d.ts +24 -20
  56. package/lib/beacon/routes/events.js +40 -18
  57. package/lib/beacon/routes/events.js.map +1 -1
  58. package/lib/beacon/routes/index.d.ts +19 -19
  59. package/lib/beacon/routes/index.js +1 -0
  60. package/lib/beacon/routes/index.js.map +1 -1
  61. package/lib/beacon/routes/lightclient.d.ts +34 -56
  62. package/lib/beacon/routes/lightclient.js +108 -48
  63. package/lib/beacon/routes/lightclient.js.map +1 -1
  64. package/lib/beacon/routes/lodestar.d.ts +74 -148
  65. package/lib/beacon/routes/lodestar.js +126 -77
  66. package/lib/beacon/routes/lodestar.js.map +1 -1
  67. package/lib/beacon/routes/node.d.ts +48 -82
  68. package/lib/beacon/routes/node.js +90 -57
  69. package/lib/beacon/routes/node.js.map +1 -1
  70. package/lib/beacon/routes/proof.d.ts +25 -31
  71. package/lib/beacon/routes/proof.js +44 -24
  72. package/lib/beacon/routes/proof.js.map +1 -1
  73. package/lib/beacon/routes/validator.d.ts +524 -325
  74. package/lib/beacon/routes/validator.js +468 -213
  75. package/lib/beacon/routes/validator.js.map +1 -1
  76. package/lib/beacon/server/beacon.d.ts +3 -4
  77. package/lib/beacon/server/beacon.js +4 -57
  78. package/lib/beacon/server/beacon.js.map +1 -1
  79. package/lib/beacon/server/config.d.ts +3 -4
  80. package/lib/beacon/server/config.js +4 -5
  81. package/lib/beacon/server/config.js.map +1 -1
  82. package/lib/beacon/server/debug.d.ts +3 -4
  83. package/lib/beacon/server/debug.js +4 -54
  84. package/lib/beacon/server/debug.js.map +1 -1
  85. package/lib/beacon/server/events.d.ts +4 -4
  86. package/lib/beacon/server/events.js +17 -23
  87. package/lib/beacon/server/events.js.map +1 -1
  88. package/lib/beacon/server/index.d.ts +7 -8
  89. package/lib/beacon/server/index.js +13 -14
  90. package/lib/beacon/server/index.js.map +1 -1
  91. package/lib/beacon/server/lightclient.d.ts +3 -4
  92. package/lib/beacon/server/lightclient.js +4 -5
  93. package/lib/beacon/server/lightclient.js.map +1 -1
  94. package/lib/beacon/server/lodestar.d.ts +3 -4
  95. package/lib/beacon/server/lodestar.js +4 -5
  96. package/lib/beacon/server/lodestar.js.map +1 -1
  97. package/lib/beacon/server/node.d.ts +3 -4
  98. package/lib/beacon/server/node.js +4 -18
  99. package/lib/beacon/server/node.js.map +1 -1
  100. package/lib/beacon/server/proof.d.ts +3 -4
  101. package/lib/beacon/server/proof.js +4 -36
  102. package/lib/beacon/server/proof.js.map +1 -1
  103. package/lib/beacon/server/validator.d.ts +3 -4
  104. package/lib/beacon/server/validator.js +4 -21
  105. package/lib/beacon/server/validator.js.map +1 -1
  106. package/lib/builder/client.d.ts +4 -6
  107. package/lib/builder/client.js +3 -9
  108. package/lib/builder/client.js.map +1 -1
  109. package/lib/builder/index.d.ts +8 -5
  110. package/lib/builder/index.js +4 -1
  111. package/lib/builder/index.js.map +1 -1
  112. package/lib/builder/routes.d.ts +25 -39
  113. package/lib/builder/routes.js +78 -34
  114. package/lib/builder/routes.js.map +1 -1
  115. package/lib/builder/server/index.d.ts +6 -6
  116. package/lib/builder/server/index.js +7 -8
  117. package/lib/builder/server/index.js.map +1 -1
  118. package/lib/index.d.ts +9 -6
  119. package/lib/index.js +5 -4
  120. package/lib/index.js.map +1 -1
  121. package/lib/keymanager/client.d.ts +4 -3
  122. package/lib/keymanager/client.js +4 -7
  123. package/lib/keymanager/client.js.map +1 -1
  124. package/lib/keymanager/index.d.ts +5 -4
  125. package/lib/keymanager/index.js +1 -1
  126. package/lib/keymanager/index.js.map +1 -1
  127. package/lib/keymanager/routes.d.ts +155 -177
  128. package/lib/keymanager/routes.js +236 -123
  129. package/lib/keymanager/routes.js.map +1 -1
  130. package/lib/keymanager/server/index.d.ts +6 -6
  131. package/lib/keymanager/server/index.js +7 -8
  132. package/lib/keymanager/server/index.js.map +1 -1
  133. package/lib/server/index.d.ts +2 -0
  134. package/lib/server/index.js +3 -0
  135. package/lib/server/index.js.map +1 -0
  136. package/lib/utils/client/error.d.ts +6 -0
  137. package/lib/utils/client/error.js +8 -0
  138. package/lib/utils/client/error.js.map +1 -0
  139. package/lib/utils/client/httpClient.d.ts +35 -75
  140. package/lib/utils/client/httpClient.js +201 -153
  141. package/lib/utils/client/httpClient.js.map +1 -1
  142. package/lib/utils/client/index.d.ts +6 -2
  143. package/lib/utils/client/index.js +6 -2
  144. package/lib/utils/client/index.js.map +1 -1
  145. package/lib/utils/client/method.d.ts +11 -0
  146. package/lib/utils/client/method.js +27 -0
  147. package/lib/utils/client/method.js.map +1 -0
  148. package/lib/utils/client/request.d.ts +33 -0
  149. package/lib/utils/client/request.js +66 -0
  150. package/lib/utils/client/request.js.map +1 -0
  151. package/lib/utils/client/response.d.ts +36 -0
  152. package/lib/utils/client/response.js +167 -0
  153. package/lib/utils/client/response.js.map +1 -0
  154. package/lib/utils/codecs.d.ts +28 -0
  155. package/lib/utils/codecs.js +105 -0
  156. package/lib/utils/codecs.js.map +1 -0
  157. package/lib/utils/fork.d.ts +7 -0
  158. package/lib/utils/fork.js +29 -0
  159. package/lib/utils/fork.js.map +1 -0
  160. package/lib/utils/headers.d.ts +37 -0
  161. package/lib/utils/headers.js +134 -0
  162. package/lib/utils/headers.js.map +1 -0
  163. package/lib/utils/httpStatusCode.js.map +1 -0
  164. package/lib/utils/index.d.ts +1 -1
  165. package/lib/utils/index.js +1 -1
  166. package/lib/utils/index.js.map +1 -1
  167. package/lib/utils/metadata.d.ts +88 -0
  168. package/lib/utils/metadata.js +126 -0
  169. package/lib/utils/metadata.js.map +1 -0
  170. package/lib/utils/schema.d.ts +31 -17
  171. package/lib/utils/schema.js +18 -6
  172. package/lib/utils/schema.js.map +1 -1
  173. package/lib/utils/serdes.d.ts +3 -0
  174. package/lib/utils/serdes.js +13 -0
  175. package/lib/utils/serdes.js.map +1 -1
  176. package/lib/utils/server/{errors.d.ts → error.d.ts} +2 -2
  177. package/lib/utils/server/{errors.js → error.js} +1 -1
  178. package/lib/utils/server/error.js.map +1 -0
  179. package/lib/utils/server/handler.d.ts +11 -0
  180. package/lib/utils/server/handler.js +115 -0
  181. package/lib/utils/server/handler.js.map +1 -0
  182. package/lib/utils/server/index.d.ts +5 -4
  183. package/lib/utils/server/index.js +5 -4
  184. package/lib/utils/server/index.js.map +1 -1
  185. package/lib/utils/server/method.d.ts +35 -0
  186. package/lib/utils/server/method.js +2 -0
  187. package/lib/utils/server/method.js.map +1 -0
  188. package/lib/utils/server/parser.d.ts +3 -0
  189. package/lib/utils/server/parser.js +20 -0
  190. package/lib/utils/server/parser.js.map +1 -0
  191. package/lib/utils/server/route.d.ts +20 -0
  192. package/lib/utils/server/route.js +19 -0
  193. package/lib/utils/server/route.js.map +1 -0
  194. package/lib/utils/types.d.ts +116 -104
  195. package/lib/utils/types.js +2 -155
  196. package/lib/utils/types.js.map +1 -1
  197. package/lib/utils/urlFormat.d.ts +2 -2
  198. package/lib/utils/urlFormat.js +3 -3
  199. package/lib/utils/urlFormat.js.map +1 -1
  200. package/lib/utils/wireFormat.d.ts +8 -0
  201. package/lib/utils/wireFormat.js +23 -0
  202. package/lib/utils/wireFormat.js.map +1 -0
  203. package/package.json +9 -6
  204. package/lib/interfaces.d.ts +0 -44
  205. package/lib/interfaces.js +0 -2
  206. package/lib/interfaces.js.map +0 -1
  207. package/lib/utils/acceptHeader.d.ts +0 -9
  208. package/lib/utils/acceptHeader.js +0 -62
  209. package/lib/utils/acceptHeader.js.map +0 -1
  210. package/lib/utils/client/client.d.ts +0 -29
  211. package/lib/utils/client/client.js +0 -88
  212. package/lib/utils/client/client.js.map +0 -1
  213. package/lib/utils/client/httpStatusCode.js.map +0 -1
  214. package/lib/utils/routes.d.ts +0 -6
  215. package/lib/utils/routes.js +0 -31
  216. package/lib/utils/routes.js.map +0 -1
  217. package/lib/utils/server/errors.js.map +0 -1
  218. package/lib/utils/server/genericJsonServer.d.ts +0 -13
  219. package/lib/utils/server/genericJsonServer.js +0 -32
  220. package/lib/utils/server/genericJsonServer.js.map +0 -1
  221. package/lib/utils/server/registerRoute.d.ts +0 -3
  222. package/lib/utils/server/registerRoute.js +0 -13
  223. package/lib/utils/server/registerRoute.js.map +0 -1
  224. package/lib/utils/server/types.d.ts +0 -22
  225. package/lib/utils/server/types.js +0 -2
  226. package/lib/utils/server/types.js.map +0 -1
  227. /package/lib/utils/{client/httpStatusCode.d.ts → httpStatusCode.d.ts} +0 -0
  228. /package/lib/utils/{client/httpStatusCode.js → httpStatusCode.js} +0 -0
@@ -1,63 +1,20 @@
1
1
  import { Logger } from "@lodestar/utils";
2
- import { ReqGeneric, RouteDef } from "../index.js";
3
- import { ApiClientResponse, ApiClientSuccessResponse } from "../../interfaces.js";
2
+ import { Endpoint } from "../types.js";
3
+ import { ApiRequestInit, ExtraRequestInit, RouteDefinitionExtra, UrlInit, UrlInitRequired } from "./request.js";
4
+ import { ApiResponse } from "./response.js";
5
+ import { Metrics } from "./metrics.js";
4
6
  import { fetch } from "./fetch.js";
5
- import type { Metrics } from "./metrics.js";
6
- import { HttpStatusCode } from "./httpStatusCode.js";
7
- export declare class HttpError extends Error {
8
- status: number;
9
- url: string;
10
- constructor(message: string, status: number, url: string);
11
- }
12
- export declare class ApiError extends Error {
13
- status: number;
14
- operationId: string;
15
- constructor(message: string, status: number, operationId: string);
16
- static assert(res: ApiClientResponse, message?: string): asserts res is ApiClientSuccessResponse<any, unknown>;
17
- toString(): string;
18
- }
19
- export interface URLOpts {
20
- baseUrl: string;
21
- timeoutMs?: number;
22
- bearerToken?: string;
23
- extraHeaders?: Record<string, string>;
24
- }
25
- export type FetchOpts = {
26
- url: RouteDef["url"];
27
- method: RouteDef["method"];
28
- query?: ReqGeneric["query"];
29
- body?: ReqGeneric["body"];
30
- headers?: ReqGeneric["headers"];
31
- /** Optional, for metrics */
32
- routeId?: string;
33
- timeoutMs?: number;
34
- retries?: number;
35
- };
7
+ export declare const defaultInit: Required<ExtraRequestInit>;
36
8
  export interface IHttpClient {
37
- baseUrl: string;
38
- json<T>(opts: FetchOpts): Promise<{
39
- status: HttpStatusCode;
40
- body: T;
41
- }>;
42
- request(opts: FetchOpts): Promise<{
43
- status: HttpStatusCode;
44
- body: void;
45
- }>;
46
- arrayBuffer(opts: FetchOpts): Promise<{
47
- status: HttpStatusCode;
48
- body: ArrayBuffer;
49
- }>;
9
+ readonly baseUrl: string;
10
+ request<E extends Endpoint>(definition: RouteDefinitionExtra<E>, args: E["args"], localInit?: ApiRequestInit): Promise<ApiResponse<E>>;
50
11
  }
51
12
  export type HttpClientOptions = ({
52
13
  baseUrl: string;
53
14
  } | {
54
- urls: (string | URLOpts)[];
15
+ urls: (string | UrlInit)[];
55
16
  }) & {
56
- timeoutMs?: number;
57
- bearerToken?: string;
58
- extraHeaders?: Record<string, string>;
59
- /** Return an AbortSignal to be attached to all requests */
60
- getAbortSignal?: () => AbortSignal | undefined;
17
+ globalInit?: ApiRequestInit;
61
18
  /** Override fetch function */
62
19
  fetch?: typeof fetch;
63
20
  };
@@ -65,36 +22,39 @@ export type HttpClientModules = {
65
22
  logger?: Logger;
66
23
  metrics?: Metrics;
67
24
  };
68
- export type { Metrics };
69
25
  export declare class HttpClient implements IHttpClient {
70
- private readonly globalTimeoutMs;
71
- private readonly globalBearerToken;
72
- private readonly globalExtraHeaders;
73
- private readonly getAbortSignal?;
26
+ readonly urlsInits: UrlInitRequired[];
27
+ private readonly signal;
74
28
  private readonly fetch;
75
29
  private readonly metrics;
76
30
  private readonly logger;
77
- private readonly urlsOpts;
78
31
  private readonly urlsScore;
79
- get baseUrl(): string;
80
32
  /**
81
- * timeoutMs = config.params.SECONDS_PER_SLOT * 1000
33
+ * Cache to keep track of routes per server that do not support SSZ. This cache will only be
34
+ * populated if we receive a 415 error response from the server after sending a SSZ request body.
35
+ * The request will be retried using a JSON body and all subsequent requests will only use JSON.
82
36
  */
37
+ private readonly sszNotSupportedByRouteIdByUrlIndex;
38
+ get baseUrl(): string;
83
39
  constructor(opts: HttpClientOptions, { logger, metrics }?: HttpClientModules);
84
- json<T>(opts: FetchOpts): Promise<{
85
- status: HttpStatusCode;
86
- body: T;
87
- }>;
88
- request(opts: FetchOpts): Promise<{
89
- status: HttpStatusCode;
90
- body: void;
91
- }>;
92
- arrayBuffer(opts: FetchOpts): Promise<{
93
- status: HttpStatusCode;
94
- body: ArrayBuffer;
95
- }>;
96
- private requestWithBodyWithRetries;
97
- private requestWithBodyWithFallbacks;
98
- private requestWithBody;
40
+ request<E extends Endpoint>(definition: RouteDefinitionExtra<E>, args: E["args"], localInit?: ApiRequestInit): Promise<ApiResponse<E>>;
41
+ /**
42
+ * Send request to primary server first, retry failed requests on fallbacks
43
+ */
44
+ private requestWithFallbacks;
45
+ /**
46
+ * Send request to single URL, retry failed requests on same server
47
+ */
48
+ private requestWithRetries;
49
+ /**
50
+ * Send request to single URL, SSZ requests will be retried using JSON
51
+ * if a 415 error response is returned by the server. All subsequent requests
52
+ * to this server for the route will always be sent as JSON afterwards.
53
+ */
54
+ private requestFallbackToJson;
55
+ /**
56
+ * Send request to single URL
57
+ */
58
+ private _request;
99
59
  }
100
60
  //# sourceMappingURL=httpClient.d.ts.map
@@ -1,153 +1,156 @@
1
- import { ErrorAborted, TimeoutError, isValidHttpUrl, toBase64, retry } from "@lodestar/utils";
1
+ import { ErrorAborted, MapDef, TimeoutError, isValidHttpUrl, retry } from "@lodestar/utils";
2
+ import { mergeHeaders } from "../headers.js";
3
+ import { WireFormat } from "../wireFormat.js";
4
+ import { HttpStatusCode } from "../httpStatusCode.js";
5
+ import { createApiRequest, } from "./request.js";
6
+ import { ApiResponse } from "./response.js";
2
7
  import { fetch, isFetchError } from "./fetch.js";
3
- import { stringifyQuery, urlJoin } from "./format.js";
4
- /** A higher default timeout, validator will sets its own shorter timeoutMs */
8
+ /** A higher default timeout, validator will set its own shorter timeoutMs */
5
9
  const DEFAULT_TIMEOUT_MS = 60_000;
6
- const DEFAULT_ROUTE_ID = "unknown";
10
+ const DEFAULT_RETRIES = 0;
11
+ const DEFAULT_RETRY_DELAY = 200;
12
+ /**
13
+ * Default to JSON to ensure compatibility with other clients, can be overridden
14
+ * per route in case spec states that SSZ requests must be supported by server.
15
+ * Alternatively, can be configured via CLI flag to use SSZ for all routes.
16
+ */
17
+ const DEFAULT_REQUEST_WIRE_FORMAT = WireFormat.json;
18
+ /**
19
+ * For responses, it is possible to default to SSZ without breaking compatibility with
20
+ * other clients as we will just be stating a preference to receive a SSZ response from
21
+ * the server but will still accept a JSON response in case the server does not support it.
22
+ */
23
+ const DEFAULT_RESPONSE_WIRE_FORMAT = WireFormat.ssz;
7
24
  const URL_SCORE_DELTA_SUCCESS = 1;
8
25
  /** Require 2 success to recover from 1 failed request */
9
26
  const URL_SCORE_DELTA_ERROR = 2 * URL_SCORE_DELTA_SUCCESS;
10
27
  /** In case of continued errors, require 10 success to mark the URL as healthy */
11
28
  const URL_SCORE_MAX = 10 * URL_SCORE_DELTA_SUCCESS;
12
29
  const URL_SCORE_MIN = 0;
13
- export class HttpError extends Error {
14
- constructor(message, status, url) {
15
- super(message);
16
- this.status = status;
17
- this.url = url;
18
- }
19
- }
20
- export class ApiError extends Error {
21
- constructor(message, status, operationId) {
22
- super(message);
23
- this.status = status;
24
- this.operationId = operationId;
25
- }
26
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
- static assert(res, message) {
28
- if (!res.ok) {
29
- throw new ApiError([message, res.error.message].filter(Boolean).join(" - "), res.error.code, res.error.operationId);
30
- }
31
- }
32
- toString() {
33
- return `${this.message} (status=${this.status}, operationId=${this.operationId})`;
34
- }
35
- }
30
+ export const defaultInit = {
31
+ timeoutMs: DEFAULT_TIMEOUT_MS,
32
+ retries: DEFAULT_RETRIES,
33
+ retryDelay: DEFAULT_RETRY_DELAY,
34
+ requestWireFormat: DEFAULT_REQUEST_WIRE_FORMAT,
35
+ responseWireFormat: DEFAULT_RESPONSE_WIRE_FORMAT,
36
+ };
36
37
  export class HttpClient {
37
38
  get baseUrl() {
38
- return this.urlsOpts[0].baseUrl;
39
+ return this.urlsInits[0].baseUrl;
39
40
  }
40
- /**
41
- * timeoutMs = config.params.SECONDS_PER_SLOT * 1000
42
- */
43
41
  constructor(opts, { logger, metrics } = {}) {
44
- this.urlsOpts = [];
42
+ this.urlsInits = [];
43
+ /**
44
+ * Cache to keep track of routes per server that do not support SSZ. This cache will only be
45
+ * populated if we receive a 415 error response from the server after sending a SSZ request body.
46
+ * The request will be retried using a JSON body and all subsequent requests will only use JSON.
47
+ */
48
+ this.sszNotSupportedByRouteIdByUrlIndex = new MapDef(() => new Map());
45
49
  // Cast to all types optional since they are defined with syntax `HttpClientOptions = A | B`
46
50
  const { baseUrl, urls = [] } = opts;
47
- // Append to Partial object to not fill urlOpts with properties with value undefined
48
- const allUrlOpts = {};
49
- if (opts.bearerToken)
50
- allUrlOpts.bearerToken = opts.bearerToken;
51
- if (opts.timeoutMs !== undefined)
52
- allUrlOpts.timeoutMs = opts.timeoutMs;
53
- if (opts.extraHeaders)
54
- allUrlOpts.extraHeaders = opts.extraHeaders;
51
+ // Do not merge global signal into url inits
52
+ const { signal, ...globalInit } = opts.globalInit ?? {};
55
53
  // opts.baseUrl is equivalent to `urls: [{baseUrl}]`
56
54
  // unshift opts.baseUrl to urls, without mutating opts.urls
57
- for (const [i, urlOrOpts] of [...(baseUrl ? [baseUrl] : []), ...urls].entries()) {
58
- const urlOpts = typeof urlOrOpts === "string" ? { baseUrl: urlOrOpts, ...allUrlOpts } : urlOrOpts;
59
- if (!urlOpts.baseUrl) {
60
- throw Error(`HttpClient.urls[${i}] is empty or undefined: ${urlOpts.baseUrl}`);
55
+ for (const [i, urlOrInit] of [...(baseUrl ? [baseUrl] : []), ...urls].entries()) {
56
+ const init = typeof urlOrInit === "string" ? { baseUrl: urlOrInit } : urlOrInit;
57
+ const urlInit = {
58
+ ...globalInit,
59
+ ...init,
60
+ headers: mergeHeaders(globalInit.headers, init.headers),
61
+ };
62
+ if (!urlInit.baseUrl) {
63
+ throw Error(`HttpClient.urls[${i}] is empty or undefined: ${urlInit.baseUrl}`);
61
64
  }
62
- if (!isValidHttpUrl(urlOpts.baseUrl)) {
63
- throw Error(`HttpClient.urls[${i}] must be a valid URL: ${urlOpts.baseUrl}`);
65
+ if (!isValidHttpUrl(urlInit.baseUrl)) {
66
+ throw Error(`HttpClient.urls[${i}] must be a valid URL: ${urlInit.baseUrl}`);
64
67
  }
65
68
  // De-duplicate by baseUrl, having two baseUrls with different token or timeouts does not make sense
66
- if (!this.urlsOpts.some((opt) => opt.baseUrl === urlOpts.baseUrl)) {
67
- this.urlsOpts.push(urlOpts);
69
+ if (!this.urlsInits.some((opt) => opt.baseUrl === urlInit.baseUrl)) {
70
+ this.urlsInits.push({ ...urlInit, urlIndex: i });
68
71
  }
69
72
  }
70
- if (this.urlsOpts.length === 0) {
73
+ if (this.urlsInits.length === 0) {
71
74
  throw Error("Must set at least 1 URL in HttpClient opts");
72
75
  }
73
76
  // Initialize scores to max value to only query first URL on start
74
- this.urlsScore = this.urlsOpts.map(() => URL_SCORE_MAX);
75
- this.globalTimeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
76
- this.globalBearerToken = opts.bearerToken ?? null;
77
- this.globalExtraHeaders = opts.extraHeaders ?? null;
78
- this.getAbortSignal = opts.getAbortSignal;
77
+ this.urlsScore = this.urlsInits.map(() => URL_SCORE_MAX);
78
+ this.signal = signal ?? null;
79
79
  this.fetch = opts.fetch ?? fetch;
80
80
  this.metrics = metrics ?? null;
81
81
  this.logger = logger ?? null;
82
82
  if (metrics) {
83
83
  metrics.urlsScore.addCollect(() => {
84
84
  for (let i = 0; i < this.urlsScore.length; i++) {
85
- metrics.urlsScore.set({ urlIndex: i, baseUrl: this.urlsOpts[i].baseUrl }, this.urlsScore[i]);
85
+ metrics.urlsScore.set({ urlIndex: i, baseUrl: this.urlsInits[i].baseUrl }, this.urlsScore[i]);
86
86
  }
87
87
  });
88
88
  }
89
89
  }
90
- async json(opts) {
91
- return this.requestWithBodyWithRetries(opts, (res) => res.json());
92
- }
93
- async request(opts) {
94
- return this.requestWithBodyWithRetries(opts, async () => undefined);
95
- }
96
- async arrayBuffer(opts) {
97
- return this.requestWithBodyWithRetries(opts, (res) => res.arrayBuffer());
98
- }
99
- async requestWithBodyWithRetries(opts, getBody) {
100
- if (opts.retries !== undefined) {
101
- const routeId = opts.routeId ?? DEFAULT_ROUTE_ID;
102
- return retry(async (_attempt) => {
103
- return this.requestWithBodyWithFallbacks(opts, getBody);
104
- }, {
105
- retries: opts.retries,
106
- retryDelay: 200,
107
- signal: this.getAbortSignal?.(),
108
- onRetry: (e, attempt) => {
109
- this.logger?.debug("Retrying request", { routeId, attempt, lastError: e.message });
110
- },
111
- });
90
+ async request(definition, args, localInit = {}) {
91
+ if (this.urlsInits.length === 1) {
92
+ const init = mergeInits(definition, this.urlsInits[0], localInit);
93
+ if (init.retries > 0) {
94
+ return this.requestWithRetries(definition, args, init);
95
+ }
96
+ else {
97
+ return this.requestFallbackToJson(definition, args, init);
98
+ }
112
99
  }
113
100
  else {
114
- return this.requestWithBodyWithFallbacks(opts, getBody);
101
+ return this.requestWithFallbacks(definition, args, localInit);
115
102
  }
116
103
  }
117
- async requestWithBodyWithFallbacks(opts, getBody) {
118
- // Early return when no fallback URLs are setup
119
- if (this.urlsOpts.length === 1) {
120
- return this.requestWithBody(this.urlsOpts[0], opts, getBody);
121
- }
104
+ /**
105
+ * Send request to primary server first, retry failed requests on fallbacks
106
+ */
107
+ async requestWithFallbacks(definition, args, localInit) {
122
108
  let i = 0;
123
109
  // Goals:
124
110
  // - if first server is stable and responding do not query fallbacks
125
111
  // - if first server errors, retry that same request on fallbacks
126
112
  // - until first server is shown to be reliable again, contact all servers
127
113
  // First loop: retry in sequence, query next URL only after previous errors
128
- for (; i < this.urlsOpts.length; i++) {
114
+ for (; i < this.urlsInits.length; i++) {
129
115
  try {
130
- return await new Promise((resolve, reject) => {
116
+ const res = await new Promise((resolve, reject) => {
131
117
  let requestCount = 0;
132
118
  let errorCount = 0;
133
119
  // Second loop: query all URLs up to the next healthy at once, racing them.
134
120
  // Score each URL available:
135
121
  // - If url[0] is good, only send to 0
136
122
  // - If url[0] has recently errored, send to both 0, 1, etc until url[0] does not error for some time
137
- for (; i < this.urlsOpts.length; i++) {
138
- const urlOpts = this.urlsOpts[i];
139
- const { baseUrl } = urlOpts;
140
- const routeId = opts.routeId ?? DEFAULT_ROUTE_ID;
123
+ for (; i < this.urlsInits.length; i++) {
124
+ const baseUrl = this.urlsInits[i].baseUrl;
125
+ const routeId = definition.operationId;
141
126
  if (i > 0) {
142
127
  this.metrics?.requestToFallbacks.inc({ routeId, baseUrl });
143
128
  this.logger?.debug("Requesting fallback URL", { routeId, baseUrl, score: this.urlsScore[i] });
144
129
  }
145
130
  // eslint-disable-next-line @typescript-eslint/naming-convention
146
- const i_ = i; // Keep local copy of i variable to index urlScore after requestWithBody() resolves
147
- this.requestWithBody(urlOpts, opts, getBody).then((res) => {
148
- this.urlsScore[i_] = Math.min(URL_SCORE_MAX, this.urlsScore[i_] + URL_SCORE_DELTA_SUCCESS);
149
- // Resolve immediately on success
150
- resolve(res);
131
+ const i_ = i; // Keep local copy of i variable to index urlScore after requestMethod() resolves
132
+ const urlInit = this.urlsInits[i];
133
+ if (urlInit === undefined) {
134
+ throw Error(`Url at index ${i} does not exist`);
135
+ }
136
+ const init = mergeInits(definition, urlInit, localInit);
137
+ const requestMethod = (init.retries > 0 ? this.requestWithRetries : this.requestFallbackToJson).bind(this);
138
+ requestMethod(definition, args, init).then(async (res) => {
139
+ if (res.ok) {
140
+ this.urlsScore[i_] = Math.min(URL_SCORE_MAX, this.urlsScore[i_] + URL_SCORE_DELTA_SUCCESS);
141
+ // Resolve immediately on success
142
+ resolve(res);
143
+ }
144
+ else {
145
+ this.urlsScore[i_] = Math.max(URL_SCORE_MIN, this.urlsScore[i_] - URL_SCORE_DELTA_ERROR);
146
+ // Resolve failed response only when all queried URLs have errored
147
+ if (++errorCount >= requestCount) {
148
+ resolve(res);
149
+ }
150
+ else {
151
+ this.logger?.debug("Request error, retrying", { routeId, baseUrl }, res.error());
152
+ }
153
+ }
151
154
  }, (err) => {
152
155
  this.urlsScore[i_] = Math.max(URL_SCORE_MIN, this.urlsScore[i_] - URL_SCORE_DELTA_ERROR);
153
156
  // Reject only when all queried URLs have errored
@@ -166,9 +169,20 @@ export class HttpClient {
166
169
  }
167
170
  }
168
171
  });
172
+ if (res.ok) {
173
+ return res;
174
+ }
175
+ else {
176
+ if (i >= this.urlsInits.length - 1) {
177
+ return res;
178
+ }
179
+ else {
180
+ this.logger?.debug("Request error, retrying", {}, res.error());
181
+ }
182
+ }
169
183
  }
170
184
  catch (e) {
171
- if (i >= this.urlsOpts.length - 1) {
185
+ if (i >= this.urlsInits.length - 1) {
172
186
  throw e;
173
187
  }
174
188
  else {
@@ -178,62 +192,97 @@ export class HttpClient {
178
192
  }
179
193
  throw Error("loop ended without return or rejection");
180
194
  }
181
- async requestWithBody(urlOpts, opts, getBody) {
182
- const baseUrl = urlOpts.baseUrl;
183
- const bearerToken = urlOpts.bearerToken ?? this.globalBearerToken;
184
- const extraHeaders = urlOpts.extraHeaders ?? this.globalExtraHeaders;
185
- const timeoutMs = opts.timeoutMs ?? urlOpts.timeoutMs ?? this.globalTimeoutMs;
195
+ /**
196
+ * Send request to single URL, retry failed requests on same server
197
+ */
198
+ async requestWithRetries(definition, args, init) {
199
+ const { retries, retryDelay, signal } = init;
200
+ const routeId = definition.operationId;
201
+ return retry(async (attempt) => {
202
+ const res = await this.requestFallbackToJson(definition, args, init);
203
+ if (!res.ok && attempt <= retries) {
204
+ throw res.error();
205
+ }
206
+ return res;
207
+ }, {
208
+ retries,
209
+ retryDelay,
210
+ // Local signal takes precedence over global signal
211
+ signal: signal ?? this.signal ?? undefined,
212
+ onRetry: (e, attempt) => {
213
+ this.logger?.debug("Retrying request", { routeId, attempt, lastError: e.message });
214
+ },
215
+ });
216
+ }
217
+ /**
218
+ * Send request to single URL, SSZ requests will be retried using JSON
219
+ * if a 415 error response is returned by the server. All subsequent requests
220
+ * to this server for the route will always be sent as JSON afterwards.
221
+ */
222
+ async requestFallbackToJson(definition, args, init) {
223
+ const { urlIndex } = init;
224
+ const routeId = definition.operationId;
225
+ const sszNotSupportedByRouteId = this.sszNotSupportedByRouteIdByUrlIndex.getOrDefault(urlIndex);
226
+ if (sszNotSupportedByRouteId.has(routeId)) {
227
+ init.requestWireFormat = WireFormat.json;
228
+ }
229
+ const res = await this._request(definition, args, init);
230
+ if (res.status === HttpStatusCode.UNSUPPORTED_MEDIA_TYPE && init.requestWireFormat === WireFormat.ssz) {
231
+ this.logger?.debug("SSZ request failed with status 415, retrying using JSON", { routeId, urlIndex });
232
+ sszNotSupportedByRouteId.set(routeId, true);
233
+ init.requestWireFormat = WireFormat.json;
234
+ return this._request(definition, args, init);
235
+ }
236
+ return res;
237
+ }
238
+ /**
239
+ * Send request to single URL
240
+ */
241
+ async _request(definition, args, init) {
242
+ const abortSignals = [this.signal, init.signal];
186
243
  // Implement fetch timeout
187
244
  const controller = new AbortController();
188
- const timeout = setTimeout(() => controller.abort(), opts.timeoutMs ?? timeoutMs ?? this.globalTimeoutMs);
189
- // Attach global signal to this request's controller
190
- const onGlobalSignalAbort = () => controller.abort();
191
- const signalGlobal = this.getAbortSignal?.();
192
- signalGlobal?.addEventListener("abort", onGlobalSignalAbort);
193
- const routeId = opts.routeId ?? DEFAULT_ROUTE_ID;
245
+ const timeout = setTimeout(() => controller.abort(), init.timeoutMs);
246
+ init.signal = controller.signal;
247
+ // Attach global/local signal to this request's controller
248
+ const onSignalAbort = () => controller.abort();
249
+ abortSignals.forEach((s) => s?.addEventListener("abort", onSignalAbort));
250
+ const routeId = definition.operationId;
251
+ const { baseUrl, requestWireFormat, responseWireFormat } = init;
194
252
  const timer = this.metrics?.requestTime.startTimer({ routeId });
195
253
  try {
196
- const url = new URL(urlJoin(baseUrl, opts.url) + (opts.query ? "?" + stringifyQuery(opts.query) : ""));
197
- const headers = extraHeaders && opts.headers ? { ...extraHeaders, ...opts.headers } : opts.headers || extraHeaders || {};
198
- if (opts.body && headers["Content-Type"] === undefined) {
199
- headers["Content-Type"] = "application/json";
200
- }
201
- if (bearerToken && headers["Authorization"] === undefined) {
202
- headers["Authorization"] = `Bearer ${bearerToken}`;
254
+ this.logger?.debug("API request", { routeId, requestWireFormat, responseWireFormat });
255
+ const request = createApiRequest(definition, args, init);
256
+ const response = await this.fetch(request.url, request);
257
+ const apiResponse = new ApiResponse(definition, response.body, response);
258
+ if (!apiResponse.ok) {
259
+ await apiResponse.errorBody();
260
+ this.logger?.debug("API response error", { routeId, status: apiResponse.status });
261
+ this.metrics?.requestErrors.inc({ routeId, baseUrl });
262
+ return apiResponse;
203
263
  }
204
- if (url.username || url.password) {
205
- if (headers["Authorization"] === undefined) {
206
- headers["Authorization"] = `Basic ${toBase64(decodeURIComponent(`${url.username}:${url.password}`))}`;
207
- }
208
- // Remove the username and password from the URL
209
- url.username = "";
210
- url.password = "";
264
+ const streamTimer = this.metrics?.streamTime.startTimer({ routeId });
265
+ try {
266
+ await apiResponse.rawBody();
267
+ this.logger?.debug("API response success", {
268
+ routeId,
269
+ status: apiResponse.status,
270
+ wireFormat: apiResponse.wireFormat(),
271
+ });
272
+ return apiResponse;
211
273
  }
212
- this.logger?.debug("HttpClient request", { routeId });
213
- const res = await this.fetch(url, {
214
- method: opts.method,
215
- headers: headers,
216
- body: opts.body ? JSON.stringify(opts.body) : undefined,
217
- signal: controller.signal,
218
- });
219
- if (!res.ok) {
220
- const errBody = await res.text();
221
- throw new HttpError(`${res.statusText}: ${getErrorMessage(errBody)}`, res.status, url.toString());
274
+ finally {
275
+ streamTimer?.();
222
276
  }
223
- const streamTimer = this.metrics?.streamTime.startTimer({ routeId });
224
- const body = await getBody(res);
225
- streamTimer?.();
226
- this.logger?.debug("HttpClient response", { routeId });
227
- return { status: res.status, body };
228
277
  }
229
278
  catch (e) {
230
279
  this.metrics?.requestErrors.inc({ routeId, baseUrl });
231
280
  if (isAbortedError(e)) {
232
- if (signalGlobal?.aborted) {
233
- throw new ErrorAborted("REST client");
281
+ if (abortSignals.some((s) => s?.aborted)) {
282
+ throw new ErrorAborted(`${routeId} request`);
234
283
  }
235
284
  else if (controller.signal.aborted) {
236
- throw new TimeoutError("request");
285
+ throw new TimeoutError(`${routeId} request`);
237
286
  }
238
287
  else {
239
288
  throw Error("Unknown aborted error");
@@ -246,25 +295,24 @@ export class HttpClient {
246
295
  finally {
247
296
  timer?.();
248
297
  clearTimeout(timeout);
249
- signalGlobal?.removeEventListener("abort", onGlobalSignalAbort);
298
+ abortSignals.forEach((s) => s?.removeEventListener("abort", onSignalAbort));
250
299
  }
251
300
  }
252
301
  }
302
+ function mergeInits(definition, urlInit, localInit) {
303
+ return {
304
+ ...defaultInit,
305
+ ...definition.init,
306
+ // Sanitize user provided values
307
+ ...removeUndefined(urlInit),
308
+ ...removeUndefined(localInit),
309
+ headers: mergeHeaders(urlInit.headers, localInit.headers),
310
+ };
311
+ }
312
+ function removeUndefined(obj) {
313
+ return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v !== undefined));
314
+ }
253
315
  function isAbortedError(e) {
254
316
  return isFetchError(e) && e.type === "aborted";
255
317
  }
256
- function getErrorMessage(errBody) {
257
- try {
258
- const errJson = JSON.parse(errBody);
259
- if (errJson.message) {
260
- return errJson.message;
261
- }
262
- else {
263
- return errBody;
264
- }
265
- }
266
- catch (e) {
267
- return errBody;
268
- }
269
- }
270
318
  //# sourceMappingURL=httpClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../../src/utils/client/httpClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../../src/utils/client/httpClient.ts"],"names":[],"mappings":"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"}