Reaching the network when no single link always works, and testing all of it with nothing plugged in.
One install for the 9 capabilities of this domain. Each is also its own package, and
pamoja is the whole framework in one.
npm install @pamoja/transports
| Capability | Package | What it covers |
|---|---|---|
| MQTT | @pamoja/mqtt |
An MQTT client with the topic and wildcard rules, acknowledged delivery, retained messages, a last will, and TLS, as the core transport |
| CoAP | @pamoja/coap |
A CoAP client and the server it reports to, over UDP, with confirmable delivery and observe |
| Loopback | @pamoja/loopback |
An in-process transport with topic matching, a fault injector, and outages on demand, for testing with no broker |
| Store and forward | @pamoja/sync |
Offline-first queues in memory or on disk, bounded or not, the on-disk one surviving power loss, and the drain that forwards them in order when a link returns |
| Transport ladder | @pamoja/ladder |
Cheapest reachable link first, buffering to a store when every link is down |
| Event bus | @pamoja/bus |
An in-memory typed publish and subscribe event bus, with publishers that never wait and subscribers that count what they miss |
| Engine surface | @pamoja/core |
The transport every link shares (send, receive, subscribe, and a faulty wrapper for tests) and the runtime version |
| Your own link | @pamoja/core |
A link pamoja does not ship, written in your language against the transport contract and composed like any other |
| Simulators | @pamoja/sim |
Noisy and replay sensors, a recording actuator, a simulated robot that dead-reckons its pose, and a link that loses sends on a pattern |
The guides, with a worked TypeScript example for each, are at https://pamoja.molex.cloud/docs.
MIT
Transports and testing: Reaching the network when no single link always works, and testing all of it with nothing plugged in.
Installing this package installs
@pamoja/mqtt,@pamoja/coap,@pamoja/loopback,@pamoja/sync,@pamoja/ladder,@pamoja/bus,@pamoja/core,@pamoja/sim, and re-exports each under its own name, so a name two of them share stays unambiguous.