koa-sailor
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.3 • Public • Published

    Koa sailor

    koa-sailor is a simple and lightweight package for writing koa controllers faster.


    If you encounter any errors or any inconsistencies in the docs please create an issue for them. They will be repaired ASAP 🐶

    Installation

    with npm:

    npm i koa koa-sailor

    Usage

    Example app using koa-sailor.

    import { Context } from 'koa';
    import { createApp, Controller, Get, Delete } from 'koa-sailor';
    
    @Controller({
      path: '/users'
    })
    class UsersController {
      @Get({
        path: '/:id'
      })
      async getUser(ctx: Context) {
        // ...
      }
    
      @Delete({
        path: '/:id',
        middlewares: [requireAuth]
      })
      async deleteUser(ctx: Context) {
        // ...
      }
    }
    
    const app = createApp({
      controllers: [new UsersController()]
    });
    
    app.listen(5000, () => {
      console.log('app listening on port 5000');
    });

    Functionality

    createApp

    • controllers - your controllers ([] by default)
    • middlewares - app middlewares ([] by default)
    • other options available in pure Koa

    createApp is wrapper function for Koa app. It allows you to inject your controllers and middlewares into it (you can also set middlewares using koa's .use() if you prefer).

    Example usage:

    import { createApp } from 'koa-sailor';
    import logger from 'koa-logger';
    import UserController from './controllers/user';
    
    const app = createApp({
      controllers: [new UserController()],
      middlewares: [logger]
    });
    
    app.use((ctx, next) => {
      console.log('I am doing nothing! 🍾');
      next();
    });
    
    app.listen();

    @Controller

    • path - controller path ('/' by default)
    • middlewares - controller middlewares ([] by default)

    Controller decorator allows to create a controller from existing class.

    Example usage:

    import { Controller } from 'koa-sailor';
    
    @Controller({
      path: '/your/path',
      midlewares: [requireAuth]
    })
    class YourAmazingController {}

    @All, @Get, @Post, @Put, @Patch, and @Delete

    Route decorators allows you to handle incoming requests

    • path - controller path ('/' by default)
    • middlewares - controller middlewares ([] by default)

    Example usage:

    import { Context } from 'koa';
    import { Controller, Get } from 'koa-sailor';
    
    @Controller({
      path: '/orders'
    })
    class YourController {
      @Get({
        // path is '/' by default!
        middlewares: [requireAuth]
      })
      async listOrders(ctx: Context) {
        // ...
      }
    }

    Thanks for reading!

    Install

    npm i koa-sailor

    DownloadsWeekly Downloads

    1

    Version

    1.1.3

    License

    MIT

    Unpacked Size

    12.4 kB

    Total Files

    11

    Last publish

    Collaborators

    • sen1cko