0.1.1 โข Published 4 months ago
hono-routing-controller v0.1.1
Hono Routing Controllers
A TypeScript-based decorator-driven routing solution for Hono.js, inspired by routing-controllers
, featuring dependency injection and middleware support.
Warning
โ ๏ธ This project is currently under active development and not production-ready.
Expect breaking changes and missing features. Use at your own risk!
๐จ Important Notice
This is experimental software - not recommended for production use.
Current status: Proof of Concept stage. Core functionality is being validated.
Features
- ๐ฏ Decorator-based route definitions (
@Controller
,@Get
,@Post
, etc.) - ๐ Custom dependency injection container
- ๐ก๏ธ Middleware support
- ๐ TypeScript-first approach
- ๐ External Hono instance integration
Installation
- Install the package:
pnpm install hono-routing-controllers
- Install required peer dependencies:
pnpm install hono reflect-metadata
- Add
reflect-metadata
import at the entry point of your application:
import 'reflect-metadata';
- Its important to set these options in
tsconfig.json
file of your project:
{
"emitDecoratorMetadata": true,
"experimentalDecorators": true
}
๐ Quick Start
1. Create Controller
import { Controller, Get } from 'hono-routing-controllers';
import { Context } from 'hono';
@Controller('/users')
export class UserController {
@Get('/')
findAll(c: Context) {
return c.json([{ id: 1, name: 'John' }]);
}
}
2. Initialize
import { Hono } from 'hono';
import { useRoutingController } from 'hono-routing-controllers';
import { UserController } from './controllers/UserController';
const app = new Hono();
useRoutingController(app, {
controllers: [UserController]
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
๐ API Reference
๐จ Decorators
Decorator | Parameters | Description |
---|---|---|
@Controller | path: string | Class route prefix |
@Get | path: string | GET route handler |
@Post | path: string | POST route handler |
@Put | path: string | PUT route handler |
@Delete | path: string | DELETE route handler |
@UseBefore | ...middlewares | Apply middleware(s) |
โ Configuration
useRoutingController(
app: Hono,
options: {
controllers: Array<new () => any>
}
)
๏ฟฝ Development
pnpm run dev
pnpm run build
pnpm run test
๐ Current Limitations
- โ Missing comprehensive test coverage
- โ API surface may change dramatically
- โ Documentation is incomplete
- โ Not security audited
- โ Performance not optimized
๐งช Development Goals
Status | Feature |
---|---|
โ Done | Basic routing |
๐ก Partial | Middleware support |
๐ง WIP | Dependency injection |
โ Todo | Error handling |
โ Todo | Validation decorators |
๐ค Contributing
Fork the repository
Create your feature branch:
git checkout -b feature/AmazingFeature
Commit your changes:
git commit -m 'Add some AmazingFeature'
Push to the branch:
git push origin feature/AmazingFeature
Open a Pull Request
๐ Roadmap
- Stable core API
- Full test coverage
- Production readiness
Experimental Use Only
This package is shared for early feedback and collaborative development.
Not suitable for mission-critical applications. Breaking changes may occur without notice.
๐ License
MIT ยฉ Hasibur Rahman