import { HttpRequest } from "@smithy/protocol-http"; import { FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput, MetadataBearer, Pluggable, RelativeMiddlewareOptions, } from "@smithy/types"; import { INVOCATION_ID_HEADER, REQUEST_HEADER } from "@smithy/util-retry"; export const omitRetryHeadersMiddleware = () => ( next: FinalizeHandler ): FinalizeHandler => async ( args: FinalizeHandlerArguments ): Promise> => { const { request } = args; if (HttpRequest.isInstance(request)) { delete request.headers[INVOCATION_ID_HEADER]; delete request.headers[REQUEST_HEADER]; } return next(args); }; export const omitRetryHeadersMiddlewareOptions: RelativeMiddlewareOptions = { name: "omitRetryHeadersMiddleware", tags: ["RETRY", "HEADERS", "OMIT_RETRY_HEADERS"], relation: "before", toMiddleware: "awsAuthMiddleware", override: true, }; export const getOmitRetryHeadersPlugin = (options: unknown): Pluggable => ({ applyToStack: (clientStack) => { clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions); }, });