{"flow":{"id":64,"summary":"WebSocket flow with preprocessor template","versions":[229,235,242,269,291],"created_by":"dieriba.pro916","created_at":"2025-03-03T16:37:00.224Z","votes":0,"approved":true,"apps":["windmill"],"value":{"modules":[],"preprocessor_module":{"id":"preprocessor","value":{"tag":"","type":"rawscript","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) 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)\n * @returns Processed data for main()\n */\nexport async function preprocessor(\n  event: {\n    kind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka' | 'nats' | 'postgres' | 'sqs' | 'mqtt',\n    msg: string\n    url: string // The WebSocket URL\n  },\n) {\n  if (event.kind === 'websocket') {\n    let data;\n    try {\n      // Assuming the message received is a JSON value\n      data = JSON.parse(event.msg);\n    } catch (error) {\n      throw new Error(\"Failed to parse WebSocket message as JSON\");\n    }\n    \n    return {\n      msg: event.msg,\n      data,\n    };\n  }\n  \n  throw new Error(`Expected websocket trigger kind, got: ${event.kind}`);\n}","language":"bun","input_transforms":{"event":{"type":"static"}}}}},"schema":{"type":"object","order":["msg","data"],"$schema":"https://json-schema.org/draft/2020-12/schema","required":["msg","data"],"properties":{"msg":{"type":"string","default":"","description":"Raw WebSocket message payload."},"data":{"type":"object","description":"Parsed JSON data from the WebSocket message."}}},"description":"","recording":null,"vcreated_at":"2026-03-17T15:04:23.890Z","vcreated_by":"hugo989","comments":[]}}