securityos/node_modules/next/dist/esm/server/server-route-utils.js

23 lines
1.0 KiB
JavaScript

import { getRequestMeta } from "./request-meta";
import { stringify as stringifyQs } from "querystring";
// since initial query values are decoded by querystring.parse
// we need to re-encode them here but still allow passing through
// values from rewrites/redirects
export const stringifyQuery = (req, query)=>{
const initialQuery = getRequestMeta(req, "__NEXT_INIT_QUERY") || {};
const initialQueryValues = Object.values(initialQuery);
return stringifyQs(query, undefined, undefined, {
encodeURIComponent (value) {
if (value in initialQuery || initialQueryValues.some((initialQueryVal)=>{
// `value` always refers to a query value, even if it's nested in an array
return Array.isArray(initialQueryVal) ? initialQueryVal.includes(value) : initialQueryVal === value;
})) {
// Encode keys and values from initial query
return encodeURIComponent(value);
}
return value;
}
});
};
//# sourceMappingURL=server-route-utils.js.map