UNPKG

@proca/queue

Version:

This package provides a **robust RabbitMQ consumer** for processing Proca **action** and **event** messages with strict retry, dead-letter, and crash semantics.

105 lines (92 loc) 1.97 kB
import { ContactV2, PrivacyV2, Campaign as CampaignFragment, ActionV2, ActionPage, Tracking, } from './actionMessage'; type EventBase = { schema: 'proca:event:2'; timestamp: string; // ISO8601 }; /* -------------------- */ /* email_status event */ /* -------------------- */ export type EmailStatusEvent = EventBase & { eventType: 'email_status'; action?: ActionV2; actionPage?: ActionPage; campaign?: CampaignFragment; supporter: { contact: ContactV2; privacy: PrivacyV2; }; tracking?: Tracking; }; /* -------------------- */ /* campaign_updated */ /* -------------------- */ type Json = Record<string, any>; type CampaignMessage = { id: number; externalId: number; name: string; title: string; contactSchema: string; config: Json; org: { name: string; title: string; }; }; export type CampaignUpdatedEvent = EventBase & { eventType: 'campaign_updated'; campaignId: number; orgId: number; campaign: CampaignMessage; }; export type CampaignUpdatedEventMessage = CampaignUpdatedEvent; /* -------------------- */ /* confirm_created */ /* -------------------- */ export type ConfirmCreatedEvent = EventBase & { eventType: 'confirm_created'; confirm: { acceptLink: string; rejectLink: string; code: string; objectId: number; subjectId: number; operation: string; email: string; message: string; campaign: { name: string; title: string; }; creator: { email: string; jobTitle: string | null; }; org: { name: string; title: string; twitter?: { name: string; screenName: string; description: string; url: string; picture: string; followersCount: number; }; }; }; }; /* -------------------- */ /* Event */ /* -------------------- */ export type Event = | EmailStatusEvent | CampaignUpdatedEvent | ConfirmCreatedEvent;