UNPKG

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
"use strict"; 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;