@nwire/interface
v0.7.1
Published
Nwire — transport-interface contract. `InterfaceBuilder` is the abstract base every transport (HTTP, queue, MCP, GraphQL, …) extends. Foreign hosts implement it. Six universal verbs (.use / .wire / .from / .mount / .run / .boot) plus manifest + attach sea
Readme
@nwire/interface
Transport contract — the abstract base every Nwire transport extends, and the shape foreign hosts implement to plug in.
What it is
NwireInterface is the structural shape every transport satisfies (http, queue, mcp, graphql, future ws/grpc). InterfaceBuilder is the abstract base each transport extends.
The verb surface is uniform across transports:
.use(...plugins) augment the chain
.wire(binding, handler?, o?) bind an outbound surface
.from(source) declare an inbound stream
.mount(target) attach this iface to a host
.run(opts?) → Lifecycle serve standalone
.boot(opts?) → Booted<T> build without listeningPlus two internal seams (.manifest() for scanner/Studio; .attach(host) for host lifecycle) and one DI sugar (.provide(container)).
Install
pnpm add @nwire/interfaceWithin nwire-app
You usually never import this package directly — @nwire/http / @nwire/queue / @nwire/mcp each ship their own builder that already extends InterfaceBuilder. Touch this package only when writing a new transport or a foreign-host adapter.
import { endpoint } from "@nwire/endpoint";
import { http } from "@nwire/http"; // extends InterfaceBuilder
import { queue } from "@nwire/queue"; // extends InterfaceBuilder
const api = http().wire(getUsers);
const worker = queue().wire(sendEmail);
await endpoint("app").serve(api).serve(worker).run();API
NwireInterface— structural shapeendpoint().serve()consumes.InterfaceBuilder<TBinding, TPlugin, TFromSource, TMountTarget, TArtifact>— abstract base with the six verbs + manifest + attach.Lifecycle/RunOptions/Booted/BootOptions/InterfaceManifest— return + option types shared across transports.makeContainerPlugin/isContainerPlugin— sentinel for transports that need to lift containers out of the.use()chain.isNwireInterface— structural type narrow.- Re-exports
HandlerLike+HandlerDefinitionfrom@nwire/handlerso transport authors have one import.
