express-msgpack
v5.1.2
Published
Transparent MessagePack middleware for Express
Downloads
6,017
Readme
Express Msgpack
Express and MessagePack, together at last. Uses @msgpack/msgpack
by default.
Functionality
Provides transparent middleware that can be used to support clients requesting
Accept: application/msgpack
from endpoints using res.json
or sending
Content-Type: application/msgpack
to any endpoint. You can continue to use
req.body
and res.json
and expressMsgpack
will handle the conversion in
the background using @msgpack/msgpack
(or any compatible library of your
choice).
Installation
$ npm install --save express-msgpack
// or
$ yarn add express-msgpack
If you intend to use an alternative to @msgpack/msgpack
(see Configuration)
you can add the --no-optional
flag; it's an optional dependency.
Usage
import msgpack from "express-msgpack";
// ...
app.use(msgpack());
CommonJS
const msgpack = require("express-msgpack").default;
// ...
app.use(msgpack());
Configuration
To configure, pass options when you configure the middleware. Currently supported options are:
| Parameter | Description | Default |
|------------|----------------------------------------------------------|------------------------------------------------------------------------------|
| decoder
| a function converting from MessagePack to JavaScript | @msgpack/msgpack#decode
|
| encoder
| a function converting from JavaScript to MessagePack | @msgpack/msgpack#encode
(with a wrapper to convert the result to a Buffer) |
| mimeType
| the MIME type to detect and set for MessagePack payloads | "application/msgpack"
|
| limit
| The byte limit of the body. This is the number of bytes or any string format supported by bytes | "100kb"
|
For example, to switch to the node-gyp C++ based msgpack library:
import msgpack from "express-msgpack";
import { pack, unpack } from "msgpack";
// ...
app.use(msgpack({ decoder: unpack, encoder: pack }));
Development
The project has code linting and testing, using the following commands:
npm run e2e
: run the smoke/E2E testsnpm run lint
: run the ESLint checksnpm run ship
: lint and run unit, integration and E2E testsnpm test
: run the Jest unit and integration testsnpm test:watch
: run the tests in watch mode
The tests are in the __tests__/
directory and are run using Jest. They're
split into two files:
unit.test.ts
- mockist unit tests, to check specific internal detailsintegration.test.ts
- integration tests using SuperTest with a simple Express app using the middleware
There is also a smoke/
directory containing E2E/smoke tests for a deployed
version of the package, used by bin/smoke.sh
. If the --local
argument is
supplied to the script the local version is packaged and tested , otherwise
the specified $TAG
version is installed from the registry and tested.