Files
skills/plugins/document-navigator/docs/foundation/flow/rules-hono
2026-06-09 21:06:27 +01:00
..
2026-06-09 21:06:27 +01:00

@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. 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

- [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

bun add @suaveplan/rules-hono hono

Quick start

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 — the six factory functions + MemoryAccessControlCache
  • engine — lazy getDefaultEngine() (+ test-only resetDefaultEngine via ./testing)

See also

  • @suaveplan/rules — the underlying engine, builder, operators, validators, serializer, optimizer.