UNPKG

with-query

Version:

Format url with query (string or object), simple and fast, with the power of qs

79 lines (60 loc) 1.97 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var qs = require('qs'); function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function parseQuery(q, opt) { if (typeof q === 'object') { return q; } return q ? qs.parse(q, opt) : {}; } function withQuery(url, query, opts) { if (url === void 0) { url = ''; } if (!query || typeof query !== 'object' && typeof query !== 'string' || typeof query === 'object' && Object.keys(query).length < 1) { return url || ''; } var parseOpt = opts && opts.parseOpt || {}; var stringifyOpt = opts && opts.stringifyOpt || {}; var noHash = opts && opts.noHash || false; var originalUrl = url || ''; var baseUrl = originalUrl; var baseQuery = ''; var baseHash = ''; // query if (originalUrl.indexOf('?') !== -1) { var parts = baseUrl.split('?'); baseUrl = parts[0]; baseQuery = parts[1]; } // hash if (originalUrl.indexOf('#') !== -1) { if (baseUrl.indexOf('#') !== -1) { var _parts = baseUrl.split('#'); baseUrl = _parts[0]; baseHash = _parts[1]; } else if (baseQuery && baseQuery.indexOf('#') !== -1) { var _parts2 = baseQuery.split('#'); baseQuery = _parts2[0]; baseHash = _parts2[1]; } } var baseQueryObj = parseQuery(baseQuery, parseOpt); var queryObj = parseQuery(query || '', parseOpt); var finalQuery = qs.stringify(_extends({}, baseQueryObj, {}, queryObj), stringifyOpt); return "" + baseUrl + (finalQuery ? "?" + finalQuery : '') + (!noHash && baseHash ? "#" + baseHash : ''); } exports.default = withQuery; exports.withQuery = withQuery;