npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

decorators-in-koa

v1.0.5

Published

Koa router but with decorator methods

Downloads

5

Readme

decorators-in-koa

A Koa router that uses TypeScript decorators to build out API routes in a clean & readable manner.

Installation

There aren't any extra steps when it comes to installation. It's just a case of installing the package, as you would with any other TS/JS package.

Yarn

yarn add decorators-in-koa

NPM

npm install decorators-in-koa

Run tests

Unit tests

To run unit tests, run the command below:

Yarn

yarn run test:unit

NPM

npm run test:unit

Integration tests

To run integration tests, run the command below:

Yarn

yarn run test:integration

NPM

npm run test:integration

Usage

decorators-in-koa simplifies the process of building Koa API routing logic.

If you want an example of how it would work in a real-world scenario check out the samples folder here.

setupControllerRoutes

This is the gateway function. This function accepts an array of controller class prototypes.

All of the supplied controllers must inherit the RouterCollection class

Example

import { setupControllerRoutes } from 'decorators-in-koa';

const controllerRoutes = setupControllerRoutes([ExampleController]);

Controller

This is a class decorator for controller classes. You have to supply a controller path as an argument to his decorator.

Example

import {
 Controller,
 RouterCollection,
} from 'decorators-in-koa';

@Controller('controller/path')
export class ExampleController extends RouterCollection {
 // ...
}

RouterCollection

This is the class that needs to be extended for any controller supplied to Koa. You can find an example of this here.

Example

import {
 Controller,
 RouterCollection,
} from 'decorators-in-koa';

@Controller('controller/path')
export class ExampleController extends RouterCollection {
 // ...
}

RequestMethods

This is a decorator which returns an object of the following request methods: GET, POST, PUT, DELETE, PATCH.

They should be used as decorators for the callback function you want to run when the supplied endpoint is hit. You can call this decorator with a path or leave it blank and it would default to / and just run on the call to the controller path.

The callback function should expect a Koa context to be passed into it.

Example

import { Context } from 'koa';
import {
 Controller,
 RouterCollection,
 RequestMethods
} from 'decorators-in-koa';

@Controller('controller/path')
export class ExampleController extends RouterCollection {
 @RequestMethods.Get('path')
 get(context: Context): void { // ...}
}

Example Controller

To define a controller, you need to first define the controller path using

import { Context } from 'koa';
import {
 Controller,
 RouterCollection,
 RequestMethods,
} from 'decorators-in-koa';

@Controller('controller/path')
export class ExampleController extends RouterCollection {
 @RequestMethods.Get('path')
 get(context: Context): void { // ...}

 @RequestMethods.Post('path')
 post(context: Context): void { // ...}

 @RequestMethods.Put('path')
 put(context: Context): void { // ...}

 @RequestMethods.Delete('path')
 delete(context: Context): void { // ...}

 @RequestMethods.Patch('path')
 patch(context: Context): void { // ...}
}

Example App

import Koa from 'koa';
import { setupControllerRoutes } from 'decorators-in-koa';

import { ExampleController } from './controllers';

export const createApp = () => {
 const app = new Koa();

 const controllerRoutes = setupControllerRoutes([ExampleController]);

 app.use(controllerRoutes.routes());

 return app;
};