Skip to content

Commit

Permalink
remove express dependency. make it compatible with 0.6.2
Browse files Browse the repository at this point in the history
  • Loading branch information
dtinth committed Nov 24, 2011
1 parent 80e2848 commit 5c852d0
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 20 deletions.
65 changes: 47 additions & 18 deletions lib/livestyl.js
@@ -1,5 +1,5 @@

var express = require('express');
var connect = require('connect');
var stylus = require('stylus');
var events = require('events');
var path = require('path');
Expand All @@ -10,7 +10,8 @@ exports.createServer = function(mainfile, options) {
if (typeof options != 'object')
options = {};

var server = express.createServer();
var server = connect.createServer();

try {
if (!fs.statSync(mainfile).isFile()) {
throw new Error('the main file is not a file!');
Expand All @@ -20,56 +21,84 @@ exports.createServer = function(mainfile, options) {
process.exit(0);
}

server.use(connect.query());

server.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Headers", "X-Requested-With");
next();
});

var watchEmitter = new events.EventEmitter();
var lastMtime = fs.statSync(mainfile).mtime;

function setMtime(mtime) {
if (mtime.getTime() > lastMtime)
lastMtime = mtime;
watchEmitter.emit('change', lastMtime);
console.log('mtime = ' + lastMtime);
}

server.watch = function(filename) {
fs.watchFile(filename, { interval: options.watchInterval || 200 }, function(curr, prev) {
if (curr.mtime.getTime() > lastMtime)
lastMtime = curr.mtime;
watchEmitter.emit('change', lastMtime);
console.log('mtime = ' + lastMtime);
});
if (fs.watch) {
var watcher = fs.watch(filename, { persistent: true }, function(e) {
function getStat() {
fs.stat(filename, function(err, stats) {
if (err) getStat();
else {
setMtime(stats.mtime);
if (e == 'rename') {
watcher.close();
setTimeout(function() {
server.watch(filename);
}, 100);
}
}
});
}
getStat();
});
} else {
fs.watchFile(filename, { interval: options.watchInterval || 200 }, function(curr, prev) {
setMtime(curr.mtime);
});
}
};

server.watch(mainfile);

server.get('/longpoll', function(req, res, next) {
server.use('/longpoll', function(req, res, next) {
var sent = false;
var listener = function(mtime) {
sent = true;
send(mtime);
};
var send = function(mtime) { res.send(mtime.getTime() + ''); };
var mtime = parseFloat(req.param('mtime'));
var send = function(mtime) { res.end(mtime.getTime() + ''); };
var mtime = parseFloat(req.query['mtime']);
if (isNaN(mtime) || lastMtime > mtime) {
send(lastMtime);
} else {
watchEmitter.once('change', listener);
setTimeout(function() {
if (!sent) {
watchEmitter.removeListener('change', listener);
res.send('0');
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
res.end('0');
}
}, 10000);
}
});

server.get('/get', function(req, res, next) {
options.debug = !!req.param('mtime');
server.use('/get', function(req, res, next) {
options.debug = !!req.query['mtime'];
exports.compile(mainfile, options, function(err, css) {
if (err) return next(err);
res.send(css, { 'Content-Type': 'text/css; charset=utf-8' });
res.setHeader('Content-Type', 'text/css; charset=utf-8');
res.end(css);
});
});

server.use(express.static(__dirname + '/public'));
server.use(connect.static(__dirname + '/public'));

return server;

Expand Down
4 changes: 2 additions & 2 deletions package.json
@@ -1,10 +1,10 @@
{
"name": "livestyl",
"version": "0.1.0",
"version": "0.3.0",
"author": "dtinth",
"dependencies": {
"stylus": "0.19.3",
"express": "2.4.7"
"connect": "1.8.1"
},
"main": "index",
"bin": {
Expand Down

0 comments on commit 5c852d0

Please sign in to comment.