/** * @fileoverview NATS subject and stream name constants. * @module nats/subjects * * See docs/architecture/nats-subjects.md for payload schemas. */ /** * Subject strings used by publishers and consumers. * @readonly */ export const SUBJECTS = Object.freeze({ /** Work queue: poll Verae job status */ JOBS_WATCH: 'verae.zapier.jobs.watch', /** Terminal job outcomes */ JOBS_EVENTS: 'verae.zapier.jobs.events', /** Work queue: HTTP POST to Zapier REST Hooks */ WEBHOOKS_DELIVER: 'verae.zapier.webhooks.deliver', /** Optional metering stream */ USAGE: 'verae.zapier.usage', /** Off-chain WORM / tree-node puts */ ARCHIVE_PUT: 'verae.archive.put', /** Broadcast hash lookup to every WORM and tree node (no queue group) */ ARCHIVE_QUERY: 'verae.archive.query', }); /** * JetStream stream names. * @readonly */ export const STREAMS = Object.freeze({ ZAPIER_JOBS: 'ZAPIER_JOBS', ZAPIER_EVENTS: 'ZAPIER_EVENTS', ZAPIER_WEBHOOKS: 'ZAPIER_WEBHOOKS', ZAPIER_USAGE: 'ZAPIER_USAGE', }); /** * Durable consumer names (queue groups). * @readonly */ export const CONSUMERS = Object.freeze({ JOB_POLLER: 'job-poller', EVENT_WEBHOOK_ROUTER: 'event-webhook-router', WEBHOOK_DELIVER: 'webhook-deliver', USAGE_WRITER: 'usage-writer', });