{"flow":{"id":66,"summary":"NATS flow with preprocessor template","versions":[231,238,239,240,267,272],"created_by":"dieriba.pro916","created_at":"2025-03-03T17:06:24.091Z","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, Kafka, NATS) 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, NATS)\n * @returns Processed data for main()\n */\nexport async function preprocessor(\n  event: {\n    kind: 'nats',\n    payload: string, // base64 encoded payload\n    servers: string[],\n    subject: string,\n    headers?: Record<string, string[]>,\n    status?: number,\n    description?: string,\n    length: number\n  },\n) {\n  if (event.kind === 'nats') {\n    try {\n      const msg = atob(event.payload)\n      // Assuming the message received is a JSON value\n      const data = JSON.parse(msg);\n\n      return {\n        msg,\n        data,\n        nats: event.headers\n      };\n    } catch (error) {\n      throw new Error(\"Failed to parse NATS message as JSON\");\n    }\n  }\n  \n  throw new Error(`Expected nats trigger kind, got: ${event.kind}`);\n}","language":"bun","input_transforms":{"event":{"type":"static"}}}}},"schema":{"type":"object","order":["msg","data","headers"],"$schema":"https://json-schema.org/draft/2020-12/schema","required":["msg","data"],"properties":{"msg":{"type":"string","default":"","description":"Decoded NATS message"},"data":{"type":"object","description":"Parsed JSON data from the NATS message."},"headers":{"type":"object","format":"","description":"Optional headers included in the NATS message."}}},"description":"","recording":null,"vcreated_at":"2025-05-08T13:28:15.087Z","vcreated_by":"hugo697","comments":[]}}