unpkg/modules/createServer.js

50 lines
1.3 KiB
JavaScript

import express from 'express';
import serveFile from './actions/serveFile.js';
import serveMainPage from './actions/serveMainPage.js';
import serveStats from './actions/serveStats.js';
import cors from './middleware/cors.js';
import fetchPackage from './middleware/fetchPackage.js';
import findFile from './middleware/findFile.js';
import logger from './middleware/logger.js';
import redirectLegacyURLs from './middleware/redirectLegacyURLs.js';
import staticFiles from './middleware/staticFiles.js';
import validatePackageURL from './middleware/validatePackageURL.js';
import validatePackageName from './middleware/validatePackageName.js';
import validateQuery from './middleware/validateQuery.js';
export default function createServer() {
const app = express();
app.disable('x-powered-by');
app.enable('trust proxy');
app.use(logger);
app.use(cors);
app.use(staticFiles);
// Special startup request from App Engine
// https://cloud.google.com/appengine/docs/standard/nodejs/how-instances-are-managed
app.get('/_ah/start', (req, res) => {
res.status(200).end();
});
app.get('/', serveMainPage);
app.get('/api/stats', serveStats);
app.use(redirectLegacyURLs);
app.get(
'*',
validatePackageURL,
validatePackageName,
validateQuery,
fetchPackage,
findFile,
serveFile
);
return app;
}