From e8f0d7032284ebff0220bd5b9e85cf3c14aa93b7 Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Thu, 12 Nov 2020 16:09:51 -0500 Subject: [PATCH] Replace deep-map, fix _and filter parsing --- api/package.json | 1 + api/src/utils/deep-map.ts | 34 +++++++++++++++++++++++++++------- api/src/utils/parse-filter.ts | 2 +- package-lock.json | 17 +++++++++++++++++ 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/api/package.json b/api/package.json index e0fa56cdc5..67169da520 100644 --- a/api/package.json +++ b/api/package.json @@ -83,6 +83,7 @@ "cookie-parser": "^1.4.5", "cors": "^2.8.5", "date-fns": "^2.16.1", + "deep-map": "^2.0.0", "dotenv": "^8.2.0", "eventemitter2": "^6.4.3", "execa": "^4.1.0", diff --git a/api/src/utils/deep-map.ts b/api/src/utils/deep-map.ts index 73704a4ade..bb1dc40c5f 100644 --- a/api/src/utils/deep-map.ts +++ b/api/src/utils/deep-map.ts @@ -1,9 +1,29 @@ -import { transform, isPlainObject } from 'lodash'; +export function deepMap( + object: Record, + iterator: (value: any, key: string | number) => any, + context?: any +): any { + if (Array.isArray(object)) { + return object.map(function (val, key) { + return typeof val === 'object' + ? deepMap(val, iterator, context) + : iterator.call(context, val, key); + }); + } else if (typeof object === 'object') { + const res: Record = {}; -export function deepMap(obj: Record, iterator: Function, context?: Function) { - return transform(obj, function (result: any, val, key) { - result[key] = isPlainObject(val) - ? deepMap(val, iterator, context) - : iterator.call(context, val, key, obj); - }); + for (var key in object) { + var val = object[key]; + + if (typeof val === 'object') { + res[key] = deepMap(val, iterator, context); + } else { + res[key] = iterator.call(context, val, key); + } + } + + return res; + } else { + return object; + } } diff --git a/api/src/utils/parse-filter.ts b/api/src/utils/parse-filter.ts index ea4a1e4f64..0da08508f7 100644 --- a/api/src/utils/parse-filter.ts +++ b/api/src/utils/parse-filter.ts @@ -3,7 +3,7 @@ import { deepMap } from './deep-map'; import { toArray } from '../utils/to-array'; export function parseFilter(filter: Filter, accountability: Accountability | null) { - return deepMap(filter, (val: any, key: string) => { + return deepMap(filter, (val, key) => { if (val === 'true') return true; if (val === 'false') return false; diff --git a/package-lock.json b/package-lock.json index 4a0b04803a..dc688fe9de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13970,6 +13970,22 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "deep-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deep-map/-/deep-map-2.0.0.tgz", + "integrity": "sha512-guIurpeZi1wiclCEEHpJmFx7Tr4gkmSBNcUpY67maP4BJeEa1JPVf9KXURcCI/cAHsvGtqVwQKI/X39rY735Rg==", + "requires": { + "lodash": "^4.17.11", + "tslib": "^1.6.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, "deep-object-diff": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.0.tgz", @@ -14330,6 +14346,7 @@ "cookie-parser": "^1.4.5", "cors": "^2.8.5", "date-fns": "^2.16.1", + "deep-map": "^2.0.0", "dotenv": "^8.2.0", "eventemitter2": "^6.4.3", "execa": "^4.1.0",