@livechat/url-utils
Advanced tools
Comparing version 0.1.6 to 0.2.0
@@ -14,6 +14,8 @@ 'use strict'; | ||
var decodeQueryString = function decodeQueryString(query) { | ||
var pairs = query.split('&').map(function (pair) { | ||
var pairs = query.split('&').filter(Boolean).map(function (pair) { | ||
return pair.split('=').map(function (value) { | ||
return decodeURIComponent(value.replace('+', '%20')); | ||
}); | ||
}).map(function (pair) { | ||
return pair.length === 2 ? pair : [pair[0], '']; | ||
}); | ||
@@ -48,5 +50,9 @@ var decoded = dataUtils.fromPairs(pairs); | ||
var getQueryParams = function getQueryParams(url) { | ||
var search = trimSearch(getSearch(url)); | ||
return decodeQueryString(search ? search : url); | ||
var getQueryParams = function getQueryParams(urlOrSearch) { | ||
if (getOrigin(urlOrSearch) === null) { | ||
return decodeQueryString(trimSearch(urlOrSearch)); | ||
} | ||
var search = trimSearch(getSearch(urlOrSearch)); | ||
return search ? decodeQueryString(search) : {}; | ||
}; | ||
@@ -122,7 +128,41 @@ | ||
var urlOrigin = getOrigin(url); | ||
var urlPath = getPathname(url); | ||
var originalParams = getSearch(url) ? getQueryParams(url) : {}; | ||
var extendParams = buildQueryString(_extends({}, originalParams, params)); | ||
return urlOrigin + "?" + extendParams; | ||
return "" + urlOrigin + urlPath + "?" + extendParams; | ||
}; | ||
var removeQueryParams = function removeQueryParams(url, paramsToRemove) { | ||
if (url.indexOf('?') === -1) { | ||
return url; | ||
} | ||
var params = getQueryParams(url); | ||
if (dataUtils.isEmpty(params)) { | ||
return url; | ||
} | ||
if (Object.keys(params).every(function (paramKey) { | ||
return !paramsToRemove.includes(paramKey); | ||
})) { | ||
return url; | ||
} | ||
paramsToRemove.forEach(function (param) { | ||
return delete params[param]; | ||
}); | ||
var _url$split = url.split('?'), | ||
querylessURL = _url$split[0]; | ||
var extendedURL = extendURLByQueryParams(querylessURL, params); | ||
if (url.indexOf('#') > -1) { | ||
return extendedURL + "#" + url.split('#')[1]; | ||
} | ||
return extendedURL; | ||
}; | ||
exports.buildQueryString = buildQueryString; | ||
@@ -140,2 +180,3 @@ exports.decodeQueryString = decodeQueryString; | ||
exports.removeProtocol = removeProtocol; | ||
exports.removeQueryParams = removeQueryParams; | ||
exports.trimSearch = trimSearch; |
@@ -1,2 +0,2 @@ | ||
import { toPairs, fromPairs } from '@livechat/data-utils'; | ||
import { toPairs, fromPairs, isEmpty } from '@livechat/data-utils'; | ||
@@ -10,6 +10,8 @@ var buildQueryString = function buildQueryString(obj) { | ||
var decodeQueryString = function decodeQueryString(query) { | ||
var pairs = query.split('&').map(function (pair) { | ||
var pairs = query.split('&').filter(Boolean).map(function (pair) { | ||
return pair.split('=').map(function (value) { | ||
return decodeURIComponent(value.replace('+', '%20')); | ||
}); | ||
}).map(function (pair) { | ||
return pair.length === 2 ? pair : [pair[0], '']; | ||
}); | ||
@@ -44,5 +46,9 @@ var decoded = fromPairs(pairs); | ||
var getQueryParams = function getQueryParams(url) { | ||
var search = trimSearch(getSearch(url)); | ||
return decodeQueryString(search ? search : url); | ||
var getQueryParams = function getQueryParams(urlOrSearch) { | ||
if (getOrigin(urlOrSearch) === null) { | ||
return decodeQueryString(trimSearch(urlOrSearch)); | ||
} | ||
var search = trimSearch(getSearch(urlOrSearch)); | ||
return search ? decodeQueryString(search) : {}; | ||
}; | ||
@@ -118,7 +124,41 @@ | ||
var urlOrigin = getOrigin(url); | ||
var urlPath = getPathname(url); | ||
var originalParams = getSearch(url) ? getQueryParams(url) : {}; | ||
var extendParams = buildQueryString(_extends({}, originalParams, params)); | ||
return urlOrigin + "?" + extendParams; | ||
return "" + urlOrigin + urlPath + "?" + extendParams; | ||
}; | ||
export { buildQueryString, decodeQueryString, extendURLByQueryParams, getHostname, getOrigin, getPathname, getProtocol, getQueryParam, getQueryParams, getSearch, hasUnsafeProtocol, removeProtocol, trimSearch }; | ||
var removeQueryParams = function removeQueryParams(url, paramsToRemove) { | ||
if (url.indexOf('?') === -1) { | ||
return url; | ||
} | ||
var params = getQueryParams(url); | ||
if (isEmpty(params)) { | ||
return url; | ||
} | ||
if (Object.keys(params).every(function (paramKey) { | ||
return !paramsToRemove.includes(paramKey); | ||
})) { | ||
return url; | ||
} | ||
paramsToRemove.forEach(function (param) { | ||
return delete params[param]; | ||
}); | ||
var _url$split = url.split('?'), | ||
querylessURL = _url$split[0]; | ||
var extendedURL = extendURLByQueryParams(querylessURL, params); | ||
if (url.indexOf('#') > -1) { | ||
return extendedURL + "#" + url.split('#')[1]; | ||
} | ||
return extendedURL; | ||
}; | ||
export { buildQueryString, decodeQueryString, extendURLByQueryParams, getHostname, getOrigin, getPathname, getProtocol, getQueryParam, getQueryParams, getSearch, hasUnsafeProtocol, removeProtocol, removeQueryParams, trimSearch }; |
{ | ||
"name": "@livechat/url-utils", | ||
"version": "0.1.6", | ||
"version": "0.2.0", | ||
"description": "URL utility functions", | ||
@@ -23,3 +23,3 @@ "contributors": [ | ||
"dependencies": { | ||
"@livechat/data-utils": "^0.2.9" | ||
"@livechat/data-utils": "^0.2.16" | ||
}, | ||
@@ -34,4 +34,4 @@ "devDependencies": { | ||
"@rollup/plugin-node-resolve": "^9.0.0", | ||
"babel-jest": "^24.9.0", | ||
"jest": "24.9.0", | ||
"babel-jest": "^26.6.0", | ||
"jest": "26.6.0", | ||
"lerna-alias": "3.0.3-0", | ||
@@ -38,0 +38,0 @@ "rimraf": "^2.6.1", |
import { MaybeStringValueObject } from './types'; | ||
declare const getQueryParams: <O extends MaybeStringValueObject>(url: string) => O; | ||
declare const getQueryParams: <O extends MaybeStringValueObject>(urlOrSearch: string) => O; | ||
export default getQueryParams; | ||
//# sourceMappingURL=getQueryParams.d.ts.map |
@@ -14,2 +14,3 @@ export { default as buildQueryString } from './buildQueryString'; | ||
export { default as extendURLByQueryParams } from './extendURLByQueryParams'; | ||
export { default as removeQueryParams } from './removeQueryParams'; | ||
//# sourceMappingURL=index.d.ts.map |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
14293
19
316
Updated@livechat/data-utils@^0.2.16