Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | 1x 1x 4x 3x 1x 2x 2x 2x 2x 16x 16x 11x 16x 1x 20x 20x 5x 4x 4x 4x 4x 4x 4x 4x 4x 4x 19x 15x 18x 16x | "use strict";
const _ = require("lodash");
const { URL } = require("url");
/**
* Add addtional search part to the url
*
* @example
*
* let updatedUrl = appendSearch("https://localhost/", "foo=2");
* updatedUrl === "https://localhost/?foo=2";
*
* @param {String} inputUrl url for adding new search parameters
* @param {String} additionalSearch string which contains search parameters for adding
*
* @return {String} updated url
*/
function appendSearch(inputUrl, additionalSearch) {
let url = new URL(inputUrl);
if (!_.isString(additionalSearch)) {
throw new Error(
`Invalid additionalSearch parameter ${additionalSearch} to append search.`
);
}
Eif (additionalSearch) {
let searchPrefix = url.search ? url.search + "&" : "?";
url.search = searchPrefix + additionalSearch;
}
return url.toString();
}
/**
* Append "/" to the beginning of the path (could be
* use out of url handling also)
*
* @example
*
* absolutizePath("foo"); //=> "/foo"
* absolutizePath("/foo/bar"); //=> "/foo/bar"
* absolutizePath("//foo/bar"); //=> "/foo/bar"
*
* @param {String} path content
*
* @return {String} absolutized path
*/
function absolutizePath(path) {
var retval = path;
if (_.isString(path)) {
retval = "/" + path.replace(/^\/*/, "");
}
return retval;
}
module.exports = {
base(inputUrl) {
var url = new URL(inputUrl);
return `${url.protocol}//${url.host}${
!url.pathname || url.pathname === "/" ? "/" : absolutizePath(url.pathname)
}`;
},
normalize(input, base) {
var urlBase = new URL(base);
var urlInput = new URL(input, base);
var basePath = urlBase.pathname;
var inputPath = urlInput.pathname;
Eif (
_.isString(basePath) &&
basePath.substring(basePath.length - 1) === "/"
) {
basePath = basePath.substring(0, basePath.length - 1);
}
Eif (_.isString(inputPath) && inputPath.substring(0, 1) === "/") {
inputPath = inputPath.substring(1);
}
urlInput.pathname = basePath + "/" + inputPath;
return urlInput.href;
},
username(inputUrl) {
var url = new URL(inputUrl);
return url.username;
},
password(inputUrl) {
var url = new URL(inputUrl);
return url.password;
},
appendSearch: appendSearch,
absolutizePath: absolutizePath,
};
|