@swarmion/serverless-contracts
Version:
Generate and use type-safe contracts between your Serverless services.
62 lines • 2.93 kB
TypeScript
import Ajv from 'ajv';
import { SQSHandler as AwsSQSHandler, SQSRecord } from 'aws-lambda';
/**
* getHandler options for SQSContract
*/
export type GetSQSHandlerOptions<HandleRecords extends boolean> = {
bodyParser?: ((body: string) => unknown) | undefined;
logRawEvent?: boolean;
handleBatchedRecords?: HandleRecords;
} & ({
ajv: Ajv;
validateBody?: boolean;
validateAttributes?: boolean;
} | {
ajv?: Ajv;
validateBody: false;
validateAttributes: false;
});
export type DefaultGetSQSHandlerOptions = {
bodyParser: (body: string) => unknown;
validateBody: true;
validateAttributes: boolean;
ajv?: undefined;
handleBatchedRecords: true;
logRawEvent: false;
};
/**
* a simple helper type to build SQSHandler
*/
export type SQSHandlerParameters = Parameters<AwsSQSHandler>;
/**
* The type of an SQS handler. This is the actual version that will
* be executed by the lambda, not the Swarmion inferred one.
*
* See https://docs.aws.amazon.com/lambda/latest/dg/typescript-handler.html.
*/
export type SQSHandler<AdditionalArgs extends unknown[]> = (event: Partial<SQSHandlerParameters[0]>, context: SQSHandlerParameters[1], callback: SQSHandlerParameters[2], ...additionalArgs: AdditionalArgs) => Promise<unknown>;
export type SwarmionSQSRecord<MessageBody, MessageAttributes> = Omit<SQSRecord, 'body' | 'messageAttributes'> & {
body: MessageBody;
messageAttributes: MessageAttributes;
};
/**
* The type of the basic Swarmion handler for SQS,
* It receives all the records parsed and with their inferred type.
* It must process all the records and handle errors if necessary.
* Use SwarmionSQSHandler to avoid handling the whole batch, and to automatically process errors.
* The handler function can define additional arguments
*/
export type SwarmionLambdaSQSHandler<MessageBody, MessageAttributes, AdditionalArgs extends unknown[]> = (event: {
records: SwarmionSQSRecord<MessageBody, MessageAttributes>[];
}, context: SQSHandlerParameters[1], callback?: SQSHandlerParameters[2], ...additionalArgs: AdditionalArgs) => Promise<unknown>;
/**
* The type of the Swarmion handler for SQS.
* It receives only one record of the batch.
* The record is parsed and with its inferred type.
* It can throw an error if the record is invalid. The wrapper will catch it
* and inform the SQS that the record couldn't be processed following the batch failure reporting spec.
* https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#services-sqs-batchfailurereporting
* The handler function can define additional arguments
*/
export type SwarmionSQSHandler<MessageBody, MessageAttributes, AdditionalArgs extends unknown[]> = (event: SwarmionSQSRecord<MessageBody, MessageAttributes>, context: SQSHandlerParameters[1], callback?: SQSHandlerParameters[2], ...additionalArgs: AdditionalArgs) => Promise<unknown>;
//# sourceMappingURL=lambdaHandler.d.ts.map