1 | |
2 | * General 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 | * - `{http}` → `main(http)` |
16 | * |
17 | * @param event - Trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS) |
18 | * @returns Processed data for `main()` |
19 | */ |
20 | export async function preprocessor( |
21 | event: { |
22 | kind: 'http'; |
23 | body: any; |
24 | raw_string: string | null; |
25 | route: string; |
26 | path: string; |
27 | method: string; |
28 | params: Record<string, string>; // path params |
29 | query: Record<string, string>; // query params |
30 | headers: Record<string, string>; |
31 | } |
32 | ) { |
33 | if (event.kind === 'http') { |
34 | return { |
35 | body: event.body, |
36 | params: event.params, |
37 | query: event.query, |
38 | }; |
39 | } |
40 |
|
41 | throw new Error(`Expected http trigger kind, got: ${event.kind}`); |
42 | } |
43 |
|
44 | |
45 | * Main Function - Handles processed trigger events |
46 | * |
47 | * ⚠️ Called AFTER `preprocessor()`, with its return values. |
48 | * |
49 | * @param body - HTTP request body |
50 | * @param params - Path parameters from the HTTP request |
51 | * @param query - Query parameters from the HTTP request |
52 | */ |
53 | export async function main( |
54 | body: any, |
55 | params: Record<string, string>, |
56 | query: Record<string, string> |
57 | ) { |
58 | |
59 | } |
60 |
|