You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import getCurrentScriptSource from "./getCurrentScriptSource.js";
/** * @param {string} resourceQuery * @returns {{ [key: string]: string | boolean }} */ function parseURL(resourceQuery) { /** @type {{ [key: string]: string }} */ var options = {}; if (typeof resourceQuery === "string" && resourceQuery !== "") { var searchParams = resourceQuery.slice(1).split("&"); for (var i = 0; i < searchParams.length; i++) { var pair = searchParams[i].split("="); options[pair[0]] = decodeURIComponent(pair[1]); } } else { // Else, get the url from the <script> this file was called with.
var scriptSource = getCurrentScriptSource(); var scriptSourceURL; try { // The placeholder `baseURL` with `window.location.href`,
// is to allow parsing of path-relative or protocol-relative URLs,
// and will have no effect if `scriptSource` is a fully valid URL.
scriptSourceURL = new URL(scriptSource, self.location.href); } catch (error) { // URL parsing failed, do nothing.
// We will still proceed to see if we can recover using `resourceQuery`
} if (scriptSourceURL) { options = scriptSourceURL; options.fromCurrentScript = true; } } return options; } export default parseURL;
|