move connect middleware and browserify to separate modules

This commit is contained in:
Sebastian McKenzie
2014-10-06 17:00:53 +11:00
parent c9a14b4a63
commit b97274cf3d
8 changed files with 11 additions and 140 deletions

View File

@@ -1,31 +0,0 @@
var transform = require("./transform");
var through = require("through");
var _ = require("lodash");
var browserify = module.exports = function (filename) {
return browserify.configure()(filename);
};
browserify.configure = function (opts) {
opts = opts || {};
return function (filename) {
var data = "";
var write = function (buf) {
data += buf;
};
var end = function () {
var opts2 = _.clone(opts);
opts2.filename = filename;
var out = transform(data, opts2);
stream.queue(out);
stream.queue(null);
};
var stream = through(write, end);
return stream;
};
};

View File

@@ -1,67 +0,0 @@
var util = require("./util");
var path = require("path");
var api = require("./node");
var fs = require("fs");
var _ = require("lodash");
module.exports = function (opts) {
opts = _.defaults(opts || {}, {
options: {},
dest: "cache",
src: "assets"
});
var cache = {};
return function (req, res, next) {
var url = req.url;
if (!util.canCompile(url)) return next();
var dest = path.join(opts.dest, url);
var src = path.join(opts.src, url);
var write = function (transformed) {
fs.writeFile(dest, transformed, function (err) {
if (err) {
next(err);
} else {
cache[url] = Date.now();
next();
}
});
};
var compile = function () {
var transformOpts = _.clone(opts.options);
api.transformFile(opts.dest, transformOpts, function (err, transformed) {
if (err) return next(err);
write(transformed);
});
};
var destExists = function () {
fs.stat(dest, function (err, stat) {
if (err) return next(err);
if (cache[url] < +stat.mtime) {
compile();
} else {
next();
}
});
};
fs.exists(src, function (exists) {
if (!exists) return next();
fs.exists(dest, function (exists) {
if (exists && cache[dest]) {
destExists();
} else {
compile();
}
});
});
};
};

View File

@@ -2,8 +2,7 @@ var transform = require("./transform");
var fs = require("fs");
var _ = require("lodash");
exports.browserify = require("./browserify");
exports.middleware = require("./middleware");
exports.util = require("./util");
exports.register = function () {
require("./register");