5.1.1 • Published 10 days ago

express-msgpack v5.1.1

Weekly downloads
281
License
ISC
Repository
github
Last release
10 days ago

Express Msgpack

License Build Status Test Coverage Maintainability NPM Version

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:

ParameterDescriptionDefault
decodera function converting from MessagePack to JavaScript@msgpack/msgpack#decode
encodera function converting from JavaScript to MessagePack@msgpack/msgpack#encode (with a wrapper to convert the result to a Buffer)
mimeTypethe MIME type to detect and set for MessagePack payloads"application/msgpack"
limitThe 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 tests
  • npm run lint: run the ESLint checks
  • npm run ship: lint and run unit, integration and E2E tests
  • npm test: run the Jest unit and integration tests
  • npm 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 details
  • integration.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.

5.1.1

10 days ago

5.1.0

10 days ago

5.0.0

9 months ago

4.0.4

1 year ago

4.1.0

1 year ago

4.0.3

2 years ago

4.0.1

2 years ago

4.0.2

2 years ago

4.0.0

2 years ago

3.0.5

2 years ago

3.0.4

2 years ago

3.0.3

2 years ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

2.1.1

2 years ago

2.1.0

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.0.2

3 years ago

1.0.1

4 years ago

1.0.0

5 years ago

0.3.0

5 years ago

0.2.0

5 years ago

0.0.999

5 years ago

0.1.0

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago