connect-to-fetch
TypeScript icon, indicating that this package has built-in type declarations

1.0.0-rc.2 • Public • Published

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

Package Sidebar

Install

npm i connect-to-fetch

Weekly Downloads

3

Version

1.0.0-rc.2

License

ISC

Unpacked Size

22.3 kB

Total Files

11

Last publish

Collaborators

  • kensnyder