Home / File/ server.js — react Source File

server.js — react Source File

Architecture documentation for server.js, a javascript file in the react codebase.

Entity Profile

Relationship Graph

Source Code

'use strict';

const http2Server = require('http2');
const httpServer = require('http-server');
const {existsSync, statSync, createReadStream} = require('fs');
const {join} = require('path');
const argv = require('minimist')(process.argv.slice(2));
const mime = require('mime');

function sendFile(filename, response) {
  response.setHeader('Content-Type', mime.lookup(filename));
  response.writeHead(200);
  const fileStream = createReadStream(filename);
  fileStream.pipe(response);
  fileStream.on('finish', response.end);
}

function createHTTP2Server(benchmark) {
  const server = http2Server.createServer({}, (request, response) => {
    const filename = join(
      __dirname,
      'benchmarks',
      benchmark,
      request.url
    ).replace(/\?.*/g, '');

    if (existsSync(filename) && statSync(filename).isFile()) {
      sendFile(filename, response);
    } else {
      const indexHtmlPath = join(filename, 'index.html');

      if (existsSync(indexHtmlPath)) {
        sendFile(indexHtmlPath, response);
      } else {
        response.writeHead(404);
        response.end();
      }
    }
  });
  server.listen(8080);
  return server;
}

function createHTTPServer() {
  const server = httpServer.createServer({
    root: join(__dirname, 'benchmarks'),
    robots: true,
    cache: 'no-store',
    headers: {
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Credentials': 'true',
    },
  });
  server.listen(8080);
  return server;
}

function serveBenchmark(benchmark, http2) {
  if (http2) {
    return createHTTP2Server(benchmark);
  } else {
    return createHTTPServer();
  }
}

// if run directly via CLI
if (require.main === module) {
  const benchmarkInput = argv._[0];

  if (benchmarkInput) {
    serveBenchmark(benchmarkInput);
  } else {
    console.error('Please specify a benchmark directory to serve!');
    process.exit(1);
  }
}

module.exports = serveBenchmark;

Domain

Subdomains

Frequently Asked Questions

What does server.js do?
server.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain, Entrypoint subdomain.
What functions are defined in server.js?
server.js defines 4 function(s): createHTTP2Server, createHTTPServer, sendFile, serveBenchmark.
Where is server.js in the architecture?
server.js is located at scripts/bench/server.js (domain: BabelCompiler, subdomain: Entrypoint, directory: scripts/bench).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free