-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
55 lines (49 loc) · 1.41 KB
/
server.js
File metadata and controls
55 lines (49 loc) · 1.41 KB
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
47
48
49
50
51
52
53
54
55
const express = require('express')
const getPrimeFactors = require('get-prime-factors')
const template = require('./template')
const toobig = require('./toobig')
const path = require('path')
const app = express()
const postcssMiddleware = require('postcss-middleware')
const postcssImport = require('postcss-import')
const postcssCustomProperties = require('postcss-custom-properties')
const postcssColorFunction = require('postcss-color-function')
const compression = require('compression')
const cssnano = require('cssnano')
app.use(compression({
level: 1
}))
app.use(express.static('public'))
app.use('/styles', postcssMiddleware({
src: (req) => {
return path.join('styles', req.path)
},
plugins: [
postcssImport,
postcssCustomProperties,
postcssColorFunction,
cssnano
],
options: {
from: 'styles/main.css'
}
}))
app.get('/', (req, res, next) => {
if (req.param('n') === undefined) {
res.redirect(301, '?n=7')
}
const number = parseInt(req.param('n'), 10)
const primeFactors = [...new Set(getPrimeFactors(number))] // Dedupe prime factors
if (parseInt(number, 10)) {
if (req.param('n') !== '10000' && req.param('n').length > 4) {
res.status(400).send(toobig(number))
} else {
res.send(template(number, primeFactors))
}
} else {
res.status(400).send(template(number))
}
})
app.listen(3000, () => {
console.log('Example app listening on port 3000!')
})