import {Sink} from "it-stream-types"; import {Uint8ArrayList} from "uint8arraylist"; import {ForkName} from "@lodestar/params"; import {ProtocolDefinition} from "../types.js"; import {BufferedSource} from "../utils/index.js"; import {readEncodedPayload} from "../encodingStrategies/index.js"; /** * Consumes a stream source to read a `` * ```bnf * request ::= | * ``` */ export function requestDecode( protocol: ProtocolDefinition ): Sink> { return async function requestDecodeSink(source) { const type = protocol.requestType(ForkName.phase0); if (type === null) { // method has no body return (null as unknown) as Req; } // Request has a single payload, so return immediately const bufferedSource = new BufferedSource(source as AsyncGenerator); return await readEncodedPayload(bufferedSource, protocol.encoding, type); }; }