url-lib
Version:
A simple, lightweight string utility for Node and browsers that supports serializing and parsing URLs and query strings.
66 lines (44 loc) • 2.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _parseQuery = _interopRequireDefault(require("./parseQuery"));
var _formatQuery = _interopRequireDefault(require("./formatQuery"));
var _utils = require("./utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var IMMUTABLE_EMPTY_ARRAY = [];
/**
* Serializes the specified URL path with properties of a params object to produce a URL.
* @param {string} [urlPath] - Base URL path
* @param {NullableUrlParams} [urlParams] - Query params to combine with base URL
* @returns {string} Serialized URL
*/
// eslint-disable-next-line func-style
function formatUrl(urlPath, urlParams) {
var formattedUrl = urlPath;
var queryParams = urlParams; // if they passed an array as the first parameter, separate out the first
// element (url) from the other elements (query params list)
if (Array.isArray(formattedUrl)) {
var _formattedUrl = formattedUrl,
_formattedUrl2 = _toArray(_formattedUrl),
url = _formattedUrl2[0],
_urlParamsList = _formattedUrl2.slice(1);
queryParams = _urlParamsList.concat(queryParams || IMMUTABLE_EMPTY_ARRAY);
formattedUrl = url;
} // Pull out any query params from the URL
var parsedQueryParamsFromUrl = (0, _parseQuery.default)(formattedUrl, false); // Convert the query params into an array (if it already isn't)
var normalizedQueryParams = Array.isArray(queryParams) ? queryParams : [queryParams]; // Serialize the query params to a query string
var queryString = (0, _formatQuery.default)([parsedQueryParamsFromUrl].concat(_toConsumableArray(normalizedQueryParams))); // Finally build the URL by stripping out any query string from the URL and
// appending the query string
return (0, _utils.splitOnQuery)(formattedUrl).urlPath + (queryString ? '?' : '') + queryString;
}
var _default = formatUrl;
exports.default = _default;