const currentYear = new Date().getFullYear() module.exports = (req, res, next) => { const parts = req.url.split('/') res.locals.options = parts.reduce( (acc, curr) => { if (!curr) return acc let match = curr.match(/^@?(\d{4})$/) || [] if (match.length) { // Pinned year if (curr.startsWith('@')) { acc.pinnedYear = parseInt(curr.substr(1), 10) } else { acc.startYear = parseInt(curr, 10) } return acc } match = curr.match(/^(\d{4})-(\d{4})$/) || [] if (match.length) { acc.startYear = parseInt(match[1], 10) acc.endYear = parseInt(match[2], 10) return acc } if (curr.startsWith('license')) { acc.format = curr .split('.') .pop() .trim() return acc } if (curr.startsWith('+')) { acc.license = curr.substr(1).toUpperCase() return acc } acc.sha = curr // not actually supported now - 2019-06-19 return acc }, { format: 'html', startYear: null, endYear: currentYear, sha: null } ) if (res.locals.options.sha) { res.setHeader( 'X-note', 'SHA and commit pinning is no longer supported, showing you latest release' ) } next() }