UNPKG

oidc-spa

Version:

Openidconnect client for Single Page Applications

84 lines 2.71 kB
function getAllSearchParams_encoded(url) { let search; { const [url_withoutHash] = url.split("#"); search = url_withoutHash.split("?")[1]; } if (search === undefined) { return {}; } return Object.fromEntries(search.split("&").map(part => { const [name, value_encoded] = part.split("="); return [name, value_encoded]; })); } function addOrUpdateOrRemoveSearchParam_encoded(params) { const { url, name, value_encoded } = params; const value_encodedByName = getAllSearchParams_encoded(url); if (value_encoded === undefined) { delete value_encodedByName[name]; } else { value_encodedByName[name] = value_encoded; } let search; update_search: { if (Object.keys(value_encodedByName).length === 0) { search = ""; break update_search; } else { search = "?" + Object.entries(value_encodedByName) .map(([name, value_encoded]) => `${name}=${value_encoded}`) .join("&"); } } const [url_withoutHash, hash] = url.split("#"); const [url_withoutHash_withoutSearch] = url_withoutHash.split("?"); return `${url_withoutHash_withoutSearch}${search}${hash ? "#" + hash : ""}`; } export function addOrUpdateSearchParam(params) { const { url, name, value, encodeMethod } = params; let value_encoded = encodeURIComponent(value); if (encodeMethod === "www-form") { value_encoded = value_encoded.replace(/%20/g, "+"); } return addOrUpdateOrRemoveSearchParam_encoded({ url, name, value_encoded }); } function decodeSearchParamValue(value_encoded) { return decodeURIComponent(value_encoded.replace(/\+/g, "%20")); } export function getSearchParam(params) { const { url, name } = params; const encodedValueByName = getAllSearchParams_encoded(url); const value_encoded = encodedValueByName[name]; if (value_encoded === undefined) { return { wasPresent: false }; } const url_withoutTheParam = addOrUpdateOrRemoveSearchParam_encoded({ url, name, value_encoded: undefined }); return { wasPresent: true, value: decodeSearchParamValue(value_encoded), url_withoutTheParam }; } export function getAllSearchParams(url) { const encodedValueByName = getAllSearchParams_encoded(url); return Object.fromEntries(Object.entries(encodedValueByName).map(([name, value_encoded]) => [ name, decodeSearchParamValue(value_encoded) ])); } //# sourceMappingURL=urlSearchParams.js.map