UNPKG

requisite

Version:

A cosmic javascript bundler.

73 lines (67 loc) 1.88 kB
// Generated by CoffeeScript 1.7.1 var bundle, dirname, join, parse, _ref; _ref = require('path'), dirname = _ref.dirname, join = _ref.join; parse = require('url').parse; bundle = require('./bundle'); module.exports = function(opts) { var cached, maxAge, middleware; if (opts == null) { opts = {}; } maxAge = opts.maxAge || 0; cached = null; middleware = function(req, res, next) { var now, path, url; url = parse(req.url, true, true); path = url.pathname.replace(/\.\w+$/, ''); if (cached == null) { if (opts.urlRoot == null) { opts.urlRoot = dirname(req.originalUrl); } if (opts.entry == null) { opts.entry = path; } bundle(opts, function(err, _bundle) { if (err != null) { return next(err); } cached = _bundle; return middleware(req, res, next); }); return; } now = new Date().toUTCString(); if (!res.getHeader('Date')) { res.setHeader('Date', now); } if (!res.getHeader('Cache-Control')) { res.setHeader('Cache-Control', 'public, max-age=' + (maxAge / 1000)); } if (!res.getHeader('Last-Modified')) { res.setHeader('Last-Modified', now); } res.setHeader('Content-Type', 'application/javascript; charset=UTF-8'); if (req.method === 'HEAD') { res.writeHead(200); return res.end(); } if (req.method !== 'GET') { return next(); } return cached.parse({ deep: true }, function(err) { var mod; if (err != null) { return next(err); } if ((mod = cached.find(path)) == null) { return next(); } res.writeHead(200); return res.end(mod.toString(), 'utf8'); }); }; return function requisite(req, res, next) { return middleware(req, res, next); };; }; //# sourceMappingURL=middleware.map