app-builder

Promise based composable functions for middleware


Keywords
middleware, functional, composable, composition, pipeline, onion, async, compose
License
MIT
Install
npm install app-builder@7.0.4

Documentation

app-builder

Create composable promise based middleware pipelines.

npm install app-builder

circle-ci

Example

import { compose } from 'app-builder'

const app = compose([
  async function (ctx, next) {
    ctx.value += 1
    await next()
    ctx.value += 4
  },
  async function (ctx, next) {
    ctx.value += 2
    await next()
    ctx.value += 3
  }
]);

const context = { value: '' }
app(context).then(() => console.log(context.value)) // --> '1234'

This module has the following TypeScript definition, containing 2 named exports and default factory export. As well as a Middleware interface definition

declare module 'app-builder' {

  export default function createAppBuilder<T>() : AppBuilder<T> 

  export class AppBuilder<T> {
    use(middleware: Middleware<T>): AppBuilder<T>
    build(): Middleware<T>
  }

  export function compose<T> (middleware: Array<Middleware<T>|Array<Middleware<T>>) : Middleware<T>

  export interface Middleware<T> {
    (context?: T, next?: Middleware<T>): any
}