@alanszp/eventbridge-client 7.4.2 → 7.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { ILogger } from "@alanszp/logger";
2
2
  import { SharedContext } from "@alanszp/shared-context";
3
- import { PutEventEntryResponse } from "./aws";
3
+ import { PutEventEntryRequest, PutEventEntryResponse } from "./aws";
4
4
  /**
5
5
  * Represents an event that is sent in the Lara ecosystem.
6
6
  *
@@ -12,9 +12,12 @@ export declare type LaraEvent = {
12
12
  topic: string;
13
13
  body: Record<string, unknown>;
14
14
  };
15
+ export declare type PutEventFailedEntryResponse = PutEventEntryResponse & {
16
+ event: PutEventEntryRequest;
17
+ };
15
18
  export interface EventDispatchResult {
16
19
  successful: PutEventEntryResponse[];
17
- failed: PutEventEntryResponse[];
20
+ failed: PutEventFailedEntryResponse[];
18
21
  failedCount: number | undefined;
19
22
  }
20
23
  /**
@@ -35,41 +35,55 @@ class BasicEventbridgeClient {
35
35
  const eventsToSend = (0, lodash_1.chain)(events)
36
36
  .map((event) => (0, mapLaraEventToAWSEvent_1.mapLaraEventToAWSEvent)(event, this.env, this.appName, this.bus, logger, this.context))
37
37
  .compact()
38
- .chunk(MAX_BATCH_SIZE)
39
- .map((mappedEventsChunk) => ({
40
- Entries: mappedEventsChunk,
38
+ .map((event) => ({
39
+ Entries: [event],
41
40
  }))
42
41
  .value();
43
- const results = yield Promise.all(eventsToSend.map((events) => aws_1.eventbridgeClient
44
- .putEvents(events)
42
+ /**
43
+ * Eventbridge in US-EAST-1 has a limit of 10.000 events/second.
44
+ * We should be fine without a limiter here.
45
+ */
46
+ const results = yield Promise.all(eventsToSend.map((singleEventArray) => aws_1.eventbridgeClient
47
+ .putEvents(singleEventArray)
45
48
  .promise()
46
- .then((...res) => {
47
- logger.info(JSON.stringify(res));
48
- return res[0];
49
- })
50
- .catch((...err) => {
51
- logger.error(JSON.stringify(err));
52
- return err[0];
53
- })));
49
+ .then(({ Entries, FailedEntryCount }) => ({
50
+ FailedEntryCount,
51
+ Entries: [
52
+ Object.assign(Object.assign({}, (Entries || [])[0]), { event: singleEventArray.Entries[0] }),
53
+ ],
54
+ }))
55
+ .catch((error) => ({
56
+ FailedEntryCount: 1,
57
+ Entries: [
58
+ {
59
+ EventId: undefined,
60
+ ErrorMessage: JSON.stringify(error),
61
+ event: singleEventArray.Entries[0],
62
+ },
63
+ ],
64
+ }))));
54
65
  const aggregatedResult = results.reduce((prev, act) => {
55
66
  const { Entries: NewEntries, FailedEntryCount: newFailedCount } = act;
56
- const { Entries, FailedEntryCount } = prev;
67
+ const { eventsDispatched, failedCount } = prev;
57
68
  return {
58
- Entries: [...(Entries || []), ...(NewEntries || [])],
59
- FailedEntryCount: (FailedEntryCount || 0) + (newFailedCount || 0),
69
+ eventsDispatched: [
70
+ ...(eventsDispatched || []),
71
+ ...(NewEntries || []),
72
+ ],
73
+ failedCount: (failedCount || 0) + (newFailedCount || 0),
60
74
  };
61
75
  }, {
62
- Entries: [],
63
- FailedEntryCount: 0,
76
+ eventsDispatched: [],
77
+ failedCount: 0,
64
78
  });
65
- const { Entries, FailedEntryCount: failedCount } = aggregatedResult;
66
- const [successful, failed] = (0, lodash_1.partition)(Entries, (entry) => entry.EventId);
79
+ const { eventsDispatched, failedCount } = aggregatedResult;
80
+ const [successful, failed] = (0, lodash_1.partition)(eventsDispatched, (entry) => entry.EventId);
67
81
  logger.info("eventbridge.client.sendEvents.end", {
68
82
  successful,
69
83
  failed,
70
84
  });
71
85
  return {
72
- successful,
86
+ successful: successful.map((eventDispatched) => (0, lodash_1.omit)(eventDispatched, "event")),
73
87
  failed,
74
88
  failedCount,
75
89
  };
@@ -1 +1 @@
1
- {"version":3,"file":"basicEventbridgeClient.js","sourceRoot":"","sources":["../src/basicEventbridgeClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basicEventbridgeClient.js","sourceRoot":"","sources":["../src/basicEventbridgeClient.ts"],"names":[],"mappings":"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"}
@@ -14,61 +14,84 @@ const shared_context_1 = require("@alanszp/shared-context");
14
14
  const awsEventbridgeClient_1 = require("./aws/awsEventbridgeClient");
15
15
  const mockEventbridgeClient_1 = require("./mockEventbridgeClient");
16
16
  const eventbridgeFixture_1 = require("./mocks/fixtures/eventbridgeFixture");
17
- const { eventsToSend, allSuccessfulResponses, allUnsuccessfulResponses, sevenUnsuccessfulResponses, } = eventbridgeFixture_1.fifteenEventsFixture;
18
17
  jest.mock("./aws/awsEventbridgeClient");
19
18
  const client = new mockEventbridgeClient_1.MockEventbridgeClient("appName", "env", () => (0, logger_1.createMockLogger)({}), new shared_context_1.SharedContext(), "busName");
20
19
  describe("BasicEventbridgeClient", () => {
21
20
  describe("sendEvents", () => {
22
- describe("when there are more than 10 events", () => {
21
+ describe("when there are two events", () => {
23
22
  describe("when they're all successful", () => {
24
23
  it("should send two requests, aggregate results, and show no failures", () => __awaiter(void 0, void 0, void 0, function* () {
25
24
  awsEventbridgeClient_1.eventbridgeClient.putEvents
26
25
  .mockImplementationOnce((_) => ({
27
- promise: () => Promise.resolve(allSuccessfulResponses.firstResponse),
26
+ promise: () => Promise.resolve(eventbridgeFixture_1.twoSuccessfulResponses[0]),
28
27
  }))
29
28
  .mockImplementationOnce((_) => ({
30
- promise: () => Promise.resolve(allSuccessfulResponses.secondResponse),
29
+ promise: () => Promise.resolve(eventbridgeFixture_1.twoSuccessfulResponses[1]),
31
30
  }));
32
- const response = yield client.mockSendEvents(eventsToSend);
31
+ const response = yield client.mockSendEvents(eventbridgeFixture_1.twoEventsToSend);
33
32
  expect(awsEventbridgeClient_1.eventbridgeClient.putEvents).toHaveBeenCalledTimes(2);
34
33
  expect(response.failedCount).toBe(0);
35
- expect(response.successful.length).toBe(15);
34
+ expect(response.successful.length).toBe(2);
36
35
  expect(response.failed.length).toBe(0);
37
36
  }));
38
37
  });
39
- describe("when they're all successful", () => {
40
- it("should send two requests, aggregate results, and show fifteen failures", () => __awaiter(void 0, void 0, void 0, function* () {
38
+ describe("when they're all unsuccessful", () => {
39
+ it("should send two requests, aggregate results, and show two failures", () => __awaiter(void 0, void 0, void 0, function* () {
41
40
  awsEventbridgeClient_1.eventbridgeClient.putEvents
42
41
  .mockImplementationOnce((_) => ({
43
- promise: () => Promise.resolve(allUnsuccessfulResponses.firstResponse),
42
+ promise: () => Promise.resolve(eventbridgeFixture_1.twoUnsuccessfulResponses[0]),
44
43
  }))
45
44
  .mockImplementationOnce((_) => ({
46
- promise: () => Promise.resolve(allUnsuccessfulResponses.secondResponse),
45
+ promise: () => Promise.resolve(eventbridgeFixture_1.twoUnsuccessfulResponses[1]),
47
46
  }));
48
- const response = yield client.mockSendEvents(eventsToSend);
47
+ const response = yield client.mockSendEvents(eventbridgeFixture_1.twoEventsToSend);
49
48
  expect(awsEventbridgeClient_1.eventbridgeClient.putEvents).toHaveBeenCalledTimes(2);
50
- expect(response.failedCount).toBe(15);
49
+ expect(response.failedCount).toBe(2);
51
50
  expect(response.successful.length).toBe(0);
52
- expect(response.failed.length).toBe(15);
51
+ expect(response.failed.length).toBe(2);
52
+ expect(response.failed[0].event.DetailType).toBe(eventbridgeFixture_1.topics[0]);
53
+ expect(JSON.parse(response.failed[0].event.Detail || "")).toMatchObject(Object.assign(Object.assign({}, eventbridgeFixture_1.events[0]), { lch: "aws.eventbridge" }));
54
+ expect(response.failed[1].event.DetailType).toBe(eventbridgeFixture_1.topics[1]);
55
+ expect(JSON.parse(response.failed[1].event.Detail || "")).toMatchObject(Object.assign(Object.assign({}, eventbridgeFixture_1.events[1]), { lch: "aws.eventbridge" }));
53
56
  }));
54
57
  });
55
- describe("when eight are successful", () => {
56
- it("should send two requests, aggregate results, and show seven failures", () => __awaiter(void 0, void 0, void 0, function* () {
58
+ describe("when one isn't successful", () => {
59
+ it("should send two requests, aggregate results, and show one failure", () => __awaiter(void 0, void 0, void 0, function* () {
57
60
  awsEventbridgeClient_1.eventbridgeClient.putEvents
58
61
  .mockImplementationOnce((_) => ({
59
- promise: () => Promise.resolve(sevenUnsuccessfulResponses.firstResponse),
62
+ promise: () => Promise.resolve(eventbridgeFixture_1.oneSuccessfulOneUnsuccessfulResponses[0]),
60
63
  }))
61
64
  .mockImplementationOnce((_) => ({
62
- promise: () => Promise.resolve(sevenUnsuccessfulResponses.secondResponse),
65
+ promise: () => Promise.resolve(eventbridgeFixture_1.oneSuccessfulOneUnsuccessfulResponses[1]),
63
66
  }));
64
- const response = yield client.mockSendEvents(eventsToSend);
67
+ const response = yield client.mockSendEvents(eventbridgeFixture_1.twoEventsToSend);
65
68
  expect(awsEventbridgeClient_1.eventbridgeClient.putEvents).toHaveBeenCalledTimes(2);
66
- expect(response.failedCount).toBe(7);
67
- expect(response.successful.length).toBe(8);
68
- expect(response.failed.length).toBe(7);
69
+ expect(response.failedCount).toBe(1);
70
+ expect(response.successful.length).toBe(1);
71
+ expect(response.failed.length).toBe(1);
72
+ expect(response.failed[0].event.DetailType).toBe(eventbridgeFixture_1.topics[1]);
73
+ expect(JSON.parse(response.failed[0].event.Detail || "")).toMatchObject(Object.assign(Object.assign({}, eventbridgeFixture_1.events[1]), { lch: "aws.eventbridge" }));
69
74
  }));
70
75
  });
71
76
  });
77
+ describe("when a request to eventbridge fails", () => {
78
+ it("shouldn't break following requests and should count as a failure", () => __awaiter(void 0, void 0, void 0, function* () {
79
+ awsEventbridgeClient_1.eventbridgeClient.putEvents
80
+ .mockImplementationOnce((_) => ({
81
+ promise: () => Promise.reject(),
82
+ }))
83
+ .mockImplementationOnce((_) => ({
84
+ promise: () => Promise.resolve(eventbridgeFixture_1.twoSuccessfulResponses[1]),
85
+ }));
86
+ const response = yield client.mockSendEvents(eventbridgeFixture_1.twoEventsToSend);
87
+ expect(awsEventbridgeClient_1.eventbridgeClient.putEvents).toHaveBeenCalledTimes(2);
88
+ expect(response.failedCount).toBe(1);
89
+ expect(response.successful.length).toBe(1);
90
+ expect(response.failed.length).toBe(1);
91
+ expect(response.failed[0].event.DetailType).toBe(eventbridgeFixture_1.topics[0]);
92
+ expect(JSON.parse(response.failed[0].event.Detail || "")).toMatchObject(Object.assign(Object.assign({}, eventbridgeFixture_1.events[0]), { lch: "aws.eventbridge" }));
93
+ }));
94
+ });
72
95
  });
73
96
  });
74
97
  //# sourceMappingURL=basicEventbridgeClient.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"basicEventbridgeClient.test.js","sourceRoot":"","sources":["../src/basicEventbridgeClient.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basicEventbridgeClient.test.js","sourceRoot":"","sources":["../src/basicEventbridgeClient.test.ts"],"names":[],"mappings":"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"}
@@ -1,54 +1,33 @@
1
- export declare const fifteenEventsFixture: {
2
- eventsToSend: {
3
- topic: string;
4
- body: {
5
- property: boolean;
6
- };
7
- }[];
8
- allSuccessfulResponses: {
9
- firstResponse: {
10
- Entries: {
11
- EventId: number;
12
- }[];
13
- FailedEntryCount: number;
14
- };
15
- secondResponse: {
16
- Entries: {
17
- EventId: number;
18
- }[];
19
- FailedEntryCount: number;
20
- };
21
- };
22
- allUnsuccessfulResponses: {
23
- firstResponse: {
24
- Entries: {
25
- EventId: null;
26
- }[];
27
- FailedEntryCount: number;
28
- };
29
- secondResponse: {
30
- Entries: {
31
- EventId: null;
32
- }[];
33
- FailedEntryCount: number;
34
- };
1
+ export declare const topics: string[];
2
+ export declare const events: {
3
+ property: string;
4
+ }[];
5
+ export declare const twoEventsToSend: {
6
+ topic: string;
7
+ body: {
8
+ property: string;
35
9
  };
36
- sevenUnsuccessfulResponses: {
37
- firstResponse: {
38
- Entries: ({
39
- EventId: number;
40
- } | {
41
- EventId: null;
42
- })[];
43
- FailedEntryCount: number;
44
- };
45
- secondResponse: {
46
- Entries: ({
47
- EventId: number;
48
- } | {
49
- EventId: null;
50
- })[];
51
- FailedEntryCount: number;
52
- };
53
- };
54
- };
10
+ }[];
11
+ export declare const twoSuccessfulResponses: {
12
+ Entries: {
13
+ EventId: number;
14
+ }[];
15
+ FailedEntryCount: number;
16
+ }[];
17
+ export declare const twoUnsuccessfulResponses: {
18
+ Entries: {
19
+ EventId: undefined;
20
+ }[];
21
+ FailedEntryCount: number;
22
+ }[];
23
+ export declare const oneSuccessfulOneUnsuccessfulResponses: ({
24
+ Entries: {
25
+ EventId: number;
26
+ }[];
27
+ FailedEntryCount: number;
28
+ } | {
29
+ Entries: {
30
+ EventId: null;
31
+ }[];
32
+ FailedEntryCount: number;
33
+ })[];
@@ -1,104 +1,40 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fifteenEventsFixture = void 0;
4
- exports.fifteenEventsFixture = {
5
- eventsToSend: [
6
- { topic: "topic", body: { property: true } },
7
- { topic: "topic", body: { property: true } },
8
- { topic: "topic", body: { property: true } },
9
- { topic: "topic", body: { property: true } },
10
- { topic: "topic", body: { property: true } },
11
- { topic: "topic", body: { property: true } },
12
- { topic: "topic", body: { property: true } },
13
- { topic: "topic", body: { property: true } },
14
- { topic: "topic", body: { property: true } },
15
- { topic: "topic", body: { property: true } },
16
- { topic: "topic", body: { property: true } },
17
- { topic: "topic", body: { property: true } },
18
- { topic: "topic", body: { property: true } },
19
- { topic: "topic", body: { property: true } },
20
- { topic: "topic", body: { property: true } },
21
- ],
22
- allSuccessfulResponses: {
23
- firstResponse: {
24
- Entries: [
25
- { EventId: 1 },
26
- { EventId: 2 },
27
- { EventId: 3 },
28
- { EventId: 4 },
29
- { EventId: 5 },
30
- { EventId: 6 },
31
- { EventId: 7 },
32
- { EventId: 8 },
33
- { EventId: 9 },
34
- { EventId: 10 },
35
- ],
36
- FailedEntryCount: 0,
37
- },
38
- secondResponse: {
39
- Entries: [
40
- { EventId: 11 },
41
- { EventId: 12 },
42
- { EventId: 13 },
43
- { EventId: 14 },
44
- { EventId: 15 },
45
- ],
46
- FailedEntryCount: 0,
47
- },
3
+ exports.oneSuccessfulOneUnsuccessfulResponses = exports.twoUnsuccessfulResponses = exports.twoSuccessfulResponses = exports.twoEventsToSend = exports.events = exports.topics = void 0;
4
+ exports.topics = ["topic1", "topic2"];
5
+ exports.events = [{ property: "1" }, { property: "2" }];
6
+ exports.twoEventsToSend = [
7
+ { topic: exports.topics[0], body: exports.events[0] },
8
+ { topic: exports.topics[1], body: exports.events[1] },
9
+ ];
10
+ exports.twoSuccessfulResponses = [
11
+ {
12
+ Entries: [{ EventId: 1 }],
13
+ FailedEntryCount: 0,
48
14
  },
49
- allUnsuccessfulResponses: {
50
- firstResponse: {
51
- Entries: [
52
- { EventId: null },
53
- { EventId: null },
54
- { EventId: null },
55
- { EventId: null },
56
- { EventId: null },
57
- { EventId: null },
58
- { EventId: null },
59
- { EventId: null },
60
- { EventId: null },
61
- { EventId: null },
62
- ],
63
- FailedEntryCount: 10,
64
- },
65
- secondResponse: {
66
- Entries: [
67
- { EventId: null },
68
- { EventId: null },
69
- { EventId: null },
70
- { EventId: null },
71
- { EventId: null },
72
- ],
73
- FailedEntryCount: 5,
74
- },
15
+ {
16
+ Entries: [{ EventId: 2 }],
17
+ FailedEntryCount: 0,
75
18
  },
76
- sevenUnsuccessfulResponses: {
77
- firstResponse: {
78
- Entries: [
79
- { EventId: 1 },
80
- { EventId: 2 },
81
- { EventId: 3 },
82
- { EventId: 4 },
83
- { EventId: null },
84
- { EventId: null },
85
- { EventId: null },
86
- { EventId: null },
87
- { EventId: null },
88
- { EventId: null },
89
- ],
90
- FailedEntryCount: 6,
91
- },
92
- secondResponse: {
93
- Entries: [
94
- { EventId: 5 },
95
- { EventId: 6 },
96
- { EventId: 8 },
97
- { EventId: null },
98
- { EventId: 7 },
99
- ],
100
- FailedEntryCount: 1,
101
- },
19
+ ];
20
+ exports.twoUnsuccessfulResponses = [
21
+ {
22
+ Entries: [{ EventId: undefined }],
23
+ FailedEntryCount: 1,
102
24
  },
103
- };
25
+ {
26
+ Entries: [{ EventId: undefined }],
27
+ FailedEntryCount: 1,
28
+ },
29
+ ];
30
+ exports.oneSuccessfulOneUnsuccessfulResponses = [
31
+ {
32
+ Entries: [{ EventId: 1 }],
33
+ FailedEntryCount: 0,
34
+ },
35
+ {
36
+ Entries: [{ EventId: null }],
37
+ FailedEntryCount: 1,
38
+ },
39
+ ];
104
40
  //# sourceMappingURL=eventbridgeFixture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eventbridgeFixture.js","sourceRoot":"","sources":["../../../src/mocks/fixtures/eventbridgeFixture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eventbridgeFixture.js","sourceRoot":"","sources":["../../../src/mocks/fixtures/eventbridgeFixture.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE9B,QAAA,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;AAEhD,QAAA,eAAe,GAAG;IAC7B,EAAE,KAAK,EAAE,cAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAM,CAAC,CAAC,CAAC,EAAE;IACrC,EAAE,KAAK,EAAE,cAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAM,CAAC,CAAC,CAAC,EAAE;CACtC,CAAC;AAEW,QAAA,sBAAsB,GAAG;IACpC;QACE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACzB,gBAAgB,EAAE,CAAC;KACpB;IACD;QACE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACzB,gBAAgB,EAAE,CAAC;KACpB;CACF,CAAC;AAEW,QAAA,wBAAwB,GAAG;IACtC;QACE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QACjC,gBAAgB,EAAE,CAAC;KACpB;IACD;QACE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QACjC,gBAAgB,EAAE,CAAC;KACpB;CACF,CAAC;AAEW,QAAA,qCAAqC,GAAG;IACnD;QACE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACzB,gBAAgB,EAAE,CAAC;KACpB;IACD;QACE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5B,gBAAgB,EAAE,CAAC;KACpB;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alanszp/eventbridge-client",
3
- "version": "7.4.2",
3
+ "version": "7.5.0",
4
4
  "description": "Alan's basic eventbridge client.",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -35,5 +35,5 @@
35
35
  "cuid": "^2.1.8",
36
36
  "lodash": "^4.17.21"
37
37
  },
38
- "gitHead": "9674964e69a160b1b86d9a5a5dcd37bc81d2b2b5"
38
+ "gitHead": "1cdd9b6c453ac10c3dd29772f6538284ad5df605"
39
39
  }
@@ -2,14 +2,14 @@ import { createMockLogger } from "@alanszp/logger";
2
2
  import { SharedContext } from "@alanszp/shared-context";
3
3
  import { eventbridgeClient } from "./aws/awsEventbridgeClient";
4
4
  import { MockEventbridgeClient } from "./mockEventbridgeClient";
5
- import { fifteenEventsFixture } from "./mocks/fixtures/eventbridgeFixture";
6
-
7
- const {
8
- eventsToSend,
9
- allSuccessfulResponses,
10
- allUnsuccessfulResponses,
11
- sevenUnsuccessfulResponses,
12
- } = fifteenEventsFixture;
5
+ import {
6
+ twoEventsToSend,
7
+ twoSuccessfulResponses,
8
+ twoUnsuccessfulResponses,
9
+ oneSuccessfulOneUnsuccessfulResponses,
10
+ topics,
11
+ events,
12
+ } from "./mocks/fixtures/eventbridgeFixture";
13
13
 
14
14
  jest.mock("./aws/awsEventbridgeClient");
15
15
 
@@ -23,67 +23,111 @@ const client = new MockEventbridgeClient(
23
23
 
24
24
  describe("BasicEventbridgeClient", () => {
25
25
  describe("sendEvents", () => {
26
- describe("when there are more than 10 events", () => {
26
+ describe("when there are two events", () => {
27
27
  describe("when they're all successful", () => {
28
28
  it("should send two requests, aggregate results, and show no failures", async () => {
29
29
  (eventbridgeClient.putEvents as jest.Mock)
30
30
  .mockImplementationOnce((_) => ({
31
- promise: () =>
32
- Promise.resolve(allSuccessfulResponses.firstResponse),
31
+ promise: () => Promise.resolve(twoSuccessfulResponses[0]),
33
32
  }))
34
33
  .mockImplementationOnce((_) => ({
35
- promise: () =>
36
- Promise.resolve(allSuccessfulResponses.secondResponse),
34
+ promise: () => Promise.resolve(twoSuccessfulResponses[1]),
37
35
  }));
38
36
 
39
- const response = await client.mockSendEvents(eventsToSend);
37
+ const response = await client.mockSendEvents(twoEventsToSend);
40
38
 
41
39
  expect(eventbridgeClient.putEvents).toHaveBeenCalledTimes(2);
42
40
  expect(response.failedCount).toBe(0);
43
- expect(response.successful.length).toBe(15);
41
+ expect(response.successful.length).toBe(2);
44
42
  expect(response.failed.length).toBe(0);
45
43
  });
46
44
  });
47
- describe("when they're all successful", () => {
48
- it("should send two requests, aggregate results, and show fifteen failures", async () => {
45
+
46
+ describe("when they're all unsuccessful", () => {
47
+ it("should send two requests, aggregate results, and show two failures", async () => {
49
48
  (eventbridgeClient.putEvents as jest.Mock)
50
49
  .mockImplementationOnce((_) => ({
51
- promise: () =>
52
- Promise.resolve(allUnsuccessfulResponses.firstResponse),
50
+ promise: () => Promise.resolve(twoUnsuccessfulResponses[0]),
53
51
  }))
54
52
  .mockImplementationOnce((_) => ({
55
- promise: () =>
56
- Promise.resolve(allUnsuccessfulResponses.secondResponse),
53
+ promise: () => Promise.resolve(twoUnsuccessfulResponses[1]),
57
54
  }));
58
55
 
59
- const response = await client.mockSendEvents(eventsToSend);
56
+ const response = await client.mockSendEvents(twoEventsToSend);
60
57
 
61
58
  expect(eventbridgeClient.putEvents).toHaveBeenCalledTimes(2);
62
- expect(response.failedCount).toBe(15);
59
+ expect(response.failedCount).toBe(2);
63
60
  expect(response.successful.length).toBe(0);
64
- expect(response.failed.length).toBe(15);
61
+ expect(response.failed.length).toBe(2);
62
+ expect(response.failed[0].event.DetailType).toBe(topics[0]);
63
+ expect(
64
+ JSON.parse(response.failed[0].event.Detail || "")
65
+ ).toMatchObject({
66
+ ...events[0],
67
+ lch: "aws.eventbridge",
68
+ });
69
+ expect(response.failed[1].event.DetailType).toBe(topics[1]);
70
+ expect(
71
+ JSON.parse(response.failed[1].event.Detail || "")
72
+ ).toMatchObject({
73
+ ...events[1],
74
+ lch: "aws.eventbridge",
75
+ });
65
76
  });
66
77
  });
67
- describe("when eight are successful", () => {
68
- it("should send two requests, aggregate results, and show seven failures", async () => {
78
+
79
+ describe("when one isn't successful", () => {
80
+ it("should send two requests, aggregate results, and show one failure", async () => {
69
81
  (eventbridgeClient.putEvents as jest.Mock)
70
82
  .mockImplementationOnce((_) => ({
71
83
  promise: () =>
72
- Promise.resolve(sevenUnsuccessfulResponses.firstResponse),
84
+ Promise.resolve(oneSuccessfulOneUnsuccessfulResponses[0]),
73
85
  }))
74
86
  .mockImplementationOnce((_) => ({
75
87
  promise: () =>
76
- Promise.resolve(sevenUnsuccessfulResponses.secondResponse),
88
+ Promise.resolve(oneSuccessfulOneUnsuccessfulResponses[1]),
77
89
  }));
78
90
 
79
- const response = await client.mockSendEvents(eventsToSend);
91
+ const response = await client.mockSendEvents(twoEventsToSend);
80
92
 
81
93
  expect(eventbridgeClient.putEvents).toHaveBeenCalledTimes(2);
82
- expect(response.failedCount).toBe(7);
83
- expect(response.successful.length).toBe(8);
84
- expect(response.failed.length).toBe(7);
94
+ expect(response.failedCount).toBe(1);
95
+ expect(response.successful.length).toBe(1);
96
+ expect(response.failed.length).toBe(1);
97
+ expect(response.failed[0].event.DetailType).toBe(topics[1]);
98
+ expect(
99
+ JSON.parse(response.failed[0].event.Detail || "")
100
+ ).toMatchObject({
101
+ ...events[1],
102
+ lch: "aws.eventbridge",
103
+ });
85
104
  });
86
105
  });
87
106
  });
107
+ describe("when a request to eventbridge fails", () => {
108
+ it("shouldn't break following requests and should count as a failure", async () => {
109
+ (eventbridgeClient.putEvents as jest.Mock)
110
+ .mockImplementationOnce((_) => ({
111
+ promise: () => Promise.reject(),
112
+ }))
113
+ .mockImplementationOnce((_) => ({
114
+ promise: () => Promise.resolve(twoSuccessfulResponses[1]),
115
+ }));
116
+
117
+ const response = await client.mockSendEvents(twoEventsToSend);
118
+
119
+ expect(eventbridgeClient.putEvents).toHaveBeenCalledTimes(2);
120
+ expect(response.failedCount).toBe(1);
121
+ expect(response.successful.length).toBe(1);
122
+ expect(response.failed.length).toBe(1);
123
+ expect(response.failed[0].event.DetailType).toBe(topics[0]);
124
+ expect(JSON.parse(response.failed[0].event.Detail || "")).toMatchObject(
125
+ {
126
+ ...events[0],
127
+ lch: "aws.eventbridge",
128
+ }
129
+ );
130
+ });
131
+ });
88
132
  });
89
133
  });
@@ -1,7 +1,12 @@
1
1
  import { ILogger } from "@alanszp/logger";
2
2
  import { SharedContext } from "@alanszp/shared-context";
3
- import { chain, chunk, compact, partition } from "lodash";
4
- import { eventbridgeClient, EventRequest, PutEventEntryResponse } from "./aws";
3
+ import { chain, chunk, compact, omit, partition } from "lodash";
4
+ import {
5
+ eventbridgeClient,
6
+ EventRequest,
7
+ PutEventEntryRequest,
8
+ PutEventEntryResponse,
9
+ } from "./aws";
5
10
  import { mapLaraEventToAWSEvent } from "./helpers/mapLaraEventToAWSEvent";
6
11
 
7
12
  /**
@@ -16,9 +21,13 @@ export type LaraEvent = {
16
21
  body: Record<string, unknown>;
17
22
  };
18
23
 
24
+ export type PutEventFailedEntryResponse = PutEventEntryResponse & {
25
+ event: PutEventEntryRequest;
26
+ };
27
+
19
28
  export interface EventDispatchResult {
20
29
  successful: PutEventEntryResponse[];
21
- failed: PutEventEntryResponse[];
30
+ failed: PutEventFailedEntryResponse[];
22
31
  failedCount: number | undefined;
23
32
  }
24
33
 
@@ -70,47 +79,67 @@ export class BasicEventbridgeClient {
70
79
  )
71
80
  )
72
81
  .compact()
73
- .chunk(MAX_BATCH_SIZE)
74
- .map((mappedEventsChunk) => ({
75
- Entries: mappedEventsChunk,
82
+ .map((event) => ({
83
+ Entries: [event],
76
84
  }))
77
85
  .value();
78
86
 
87
+ /**
88
+ * Eventbridge in US-EAST-1 has a limit of 10.000 events/second.
89
+ * We should be fine without a limiter here.
90
+ */
79
91
  const results = await Promise.all(
80
- eventsToSend.map((events) =>
92
+ eventsToSend.map((singleEventArray) =>
81
93
  eventbridgeClient
82
- .putEvents(events)
94
+ .putEvents(singleEventArray)
83
95
  .promise()
84
- .then((...res) => {
85
- logger.info(JSON.stringify(res));
86
- return res[0];
87
- })
88
- .catch((...err) => {
89
- logger.error(JSON.stringify(err));
90
- return err[0];
91
- })
96
+ .then(({ Entries, FailedEntryCount }) => ({
97
+ FailedEntryCount,
98
+ Entries: [
99
+ {
100
+ ...(Entries || [])[0],
101
+ event: singleEventArray.Entries[0],
102
+ },
103
+ ],
104
+ }))
105
+ .catch((error) => ({
106
+ FailedEntryCount: 1,
107
+ Entries: [
108
+ {
109
+ EventId: undefined,
110
+ ErrorMessage: JSON.stringify(error),
111
+ event: singleEventArray.Entries[0],
112
+ },
113
+ ],
114
+ }))
92
115
  )
93
116
  );
94
117
 
95
118
  const aggregatedResult = results.reduce(
96
119
  (prev, act) => {
97
120
  const { Entries: NewEntries, FailedEntryCount: newFailedCount } = act;
98
- const { Entries, FailedEntryCount } = prev;
121
+ const { eventsDispatched, failedCount } = prev;
99
122
 
100
123
  return {
101
- Entries: [...(Entries || []), ...(NewEntries || [])],
102
- FailedEntryCount: (FailedEntryCount || 0) + (newFailedCount || 0),
124
+ eventsDispatched: [
125
+ ...(eventsDispatched || []),
126
+ ...(NewEntries || []),
127
+ ],
128
+ failedCount: (failedCount || 0) + (newFailedCount || 0),
103
129
  };
104
130
  },
105
131
  {
106
- Entries: [],
107
- FailedEntryCount: 0,
132
+ eventsDispatched: [],
133
+ failedCount: 0,
108
134
  }
109
135
  );
110
136
 
111
- const { Entries, FailedEntryCount: failedCount } = aggregatedResult;
137
+ const { eventsDispatched, failedCount } = aggregatedResult;
112
138
 
113
- const [successful, failed] = partition(Entries, (entry) => entry.EventId);
139
+ const [successful, failed] = partition(
140
+ eventsDispatched,
141
+ (entry) => entry.EventId
142
+ );
114
143
 
115
144
  logger.info("eventbridge.client.sendEvents.end", {
116
145
  successful,
@@ -118,7 +147,9 @@ export class BasicEventbridgeClient {
118
147
  });
119
148
 
120
149
  return {
121
- successful,
150
+ successful: successful.map((eventDispatched) =>
151
+ omit(eventDispatched, "event")
152
+ ),
122
153
  failed,
123
154
  failedCount,
124
155
  };
@@ -1,105 +1,41 @@
1
- export const fifteenEventsFixture = {
2
- eventsToSend: [
3
- { topic: "topic", body: { property: true } },
4
- { topic: "topic", body: { property: true } },
5
- { topic: "topic", body: { property: true } },
6
- { topic: "topic", body: { property: true } },
7
- { topic: "topic", body: { property: true } },
8
- { topic: "topic", body: { property: true } },
9
- { topic: "topic", body: { property: true } },
10
- { topic: "topic", body: { property: true } },
11
- { topic: "topic", body: { property: true } },
12
- { topic: "topic", body: { property: true } },
13
- { topic: "topic", body: { property: true } },
14
- { topic: "topic", body: { property: true } },
15
- { topic: "topic", body: { property: true } },
16
- { topic: "topic", body: { property: true } },
17
- { topic: "topic", body: { property: true } },
18
- ],
1
+ export const topics = ["topic1", "topic2"];
19
2
 
20
- allSuccessfulResponses: {
21
- firstResponse: {
22
- Entries: [
23
- { EventId: 1 },
24
- { EventId: 2 },
25
- { EventId: 3 },
26
- { EventId: 4 },
27
- { EventId: 5 },
28
- { EventId: 6 },
29
- { EventId: 7 },
30
- { EventId: 8 },
31
- { EventId: 9 },
32
- { EventId: 10 },
33
- ],
34
- FailedEntryCount: 0,
35
- },
3
+ export const events = [{ property: "1" }, { property: "2" }];
36
4
 
37
- secondResponse: {
38
- Entries: [
39
- { EventId: 11 },
40
- { EventId: 12 },
41
- { EventId: 13 },
42
- { EventId: 14 },
43
- { EventId: 15 },
44
- ],
45
- FailedEntryCount: 0,
46
- },
47
- },
5
+ export const twoEventsToSend = [
6
+ { topic: topics[0], body: events[0] },
7
+ { topic: topics[1], body: events[1] },
8
+ ];
48
9
 
49
- allUnsuccessfulResponses: {
50
- firstResponse: {
51
- Entries: [
52
- { EventId: null },
53
- { EventId: null },
54
- { EventId: null },
55
- { EventId: null },
56
- { EventId: null },
57
- { EventId: null },
58
- { EventId: null },
59
- { EventId: null },
60
- { EventId: null },
61
- { EventId: null },
62
- ],
63
- FailedEntryCount: 10,
64
- },
65
- secondResponse: {
66
- Entries: [
67
- { EventId: null },
68
- { EventId: null },
69
- { EventId: null },
70
- { EventId: null },
71
- { EventId: null },
72
- ],
73
- FailedEntryCount: 5,
74
- },
10
+ export const twoSuccessfulResponses = [
11
+ {
12
+ Entries: [{ EventId: 1 }],
13
+ FailedEntryCount: 0,
14
+ },
15
+ {
16
+ Entries: [{ EventId: 2 }],
17
+ FailedEntryCount: 0,
75
18
  },
19
+ ];
76
20
 
77
- sevenUnsuccessfulResponses: {
78
- firstResponse: {
79
- Entries: [
80
- { EventId: 1 },
81
- { EventId: 2 },
82
- { EventId: 3 },
83
- { EventId: 4 },
84
- { EventId: null },
85
- { EventId: null },
86
- { EventId: null },
87
- { EventId: null },
88
- { EventId: null },
89
- { EventId: null },
90
- ],
91
- FailedEntryCount: 6,
92
- },
21
+ export const twoUnsuccessfulResponses = [
22
+ {
23
+ Entries: [{ EventId: undefined }],
24
+ FailedEntryCount: 1,
25
+ },
26
+ {
27
+ Entries: [{ EventId: undefined }],
28
+ FailedEntryCount: 1,
29
+ },
30
+ ];
93
31
 
94
- secondResponse: {
95
- Entries: [
96
- { EventId: 5 },
97
- { EventId: 6 },
98
- { EventId: 8 },
99
- { EventId: null },
100
- { EventId: 7 },
101
- ],
102
- FailedEntryCount: 1,
103
- },
32
+ export const oneSuccessfulOneUnsuccessfulResponses = [
33
+ {
34
+ Entries: [{ EventId: 1 }],
35
+ FailedEntryCount: 0,
36
+ },
37
+ {
38
+ Entries: [{ EventId: null }],
39
+ FailedEntryCount: 1,
104
40
  },
105
- };
41
+ ];