diff --git a/lib/index.ts b/lib/index.ts index c1b4b45..1ffec5d 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -29,26 +29,35 @@ import alexaSkillEventTemplate from "./events/aws/alexa-skill-event-template.jso import cloudWatchEventTemplate from "./events/aws/cloud-watch-event-template.json"; import cognitoUserPoolEventTemplate from "./events/aws/cognito-user-pool-event-template.json"; +type DeepPartial = T extends object + ? { + [P in keyof T]?: DeepPartial; + } + : T; + export const dictionary = { - "aws:sns": snsTemplate as SNSEvent, - "aws:sqs": sqsTemplate as SQSEvent, - "aws:apiGateway": apiGatewayTemplate as APIGatewayEvent, - "aws:scheduled": scheduledTemplate as ScheduledEvent, - "aws:s3": s3Template as S3Event, - "aws:kinesis": kinesisTemplate as KinesisStreamEvent, - "aws:dynamo": dynamoTemplate as DynamoDBStreamEvent, - "aws:cloudWatchLog": cloudwatchLogEventTemplate as CloudWatchLogsEvent, - "aws:alexaSmartHome": alexaSmartHomeEventTemplate as AlexaSmartHomeEvent, - "aws:alexaSkill": alexaSkillEventTemplate as AlexaSkillEvent, - "aws:cloudWatch": cloudWatchEventTemplate as CloudWatchEvent, + "aws:sns": snsTemplate as DeepPartial, + "aws:sqs": sqsTemplate as DeepPartial, + "aws:apiGateway": apiGatewayTemplate as DeepPartial, + "aws:scheduled": scheduledTemplate as DeepPartial, + "aws:s3": s3Template as DeepPartial, + "aws:kinesis": kinesisTemplate as DeepPartial, + "aws:dynamo": dynamoTemplate as DeepPartial, + "aws:cloudWatchLog": + cloudwatchLogEventTemplate as DeepPartial, + "aws:alexaSmartHome": + alexaSmartHomeEventTemplate as DeepPartial, + "aws:alexaSkill": alexaSkillEventTemplate as DeepPartial, + "aws:cloudWatch": cloudWatchEventTemplate as DeepPartial, "aws:iot": {} as any, - "aws:cognitoUserPool": cognitoUserPoolEventTemplate as CognitoUserPoolEvent, - "aws:websocket": apiGatewayTemplate as APIGatewayEvent, // Websockets are included in APIG typedef: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/32855/files + "aws:cognitoUserPool": + cognitoUserPoolEventTemplate as DeepPartial, + "aws:websocket": apiGatewayTemplate as DeepPartial, // Websockets are included in APIG typedef: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/32855/files }; export default function createEvent( eventType: T, - body: typeof dictionary[T], + body: typeof dictionary[T] ): typeof dictionary[T] { const event = dictionary[eventType]; let generatedEvent = {}; diff --git a/package-lock.json b/package-lock.json index eaa1441..9acf112 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@serverless/event-mocks", - "version": "0.0.1", + "version": "1.1.1", "lockfileVersion": 1, "requires": true, "dependencies": {