New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

midmare

Package Overview
Dependencies
Maintainers
1
Versions
48
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

midmare

program functional router

latest
Source
npmnpm
Version
1.6.0
Version published
Maintainers
1
Created
Source

npm version Build Status codecov.io

MIDMARE library

Minimalist library that routing functionality of program.

Installation

This is a Node.js module available through the npm registry.

Before installing, download and install Node.js. Node.js 0.10 or higher is required.

If this is a brand new project, make sure to create a package.json first with the npm init command.

Installation is done using the npm install command:

npm install midmare

Features

  • Robust routing
  • Focus on high performance

Using of it

That's really pretty simple. The same way as you use an "express.js" application, but without HTTP Layer.

const {default: mid, Router: { Router }} = require('midmare');

const app = mid();

/*
  You can create your own router
*/

const someRouter = new Router({});

someRouter.use((ctx, next) => {
  ctx.set('someRoutingData', 'Hello Mid!');
  next();
});

someRouter.process('/some-route-of-router', (ctx) => {
  ctx.send('/next-route');
});

/*
  You can use params in url
*/
someRouter.process('/model/:container/:id', ctx => {
 console.log(ctx.params);
});

/* 
  You can add `helper` functions and use them from `ctx`.
  Helper should be named function declaration - 
  `function nameOfFunction() { ... }`
*/
app.helper(function someHelperName(yourArg1, yourArg2) {
  console.log('Hello helper.', yourArg1, yourArg2);
} /*, second argument is binding of any context you want. To use `this` in function. */);


app
    .use(function(ctx, next) {
      // Two ways to set data to context.
      ctx.user = 'Hi MID.';
      ctx.set('user', 'Hi MID.');
      next();
    })
    .process('/', function(ctx) {
      console.log('CTX', ctx.get('data'));
      
      
      /* Sending to another path */
      ctx.send('/some/other/path');

      /*
        DO NOT USE `app.send` inside of route/middleware !!!!
      
        Be careful to use multiple sending in one route/ middleware, that can overload your app.
        And be careful with cyclic sending. App have protection from it.
      */
      

      if(youWantUseYourHelper) {
        ctx.someHelperName('yourArg1', 'yourArg2');
      }
    })
    // Adding router to chain
    .use(someRouter.routes());

app.init();

/*
  `init` method ignore creating a waiter(timeout) for your functionality.
  If you will create app with `withListen` option and run `init` or `listen`, your application will not be closed until
    you will call method `stop`.
*/

/* To send to app some data you can use method `send` */

app.send('/', 'Some data that you sending.');

/* 
    If you want send data to all middleware just use regexp patters,
    this library uses same matching path as express.js app.
 */

app.send('*', 'some data');


/* Send data to route with params */

app.send('/model/Game/145932157', { data: 123 });

Keywords

middleware

FAQs

Package last updated on 23 Jun 2021

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