import { HttpHandler } from "../httpHandler"; /** * @internal */ export interface HttpHandlerExtensionConfiguration { setHttpHandler(handler: HttpHandler): void; httpHandler(): HttpHandler; updateHttpClientConfig(key: keyof HandlerConfig, value: HandlerConfig[typeof key]): void; httpHandlerConfigs(): HandlerConfig; } /** * @internal */ export type HttpHandlerExtensionConfigType = Partial<{ httpHandler: HttpHandler; }>; /** * @internal * * Helper function to resolve default extension configuration from runtime config */ export const getHttpHandlerExtensionConfiguration = ( runtimeConfig: HttpHandlerExtensionConfigType ) => { let httpHandler = runtimeConfig.httpHandler!; return { setHttpHandler(handler: HttpHandler): void { httpHandler = handler; }, httpHandler(): HttpHandler { return httpHandler; }, updateHttpClientConfig(key: keyof HandlerConfig, value: HandlerConfig[typeof key]): void { httpHandler.updateHttpClientConfig(key, value); }, httpHandlerConfigs(): HandlerConfig { return httpHandler.httpHandlerConfigs(); }, }; }; /** * @internal * * Helper function to resolve runtime config from default extension configuration */ export const resolveHttpHandlerRuntimeConfig = ( httpHandlerExtensionConfiguration: HttpHandlerExtensionConfiguration ): HttpHandlerExtensionConfigType => { return { httpHandler: httpHandlerExtensionConfiguration.httpHandler(), }; };