Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

koa-core-server

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

koa-core-server

The koa server wrapper. That's all what you need to start build koa based server. ---

  • 1.1.7
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

KOA-CORE-SERVER

The koa server wrapper. That's all what you need to start build koa based server.

SETUP

  • npm install --save koa-core-server

HOW TO USE

Project structure should looks like this.

Project structure

  • server initialization
const Server = require('koa-core-server'); // Path to koa-core in node_modules
const path = require('path');

const routePath = path.join(__dirname, 'routers'); // dir where you routers live
const controllersPath = path.join(__dirname, 'controllers'); // dir where you controllers live
const dataAccessPath = path.join(__dirname, 'dataAccess'); // dir where you data access live
const server = new Server({
  routePath,
  controllersPath,
  dataAccessPath,
  clustering: {bool}, // by default is false, run you app with workers
  loadersStatus: {bool}, // by default false, show loader statuses
});

server.use((ctx, next) => { // that how you can connect you middleware
  console.log('hello from middleware');
  next();
});

server.start();
  • router
const Router = require('koa-router');

module.exports = class HelloRouter extends Router {
  constructor() {
    super();
    this.name = 'Hello router';  // optional if not define will be used file name"
    this.rootPath = null; // optional by default will be using first part of the file name `hello.router -> /hello`
    this.helloController = this.injector.get('helloCustomName'); // get controller from injector controller name defining in controller class via 
    //  `this.name` or if not define use controller file name with postfix in camel case notation `user.controller -> userController`
  }

  load() {
    this.get('/', this.helloController.getHello.bind(this.helloController)); // define you routers here
    this.get('/by', this.helloController.sayBy.bind(this.helloController)); // define you routers here
    return this; // return this is required in `this` lives you routers
  }
};
  • controller
module.exports = class HelloController {
  constructor() {
    this.name = 'helloCustomName'; // controller name will be set in controller injector and you can find controller by this name in injector or use 
    // controller file name with postfix in camel case notation `user.controller -> userController`
    this.helloDataAccess = this.injector.get('helloDataAccess'); // get  you data access for this controller by name defining in data access class `this.name` or use file name in camel case notation with postfix `hello.dataAccess -> helloDataAccess` 
  }

  async getHello(ctx, next) { // controller methods uses in routers should be defined like plain koa function with async and ctx and next like parameters
    ctx.response.body = await this.helloDataAccess.getHello();
  }

  async sayBy(ctx, next) { // controller methods uses in routers should be defined like plain koa function with async and ctx and next like parameters
    ctx.response.body = await this.helloDataAccess.getGoodBy();
  }
}

  • dataAccess
module.exports = class HelloDataAccess {
  getHello() { // this methods will be using in controller
    return Promise.resolve('hello');
  }

  getGoodBy() { // this methods will be using in controller
    return Promise.resolve('good by');
  }
}

For more detailed example look at server example

TODO

  • add load packages from yarn
  • add only read preferences to injectors
  • add tests
  • add auto publish via some CI by master hook

Keywords

FAQs

Package last updated on 05 Dec 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc