UNPKG

http-proxy-middleware

Version:

The one-liner node.js proxy middleware for connect, express, next.js and more

46 lines (45 loc) 1.45 kB
import { createProxyMiddleware } from './index.js'; import { getLogger } from './logger.js'; /** * Creates a Hono middleware that proxies requests using http-proxy-middleware. * * @remarks * This middleware requires Hono to be running on Node.js via `@hono/node-server`. * It uses `c.env.incoming` and `c.env.outgoing` which are only available with `HttpBindings`. * * @experimental This API is experimental and may change without a major version bump. * * @example * ```ts * import { serve } from '@hono/node-server'; * import { Hono } from 'hono'; * import { createHonoProxyMiddleware } from 'http-proxy-middleware/hono'; * * const app = new Hono(); * app.use('/api', createHonoProxyMiddleware({ target: 'http://example.com', changeOrigin: true })); * serve(app); * ``` * * @since 4.0.0 */ export function createHonoProxyMiddleware(options) { const proxy = createProxyMiddleware(options); const logger = getLogger(options); return (c, next) => { return new Promise((resolve, reject) => { proxy(c.env.incoming, c.env.outgoing, (err) => { if (err) { reject(err); } else { resolve(); } }); }) .then(() => next()) .catch((err) => { logger.error('Proxy error:', err); return c.text('Proxy Error', 500); }); }; }