UNPKG

@mfederczuk/deeptools

Version:

A set of utility functions that recursively operate on objects

1 lines 849 B
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.deepWalk=deepWalk;const utils_1=require("./_internal/utils");const deepFreeze_1=require("./deepFreeze");const deepWalkInternal=(keyPath,obj,visitorFunc,options,rootObject)=>{if(!(0,utils_1.isNotPrimitive)(obj)){return}for(const key of(0,utils_1.getPropertyKeys)(obj)){const depth=(options===null||options===void 0?void 0:options.depth)===true;const newKeyPath=[...keyPath,key];const value=obj[key];const descriptor=(0,utils_1.getOwnPropertyDescriptor)(obj,key);const visit=()=>{visitorFunc(newKeyPath,value,obj,descriptor,rootObject)};if(!depth){visit()}deepWalkInternal(newKeyPath,value,visitorFunc,options,rootObject);if(depth){visit()}}};function deepWalk(obj,visitorFunc,options){deepWalkInternal([],obj,visitorFunc,options,obj)}(0,deepFreeze_1.deepFreeze)(deepWalk);