Contract builder for amqp-contract
npm install @amqp-contract/contractContract builder for amqp-contract - Define type-safe AMQP messaging contracts.





``bash`
pnpm add @amqp-contract/contract
For robust contract definitions with guaranteed consistency, use Event or Command patterns:
| Pattern | Use Case | Flow |
| ----------- | ------------------------------------------ | -------------------------------------------------- |
| Event | One publisher, many consumers (broadcast) | defineEventPublisher ā defineEventConsumer |defineCommandConsumer
| Command | Many publishers, one consumer (task queue) | ā defineCommandPublisher |
`typescript
import {
defineEventPublisher,
defineEventConsumer,
defineCommandConsumer,
defineCommandPublisher,
defineContract,
defineExchange,
defineQueue,
defineMessage,
} from "@amqp-contract/contract";
import { z } from "zod";
// Event pattern: publisher broadcasts, consumers subscribe
const ordersExchange = defineExchange("orders", "topic", { durable: true });
const orderMessage = defineMessage(
z.object({
orderId: z.string(),
amount: z.number(),
}),
);
// Define event publisher
const orderCreatedEvent = defineEventPublisher(ordersExchange, orderMessage, {
routingKey: "order.created",
});
// Multiple queues can consume the same event
const orderQueue = defineQueue("order-processing", { durable: true });
const analyticsQueue = defineQueue("analytics", { durable: true });
// Compose contract - exchanges, queues, bindings auto-extracted
const contract = defineContract({
publishers: {
// EventPublisherConfig ā auto-extracted to publisher
orderCreated: orderCreatedEvent,
},
consumers: {
// EventConsumerResult ā auto-extracted to consumer + binding
processOrder: defineEventConsumer(orderCreatedEvent, orderQueue),
// For topic exchanges, consumers can override with their own pattern
trackOrders: defineEventConsumer(orderCreatedEvent, analyticsQueue, {
routingKey: "order.*", // Subscribe to all order events
}),
},
});
``
Benefits:
- ā
Guaranteed message schema consistency between publishers and consumers
- ā
Routing key validation and type safety
- ā
Full type safety with TypeScript inference
- ā
Event-oriented and command-oriented patterns
- ā
Flexible routing key patterns for topic exchanges
š Read the full documentation ā
- Getting Started Guide
- Event Pattern
- Command Pattern
- Complete API Reference
MIT