JSPM

@otterhttp/parsec

0.2.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 5
  • Score
    100M100P100Q30477F
  • License LGPL-3.0-or-later

ESM / TypeScript re-write of body-parser

Package Exports

  • @otterhttp/parsec

Readme

@otterhttp/parsec

HTTP request body-parsing for modern Node.js.

📌 This project is a fork of tinyhttp/milliparsec.

npm GitHub Workflow Status Coverage

Features

  • ⏩ built with async / `await
  • 🛠 support for
    • JSON
    • urlencoded
    • text
    • multipart/form-data
  • 🔥 no dependencies
  • otterhttp support
  • ⚡ 30% faster than body-parser

Install

# pnpm
pnpm i @otterhttp/parsec

# yarn
yarn add @otterhttp/parsec

# npm
npm i @otterhttp/parsec

Usage

Basic example

Use a middleware inside a server:

import { createServer } from 'node:http'
import { json } from '@otterhttp/parsec'

const parseJsonBody = json()

const server = createServer(async (req: HasBody, res) => {
  await parseJsonBody(req, res, (err) => void console.log(err))

  res.setHeader('Content-Type', 'application/json')

  res.end(JSON.stringify(req.body))
})

Web frameworks integration

otterhttp

import { App } from '@otterhttp/app'
import { urlencoded } from '@otterhttp/parsec'

new App()
  .use(urlencoded())
  .post('/', (req, res) => void res.send(req.body))
  .listen(3000, () => console.log(`Started on http://localhost:3000`))

API

raw(req, res, cb)

Minimal body parsing without any formatting.

text(req, res, cb)

Converts request body to string.

urlencoded(req, res, cb)

Parses request body using new URLSearchParams.

json(req, res, cb)

Parses request body using JSON.parse.

custom(fn)(req, res, cb)

Custom function for parsec.

// curl -d "this text must be uppercased" localhost
await makeCustom(
        req,
        (d) => d.toUpperCase(),
        (err) => {
        }
)
res.end(req.body) // "THIS TEXT MUST BE UPPERCASED"

What does "parsec" mean?

The parsec is a unit of length used to measure large distances to astronomical objects outside the Solar System.