# @suaveplan/rules-hono - Hono middleware for @suaveplan/rules — ruleMiddleware, validationMiddleware, accessControl, responseValidation, rateLimitRule, combineRules; lazy default engine, Zod-validated options, OTel surface ## Summary Hono middleware wrapping [`@suaveplan/rules`](../rules/README.md). Six middleware factories — `ruleMiddleware`, `validationMiddleware`, `accessControl`, `responseValidation`, `rateLimitRule`, `combineRules` — plus a lazy default `RuleEngine` and a `MemoryAccessControlCache` reference implementation. Every factory accepts an optional caller-supplied `RuleEngine` for tenant isolation, returns structured JSON envelopes on every failure mode, and emits an OTel histogram / counter pair labelled by outcome. ## Documentation tree - [engine](./src/engine/default.md) — _(no submodules)_ - [default](./src/engine/default.md) — _(no submodules)_ - [middleware](./src/middleware/middleware.md) — _(no submodules)_ - [middleware](./src/middleware/middleware.md) — _(no submodules)_ - [default](./src/engine/default.md) — _(no submodules)_- [middleware](./src/middleware/middleware.md) — _(no submodules)_- [middleware](./src/middleware/middleware.md) — _(no submodules)_- [default](./src/engine/default.md) — _(no submodules)_- [middleware](./src/middleware/middleware.md) — _(no submodules)_- [middleware](./src/middleware/middleware.md) — _(no submodules)_- [default](./src/engine/default.md) — _(no submodules)_- [middleware](./src/middleware/middleware.md) — _(no submodules)_- [middleware](./src/middleware/middleware.md) — _(no submodules)_- [default](./src/engine/default.md) — _(no submodules)_- [middleware](./src/middleware/middleware.md) — _(no submodules)_ - [middleware](./src/middleware/middleware.md) — _(no submodules)_ ## Install ```bash bun add @suaveplan/rules-hono hono ``` ## Quick start ```ts import { Hono } from "hono"; import { condition } from "@suaveplan/rules"; import { ruleMiddleware } from "@suaveplan/rules-hono/middleware"; const app = new Hono(); app.use("*", ruleMiddleware(condition("age", "greaterThanOrEqual", 18))); app.get("/", (c) => c.json({ ok: true })); ``` ## Modules - [`middleware`](src/middleware/middleware.md) — the six factory functions + `MemoryAccessControlCache` - [`engine`](src/engine/default.md) — lazy `getDefaultEngine()` (+ test-only `resetDefaultEngine` via `./testing`) ## See also - [`@suaveplan/rules`](../rules/README.md) — the underlying engine, builder, operators, validators, serializer, optimizer.