Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/textbook/express-msgpack
Transparent MessagePack middleware for Express // msgpack.org[JavaScript]
https://github.com/textbook/express-msgpack
express express-js express-middleware express-msgpack expressjs javascript messagepack middleware msgpack npm npm-package npmjs
Last synced: 26 days ago
JSON representation
Transparent MessagePack middleware for Express // msgpack.org[JavaScript]
- Host: GitHub
- URL: https://github.com/textbook/express-msgpack
- Owner: textbook
- License: isc
- Created: 2019-06-07T22:01:39.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-05-17T19:26:41.000Z (6 months ago)
- Last Synced: 2024-09-28T15:21:06.716Z (about 1 month ago)
- Topics: express, express-js, express-middleware, express-msgpack, expressjs, javascript, messagepack, middleware, msgpack, npm, npm-package, npmjs
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/express-msgpack
- Size: 2.55 MB
- Stars: 7
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Express Msgpack
[![License](https://img.shields.io/github/license/textbook/express-msgpack.svg)](https://github.com/textbook/express-msgpack/blob/main/LICENSE)
[![Build Status](https://github.com/textbook/express-msgpack/workflows/Node.js%20CI/badge.svg?branch=main)](https://github.com/textbook/express-msgpack/actions)
[![Test Coverage](https://api.codeclimate.com/v1/badges/e9a820ea77a01c1ba8bb/test_coverage)](https://codeclimate.com/github/textbook/express-msgpack/test_coverage)
[![Maintainability](https://api.codeclimate.com/v1/badges/e9a820ea77a01c1ba8bb/maintainability)](https://codeclimate.com/github/textbook/express-msgpack/maintainability)
[![NPM Version](https://img.shields.io/npm/v/express-msgpack.svg)](https://www.npmjs.com/package/express-msgpack)[Express] and [MessagePack], together at last. Uses [`@msgpack/msgpack`][1] 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
```bash
$ 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
```javascript
import msgpack from "express-msgpack";// ...
app.use(msgpack());
```### CommonJS
```javascript
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](https://www.npmjs.com/package/bytes) | `"100kb"` |For example, to switch to the node-gyp C++ based [msgpack] library:
```javascript
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 modeThe 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 middlewareThere 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.[Express]: https://expressjs.com/
[Jest]: https://jestjs.io/
[MessagePack]: https://msgpack.org/
[msgpack]: https://www.npmjs.com/package/msgpack
[SuperTest]: https://github.com/visionmedia/supertest
[1]: https://www.npmjs.com/package/@msgpack/msgpack