"content": "/**\n * General Trigger Preprocessor\n *\n * ⚠️ This function runs BEFORE the main function.\n *\n * It processes raw trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka) before passing it to main().\n * Common tasks:\n * - Convert binary payloads to string/JSON\n * - Extract metadata\n * - Filter messages\n * - Add timestamps/context\n *\n * The returned object determines main() parameters:\n * - {a: 1, b: 2} → main(a, b)\n * - {msg} → main(msg)\n *\n * @param event - Trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka)\n * @returns Processed data for main()\n */\nexport async function preprocessor(\n event: {\n kind: 'kafka',\n payload: string, // base64 encoded payload\n brokers: string[],\n topic: string,\n group_id: string\n },\n) {\n if (event.kind === 'kafka') {\n try {\n // Assuming the message received is a JSON value\n const msg = atob(event.payload);\n const data = JSON.parse(msg);\n\n return {\n msg,\n data,\n };\n } catch (error) {\n throw new Error(\"Failed to parse Kafka message as JSON\");\n }\n }\n \n throw new Error(`Expected kafka trigger kind, got: ${event.kind}`);\n}", |