Type-Safe
Full TypeScript support with inferred types for events, payloads, and handlers. Catch errors at compile time.
Type-Safe
Full TypeScript support with inferred types for events, payloads, and handlers. Catch errors at compile time.
Schema Validation
Validate payloads at runtime using Zod, Valibot, or any Standard Schema compatible library.
Transport Agnostic
Use WebSocket, Redis, SSE, or create your own transport. Switch transports without changing your code.
Middleware Support
Add logging, rate limiting, idempotency, and more with composable middleware for both publishing and subscribing.
import { z } from "zod";import { defineEvent, Publisher, Subscriber } from "@pubsubjs/core";import { WebSocketServerTransport } from "@pubsubjs/transport-websocket";
// Define type-safe events with schemasconst events = defineEvent([ { name: "user.created", schema: z.object({ userId: z.string(), email: z.string().email(), }), },]);
// Create transportconst transport = new WebSocketServerTransport({ port: 8080 });
// Publish eventsconst publisher = new Publisher({ events, transport });await publisher.publish("user.created", { userId: "123",});
// Subscribe to eventsconst subscriber = new Subscriber({ events, transport });subscriber.on("user.created", (payload) => { console.log(`New user: ${payload.email}`);});await subscriber.subscribe();| Package | Description |
|---|---|
@pubsubjs/core | Core pub/sub functionality, types, and middleware |
@pubsubjs/transport-websocket | WebSocket transport for browser and server |
@pubsubjs/transport-redis | Redis transport for distributed systems |
@pubsubjs/transport-sse | Server-Sent Events transport |
@pubsubjs/react | React hooks and components |