UNPKG

@roots/bud-server

Version:

Development server for @roots/bud

50 lines (49 loc) 3.61 kB
import filterUndefined from '@roots/bud-support/filter-undefined'; import { createProxyMiddleware } from '@roots/bud-support/http-proxy-middleware'; import * as responseInterceptor from './responseInterceptor.js'; /** * Proxy middleware factory */ export const factory = (app) => createProxyMiddleware(makeOptions(app)); export const makeOptions = (app) => { const url = { dev: app.server.publicUrl, proxy: app.server.proxyUrl, publicProxy: app.server.publicProxyUrl, }; return filterUndefined(app.hooks.filter(`dev.middleware.proxy.options`, { agent: app.hooks.filter(`dev.middleware.proxy.options.agent`, undefined), autoRewrite: app.hooks.filter(`dev.middleware.proxy.options.autoRewrite`, true), buffer: app.hooks.filter(`dev.middleware.proxy.options.buffer`, undefined), changeOrigin: app.hooks.filter(`dev.middleware.proxy.options.changeOrigin`, true), cookieDomainRewrite: app.hooks.filter(`dev.middleware.proxy.options.cookieDomainRewrite`, url.dev?.host), cookiePathRewrite: app.hooks.filter(`dev.middleware.proxy.options.cookiePathRewrite`, undefined), ejectPlugins: app.hooks.filter(`dev.middleware.proxy.options.ejectPlugins`, undefined), followRedirects: app.hooks.filter(`dev.middleware.proxy.options.followRedirects`, false), headers: app.hooks.filter(`dev.middleware.proxy.options.headers`, undefined), hostRewrite: app.hooks.filter(`dev.middleware.proxy.options.hostRewrite`, url.dev?.host), ignorePath: app.hooks.filter(`dev.middleware.proxy.options.ignorePath`, undefined), localAddress: app.hooks.filter(`dev.middleware.proxy.options.localAddress`, undefined), logger: app.hooks.filter(`dev.middleware.proxy.options.logger`, app.server.logger?.scope(app.label, `proxy`) ?? console), on: filterUndefined(app.hooks.filter(`dev.middleware.proxy.options.on`, { proxyReq: app.hooks.filter(`dev.middleware.proxy.options.onProxyReq`, undefined), proxyRes: app.hooks.filter(`dev.middleware.proxy.options.onProxyRes`, responseInterceptor.factory(app, url)), })), pathFilter: app.hooks.filter(`dev.middleware.proxy.options.pathFilter`, [`!/bud/hot/**`]), pathRewrite: app.hooks.filter(`dev.middleware.proxy.options.pathRewrite`, undefined), plugins: app.hooks.filter(`dev.middleware.proxy.options.plugins`, undefined), prependPath: app.hooks.filter(`dev.middleware.proxy.options.prependPath`, undefined), preserveHeaderKeyCase: app.hooks.filter(`dev.middleware.proxy.options.preserveHeaderKeyCase`, undefined), protocolRewrite: app.hooks.filter(`dev.middleware.proxy.options.protocolRewrite`, url.publicProxy.protocol.startsWith(`https`) ? `https` : undefined), proxyTimeout: app.hooks.filter(`dev.middleware.proxy.options.proxyTimeout`, undefined), router: app.hooks.filter(`dev.middleware.proxy.options.router`, undefined), secure: app.hooks.filter(`dev.middleware.proxy.options.secure`, false), selfHandleResponse: app.hooks.filter(`dev.middleware.proxy.options.selfHandleResponse`, true), ssl: app.hooks.filter(`dev.middleware.proxy.options.ssl`, undefined), target: url.proxy, timeout: app.hooks.filter(`dev.middleware.proxy.options.timeout`, undefined), toProxy: app.hooks.filter(`dev.middleware.proxy.options.toProxy`, undefined), ws: app.hooks.filter(`dev.middleware.proxy.options.ws`, undefined), xfwd: app.hooks.filter(`dev.middleware.proxy.options.xfwd`, undefined), })); };