Skip to main content

Pipes

A Pipe is a function to reuse common logic in your app or break down big logic into small pieces of codes.

App Overview

Recommendation

Learn about Application and Actions before to read this section.

Defining a Pipe#

// log-headers.pipe.tsimport { Pipe, Ctx } from 'wind-waker';
export const logHeadersPipe: Pipe = (ctx: Ctx) => {    console.log(ctx.req.headers);}

Using the Pipe#

A pipe can be used at 3 levels:

  • Application
  • Group Actions
  • Single Action

Application Level#

Using the pipe at Application level means every single request will execute this pipe. See how to set the pipe in the example below.

import { App } from 'wind-waker';import { logHeadersPipe } from './pipes/log-headers.pipe';
// Create your applicationconst app = new App();
// Set the pipe at the app levelapp.pipeline(logHeadersPipe);
// Start listen requestsapp.listen(4000);

The pipeline function can accept multiple pipes separated by a comma.

// Set multiple pipes at the app levelapp.pipeline(logHeadersPipe, anotherPipe, ...);
Pipeline order matter

The pipes register in the pipeline will be executed in the exactly same order you pass in.

Available Pipes#

  • cors
  • helmet
  • parse
  • jwt

Using cors Pipe#

let's set for example the cors Pipe, your app.ts now will look like this:

import {App, cors} from 'wind-waker'
// Create a new wind-waker server by instance the App classconst app = new App();
// Setting cors Pipe at App level.// cors Pipe will enable CORS for all requests.app.pipeline(cors())
// Start listen to incoming request on port 4000app.listen(4000);