query-string-manipulator
Advanced tools
Comparing version
118
lib/index.js
@@ -1,2 +0,2 @@ | ||
'use strict'; | ||
"use strict"; | ||
@@ -6,25 +6,47 @@ Object.defineProperty(exports, "__esModule", { | ||
}); | ||
exports.getUrlParams = getUrlParams; | ||
exports.resolveUrlParams = resolveUrlParams; | ||
exports.constructUrlParams = constructUrlParams; | ||
exports.qsm = qsm; | ||
exports["default"] = exports.URL_TOGGLE = exports.URL_SET = exports.URL_REMOVE = void 0; | ||
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); | ||
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } | ||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } | ||
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } | ||
var URL_REMOVE = exports.URL_REMOVE = 'remove'; | ||
var URL_SET = exports.URL_SET = 'set'; | ||
var URL_TOGGLE = exports.URL_TOGGLE = 'toggle'; | ||
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | ||
var filterByParamName = function filterByParamName(paramName) { | ||
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | ||
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } | ||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } | ||
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } | ||
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; } } | ||
var URL_REMOVE = 'remove'; | ||
exports.URL_REMOVE = URL_REMOVE; | ||
var URL_SET = 'set'; | ||
exports.URL_SET = URL_SET; | ||
var URL_TOGGLE = 'toggle'; | ||
exports.URL_TOGGLE = URL_TOGGLE; | ||
function filterByParamName(paramName) { | ||
return function (param) { | ||
return param.key === paramName; | ||
}; | ||
}; | ||
} | ||
var findParamIndex = function findParamIndex(params, paramName) { | ||
function findParamIndex(params, paramName) { | ||
return params.findIndex(filterByParamName(paramName)); | ||
}; | ||
} | ||
var removeParam = function removeParam(params, paramName) { | ||
var paramIndex = void 0; | ||
function removeParam(params, paramName) { | ||
var paramIndex; | ||
do { | ||
paramIndex = params.findIndex(filterByParamName(paramName)); | ||
if (paramIndex !== -1) { | ||
@@ -34,15 +56,15 @@ params.splice(paramIndex, 1); | ||
} while (paramIndex !== -1); | ||
}; | ||
} | ||
var findQueryStart = function findQueryStart(url) { | ||
function findQueryStart(url) { | ||
return url.indexOf('?'); | ||
}; | ||
} | ||
var removeParams = function removeParams(urlParams, params) { | ||
function removeParams(urlParams, params) { | ||
return params.forEach(function (paramName) { | ||
return removeParam(urlParams, paramName); | ||
}); | ||
}; | ||
} | ||
var mapInputKeyToParam = function mapInputKeyToParam(params, key) { | ||
function mapInputKeyToParam(params, key) { | ||
return { | ||
@@ -52,9 +74,12 @@ key: key, | ||
}; | ||
}; | ||
} | ||
var mapInputToParams = function mapInputToParams(params) { | ||
function mapInputToParams(params) { | ||
return Object.keys(params).reduce(function (aggr, key) { | ||
if (params[key] instanceof Array) { | ||
return aggr.concat(params[key].map(function (value) { | ||
return { key: key, value: value }; | ||
return { | ||
key: key, | ||
value: value | ||
}; | ||
})); | ||
@@ -65,22 +90,30 @@ } | ||
}, []); | ||
}; | ||
} | ||
var toggleParams = function toggleParams(urlParams, urlParamsNext, params) { | ||
function toggleParams(urlParams, urlParamsNext, params) { | ||
Object.keys(params).forEach(function (key) { | ||
var paramIndex = findParamIndex(urlParams, key); | ||
var value = params[key]; | ||
if (paramIndex === -1) { | ||
urlParamsNext.push({ key: key, value: value }); | ||
urlParamsNext.push({ | ||
key: key, | ||
value: value | ||
}); | ||
} else { | ||
var param = urlParams[paramIndex]; | ||
if (param.value === value) { | ||
removeParam(urlParams, key); | ||
} else { | ||
urlParamsNext.push({ key: key, value: value }); | ||
urlParamsNext.push({ | ||
key: key, | ||
value: value | ||
}); | ||
} | ||
} | ||
}); | ||
}; | ||
} | ||
var getUrlParams = exports.getUrlParams = function getUrlParams(url) { | ||
function getUrlParams(url) { | ||
var decodedUrl = decodeURI(url); | ||
@@ -97,7 +130,10 @@ var queryStart = findQueryStart(decodedUrl); | ||
return { key: key, value: value }; | ||
return { | ||
key: key, | ||
value: value | ||
}; | ||
}); | ||
}; | ||
} | ||
var resolveUrlParams = exports.resolveUrlParams = function resolveUrlParams(prevParams, paramActions) { | ||
function resolveUrlParams(prevParams, paramActions) { | ||
var urlParams = prevParams.slice(); | ||
@@ -117,11 +153,13 @@ var urlParamsNext = paramActions[URL_SET] ? mapInputToParams(paramActions[URL_SET]) : []; | ||
})), _toConsumableArray(urlParamsNext)); | ||
}; | ||
} | ||
var constructUrlParams = exports.constructUrlParams = function constructUrlParams(params) { | ||
return params.map(function (param) { | ||
return encodeURI(param.key) + '=' + encodeURI(param.value); | ||
function constructUrlParams(params) { | ||
return params.filter(function (param) { | ||
return param.value !== undefined; | ||
}).map(function (param) { | ||
return param.value === null ? "".concat(encodeURI(param.key)) : "".concat(encodeURI(param.key), "=").concat(encodeURI(param.value)); | ||
}).join('&'); | ||
}; | ||
} | ||
exports.default = function (url) { | ||
function qsm(url) { | ||
var paramActions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
@@ -132,6 +170,10 @@ | ||
} | ||
var params = constructUrlParams(resolveUrlParams(getUrlParams(url), paramActions)); | ||
var queryStart = findQueryStart(url); | ||
var strippedUrl = queryStart === -1 ? url : url.substr(0, queryStart); | ||
return params.length === 0 ? strippedUrl : strippedUrl + '?' + params; | ||
}; | ||
return params.length === 0 ? strippedUrl : "".concat(strippedUrl, "?").concat(params); | ||
} | ||
var _default = qsm; | ||
exports["default"] = _default; |
{ | ||
"name": "query-string-manipulator", | ||
"version": "1.0.4", | ||
"version": "1.1.0", | ||
"description": "Manipulate query strings without effort", | ||
@@ -10,3 +10,2 @@ "main": "lib/index.js", | ||
"prepack": "npm run clean && npm test && npm run build", | ||
"pretest": "eslint src", | ||
"test": "jest" | ||
@@ -39,16 +38,21 @@ }, | ||
"devDependencies": { | ||
"babel-cli": "^6.26.0", | ||
"babel-core": "^6.26.0", | ||
"babel-istanbul": "^0.12.2", | ||
"babel-preset-es2015": "^6.24.1", | ||
"eslint": "^4.15.0", | ||
"eslint-config-airbnb": "^16.1.0", | ||
"eslint-plugin-filenames": "^1.2.0", | ||
"eslint-plugin-import": "^2.8.0", | ||
"eslint-plugin-jest": "^21.12.2", | ||
"eslint-plugin-jsx-a11y": "^6.0.3", | ||
"eslint-plugin-react": "^7.7.0", | ||
"jest": "^22.4.2" | ||
"@babel/cli": "^7.4.4", | ||
"@babel/core": "^7.4.4", | ||
"@babel/preset-env": "^7.4.4", | ||
"babel-eslint": "^10.0.1", | ||
"babel-jest": "^24.8.0", | ||
"jest": "^24.8.0", | ||
"jest-runner-standard": "0.0.12", | ||
"standard": "^12.0.1" | ||
}, | ||
"standard": { | ||
"env": [ | ||
"jest" | ||
], | ||
"ignore": [ | ||
"lib/**/*" | ||
], | ||
"parser": "babel-eslint" | ||
}, | ||
"dependencies": {} | ||
} |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
24045
122.8%8
-33.33%5
25%483
343.12%1
Infinity%1
Infinity%