UNPKG

@r/platform

Version:

A set of tools to enable easy universal rendering and page navigation on a React + Redux stack

39 lines (30 loc) 1.07 kB
import merge from './modules/merge'; export const extractQuery = str => { const [, rest] = str.split('?'); if (!(rest && rest.length)) { return {}; } // discard the hash const [query] = rest.split('#'); return query.split('&').reduce((prev, cur) => { const [key, value] = cur.split('='); return { ...prev, [key]: decodeURIComponent(value), }; }, {}); }; export const createQuery = dict => { const qs = Object.keys(dict) .filter(k => typeof dict[k] !== 'undefined') .map(k => `${k}=${encodeURIComponent(dict[k])}`) .join('&'); return `?${qs}`; }; export const createHash = str => { return `#${str}`; }; export const urlFromPage = (page, mergePage) => { const { url, queryParams={}, hashParams={} } = mergePage ? merge(page, mergePage) : page; const queryString = Object.keys(queryParams).length ? createQuery(queryParams) : ''; const hashString = Object.keys(hashParams).length ? createHash(hashParams) : ''; return `${url}${queryString}${hashString}`; };