@opengis/vite-page
Version:
Vite SSR Multi Page plugin
24 lines (18 loc) • 1.06 kB
JavaScript
import { filters } from './seo.js';
const matches = { sort: 'order' };
export default function clean2originalUrl(url) {
const root = `/${url.split('/').filter(el => el)[0]}`;
const queryFilters = url.split('/').filter(el => el && !['page', 'search', 'sort', 'limit'].find(item => el.includes(item))).slice(1,);
const suffix = url.match(/(\w+)=(\w+)/g)?.map(el => ({ key: el.split('=')[0], value: el.split('=')[1] })).filter(el => ['page', 'sort', 'search', 'limit'].includes(el.key)).reduce((acc, curr, i, arr) => {
return acc + `${matches[curr.key] || curr.key}=${curr.value}${arr.length > i + 1 ? '&' : ''}`;
}, '');
const filtered = queryFilters?.reduce?.((acc, curr) => {
const join = acc?.includes('?') ? '|' : '?filter=';
return filters?.[curr] ? `${acc}${join}${filters?.[curr]?.query || filters?.[curr]}` : acc;
}, root) || root;
if (suffix) {
const join = queryFilters?.length ? '&' : '?';
return `${filtered}${join}${suffix}`;
}
return filtered;
}