@nwire/handler
v0.7.1
Published
Nwire — the operation primitive. defineHandler / defineError / defineResource / defineMiddleware / pipe / response factories / typed framework errors. Standalone — depend on this without pulling forge. Every transport (HTTP, queue, MCP, …) speaks the same
Readme
@nwire/handler
Operation primitive — one shape for action / query / resolver, usable from any transport.
What it is
defineHandler(name, config) describes a single operation: input schema, response shape, the function. execute(handler, input, ctx?) runs one. Same shape whether the caller is HTTP, a queue worker, a CLI command, or an MCP tool. No framework lock-in — a foreign host (Express, Fastify, NestJS) can mount a handler with two lines of glue.
Install
pnpm add @nwire/handlerWithin nwire-app
For developers using this package as part of the Nwire stack. Every Nwire transport (@nwire/http, @nwire/queue, @nwire/mcp) speaks this exact shape; @nwire/forge's defineAction / defineQuery are flavored sugar over defineHandler.
import { defineAction } from "@nwire/forge"; // sugar over defineHandler
import { httpInterface, post } from "@nwire/http";
const createUser = defineAction("createUser", {
input: z.object({ email: z.string().email() }),
handler: async ({ input }) => ({ id: crypto.randomUUID(), email: input.email }),
});
const api = httpInterface("api").wire(post("/users", createUser));API
defineHandler(name, config)— declare an operation:{ input, handler, returns?, errors?, summary?, policy?, emits? }.execute(handler, input, ctx?)— run one; returns a response envelope.defineResource(...)/defineError(...)— REST resource + typed error definitions.- Response factories:
ok/created/accepted/noContent/notFound/ etc.
