diff --git a/.gitignore b/.gitignore index 76add87..52fb69d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules -dist \ No newline at end of file +dist +yarn.lock \ No newline at end of file diff --git a/lib/index.spec.ts b/lib/index.spec.ts index 5bd5a37..247b362 100644 --- a/lib/index.spec.ts +++ b/lib/index.spec.ts @@ -1,4 +1,5 @@ import { expect } from "chai"; +import { get } from "lodash"; import createEvent from "./index"; describe("creating a new SNS event", () => { @@ -11,9 +12,9 @@ describe("creating a new SNS event", () => { }, }, ], - } as any); - expect(event.Records[0].Sns.Message).to.equal("trigger-email"); - expect(event.Records[0].Sns.Type).to.equal("Notification"); + }); + expect(get(event, "Records[0].Sns.Message")).to.equal("trigger-email"); + expect(get(event, "Records[0].Sns.Type")).to.equal("Notification"); }); }); @@ -27,10 +28,10 @@ describe("createSqsEvent()", () => { }), }, ], - } as any); + }); - expect(event.Records[0].body).to.equal("{\"foo\":\"bar\"}"); - expect(event.Records[0].eventSource).to.equal("aws:sqs"); + expect(get(event, "Records[0].body")).to.equal('{"foo":"bar"}'); + expect(get(event, "Records[0].eventSource")).to.equal("aws:sqs"); }); }); @@ -41,7 +42,7 @@ describe("createApigEvent()", () => { first_name: "Sam", last_name: "Smith", }), - } as any); + }); const parsedBody = JSON.parse(event.body || ""); expect(parsedBody.first_name).to.equal("Sam"); @@ -61,13 +62,13 @@ describe("createWebsocketEvent()", () => { connectedAt: 123, connectionId: "abc123", }, - } as any); + }); const parsedBody = JSON.parse(event.body || ""); expect(parsedBody.first_name).to.equal("Sam"); expect(parsedBody.last_name).to.equal("Smith"); - expect(event.requestContext.connectedAt).to.equal(123); - expect(event.requestContext.connectionId).to.equal("abc123"); + expect(get(event, "requestContext.connectedAt")).to.equal(123); + expect(get(event, "requestContext.connectionId")).to.equal("abc123"); }); }); @@ -86,11 +87,11 @@ describe("createS3Event()", () => { }, }, ], - } as any); + }); - expect(event.Records[0].s3.bucket.name).to.equal("my-bucket-name"); - expect(event.Records[0].s3.object.key).to.equal("object-key"); - expect(event.Records[0].eventName).to.equal("ObjectCreated:Put"); + expect(get(event, "Records[0].s3.bucket.name")).to.equal("my-bucket-name"); + expect(get(event, "Records[0].s3.object.key")).to.equal("object-key"); + expect(get(event, "Records[0].eventName")).to.equal("ObjectCreated:Put"); }); it("should return S3 mocked event without side-effect", () => { @@ -107,7 +108,7 @@ describe("createS3Event()", () => { }, }, ], - } as any); + }); const event2 = createEvent("aws:s3", { Records: [ @@ -122,12 +123,12 @@ describe("createS3Event()", () => { }, }, ], - } as any); + }); - expect(event.Records[0].s3.bucket.name).to.equal("my-bucket-name"); - expect(event.Records[0].s3.object.key).to.equal("object-key"); - expect(event2.Records[0].s3.object.key).to.equal("object-key-2"); - expect(event.Records[0].eventName).to.equal("ObjectCreated:Put"); + expect(get(event, "Records[0].s3.bucket.name")).to.equal("my-bucket-name"); + expect(get(event, "Records[0].s3.object.key")).to.equal("object-key"); + expect(get(event2, "Records[0].s3.object.key")).to.equal("object-key-2"); + expect(get(event, "Records[0].eventName")).to.equal("ObjectCreated:Put"); }); }); @@ -135,7 +136,7 @@ describe("createScheduledEvent()", () => { it("should return Scheduled mocked event", () => { const event = createEvent("aws:scheduled", { region: "us-west-2", - } as any); + }); expect(event.region).to.equal("us-west-2"); expect(event["detail-type"]).to.equal("Scheduled Event"); @@ -152,10 +153,12 @@ describe("createKinesisEvent()", () => { }, }, ], - } as any); + }); expect( - Buffer.from(event.Records[0].kinesis.data, "base64").toString("ascii"), + Buffer.from(get(event, "Records[0].kinesis.data"), "base64").toString( + "ascii" + ) ).to.equal("kinesis test"); }); }); @@ -164,8 +167,8 @@ describe("createCloudWatchEvent()", () => { it("should return a valid event", () => { const event = createEvent("aws:cloudWatch", { "detail-type": "Something has been deleted.", - "region": "us-east-1", - } as any); + region: "us-east-1", + }); expect(event["detail-type"]).to.equal("Something has been deleted."); expect(event.region).to.equal("us-east-1"); }); @@ -179,7 +182,7 @@ describe("createCloudWatchLogEvent()", () => { }, }) as any; expect(event.awslogs.data).to.equal( - "Some gzipped, then base64 encoded data", + "Some gzipped, then base64 encoded data" ); }); }); @@ -197,9 +200,9 @@ describe("createAlexaSkillEvent()", () => { }, }, }, - } as any); - expect(event.request.type).to.equal("CanFulfillIntentRequest"); - expect(event.context.System.device.deviceId).to.equal("myDevice"); + }); + expect(get(event, "request.type")).to.equal("CanFulfillIntentRequest"); + expect(get(event, "context.System.device.deviceId")).to.equal("myDevice"); }); }); @@ -209,8 +212,8 @@ describe("createAlexaSmartHomeEvent()", () => { payload: { switchControlAction: "TURN_OFF", }, - } as any); - expect(event.payload.switchControlAction).to.equal("TURN_OFF"); + }); + expect(get(event, "payload.switchControlAction")).to.equal("TURN_OFF"); }); }); @@ -222,7 +225,7 @@ describe("createIotEvent()", () => { be: "anything I want", }, }, - } as any); + }); expect(event.this.can.be).to.equal("anything I want"); }); }); @@ -231,7 +234,7 @@ describe("createCognitoPoolEvent()", () => { it("should return a valid event", () => { const event = createEvent("aws:cognitoUserPool", { userName: "notAJ", - } as any); + }); expect(event.userName).to.eql("notAJ"); }); }); diff --git a/lib/index.ts b/lib/index.ts index 1ffec5d..a7e2af6 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,4 +1,4 @@ -import { merge, cloneDeep, Dictionary } from "lodash"; +import { merge, cloneDeep } from "lodash"; import { APIGatewayEvent, ScheduledEvent, @@ -57,8 +57,8 @@ export const dictionary = { export default function createEvent( eventType: T, - body: typeof dictionary[T] -): typeof dictionary[T] { + body: (typeof dictionary)[T] +): (typeof dictionary)[T] { const event = dictionary[eventType]; let generatedEvent = {}; if (event) { diff --git a/package.json b/package.json index 2d56031..99bcd2f 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,9 @@ "author": "Serverless, Inc.", "license": "Apache-2.0", "devDependencies": { - "@types/aws-lambda": "^8.10.115", - "@types/chai": "^4.3.5", + "@types/aws-lambda": "8.10.24", + "@types/chai": "~4.1.7", + "@types/lodash": "4.14.123", "@types/mocha": "^5.2.7", "@types/node": "^11.15.54", "aws-lambda": "^0.1.2", @@ -26,10 +27,9 @@ "ts-mocha": "^6.0.0", "ts-node": "^8.10.2", "tslint": "^5.20.1", - "typescript": "^3.9.10" + "typescript": "~3.4.5" }, "dependencies": { - "@types/lodash": "^4.14.194", - "lodash": "^4.17.21" + "lodash": "^4.17.11" } } diff --git a/tsconfig.json b/tsconfig.json index c90a1b3..48182fa 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,8 +11,6 @@ "esModuleInterop": true, "resolveJsonModule": true }, - "typeRoots": [ - "node_modules/@types", - "./types" - ] + "exclude": ["node_modules", "dist"], + "include": ["lib"] }