| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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);
- });
- };
- }
|