-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
serve.js
46 lines (35 loc) · 1 KB
/
serve.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const express = require('express');
const path = require('path');
const fs = require('fs');
const {LOCAL_BUNDLE} = require('./constants');
const utils = require('./utils');
const app = express();
let pagesByName = {};
app.use('/images', express.static('./images'));
app.get('/', (req, resp) => {
/* Refresh page index */
const pages = utils.getAllMetadata();
pagesByName = {};
pages.forEach(meta => {
pagesByName[meta.name] = meta;
});
resp.send(utils.getIndexPage(pages, {noCache: true}));
});
app.get('/404', (req, resp) => {
resp.send('Page not found');
});
app.get('/deckgl.min.js', (req, resp) => {
const src = fs.readFileSync(LOCAL_BUNDLE, 'utf-8');
resp.append('Content-Type', 'text/javascript');
resp.send(src);
});
app.get('/*', (req, resp) => {
const name = path.basename(req.path, '.html');
const page = pagesByName[name] && utils.getPage(pagesByName[name], {noCache: true});
if (page) {
resp.send(page);
} else {
resp.redirect('/404');
}
});
app.listen(3000);