Skip to content

Latest commit

 

History

History
80 lines (59 loc) · 2.11 KB

README.md

File metadata and controls

80 lines (59 loc) · 2.11 KB

connect-to-fetch

Use Connect-style Node handlers with Fetch environments such as Bun.serve and Deno.serve.

NPM Link Language: TypeScript No Dependencies Code Coverage Tree shakeable ISC License

Motivation

Use Vite's dev-server middleware with application that uses Bun.serve.

Installation

bun add connect-to-fetch

Usage

Pass one or more handlers or middleware to connectToFetch.

Example with single handler:

import { connectToFetch } from 'connect-to-fetch';

const getResponse = connectToFetch((req, res) => {
  res.setHeader('Content-type', 'text/plain');
  res.end('Hello world');
});

Bun.serve({
  async fetch(request: Request) {
    try {
      return await getResponse(request);
    } catch (e) {
      const error = e as Error;
      if (error.message === 'UNHANDLED') {
        return new Response('Not Found', { status: 404 });
      }
      console.error(error);
      return new Response('Server Error', { status: 500 });
    }
  },
});

Example with multiple handlers:

import { connectToFetch } from 'connect-to-fetch';

const getResponse = connectToFetch([
  (req, res, next) => {
    console.log(req.method, req.path);
    next();
  },
  (req, res) => {
    res.setHeader('Content-type', 'text/plain');
    res.end('Hello world');
  },
]);

Prior art

Adapted from vike-node, MIT License.

Testing

Tests use Bun.serve, so you'll need to have Bun installed to test.

History

Changelog