@lodestar/api 1.19.0 → 1.20.0-dev.0c5adec4eb
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/README.md +2 -2
- package/lib/beacon/client/beacon.d.ts +4 -3
- package/lib/beacon/client/beacon.js +3 -36
- package/lib/beacon/client/beacon.js.map +1 -1
- package/lib/beacon/client/config.d.ts +4 -3
- package/lib/beacon/client/config.js +3 -6
- package/lib/beacon/client/config.js.map +1 -1
- package/lib/beacon/client/debug.d.ts +4 -3
- package/lib/beacon/client/debug.js +4 -45
- package/lib/beacon/client/debug.js.map +1 -1
- package/lib/beacon/client/events.d.ts +5 -2
- package/lib/beacon/client/events.js +32 -35
- package/lib/beacon/client/events.js.map +1 -1
- package/lib/beacon/client/index.d.ts +6 -3
- package/lib/beacon/client/index.js +2 -2
- package/lib/beacon/client/index.js.map +1 -1
- package/lib/beacon/client/lightclient.d.ts +4 -3
- package/lib/beacon/client/lightclient.js +4 -7
- package/lib/beacon/client/lightclient.js.map +1 -1
- package/lib/beacon/client/lodestar.d.ts +4 -3
- package/lib/beacon/client/lodestar.js +4 -7
- package/lib/beacon/client/lodestar.js.map +1 -1
- package/lib/beacon/client/node.d.ts +4 -3
- package/lib/beacon/client/node.js +4 -7
- package/lib/beacon/client/node.js.map +1 -1
- package/lib/beacon/client/proof.d.ts +5 -4
- package/lib/beacon/client/proof.js +5 -61
- package/lib/beacon/client/proof.js.map +1 -1
- package/lib/beacon/client/validator.d.ts +4 -3
- package/lib/beacon/client/validator.js +4 -7
- package/lib/beacon/client/validator.js.map +1 -1
- package/lib/beacon/index.d.ts +5 -5
- package/lib/beacon/index.js.map +1 -1
- package/lib/beacon/routes/beacon/block.d.ts +282 -164
- package/lib/beacon/routes/beacon/block.js +324 -116
- package/lib/beacon/routes/beacon/block.js.map +1 -1
- package/lib/beacon/routes/beacon/index.d.ts +6 -588
- package/lib/beacon/routes/beacon/index.js +16 -26
- package/lib/beacon/routes/beacon/index.js.map +1 -1
- package/lib/beacon/routes/beacon/pool.d.ts +155 -117
- package/lib/beacon/routes/beacon/pool.js +146 -42
- package/lib/beacon/routes/beacon/pool.js.map +1 -1
- package/lib/beacon/routes/beacon/rewards.d.ts +113 -101
- package/lib/beacon/routes/beacon/rewards.js +98 -63
- package/lib/beacon/routes/beacon/rewards.js.map +1 -1
- package/lib/beacon/routes/beacon/state.d.ts +172 -226
- package/lib/beacon/routes/beacon/state.js +204 -126
- package/lib/beacon/routes/beacon/state.js.map +1 -1
- package/lib/beacon/routes/config.d.ts +21 -36
- package/lib/beacon/routes/config.js +45 -24
- package/lib/beacon/routes/config.js.map +1 -1
- package/lib/beacon/routes/debug.d.ts +32 -95
- package/lib/beacon/routes/debug.js +87 -45
- package/lib/beacon/routes/debug.js.map +1 -1
- package/lib/beacon/routes/events.d.ts +20 -16
- package/lib/beacon/routes/events.js +39 -17
- package/lib/beacon/routes/events.js.map +1 -1
- package/lib/beacon/routes/index.d.ts +19 -19
- package/lib/beacon/routes/index.js +1 -0
- package/lib/beacon/routes/index.js.map +1 -1
- package/lib/beacon/routes/lightclient.d.ts +33 -55
- package/lib/beacon/routes/lightclient.js +107 -47
- package/lib/beacon/routes/lightclient.js.map +1 -1
- package/lib/beacon/routes/lodestar.d.ts +74 -148
- package/lib/beacon/routes/lodestar.js +126 -77
- package/lib/beacon/routes/lodestar.js.map +1 -1
- package/lib/beacon/routes/node.d.ts +48 -82
- package/lib/beacon/routes/node.js +90 -57
- package/lib/beacon/routes/node.js.map +1 -1
- package/lib/beacon/routes/proof.d.ts +25 -31
- package/lib/beacon/routes/proof.js +44 -24
- package/lib/beacon/routes/proof.js.map +1 -1
- package/lib/beacon/routes/validator.d.ts +547 -320
- package/lib/beacon/routes/validator.js +494 -213
- package/lib/beacon/routes/validator.js.map +1 -1
- package/lib/beacon/server/beacon.d.ts +3 -4
- package/lib/beacon/server/beacon.js +4 -57
- package/lib/beacon/server/beacon.js.map +1 -1
- package/lib/beacon/server/config.d.ts +3 -4
- package/lib/beacon/server/config.js +4 -5
- package/lib/beacon/server/config.js.map +1 -1
- package/lib/beacon/server/debug.d.ts +3 -4
- package/lib/beacon/server/debug.js +4 -54
- package/lib/beacon/server/debug.js.map +1 -1
- package/lib/beacon/server/events.d.ts +4 -4
- package/lib/beacon/server/events.js +17 -23
- package/lib/beacon/server/events.js.map +1 -1
- package/lib/beacon/server/index.d.ts +7 -8
- package/lib/beacon/server/index.js +13 -14
- package/lib/beacon/server/index.js.map +1 -1
- package/lib/beacon/server/lightclient.d.ts +3 -4
- package/lib/beacon/server/lightclient.js +4 -5
- package/lib/beacon/server/lightclient.js.map +1 -1
- package/lib/beacon/server/lodestar.d.ts +3 -4
- package/lib/beacon/server/lodestar.js +4 -5
- package/lib/beacon/server/lodestar.js.map +1 -1
- package/lib/beacon/server/node.d.ts +3 -4
- package/lib/beacon/server/node.js +4 -18
- package/lib/beacon/server/node.js.map +1 -1
- package/lib/beacon/server/proof.d.ts +3 -4
- package/lib/beacon/server/proof.js +4 -36
- package/lib/beacon/server/proof.js.map +1 -1
- package/lib/beacon/server/validator.d.ts +3 -4
- package/lib/beacon/server/validator.js +4 -21
- package/lib/beacon/server/validator.js.map +1 -1
- package/lib/builder/client.d.ts +4 -6
- package/lib/builder/client.js +3 -9
- package/lib/builder/client.js.map +1 -1
- package/lib/builder/index.d.ts +8 -5
- package/lib/builder/index.js +4 -1
- package/lib/builder/index.js.map +1 -1
- package/lib/builder/routes.d.ts +24 -38
- package/lib/builder/routes.js +77 -33
- package/lib/builder/routes.js.map +1 -1
- package/lib/builder/server/index.d.ts +6 -6
- package/lib/builder/server/index.js +7 -8
- package/lib/builder/server/index.js.map +1 -1
- package/lib/index.d.ts +9 -6
- package/lib/index.js +5 -4
- package/lib/index.js.map +1 -1
- package/lib/keymanager/client.d.ts +4 -3
- package/lib/keymanager/client.js +4 -7
- package/lib/keymanager/client.js.map +1 -1
- package/lib/keymanager/index.d.ts +5 -4
- package/lib/keymanager/index.js +1 -1
- package/lib/keymanager/index.js.map +1 -1
- package/lib/keymanager/routes.d.ts +155 -177
- package/lib/keymanager/routes.js +236 -123
- package/lib/keymanager/routes.js.map +1 -1
- package/lib/keymanager/server/index.d.ts +6 -6
- package/lib/keymanager/server/index.js +7 -8
- package/lib/keymanager/server/index.js.map +1 -1
- package/lib/server/index.d.ts +2 -0
- package/lib/server/index.js +3 -0
- package/lib/server/index.js.map +1 -0
- package/lib/utils/client/error.d.ts +6 -0
- package/lib/utils/client/error.js +8 -0
- package/lib/utils/client/error.js.map +1 -0
- package/lib/utils/client/httpClient.d.ts +35 -75
- package/lib/utils/client/httpClient.js +201 -153
- package/lib/utils/client/httpClient.js.map +1 -1
- package/lib/utils/client/index.d.ts +6 -2
- package/lib/utils/client/index.js +6 -2
- package/lib/utils/client/index.js.map +1 -1
- package/lib/utils/client/method.d.ts +11 -0
- package/lib/utils/client/method.js +27 -0
- package/lib/utils/client/method.js.map +1 -0
- package/lib/utils/client/request.d.ts +33 -0
- package/lib/utils/client/request.js +66 -0
- package/lib/utils/client/request.js.map +1 -0
- package/lib/utils/client/response.d.ts +36 -0
- package/lib/utils/client/response.js +167 -0
- package/lib/utils/client/response.js.map +1 -0
- package/lib/utils/codecs.d.ts +28 -0
- package/lib/utils/codecs.js +105 -0
- package/lib/utils/codecs.js.map +1 -0
- package/lib/utils/fork.d.ts +8 -0
- package/lib/utils/fork.js +35 -0
- package/lib/utils/fork.js.map +1 -0
- package/lib/utils/headers.d.ts +37 -0
- package/lib/utils/headers.js +134 -0
- package/lib/utils/headers.js.map +1 -0
- package/lib/utils/httpStatusCode.js.map +1 -0
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/metadata.d.ts +88 -0
- package/lib/utils/metadata.js +126 -0
- package/lib/utils/metadata.js.map +1 -0
- package/lib/utils/schema.d.ts +31 -17
- package/lib/utils/schema.js +18 -6
- package/lib/utils/schema.js.map +1 -1
- package/lib/utils/serdes.d.ts +3 -0
- package/lib/utils/serdes.js +13 -0
- package/lib/utils/serdes.js.map +1 -1
- package/lib/utils/server/{errors.d.ts → error.d.ts} +2 -2
- package/lib/utils/server/{errors.js → error.js} +1 -1
- package/lib/utils/server/error.js.map +1 -0
- package/lib/utils/server/handler.d.ts +11 -0
- package/lib/utils/server/handler.js +115 -0
- package/lib/utils/server/handler.js.map +1 -0
- package/lib/utils/server/index.d.ts +5 -4
- package/lib/utils/server/index.js +5 -4
- package/lib/utils/server/index.js.map +1 -1
- package/lib/utils/server/method.d.ts +35 -0
- package/lib/utils/server/method.js +2 -0
- package/lib/utils/server/method.js.map +1 -0
- package/lib/utils/server/parser.d.ts +3 -0
- package/lib/utils/server/parser.js +20 -0
- package/lib/utils/server/parser.js.map +1 -0
- package/lib/utils/server/route.d.ts +20 -0
- package/lib/utils/server/route.js +19 -0
- package/lib/utils/server/route.js.map +1 -0
- package/lib/utils/types.d.ts +116 -104
- package/lib/utils/types.js +2 -155
- package/lib/utils/types.js.map +1 -1
- package/lib/utils/urlFormat.d.ts +2 -2
- package/lib/utils/urlFormat.js +3 -3
- package/lib/utils/urlFormat.js.map +1 -1
- package/lib/utils/wireFormat.d.ts +8 -0
- package/lib/utils/wireFormat.js +23 -0
- package/lib/utils/wireFormat.js.map +1 -0
- package/package.json +9 -6
- package/lib/interfaces.d.ts +0 -44
- package/lib/interfaces.js +0 -2
- package/lib/interfaces.js.map +0 -1
- package/lib/utils/acceptHeader.d.ts +0 -9
- package/lib/utils/acceptHeader.js +0 -62
- package/lib/utils/acceptHeader.js.map +0 -1
- package/lib/utils/client/client.d.ts +0 -29
- package/lib/utils/client/client.js +0 -88
- package/lib/utils/client/client.js.map +0 -1
- package/lib/utils/client/httpStatusCode.js.map +0 -1
- package/lib/utils/routes.d.ts +0 -6
- package/lib/utils/routes.js +0 -31
- package/lib/utils/routes.js.map +0 -1
- package/lib/utils/server/errors.js.map +0 -1
- package/lib/utils/server/genericJsonServer.d.ts +0 -13
- package/lib/utils/server/genericJsonServer.js +0 -32
- package/lib/utils/server/genericJsonServer.js.map +0 -1
- package/lib/utils/server/registerRoute.d.ts +0 -3
- package/lib/utils/server/registerRoute.js +0 -13
- package/lib/utils/server/registerRoute.js.map +0 -1
- package/lib/utils/server/types.d.ts +0 -22
- package/lib/utils/server/types.js +0 -2
- package/lib/utils/server/types.js.map +0 -1
- /package/lib/utils/{client/httpStatusCode.d.ts → httpStatusCode.d.ts} +0 -0
- /package/lib/utils/{client/httpStatusCode.js → httpStatusCode.js} +0 -0
|
@@ -1,63 +1,20 @@
|
|
|
1
1
|
import { Logger } from "@lodestar/utils";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
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 |
|
|
15
|
+
urls: (string | UrlInit)[];
|
|
55
16
|
}) & {
|
|
56
|
-
|
|
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
|
-
|
|
71
|
-
private readonly
|
|
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
|
-
*
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
private
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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.
|
|
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.
|
|
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
|
-
//
|
|
48
|
-
const
|
|
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,
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
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(
|
|
63
|
-
throw Error(`HttpClient.urls[${i}] must be a valid URL: ${
|
|
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.
|
|
67
|
-
this.
|
|
69
|
+
if (!this.urlsInits.some((opt) => opt.baseUrl === urlInit.baseUrl)) {
|
|
70
|
+
this.urlsInits.push({ ...urlInit, urlIndex: i });
|
|
68
71
|
}
|
|
69
72
|
}
|
|
70
|
-
if (this.
|
|
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.
|
|
75
|
-
this.
|
|
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.
|
|
85
|
+
metrics.urlsScore.set({ urlIndex: i, baseUrl: this.urlsInits[i].baseUrl }, this.urlsScore[i]);
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
-
async
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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.
|
|
101
|
+
return this.requestWithFallbacks(definition, args, localInit);
|
|
115
102
|
}
|
|
116
103
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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.
|
|
114
|
+
for (; i < this.urlsInits.length; i++) {
|
|
129
115
|
try {
|
|
130
|
-
|
|
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.
|
|
138
|
-
const
|
|
139
|
-
const
|
|
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
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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.
|
|
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
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
const
|
|
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(),
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
const routeId =
|
|
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
|
-
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
-
|
|
213
|
-
|
|
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 (
|
|
233
|
-
throw new ErrorAborted(
|
|
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(
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAC,YAAY,EAAU,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAOL,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAC,KAAK,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAE/C,6EAA6E;AAC7E,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC;;;;GAIG;AACH,MAAM,2BAA2B,GAAG,UAAU,CAAC,IAAI,CAAC;AACpD;;;;GAIG;AACH,MAAM,4BAA4B,GAAG,UAAU,CAAC,GAAG,CAAC;AAEpD,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAClC,yDAAyD;AACzD,MAAM,qBAAqB,GAAG,CAAC,GAAG,uBAAuB,CAAC;AAC1D,iFAAiF;AACjF,MAAM,aAAa,GAAG,EAAE,GAAG,uBAAuB,CAAC;AACnD,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,MAAM,CAAC,MAAM,WAAW,GAA+B;IACrD,SAAS,EAAE,kBAAkB;IAC7B,OAAO,EAAE,eAAe;IACxB,UAAU,EAAE,mBAAmB;IAC/B,iBAAiB,EAAE,2BAA2B;IAC9C,kBAAkB,EAAE,4BAA4B;CACjD,CAAC;AAuBF,MAAM,OAAO,UAAU;IAiBrB,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,YAAY,IAAuB,EAAE,EAAC,MAAM,EAAE,OAAO,KAAuB,EAAE;QApBrE,cAAS,GAAsB,EAAE,CAAC;QAS3C;;;;WAIG;QACc,uCAAkC,GAAG,IAAI,MAAM,CAA+B,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QAO9G,4FAA4F;QAC5F,MAAM,EAAC,OAAO,EAAE,IAAI,GAAG,EAAE,EAAC,GAAG,IAAuD,CAAC;QACrF,4CAA4C;QAC5C,MAAM,EAAC,MAAM,EAAE,GAAG,UAAU,EAAC,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QAEtD,oDAAoD;QACpD,2DAA2D;QAC3D,KAAK,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAChF,MAAM,IAAI,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAC,OAAO,EAAE,SAAS,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9E,MAAM,OAAO,GAAY;gBACvB,GAAG,UAAU;gBACb,GAAG,IAAI;gBACP,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;aACxD,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,KAAK,CAAC,mBAAmB,CAAC,4BAA4B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrC,MAAM,KAAK,CAAC,mBAAmB,CAAC,0BAA0B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,oGAAoG;YACpG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAoB,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;QAED,kEAAkE;QAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC;QAEzD,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC;QAE7B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE;gBAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/C,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CACX,UAAmC,EACnC,IAAe,EACf,YAA4B,EAAE;QAE9B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAElE,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAChC,UAAmC,EACnC,IAAe,EACf,SAAyB;QAEzB,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,SAAS;QACT,oEAAoE;QACpE,iEAAiE;QACjE,0EAA0E;QAE1E,2EAA2E;QAC3E,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAChE,IAAI,YAAY,GAAG,CAAC,CAAC;oBACrB,IAAI,UAAU,GAAG,CAAC,CAAC;oBAEnB,2EAA2E;oBAC3E,4BAA4B;oBAC5B,sCAAsC;oBACtC,qGAAqG;oBACrG,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;wBAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC;wBAEvC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;4BACV,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;4BACzD,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,yBAAyB,EAAE,EAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;wBAC9F,CAAC;wBAED,gEAAgE;wBAChE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,iFAAiF;wBAE/F,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBAClC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;4BAC1B,MAAM,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;wBAClD,CAAC;wBACD,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;wBAExD,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAE3G,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CACxC,KAAK,EAAE,GAAG,EAAE,EAAE;4BACZ,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gCACX,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,CAAC;gCAC3F,iCAAiC;gCACjC,OAAO,CAAC,GAAG,CAAC,CAAC;4BACf,CAAC;iCAAM,CAAC;gCACN,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,CAAC;gCAEzF,kEAAkE;gCAClE,IAAI,EAAE,UAAU,IAAI,YAAY,EAAE,CAAC;oCACjC,OAAO,CAAC,GAAG,CAAC,CAAC;gCACf,CAAC;qCAAM,CAAC;oCACN,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,yBAAyB,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,EAAE,GAAG,CAAC,KAAK,EAAW,CAAC,CAAC;gCAC1F,CAAC;4BACH,CAAC;wBACH,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;4BACN,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,CAAC;4BAEzF,iDAAiD;4BACjD,oEAAoE;4BACpE,IAAI,EAAE,UAAU,IAAI,YAAY,EAAE,CAAC;gCACjC,MAAM,CAAC,GAAG,CAAC,CAAC;4BACd,CAAC;iCAAM,CAAC;gCACN,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,yBAAyB,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,EAAE,GAAG,CAAC,CAAC;4BACzE,CAAC;wBACH,CAAC,CACF,CAAC;wBAEF,YAAY,EAAE,CAAC;wBAEf,wCAAwC;wBACxC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC;4BACvC,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;oBACX,OAAO,GAAG,CAAC;gBACb,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACnC,OAAO,GAAG,CAAC;oBACb,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,yBAAyB,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,EAAW,CAAC,CAAC;oBAC1E,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnC,MAAM,CAAC,CAAC;gBACV,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,yBAAyB,EAAE,EAAE,EAAE,CAAU,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAC9B,UAAmC,EACnC,IAAe,EACf,IAA4B;QAE5B,MAAM,EAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC;QAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC;QAEvC,OAAO,KAAK,CACV,KAAK,EAAE,OAAO,EAAE,EAAE;YAChB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;gBAClC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EACD;YACE,OAAO;YACP,UAAU;YACV,mDAAmD;YACnD,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;YAC1C,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;gBACtB,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,kBAAkB,EAAE,EAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC;YACnF,CAAC;SACF,CACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,qBAAqB,CACjC,UAAmC,EACnC,IAAe,EACf,IAA4B;QAE5B,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC;QACxB,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC;QAEvC,MAAM,wBAAwB,GAAG,IAAI,CAAC,kCAAkC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChG,IAAI,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC;QAC3C,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAExD,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,CAAC,sBAAsB,IAAI,IAAI,CAAC,iBAAiB,KAAK,UAAU,CAAC,GAAG,EAAE,CAAC;YACtG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,yDAAyD,EAAE,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC;YAEnG,wBAAwB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC;YAEzC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,QAAQ,CACpB,UAAmC,EACnC,IAAe,EACf,IAA4B;QAE5B,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhD,0BAA0B;QAC1B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAEhC,0DAA0D;QAC1D,MAAM,aAAa,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACrD,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QAEzE,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC;QACvC,MAAM,EAAC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAC,GAAG,IAAI,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,UAAU,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC;QAE9D,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,EAAC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAC,CAAC,CAAC;YACpF,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAEzE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;gBACpB,MAAM,WAAW,CAAC,SAAS,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,oBAAoB,EAAE,EAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAC,CAAC,CAAC;gBAChF,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;gBACpD,OAAO,WAAW,CAAC;YACrB,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC;YACnE,IAAI,CAAC;gBACH,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,sBAAsB,EAAE;oBACzC,OAAO;oBACP,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE;iBACrC,CAAC,CAAC;gBACH,OAAO,WAAW,CAAC;YACrB,CAAC;oBAAS,CAAC;gBACT,WAAW,EAAE,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;YAEpD,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;oBACzC,MAAM,IAAI,YAAY,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC;gBAC/C,CAAC;qBAAM,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACrC,MAAM,IAAI,YAAY,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,KAAK,EAAE,EAAE,CAAC;YAEV,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;CACF;AAED,SAAS,UAAU,CACjB,UAAmC,EACnC,OAAwB,EACxB,SAAyB;IAEzB,OAAO;QACL,GAAG,WAAW;QACd,GAAG,UAAU,CAAC,IAAI;QAClB,gCAAgC;QAChC,GAAG,eAAe,CAAC,OAAO,CAAC;QAC3B,GAAG,eAAe,CAAC,SAAS,CAAC;QAC7B,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;KAC1D,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAmB,GAAM;IAC/C,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAEhF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,CAAU;IAChC,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;AACjD,CAAC"}
|