| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | 'use strict';const { createReadStream } = require('fs');const { join } = require('path');const clientBasePath = join(__dirname, '..', '..', 'client');function routes(server) {  const app = server.app;  const middleware = server.middleware;  const options = server.options;  app.get('/__webpack_dev_server__/live.bundle.js', (req, res) => {    res.setHeader('Content-Type', 'application/javascript');    createReadStream(join(clientBasePath, 'live.bundle.js')).pipe(res);  });  app.get('/__webpack_dev_server__/sockjs.bundle.js', (req, res) => {    res.setHeader('Content-Type', 'application/javascript');    createReadStream(join(clientBasePath, 'sockjs.bundle.js')).pipe(res);  });  app.get('/webpack-dev-server.js', (req, res) => {    res.setHeader('Content-Type', 'application/javascript');    createReadStream(join(clientBasePath, 'index.bundle.js')).pipe(res);  });  app.get('/webpack-dev-server/invalidate', (_req, res) => {    server.invalidate();    res.end();  });  app.get('/webpack-dev-server/*', (req, res) => {    res.setHeader('Content-Type', 'text/html');    createReadStream(join(clientBasePath, 'live.html')).pipe(res);  });  app.get('/webpack-dev-server', (req, res) => {    res.setHeader('Content-Type', 'text/html');    res.write(      '<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body>'    );    const outputPath = middleware.getFilenameFromUrl(options.publicPath || '/');    const filesystem = middleware.fileSystem;    writeDirectory(options.publicPath || '/', outputPath);    res.end('</body></html>');    function writeDirectory(baseUrl, basePath) {      const content = filesystem.readdirSync(basePath);      res.write('<ul>');      content.forEach((item) => {        const p = `${basePath}/${item}`;        if (filesystem.statSync(p).isFile()) {          res.write(`<li><a href="${baseUrl + item}">${item}</a></li>`);          if (/\.js$/.test(item)) {            const html = item.substr(0, item.length - 3);            const containerHref = baseUrl + html;            const magicHtmlHref =              baseUrl.replace(                // eslint-disable-next-line                /(^(https?:\/\/[^\/]+)?\/)/,                '$1webpack-dev-server/'              ) + html;            res.write(              `<li><a href="${containerHref}">${html}</a>` +                ` (magic html for ${item}) (<a href="${magicHtmlHref}">webpack-dev-server</a>)` +                `</li>`            );          }        } else {          res.write(`<li>${item}<br>`);          writeDirectory(`${baseUrl + item}/`, p);          res.write('</li>');        }      });      res.write('</ul>');    }  });}module.exports = routes;
 |