1 | |
2 | * Trigger Preprocessor |
3 | * |
4 | * ⚠️ This function runs BEFORE the main function. |
5 | * |
6 | * It processes raw trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS) before passing it to `main()`. |
7 | * Common tasks: |
8 | * - Convert binary payloads to string/JSON |
9 | * - Extract metadata |
10 | * - Filter messages |
11 | * - Add timestamps/context |
12 | * |
13 | * The returned object determines `main()` parameters: |
14 | * - `{a: 1, b: 2}` → `main(a, b)` |
15 | * |
16 | * @param event - Trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS) |
17 | * @returns Processed data for `main()` |
18 | */ |
19 | export async function preprocessor( |
20 | event: { |
21 | kind: 'email'; |
22 | parsed_email: any; |
23 | raw_email: string; |
24 | email_extra_args?: Record<string, string> |
25 | } |
26 | ) { |
27 | if (event.kind === 'email') { |
28 | return { |
29 | parsed_email: event.parsed_email, |
30 | raw_email: event.raw_email, |
31 | email_extra_args: event.email_extra_args, |
32 | }; |
33 | } |
34 |
|
35 | throw new Error(`Expected email trigger kind, got: ${event.kind}`); |
36 | } |
37 |
|
38 | |
39 | * Main Function - Handles processed trigger events |
40 | * |
41 | * ⚠️ Called AFTER `preprocessor()`, with its return values. |
42 | * |
43 | * @param parsed_email - Parsed email |
44 | * @param raw_email - Raw email as string |
45 | * @param email_extra_args - Extra email arguments |
46 | */ |
47 | export async function main( |
48 | parsed_email: any, |
49 | raw_email: string, |
50 | email_extra_args?: Record<string, string> |
51 | ) { |
52 | |
53 | } |
54 |
|