
Security News
PodRocket Podcast: Inside the Recent npm Supply Chain Attacks
Socket CEO Feross Aboukhadijeh discusses the recent npm supply chain attacks on PodRocket, covering novel attack vectors and how developers can protect themselves.
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
monadFuture
Future
In 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 CEO Feross Aboukhadijeh discusses the recent npm supply chain attacks on PodRocket, covering novel attack vectors and how developers can protect themselves.
Security News
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.
Product
Socket Firewall is a free tool that blocks malicious packages at install time, giving developers proactive protection against rising supply chain attacks.