UNPKG

@lodestar/api

Version:

A Typescript REST client for the Ethereum Consensus API

47 lines (42 loc) 1.55 kB
import {ChainForkConfig} from "@lodestar/config"; import { ApiClientMethods, HttpClient, HttpClientModules, HttpClientOptions, IHttpClient, } from "../../utils/client/index.js"; import {Endpoints} from "../routes/index.js"; import * as beacon from "./beacon.js"; import * as configApi from "./config.js"; import * as debug from "./debug.js"; import * as events from "./events.js"; import * as lightclient from "./lightclient.js"; import * as lodestar from "./lodestar.js"; import * as node from "./node.js"; import * as proof from "./proof.js"; import * as validator from "./validator.js"; type ClientModules = HttpClientModules & { config: ChainForkConfig; httpClient?: IHttpClient; }; export type ApiClient = {[K in keyof Endpoints]: ApiClientMethods<Endpoints[K]>} & {httpClient: IHttpClient}; /** * REST HTTP client for all routes */ export function getClient(opts: HttpClientOptions, modules: ClientModules): ApiClient { const {config} = modules; const httpClient = modules.httpClient ?? new HttpClient(opts, modules); return { beacon: beacon.getClient(config, httpClient), config: configApi.getClient(config, httpClient), debug: debug.getClient(config, httpClient), events: events.getClient(config, httpClient.baseUrl), lightclient: lightclient.getClient(config, httpClient), lodestar: lodestar.getClient(config, httpClient), node: node.getClient(config, httpClient), proof: proof.getClient(config, httpClient), validator: validator.getClient(config, httpClient), httpClient, }; }