npm.io
0.15.1 • Published 1 week ago

@nwire/messages

Licence
MIT
Version
0.15.1
Deps
1
Size
21 kB
Vulns
0
Weekly
0

@nwire/messages

Command + event primitives — defineCommand / defineEvent and the message-envelope types.

What it is

Typed message primitives for the CQRS surface: defineCommand for intent (one handler, one response) and defineEvent for facts (many subscribers, fan-out). Includes the visibility/scope/outcome enums and zod-binding types every Nwire transport, bus, and store agrees on.

Install

pnpm add @nwire/messages

Within nwire-app

For developers using this package as part of the Nwire stack. @nwire/forge's defineEvent wraps this one with extra hooks (bus republish, projection fan-out). Touch @nwire/messages directly when you need just the contracts — typically in shared kits a foreign service imports.

import { defineEvent } from "@nwire/forge"; // adds bus + projection wiring
const StudentWasEnrolled = defineEvent("StudentWasEnrolled", {
  schema: z.object({ studentId: z.string(), courseId: z.string() }),
}).public();

API

  • defineCommand(name, { schema }) — intent contract; one handler, one response.
  • defineEvent(name, { schema, scope?, visibility?, outcome? }) — fact contract; many subscribers.
  • CommandDefinition, EventDefinition, EventMessageOf, CommandPayload, EventPayload — inferred types.
  • EventVisibility / EventScope / EventOutcome — enums (public/internal, domain/integration, success/failure tags).
  • ServiceBootedEvent, NoopCommand — built-in baseline contracts.