UNPKG

1.16 kBTypeScriptView Raw
1import middy from '@middy/core'
2import { Options as MiddyOptions } from '@middy/util'
3import { Context as LambdaContext } from 'aws-lambda'
4import { S3Client, S3ClientConfig } from '@aws-sdk/client-s3'
5import { ClientRequest } from 'http'
6
7export interface S3ObjectResponseOptions<AwsS3Client = S3Client>
8 extends Pick<
9 MiddyOptions<AwsS3Client, S3ClientConfig>,
10 | 'AwsClient'
11 | 'awsClientOptions'
12 | 'awsClientAssumeRole'
13 | 'awsClientCapture'
14 | 'disablePrefetch'
15 > {
16 bodyType?: 'stream' | 'promise'
17}
18
19export type Context<TOptions extends S3ObjectResponseOptions | undefined> = LambdaContext & {
20 s3Object: TOptions extends { bodyType: 'stream' }
21 ? ClientRequest
22 : TOptions extends { bodyType: 'promise' }
23 ? Promise<any>
24 : never
25} & {
26 s3ObjectFetch: Promise<Response>
27}
28
29export interface Internal extends Record<string, any> {
30 s3ObjectResponse: {
31 RequestRoute: string
32 RequestToken: string
33 }
34}
35
36declare function s3ObjectResponse<TOptions extends S3ObjectResponseOptions | undefined> (
37 options?: TOptions
38): middy.MiddlewareObj<unknown, any, Error, Context<TOptions>, Internal>
39
40export default s3ObjectResponse
41
\No newline at end of file