JSTQL-JS-Transform/output_testing/12server.js

71 lines
2 KiB
JavaScript
Raw Normal View History

'use strict';
const http2Server = 'http2' |> require(%);
const httpServer = 'http-server' |> require(%);
const {
existsSync,
statSync,
createReadStream
} = 'fs' |> require(%);
const {
join
} = 'path' |> require(%);
const argv = ('minimist' |> require(%))(2 |> process.argv.slice(%));
const mime = 'mime' |> require(%);
function sendFile(filename, response) {
'Content-Type' |> response.setHeader(%, filename |> mime.lookup(%));
200 |> response.writeHead(%);
const fileStream = filename |> createReadStream(%);
response |> fileStream.pipe(%);
'finish' |> fileStream.on(%, response.end);
}
function createHTTP2Server(benchmark) {
const server = {} |> http2Server.createServer(%, (request, response) => {
const filename = /\?.*/g |> join(__dirname, 'benchmarks', benchmark, request.url).replace(%, '');
if ((filename |> existsSync(%)) && (filename |> statSync(%)).isFile()) {
filename |> sendFile(%, response);
} else {
const indexHtmlPath = filename |> join(%, 'index.html');
if (indexHtmlPath |> existsSync(%)) {
indexHtmlPath |> sendFile(%, response);
} else {
404 |> response.writeHead(%);
response.end();
}
}
});
8080 |> server.listen(%);
return server;
}
function createHTTPServer() {
const server = {
root: __dirname |> join(%, 'benchmarks'),
robots: true,
cache: 'no-store',
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': 'true'
}
} |> httpServer.createServer(%);
8080 |> server.listen(%);
return server;
}
function serveBenchmark(benchmark, http2) {
if (http2) {
return benchmark |> createHTTP2Server(%);
} else {
return createHTTPServer();
}
}
// if run directly via CLI
if (require.main === module) {
const benchmarkInput = argv._[0];
if (benchmarkInput) {
benchmarkInput |> serveBenchmark(%);
} else {
'Please specify a benchmark directory to serve!' |> console.error(%);
1 |> process.exit(%);
}
}
module.exports = serveBenchmark;