
Security News
Meet Socket at Black Hat Europe and BSides London 2025
Socket is heading to London! Stop by our booth or schedule a meeting to see what we've been working on.
Monadic Middleware
npm install --save monastic fluture momi
Middleware - specifically in the case of Connect, Express and Koa - is a mechanism which encodes several effects:
req parameterres parameternext parameternext parameter with
a valueIf we would want to encode all of these effects into a data-structure, we
could use a StateT(Future) -> StateT(Future) structure:
State monadFutureFutureIn other words, the StateT(Future)-structure might be considered the
Middleware monad. This packages exposes the Middleware monad, comprised of
State from monastic and Future from Fluture. Besides the
monad itself, it also exposes some utility functions and structures for
practically applying Middleware. One such utility is the App class,
which allows composition of functions over Middleware to be written more
like what you are used to from middleware as it comes with Express or Koa.
$ npm install --save momi
On Node 12 and up, this module can be loaded directly with import or
require. On Node versions below 12, require or the esm-loader can
be used.
You can load the EcmaScript module from various content delivery networks:
There's a UMD file included in the NPM package, also available via jsDelivr: https://cdn.jsdelivr.net/npm/momi@1.0.0/dist/umd.js
This file adds momi to the global scope, or use CommonJS/AMD
when available.
import Z from 'sanctuary-type-classes';
import qs from 'querystring';
import http from 'http';
import {compose, constant} from 'monastic';
import {go, mount, get, put} from 'momi';
const queryParseMiddleware = go (function* (next) {
const req = yield get;
const query = qs.parse (req.url.split ('?')[1]);
yield put (Object.assign ({query}, req));
return yield next;
});
const echoMiddleware = Z.map (req => ({
status: 200,
headers: {'X-Powered-By': 'momi'},
body: req.query.echo,
}), get);
const app = compose (
queryParseMiddleware,
constant (echoMiddleware)
);
mount (http, app, 3000);
FAQs
Monadic middleware
We found that momi demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

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.

Security News
Socket is heading to London! Stop by our booth or schedule a meeting to see what we've been working on.

Security News
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.