@middy/dynamodb
Version:
DynamoDB middleware for the middy framework
65 lines (58 loc) • 1.73 kB
TypeScript
import type {
DynamoDBClient,
DynamoDBClientConfig,
GetItemCommandInput,
} from "@aws-sdk/client-dynamodb";
import type { NativeAttributeValue } from "@aws-sdk/util-dynamodb";
import type middy from "@middy/core";
import type { Options as MiddyOptions } from "@middy/util";
import type { Context as LambdaContext } from "aws-lambda";
export type ParamType<T extends Record<string, NativeAttributeValue>> =
GetItemCommandInput & { __returnType?: T };
export declare function dynamoDbReq<
T extends Record<string, NativeAttributeValue>,
>(req: GetItemCommandInput): ParamType<T>;
export type DynamoDbOptions<AwsDynamoDBClient = DynamoDBClient> = Omit<
MiddyOptions<AwsDynamoDBClient, DynamoDBClientConfig>,
"fetchData"
> & {
fetchData?: {
[key: string]:
| GetItemCommandInput
| ParamType<Record<string, NativeAttributeValue>>;
};
};
export type Context<TOptions extends DynamoDbOptions | undefined> =
TOptions extends {
setToContext: true;
}
? TOptions extends { fetchData: infer TFetchData }
? LambdaContext & {
[Key in keyof TFetchData]: TFetchData[Key] extends ParamType<infer T>
? T
: NativeAttributeValue;
}
: never
: LambdaContext;
export type Internal<TOptions extends DynamoDbOptions | undefined> =
TOptions extends DynamoDbOptions
? TOptions extends { fetchData: infer TFetchData }
? {
[Key in keyof TFetchData]: TFetchData[Key] extends ParamType<infer T>
? T
: NativeAttributeValue;
}
: {}
: {};
declare function dynamodbMiddleware<
TOptions extends DynamoDbOptions | undefined,
>(
options?: TOptions,
): middy.MiddlewareObj<
unknown,
any,
Error,
Context<TOptions>,
Internal<TOptions>
>;
export default dynamodbMiddleware;