serverless-spy
Version:
CDK-based library for writing elegant integration tests on AWS serverless architecture and an additional web console to monitor events in real time.
47 lines (46 loc) • 2.43 kB
JavaScript
import { setFeature } from "@aws-sdk/core";
import { Command as $Command } from "@smithy/smithy-client";
import { marshallInput, unmarshallOutput } from "../commands/utils";
export class DynamoDBDocumentClientCommand extends $Command {
addMarshallingMiddleware(configuration) {
const { marshallOptions = {}, unmarshallOptions = {} } = configuration.translateConfig || {};
marshallOptions.convertTopLevelContainer = marshallOptions.convertTopLevelContainer ?? true;
unmarshallOptions.convertWithoutMapWrapper = unmarshallOptions.convertWithoutMapWrapper ?? true;
this.clientCommand.middlewareStack.addRelativeTo((next, context) => async (args) => {
setFeature(context, "DDB_MAPPER", "d");
args.input = marshallInput(this.input, this.inputKeyNodes, marshallOptions);
context.dynamoDbDocumentClientOptions =
context.dynamoDbDocumentClientOptions || DynamoDBDocumentClientCommand.defaultLogFilterOverrides;
const input = args.input;
context.dynamoDbDocumentClientOptions.overrideInputFilterSensitiveLog = () => {
return context.inputFilterSensitiveLog?.(input);
};
return next(args);
}, {
name: "DocumentMarshall",
relation: "before",
toMiddleware: "serializerMiddleware",
override: true,
});
this.clientCommand.middlewareStack.addRelativeTo((next, context) => async (args) => {
const deserialized = await next(args);
const output = deserialized.output;
context.dynamoDbDocumentClientOptions =
context.dynamoDbDocumentClientOptions || DynamoDBDocumentClientCommand.defaultLogFilterOverrides;
context.dynamoDbDocumentClientOptions.overrideOutputFilterSensitiveLog = () => {
return context.outputFilterSensitiveLog?.(output);
};
deserialized.output = unmarshallOutput(deserialized.output, this.outputKeyNodes, unmarshallOptions);
return deserialized;
}, {
name: "DocumentUnmarshall",
relation: "before",
toMiddleware: "deserializerMiddleware",
override: true,
});
}
}
DynamoDBDocumentClientCommand.defaultLogFilterOverrides = {
overrideInputFilterSensitiveLog(...args) { },
overrideOutputFilterSensitiveLog(...args) { },
};