const serveAutoIndexPage = require('./serveAutoIndexPage'); const serveHTMLModule = require('./serveHTMLModule'); const serveJavaScriptModule = require('./serveJavaScriptModule'); const serveStaticFile = require('./serveStaticFile'); const serveMetadata = require('./serveMetadata'); /** * Send the file, JSON metadata, or HTML directory listing. */ function serveFile(req, res) { if (req.query.meta != null) { return serveMetadata(req, res); } if (req.entry.type === 'directory') { return serveAutoIndexPage(req, res); } if (req.query.module != null) { if (req.entry.contentType === 'application/javascript') { return serveJavaScriptModule(req, res); } if (req.entry.contentType === 'text/html') { return serveHTMLModule(req, res); } return res .status(403) .type('text') .send('?module mode is available only for JavaScript and HTML files'); } serveStaticFile(req, res); } module.exports = serveFile;