import createSearch from '../utils/createSearch.js'; /** * Reject URLs with invalid query parameters to increase cache hit rates. */ export default function allowQuery(validKeys = []) { if (!Array.isArray(validKeys)) { validKeys = [validKeys]; } return (req, res, next) => { const keys = Object.keys(req.query); if (!keys.every(key => validKeys.includes(key))) { const newQuery = keys .filter(key => validKeys.includes(key)) .reduce((query, key) => { query[key] = req.query[key]; return query; }, {}); return res.redirect(302, req.baseUrl + req.path + createSearch(newQuery)); } next(); }; }