2018-01-18 15:15:52 -08:00
|
|
|
import _ from 'lodash';
|
2016-05-31 14:32:26 -07:00
|
|
|
import manifest from '../rev-manifest';
|
2016-03-14 17:22:56 -07:00
|
|
|
|
2016-05-31 14:32:26 -07:00
|
|
|
let chunkManifest;
|
|
|
|
try {
|
|
|
|
chunkManifest = require('../manifests/chunk-manifest.json');
|
|
|
|
} catch (err) {
|
|
|
|
chunkManifest = {};
|
|
|
|
}
|
|
|
|
|
|
|
|
chunkManifest = Object.keys(chunkManifest).reduce((manifest, key) => {
|
|
|
|
manifest[key] = '/' + chunkManifest[key];
|
|
|
|
return manifest;
|
|
|
|
}, {});
|
|
|
|
|
2018-01-18 15:15:52 -08:00
|
|
|
const isDev = process.env.NODE_ENV !== 'production';
|
2016-05-31 14:32:26 -07:00
|
|
|
const challengesRegex = /^(bonfire|waypoint|zipline|basejump|checkpoint):\s/i;
|
2016-01-15 06:08:54 -08:00
|
|
|
|
2016-05-31 14:32:26 -07:00
|
|
|
function rev(scopedPrepend, asset) {
|
2018-01-18 15:15:52 -08:00
|
|
|
if (isDev) {
|
2016-05-31 14:32:26 -07:00
|
|
|
// do not use revision in dev mode
|
|
|
|
return `${scopedPrepend}/${asset}`;
|
|
|
|
}
|
|
|
|
return `${scopedPrepend}/${ manifest[asset] || asset }`;
|
|
|
|
}
|
|
|
|
|
|
|
|
function removeOldTerms(str = '') {
|
|
|
|
return str.replace(challengesRegex, '');
|
|
|
|
}
|
2016-01-15 06:08:54 -08:00
|
|
|
|
2018-01-18 15:15:52 -08:00
|
|
|
const cacheBreaker = isDev ?
|
|
|
|
// add cacheBreaker in dev instead of rev manifest
|
|
|
|
asset => `${asset}?cacheBreaker=${Math.random()}` :
|
|
|
|
_.identity;
|
|
|
|
|
2016-05-31 14:32:26 -07:00
|
|
|
export default function jadeHelpers() {
|
|
|
|
return function jadeHelpersMiddleware(req, res, next) {
|
|
|
|
res.locals.removeOldTerms = removeOldTerms;
|
|
|
|
res.locals.rev = rev;
|
|
|
|
// static data
|
|
|
|
res.locals.user = req.user;
|
|
|
|
res.locals.chunkManifest = chunkManifest;
|
|
|
|
res.locals._csrf = req.csrfToken ? req.csrfToken() : null;
|
|
|
|
if (req.csrfToken) {
|
|
|
|
res.expose({ token: res.locals._csrf }, 'csrf');
|
|
|
|
}
|
|
|
|
res.locals.theme = req.user && req.user.theme ||
|
|
|
|
req.cookies.theme ||
|
|
|
|
'default';
|
2016-01-15 06:08:54 -08:00
|
|
|
next();
|
|
|
|
};
|
|
|
|
}
|