47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import manifest from '../rev-manifest';
 | 
						|
 | 
						|
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;
 | 
						|
}, {});
 | 
						|
 | 
						|
const __DEV__ = process.env.NODE_ENV !== 'production';
 | 
						|
const challengesRegex = /^(bonfire|waypoint|zipline|basejump|checkpoint):\s/i;
 | 
						|
 | 
						|
function rev(scopedPrepend, asset) {
 | 
						|
  if (__DEV__) {
 | 
						|
    // do not use revision in dev mode
 | 
						|
    return `${scopedPrepend}/${asset}`;
 | 
						|
  }
 | 
						|
  return `${scopedPrepend}/${ manifest[asset] || asset }`;
 | 
						|
}
 | 
						|
 | 
						|
function removeOldTerms(str = '') {
 | 
						|
  return str.replace(challengesRegex, '');
 | 
						|
}
 | 
						|
 | 
						|
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';
 | 
						|
    next();
 | 
						|
  };
 | 
						|
}
 |