lambert-server
    TypeScript icon, indicating that this package has built-in type declarations

    1.2.12 • Public • Published

    Lambert-server

    An express.js Route Handler

    Installation

    npm i lambert-server
    

    Usage

    ES5 Import

    const { Server, HTTPError } = require("lambert-server");

    or ES6 Import

    import { Server, HTTPError } from "lambert-server"

    Server

    Server options:

    const server = new Server({
    	port        : number  = 8080;       // the port to listen on
    	host        : string  = "0.0.0.0";  // the interface to listen on
    	production  : boolean = false;      // enable in production mode - this will hide internal server errors
    	serverInitLogging: boolean = true; // allows the server to log informations at startup, errors are excluded from this option
    	errorHandler: (err: Error, req: Request, res: Response, next: NextFunction) => void // Default error handler displays JSON errors
    })

    To access the express app manually use server.app

    Register Routes

    server.registerRoutes(root: string): Promise<any[]>; // root is the root directory of all routes

    The HTTP API path is generated automatically based on the folder structure, so it is important that you name your files accordingly.

    Body checking

    JSON body can be checked with a schema, that you pass to the check function. A Schema is a Object Structure with key-value objects that checks if the key is an instance of the value (class). You can specify optional parameters if you prefix the key with a $ e.g.: { $captcha: String }, this will make the captcha property in the body optional.

    import { check } from "lambert-server";
    const SCHEMA = { username: String, age: Number, $posts: [{ title: String }] }
    app.post("/", check(SCHEMA), (req, res) => {});

    Examples

    Example Server

    In /index.js

    import { Server } from "lambert-server";
    // const { Server } = require("lambert-server");
    
    async function main() {
    	const server = new Server();
    	await server.registerRoutes(__dirname + "/routes/");
    	await server.start();
    }
    
    main().catch(console.error)

    Example Route

    In /routes/index.js

    import { Router } from "express";
    import { HTTPError, check } from "lambert-server";
    // const { Router } = require("express")
    // const { HTTPError, check } = require("lambert-server")
    
    const router = Router();
    
    router.get("/", (req, res) => {
    	res.send("Hello World");
    });
    
    router.get("/test", (req, res) => {
    	throw new HTTPError("You don't have access to this ressource", 401);
    });
     
    // JSON body parser
    router.post("/", check({ username: String, age: Number, $posts: [{ title: String }] }), (req, res) => {});
    
    export default router;
    // module.exports = router

    Install

    npm i lambert-server

    DownloadsWeekly Downloads

    277

    Version

    1.2.12

    License

    ISC

    Unpacked Size

    56.9 kB

    Total Files

    41

    Last publish

    Collaborators

    • flam3rboy