-
-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Thomas Aribart
committed
Aug 25, 2023
1 parent
1e41263
commit 581d87a
Showing
10 changed files
with
163 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
43 changes: 43 additions & 0 deletions
43
packages/event-bridge-s3-message-bus-adapter/src/fetch.d.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
import type { | ||
FormData as _FormData, | ||
Headers as _Headers, | ||
HeadersInit as _HeadersInit, | ||
BodyInit as _BodyInit, | ||
Request as _Request, | ||
RequestInit as _RequestInit, | ||
RequestInfo as _RequestInfo, | ||
RequestMode as _RequestMode, | ||
RequestRedirect as _RequestRedirect, | ||
RequestCredentials as _RequestCredentials, | ||
RequestDestination as _RequestDestination, | ||
ReferrerPolicy as _ReferrerPolicy, | ||
Response as _Response, | ||
ResponseInit as _ResponseInit, | ||
ResponseType as _ResponseType, | ||
} from 'undici'; | ||
|
||
declare global { | ||
export const { | ||
fetch, | ||
FormData, | ||
Headers, | ||
Request, | ||
Response, | ||
}: typeof import('undici'); | ||
|
||
type FormData = _FormData; | ||
type Headers = _Headers; | ||
type HeadersInit = _HeadersInit; | ||
type BodyInit = _BodyInit; | ||
type Request = _Request; | ||
type RequestInit = _RequestInit; | ||
type RequestInfo = _RequestInfo; | ||
type RequestMode = _RequestMode; | ||
type RequestRedirect = _RequestRedirect; | ||
type RequestCredentials = _RequestCredentials; | ||
type RequestDestination = _RequestDestination; | ||
type ReferrerPolicy = _ReferrerPolicy; | ||
type Response = _Response; | ||
type ResponseInit = _ResponseInit; | ||
type ResponseType = _ResponseType; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
export { EventBridgeS3MessageBusAdapter } from './adapter'; | ||
export type { EventBridgeS3MessageBusMessage } from './message'; | ||
export { parseMessage } from './parseMessage'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
39 changes: 39 additions & 0 deletions
39
packages/event-bridge-s3-message-bus-adapter/src/parseMessage.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
import type { EventBridgeEvent } from 'aws-lambda'; | ||
|
||
import type { OversizedEntryDetail } from './message'; | ||
|
||
type ParsedMessage<MESSAGES extends EventBridgeEvent<string, unknown>> = | ||
MESSAGES extends infer MESSAGE | ||
? MESSAGE extends EventBridgeEvent<string, unknown> | ||
? { | ||
[KEY in keyof MESSAGE]: KEY extends 'detail' | ||
? Exclude<MESSAGE[KEY], OversizedEntryDetail> | ||
: MESSAGE[KEY]; | ||
} | ||
: never | ||
: never; | ||
|
||
export const parseMessage = async < | ||
MESSAGES extends EventBridgeEvent<string, unknown>, | ||
>( | ||
_message: MESSAGES, | ||
{ fetch: _fetch = fetch }: { fetch?: typeof fetch } = { fetch }, | ||
): Promise<ParsedMessage<MESSAGES>> => { | ||
const message = _message as EventBridgeEvent<string, unknown>; | ||
const { detail: entry } = message; | ||
|
||
if (typeof entry === 'object' && entry !== null && 'messageUrl' in entry) { | ||
const response = await _fetch((entry as OversizedEntryDetail).messageUrl); | ||
|
||
if (!response.ok) { | ||
throw new Error(response.statusText); | ||
} | ||
|
||
return { | ||
...message, | ||
detail: await response.json(), | ||
} as ParsedMessage<MESSAGES>; | ||
} | ||
|
||
return message as ParsedMessage<MESSAGES>; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters