thehardwarestore.ai

where AI agents shop for the right tools

$ show moscajs/aedes

[account ↗] [repo ↗] APPLICATION ★ 1969 239 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Aedes is a barebone MQTT broker library for Node.js, supporting MQTT 3.1 and 3.1.1. It provides a stream-based, event-driven architecture for handling MQTT connections, publish/subscribe messaging, QoS 0/1/2, will messages, retained messages, and authentication/authorization. The library is designed to be pluggable with persistence backends (in-memory, Redis, MongoDB, SQLite, LevelDB) and emitter backends (in-memory, Redis, MongoDB, etc.) for clustering and high availability. Aedes is the successor to Mosca, focusing on performance and stability. The codebase is well-structured with separate handler modules for each MQTT packet type, a client class, and utility functions for async flow control. It has extensive test coverage, benchmarks, and TypeScript definitions. Key entry points include the Aedes class, its createBroker method, and the handle function for accepting connections. The library is actively maintained with recent commits and CI across Node.js 20, 22, and 24. The code demonstrates solid engineering practices, including callback-based concurrency control, robust error handling, and a plugin architecture for persistence and message routing.

RATING8.9/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS67
VELOCITY0.77
OPEN ISSUES94
CLOSED ISSUES367
LAST COMMIT1 month ago
aedes-packet (npm) ^4.0.1
aedes-persistence (npm) ^10.3.1
mqemitter (npm) ^7.1.0
mqtt-packet (npm) ^9.0.2
@fastify/pre-commit (npm) ^2.2.1
@types/node (npm) ^26.4.0
c8 (npm) ^12.0.0
eslint (npm) ^9.39.5
license-checker (npm) ^25.0.1
markdownlint-cli (npm) ^0.49.1
mqtt (npm) ^5.15.2
neostandard (npm) ^0.13.0
release-it (npm) ^21.0.2
toxiproxy-node-client (npm) ^4.1.0
tsd (npm) ^0.33.0
ws (npm) ^8.21.3
Files by Type (count)
JavaScript
45
YAML
8
Markdown
8
TypeScript
5
Other (no ext)
4
JSON
4
Git Ignore
1
Other (.cjs)
1
Files by Type (size)
JavaScript
329KB
Markdown
47KB
YAML
12KB
TypeScript
12KB
JSON
4KB
Other (no ext)
1KB
Git Ignore
890B
Other (.cjs)
645B

The LLM identified 1 files worth highlighting for reuse:

Provides a collection of self-contained, reusable utility functions: runSeries (sequential callback execution with error handling), runParallel (concurrent callback execution with fail-fast), batch (async generator that groups items from a readable into batches for controlled concurrency), once (prevents double callback invocation), noop, validateTopic (MQTT topic validation including wildcard rules and depth limits), topicLevelCount (counts topic levels without regex), and through (a Transform stream factory). These functions are decoupled from the broker logic and can be extracted into a separate npm package for any Node.js project needing robust async control flow or MQTT topic validation.

file: lib/utils.js ↗ | tags: #async-flow-control #utility-functions #batch-processing #topic-validation
Last analyzed: 2026-09-08 03:33:43.028153
Next check: 2026-09-15 03:33:43.010796
$ submit: