group — router shorthand + middleware
Imported from the facade: import { group } from "@/framework/facade.js".
Shorthand for createRouter().group(...), plus the building block when spreading role middleware arrays across api() calls. See Routing.
Signature
| Function | Signature | Description |
|---|---|---|
group | (...middlewares) => NexgenRouter | createRouter().group(...middlewares) — applies middleware to routes registered after it |
Use cases
Group with middleware
group(middleware) applies to all routes; api(route, [middlewares], handler) applies per-route:
ts
import { createRouter, createRoute, HttpStatusCodes, jsonContent, z } from "@/framework/facade.js";
import { authMiddleware } from "@/middlewares/auth-middleware.js";
import { requireRole } from "@/middlewares/role-middleware.js";
export default createRouter()
.group(authMiddleware) // all routes require auth
.api(listRoute, index)
.api(showRoute, [requireRole("admin")], show); // only admin roleReal world — role middleware arrays
ts
// modules/auth/routes/api.ts
.createRouter()
.group(authMiddleware)
.api(usersIndexRoute, [requireRole("supreme", "superadmin", "admin")], usersIndex)
.api(profileRoute, [requireRole("supreme", "superadmin", "admin", "guest")], profile);Notes
- Middleware given to
group()runs for every route registered after it on that router. requireRole(...roles)is a middleware factory — spread an array of role names as shown above.- Prefer
group()(nocreateRouter) when exporting the default route object from a module.
