UNPKG

webpack-mock-server

Version:

Mocks api requests for webpack-dev-server with hot-replacement

66 lines (65 loc) 2.15 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = mockServerMiddleware; const http_1 = __importDefault(require("http")); const log_1 = __importDefault(require("./log")); let storedPort = 0; let isDone = false; function mockServerMiddleware(app, port) { storedPort = port; if (isDone) { return; } let wasError = false; isDone = true; app.use((clientReq, clientRes, next) => { try { const options = { hostname: "localhost", port: storedPort, path: clientReq.url, method: clientReq.method, headers: clientReq.headers, }; if (clientReq.url === "/" || clientReq.url.startsWith("/?") || clientReq.url.startsWith("?") || !storedPort) { next(); return; } const proxy = http_1.default.request(options, (res) => { wasError = false; if (res.statusCode === 404) { next(); } else if (res) { clientRes.writeHead(res.statusCode || 200, res.headers); res.pipe(clientRes, { end: true, }); } }); clientReq .pipe(proxy, { end: true, }) .on("error", (ex) => { if (!wasError) { wasError = true; if (ex.code === "ECONNREFUSED") { log_1.default.error(`Server is not available on ${ex.address}${ex.port ? `:${ex.port}` : ""}`); } else { log_1.default.error("", ex); } } next(); }); } catch (ex) { log_1.default.error(ex.toString()); next(); } }); }