npm package diff

Package: @forge/tunnel

Versions: 5.10.5-next.2 - 5.11.0-next.3

File: package/out/servers/dev-server.js

Index: package/out/servers/dev-server.js
===================================================================
--- package/out/servers/dev-server.js
+++ package/out/servers/dev-server.js
@@ -6,8 +6,9 @@
 const bundler_1 = require("@forge/bundler");
 const cli_shared_1 = require("@forge/cli-shared");
 const runtime_1 = require("@forge/runtime");
 const util_1 = require("../util");
+const http_proxy_middleware_1 = require("http-proxy-middleware");
 async function stopServer(server) {
     if (!server) {
         return;
     }
@@ -34,10 +35,35 @@
         this.fileSystemReader = fileSystemReader;
         this.statsigService = statsigService;
         this.i18nResourceBundlingService = i18nResourceBundlingService;
         this.app = (0, express_1.default)();
+        this.app.disable('x-powered-by');
+        this.app.disable('etag');
         this.app.use(express_1.default.json({ limit: '6mb' }));
         this.app.post(`/:fnKey`, this.handleInvocation);
+        const FORGE_SERVICE_PORT = 7071;
+        this.app.use(/^\/forge\/.*\/.*/, (0, http_proxy_middleware_1.createProxyMiddleware)({
+            target: `http://localhost:${FORGE_SERVICE_PORT}`,
+            pathRewrite: { '^/forge/[^/]*': '' },
+            logLevel: 'info',
+            logProvider: () => {
+                return {
+                    log: this.logger.trace,
+                    debug: this.logger.trace,
+                    info: this.logger.trace,
+                    warn: this.logger.warn,
+                    error: this.logger.error
+                };
+            },
+            onProxyReq: (proxyReq) => {
+                this.logger.info(cli_shared_1.Text.tunnel.container.invoke(proxyReq, FORGE_SERVICE_PORT));
+            },
+            onError: (err, _, res) => {
+                const message = cli_shared_1.Text.tunnel.container.error(err.code ?? err.message);
+                this.logger.warn(message);
+                res.status(500).send(message);
+            }
+        }));
     }
     async start(port = 0, permissions, remotes) {
         this.permissions = permissions;
         this.remotes = remotes;