import { HttpRequest } from "@aws-sdk/protocol-http"; import { FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput, MetadataBearer, Pluggable, RelativeMiddlewareOptions, } from "@aws-sdk/types"; import { INVOCATION_ID_HEADER, REQUEST_HEADER } from "./constants"; 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); }, });