{"version":3,"file":"prepare-consumer-subscription.mjs","names":[],"sources":["../../../../../../../@warlock.js/herald/src/message-managers/prepare-consumer-subscription.ts"],"sourcesContent":["import type { MessageHandler } from \"./../types\";\nimport { EventConsumerClass } from \"./types\";\n\nexport function prepareConsumerSubscription(\n  Consumer: EventConsumerClass,\n  onError?: (error: unknown, consumerName: string) => void,\n) {\n  const callback: MessageHandler<any> = async (message, ctx) => {\n    const envelope = message.payload;\n    let eventPayload = envelope.payload;\n\n    if (envelope.version) {\n      if (!Consumer.isAcceptedVersion(Number(envelope.version))) {\n        ctx.ack(); // Acknowledge but don't process\n        return;\n      }\n    }\n\n    const consumer = new Consumer();\n\n    if (consumer.schema) {\n      const result = await consumer.validate(eventPayload);\n      if (!result || result.isValid === false) {\n        ctx.nack();\n        return;\n      }\n\n      eventPayload = result.data;\n    }\n    try {\n      await consumer.handle(eventPayload, {\n        payload: eventPayload,\n        eventName: Consumer.eventName,\n        messageId: message.metadata.messageId!,\n        occurredAt: envelope.occurredAt ? new Date(envelope.occurredAt) : undefined,\n        metadata: envelope.metadata,\n        version: envelope.version,\n        message,\n      });\n      ctx.ack(); // Auto-ack on success?\n    } catch (error) {\n      ctx.nack(true); // Requeue on failure\n      if (onError) {\n        onError(error, Consumer.eventName);\n      }\n    }\n  };\n\n  return callback;\n}\n"],"mappings":";AAGA,SAAgB,4BACd,UACA,SACA;CACA,MAAM,WAAgC,OAAO,SAAS,QAAQ;EAC5D,MAAM,WAAW,QAAQ;EACzB,IAAI,eAAe,SAAS;EAE5B,IAAI,SAAS,SACX;OAAI,CAAC,SAAS,kBAAkB,OAAO,SAAS,OAAO,CAAC,GAAG;IACzD,IAAI,IAAI;IACR;GACF;;EAGF,MAAM,WAAW,IAAI,SAAS;EAE9B,IAAI,SAAS,QAAQ;GACnB,MAAM,SAAS,MAAM,SAAS,SAAS,YAAY;GACnD,IAAI,CAAC,UAAU,OAAO,YAAY,OAAO;IACvC,IAAI,KAAK;IACT;GACF;GAEA,eAAe,OAAO;EACxB;EACA,IAAI;GACF,MAAM,SAAS,OAAO,cAAc;IAClC,SAAS;IACT,WAAW,SAAS;IACpB,WAAW,QAAQ,SAAS;IAC5B,YAAY,SAAS,aAAa,IAAI,KAAK,SAAS,UAAU,IAAI;IAClE,UAAU,SAAS;IACnB,SAAS,SAAS;IAClB;GACF,CAAC;GACD,IAAI,IAAI;EACV,SAAS,OAAO;GACd,IAAI,KAAK,IAAI;GACb,IAAI,SACF,QAAQ,OAAO,SAAS,SAAS;EAErC;CACF;CAEA,OAAO;AACT"}