/// /// import type { IncomingMessage } from "http"; import type { ClientHttp2Stream } from "http2"; import type { InvokeFunction, InvokeMethod } from "../client"; import type { HttpHandlerOptions } from "../http"; import type { SdkStream } from "../serde"; import type { BrowserRuntimeStreamingBlobPayloadInputTypes, NodeJsRuntimeStreamingBlobPayloadInputTypes, StreamingBlobPayloadInputTypes } from "../streaming-payload/streaming-blob-payload-input-types"; import type { NarrowedInvokeFunction, NarrowedInvokeMethod } from "./client-method-transforms"; import type { Transform } from "./type-transform"; /** * @public * * Creates a type with a given client type that narrows payload blob output * types to SdkStream. * * This can be used for clients with the NodeHttpHandler requestHandler, * the default in Node.js when not using HTTP2. * * Usage example: * ```typescript * const client = new YourClient({}) as NodeJsClient; * ``` */ export type NodeJsClient = NarrowPayloadBlobTypes, ClientType>; /** * @public * Variant of NodeJsClient for node:http2. */ export type NodeJsHttp2Client = NarrowPayloadBlobTypes, ClientType>; /** * @public * * Creates a type with a given client type that narrows payload blob output * types to SdkStream. * * This can be used for clients with the FetchHttpHandler requestHandler, * which is the default in browser environments. * * Usage example: * ```typescript * const client = new YourClient({}) as BrowserClient; * ``` */ export type BrowserClient = NarrowPayloadBlobTypes, ClientType>; /** * @public * * Variant of BrowserClient for XMLHttpRequest. */ export type BrowserXhrClient = NarrowPayloadBlobTypes, ClientType>; /** * @public * * @deprecated use NarrowPayloadBlobTypes. * * Narrow a given Client's blob payload outputs to the given type T. */ export type NarrowPayloadBlobOutputType = { [key in keyof ClientType]: [ClientType[key]] extends [ InvokeFunction ] ? NarrowedInvokeFunction : [ClientType[key]] extends [InvokeMethod] ? NarrowedInvokeMethod : ClientType[key]; }; /** * @public * * Narrow a Client's blob payload input and output types to I and O. */ export type NarrowPayloadBlobTypes = { [key in keyof ClientType]: [ClientType[key]] extends [ InvokeFunction ] ? NarrowedInvokeFunction, OutputTypes, ConfigType> : [ClientType[key]] extends [InvokeMethod] ? NarrowedInvokeMethod, FunctionOutputTypes> : ClientType[key]; };