Initial commit
[yaffs-website] / node_modules / tiny-lr / examples / express / app.js
1 var fs      = require('fs');
2 var path    = require('path');
3 var express = require('express');
4 var tinylr  = require('../..');
5 var debug   = require('debug')('tinylr:server');
6
7 process.env.DEBUG = process.env.DEBUG || 'tinylr*';
8
9 var app = module.exports = express();
10
11 function logger(fmt) {
12   fmt = fmt || '%s - %s';
13
14   return function logger(req, res, next) {
15     debug(fmt, req.method, req.url);
16     next();
17   }
18 }
19
20 function throttle(delay, fn) {
21   var now = Date.now();
22
23   return function() {
24     var from = Date.now();
25     var interval = from - now;
26     if (interval < delay) return;
27     now = from;
28     fn.apply(this, arguments);
29   };
30 }
31
32 var watch = (function watch(em) {
33   em = em || new (require('events').EventEmitter)();
34
35   em.on('rename', function(file) {
36     tinylr.changed(file);
37   });
38
39   fs.watch(path.join(__dirname, 'styles/site.css'), throttle(200, function(ev, filename) {
40     em.emit(ev, filename);
41   }));
42
43   return watch;
44 })();
45
46 app
47   .use(logger())
48   .use('/', express.static(path.join(__dirname)))
49   .use(tinylr.middleware({ app: app }));