MCPcopy Create free account
hub / github.com/MCSManager/MCSManager / deepTraverseObject

Function deepTraverseObject

frontend/src/tools/object.ts:6–35  ·  view source on GitHub ↗
(
  obj: any,
  filter: (key: string, value: T) => boolean,
  visited = new WeakSet(),
  deep = 0
)

Source from the content-addressed store, hash-verified

4// If the callback returns true,
5// keep the key; otherwise, delete it.
6export function deepTraverseObject<T = any>(
7 obj: any,
8 filter: (key: string, value: T) => boolean,
9 visited = new WeakSet(),
10 deep = 0
11) {
12 if (deep > 5) {
13 return obj;
14 }
15 // Prevent infinite recursion: check if object was already visited (handles circular references)
16 if (obj && typeof obj === "object") {
17 if (visited.has(obj)) {
18 return obj;
19 }
20 visited.add(obj);
21 }
22
23 for (const key in obj) {
24 if (!filter(key, obj[key])) {
25 obj[key] = undefined;
26 delete obj[key];
27 continue;
28 }
29 // Only recurse into objects and arrays
30 if (obj[key] && typeof obj[key] === "object") {
31 deepTraverseObject(obj[key], filter, visited, deep + 1);
32 }
33 }
34 return obj;
35}
36
37export function filterEmptyFields<T = any>(obj: T) {
38 return deepTraverseObject(obj, (_, value) => {

Callers 1

filterEmptyFieldsFunction · 0.85

Calls 1

addMethod · 0.80

Tested by

no test coverage detected