node-edge-server
TypeScript icon, indicating that this package has built-in type declarations

0.0.3 • Public • Published

Edge Server Adapter for Node.js

🚀 Simple, Lightweight

This adapter allows you to run your Worker application on Node.js. It utilizes web standard APIs implemented in Node.js version 18 or higher.

You can now share the same code between Edge Workers and Node.js. No more express.

Required Node.js 18 or higher.

Install

npm install node-edge-server

Supported both CommonJS and ESM.

Usage

import { serve } from 'node-edge-server'

async function handler(req: Request) {
  return new Response('200 OK')
}

serve(handler, (info) => {
  console.log(`Listening on http://127.0.0.1:${info.port}`) // Listening on http://127.0.0.1:3000
})

Run it then open http://127.0.0.1:3000.

Note KV, DO, or any specific to cloud provider is not included. You should handle it yourself.

Options

interface ServerOptions {
  port?: number;        // default 3000
  hostname?: string;    // default 0.0.0.0
  signal?: AbortSignal; // signal to close the server
};

port

serve(handler, 3000, (info) => {
  console.log(`Listening on http://127.0.0.1:${info.port}`)
})

https

import https from 'node:https'
import fs from 'node:fs'

import { createRequestListener } from 'node-edge-server'

async function handler(req: Request) {
  return new Response('200 OK')
}

const options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};

https.createServer(options, createRequestListener(handler)).listen(8443);

API

serve(fetchHandler: FetchHandler)

serve serves your handler on the Node.js HTTP server.

serve(fetchHandler: FetchHandler): http.Server;
serve(fetchHandler: FetchHandler, onListen: OnListen): http.Server;

serve(fetchHandler: FetchHandler, port: number): http.Server;
serve(fetchHandler: FetchHandler, port: number, onListen: OnListen): http.Server;

serve(fetchHandler: FetchHandler, options: ServerOptions): http.Server;
serve(fetchHandler: FetchHandler, options: ServerOptions, onListen: OnListen): http.Server;

createRequestListener(fetchHandler: FetchHandler)

createRequestListener wraps your handler and returns a Node.js HTTP request listener that can be passed to https.createServer or express route.

Streaming

This also supports media streaming. Thank to fetch.

See examples/video.mjs

Author

Credit

License

MIT

Package Sidebar

Install

npm i node-edge-server

Weekly Downloads

2

Version

0.0.3

License

MIT

Unpacked Size

16.6 kB

Total Files

8

Last publish

Collaborators

  • reeganexe