1 | import middy from '@middy/core'
|
2 | import { Options as MiddyOptions } from '@middy/util'
|
3 | import { Context as LambdaContext } from 'aws-lambda'
|
4 | import { S3Client, S3ClientConfig } from '@aws-sdk/client-s3'
|
5 | import { ClientRequest } from 'http'
|
6 |
|
7 | export 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 |
|
19 | export 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 |
|
29 | export interface Internal extends Record<string, any> {
|
30 | s3ObjectResponse: {
|
31 | RequestRoute: string
|
32 | RequestToken: string
|
33 | }
|
34 | }
|
35 |
|
36 | declare function s3ObjectResponse<TOptions extends S3ObjectResponseOptions | undefined> (
|
37 | options?: TOptions
|
38 | ): middy.MiddlewareObj<unknown, any, Error, Context<TOptions>, Internal>
|
39 |
|
40 | export default s3ObjectResponse
|
41 |
|
\ | No newline at end of file |