staller-plugin
v1.2.6
Published
A modular plugin pack for the Staller framework, providing auto-routing with decorators, OpenAPI (Swagger) documentation, and middleware support.
Readme
Installation
npm i staller-pluginFeatures
- Automatic route registration using
staller-plugin - Swagger documentation setup
- Security and authentication decorators
Project Structure
📂 project-root/
├── 📁 src
├── 📁 controllers/ # Controller files with route handlers
├── 📁 middlewares/ # Middleware functions
├── 📁 public/ # Static files
├── 📁 utils/ # Utility functions
├── 📄 app.ts # Main entry point
├── 📄 package.json # Dependencies and scriptsServer Setup
This is the main entry point of the application.
import express from "express";
import { setupSwagger, registerRoutes } from "staller-plugin";
import multer from "multer";
const PORT = 3000;
const app = express();
app.use(express.json());
const upload = multer();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(upload.any());
app.use(registerRoutes({ rootDir: __dirname }));
app.use(setupSwagger({ rootDir: __dirname }));
app.listen(PORT, () =>
console.log(`🚀 Server running on http://localhost:${PORT}`)
);Controller Example
Example user controller with various staller-plugin decorators:
import { Controller, Get, Tags } from "staller-plugin";
@Controller("/users")
@Tags("User Management")
export default class UserController {
@Get("/")
getAllUsers(request, response) {
return response.json({ id: 1, name: "Buddy" });
}
}Middleware Example
Middleware can be used to handle authentication, logging, or other request modifications.
export function authMiddleware(req, res, next) {
const token = req.headers["authorization"];
if (!token) {
return res.status(401).json({ message: "Unauthorized" });
}
next();
} @Get("/")
@Middleware(authMiddleware)
getAllUsers(request, response) {
return response.json({ id: 1, name: "Buddy" });
}Available Decorators
🏗 Controller & Routes
🟦 @Controller("path")– Defines a controller with a specific route prefix.🟩 @Get("path")– Defines a GET request route.🟧 @Post("path")– Defines a POST request route.
🔒 Middleware & Security
🟨 @Middleware(middlewareFn)– Adds middleware to a route.🔴 @Security("authType")– Specifies authentication type.
📜 Swagger Documentation
🟣 @Tags("tagName")– Categorizes a controller in Swagger docs.🔵 @Description("text")– Adds detailed documentation for an endpoint.🟠 @Summary("text")– Provides a brief summary for Swagger docs.⚫ @Hide(boolean)– Excludes an endpoint from Swagger documentation.
API Documentation
Once the server is running, open the Swagger documentation at:
http://localhost:3000/swaggerThis will display all the registered routes and their details.
Example API Calls
Get All Users
Endpoint: GET /users
Response:
[
{ "id": 1, "name": "Buddy" }
]Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature-name) - Commit your changes (
git commit -m "Added new feature") - Push to your branch (
git push origin feature-name) - Open a Pull Request
License
This project is licensed under the MIT License.
