import { DeserializeHandlerOptions, EndpointBearer, MetadataBearer, MiddlewareStack, Pluggable, RequestSerializer, ResponseDeserializer, SerializeHandlerOptions, } from "@aws-sdk/types"; import { deserializerMiddleware } from "./deserializerMiddleware"; import { serializerMiddleware } from "./serializerMiddleware"; export const deserializerMiddlewareOption: DeserializeHandlerOptions = { name: "deserializerMiddleware", step: "deserialize", tags: ["DESERIALIZER"], override: true, }; export const serializerMiddlewareOption: SerializeHandlerOptions = { name: "serializerMiddleware", step: "serialize", tags: ["SERIALIZER"], override: true, }; export function getSerdePlugin< InputType extends object, SerDeContext extends EndpointBearer, OutputType extends MetadataBearer >( config: SerDeContext, serializer: RequestSerializer, deserializer: ResponseDeserializer ): Pluggable { return { applyToStack: (commandStack: MiddlewareStack) => { commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption); commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption); }, }; }