mirror of
https://github.com/ascribe/onion.git
synced 2024-12-23 01:39:36 +01:00
Cherry pick changes to excludePropFromObject()
This commit is contained in:
parent
8540e3de36
commit
e890cf5bb1
@ -196,14 +196,41 @@ export function escapeHTML(s) {
|
|||||||
return document.createElement('div').appendChild(document.createTextNode(s)).parentNode.innerHTML;
|
return document.createElement('div').appendChild(document.createTextNode(s)).parentNode.innerHTML;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function excludePropFromObject(obj, propList){
|
/**
|
||||||
let clonedObj = mergeOptions({}, obj);
|
* Returns a copy of the given object's own and inherited enumerable
|
||||||
for (let item in propList){
|
* properties, omitting any keys that pass the given filter function.
|
||||||
if (clonedObj[propList[item]]){
|
*/
|
||||||
delete clonedObj[propList[item]];
|
function filterObjOnFn(obj, filterFn) {
|
||||||
|
const filteredObj = {};
|
||||||
|
|
||||||
|
for (let key in obj) {
|
||||||
|
const val = obj[key];
|
||||||
|
if (filterFn == null || !filterFn(val, key)) {
|
||||||
|
filteredObj[key] = val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return clonedObj;
|
|
||||||
|
return filteredObj;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Similar to lodash's _.omit(), this returns a copy of the given object's
|
||||||
|
* own and inherited enumerable properties, omitting any keys that are
|
||||||
|
* in the given array or whose value pass the given filter function.
|
||||||
|
* @param {object} obj Source object
|
||||||
|
* @param {array|function} filter Array of key names to omit or function to invoke per iteration
|
||||||
|
* @return {object} The new object
|
||||||
|
*/
|
||||||
|
export function omitFromObject(obj, filter) {
|
||||||
|
if (filter && filter.constructor === Array) {
|
||||||
|
return filterObjOnFn(obj, (_, key) => {
|
||||||
|
return filter.indexOf(key) >= 0;
|
||||||
|
});
|
||||||
|
} else if (filter && typeof filter === 'function') {
|
||||||
|
return filterObjOnFn(obj, filter);
|
||||||
|
} else {
|
||||||
|
throw new Error('The given filter is not an array or function. Exclude aborted');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -6,7 +6,7 @@ import { argsToQueryParams, getCookie } from '../utils/fetch_api_utils';
|
|||||||
|
|
||||||
import AppConstants from '../constants/application_constants';
|
import AppConstants from '../constants/application_constants';
|
||||||
|
|
||||||
import {excludePropFromObject} from '../utils/general_utils';
|
import { omitFromObject } from '../utils/general_utils';
|
||||||
|
|
||||||
class Requests {
|
class Requests {
|
||||||
_merge(defaults, options) {
|
_merge(defaults, options) {
|
||||||
@ -138,9 +138,9 @@ class Requests {
|
|||||||
return this.request('delete', newUrl);
|
return this.request('delete', newUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
_putOrPost(url, paramsAndBody, method){
|
_putOrPost(url, paramsAndBody, method) {
|
||||||
let paramsCopy = this._merge(paramsAndBody);
|
let paramsCopy = Object.assign({}, paramsAndBody);
|
||||||
let params = excludePropFromObject(paramsAndBody, ['body']);
|
let params = omitFromObject(paramsAndBody, ['body']);
|
||||||
let newUrl = this.prepareUrl(url, params);
|
let newUrl = this.prepareUrl(url, params);
|
||||||
let body = null;
|
let body = null;
|
||||||
if (paramsCopy && paramsCopy.body) {
|
if (paramsCopy && paramsCopy.body) {
|
||||||
|
Loading…
Reference in New Issue
Block a user