UNPKG

@danielkalen/simplybind

Version:

Magically simple, framework-less one-way/two-way data binding for frontend/backend in ~5kb.

86 lines (55 loc) 2.32 kB
Promise = require 'bluebird' express = require 'express' compress = require 'compression' bodyParser = require 'body-parser' uaParser = require 'ua-parser-js' extend = require 'extend' fs = Promise.promisifyAll require 'fs-extra' app = express() port = 13947 DB = new ()-> @results = {} fs.ensureFileAsync('results.json').then ()=> fs.readFileAsync('results.json', 'encoding':'utf8').then (results)=> @results = JSON.parse(results) if results @save = ()-> fs.writeFileAsync('results.json', JSON.stringify(@results)) @add = ({library, version, testName, testDesc, result, UA, nonSharedTest})-> UA = getUA(UA) @results ?= {} @results[testName] ?= 'name':testName,'desc':testDesc, 'values':{} @results[testName].nonSharedTest = nonSharedTest or false @results[testName].values[UA] ?= {} @results[testName].values[UA][library] ?= {} @results[testName].values[UA][library][version] = result @save() return @ getUA = (uaString = '')-> UA = uaParser(uaString).browser UA = "#{UA.name} #{UA.major or UA.version}" ## ========================================================================== ## Middleware ## ========================================================================== app.use compress() app.use express.static('dist', maxAge: 2592000000) app.use bodyParser.json({limit:'500mb'}) # Enable JSON req parsing app.use bodyParser.urlencoded({extended:true, limit:'500mb'}) ## ========================================================================== ## Router ## ========================================================================== app.get '/', (req, res)-> res.sendFile "#{__dirname}/dist/index.html" app.get '/get', (req, res)-> UA = getUA(req.query.UA) responseResult = {'selfUA':UA, 'tests':DB.results or {}} output = extend(true, {}, responseResult) res.json(output) app.post '/set', (req, res)-> req.body.nonSharedTest = if req.body.nonSharedTest is 'false' then false else if req.body.nonSharedTest then true res.json(req.body) DB.add(req.body) ## ========================================================================== ## Server init ## ========================================================================== app.listen port, ()-> console.log("Server running on http://localhost:#{port}") .on 'error', console.log.bind(console)