dist/@ajsf/core/esm2015/lib/shared/jsonpointer.functions.js
/**
     * 'forEachDeep' function
     *
     * Iterates over own enumerable properties of an object or items in an array
     * and invokes an iteratee function for each key/value or index/value pair.
     * By default, iterates over items within objects and arrays after calling
     * the iteratee function on the containing object or array itself.
     *
     * The iteratee is invoked with three arguments: (value, pointer, rootObject),
     * where pointer is a JSON pointer indicating the location of the current
     * value within the root object, and rootObject is the root object initially
     * submitted to th function.
     *
     * If a third optional parameter 'bottomUp' is set to TRUE, the iterator
     * function will be called on sub-objects and arrays after being
     * called on their contents, rather than before, which is the default.
     *
     * This function can also optionally be called directly on a sub-object by
     * including optional 4th and 5th parameterss to specify the initial
     * root object and pointer.
     *
     * //  { object } object - the initial object or array
     * //  { (v: any, p?: string, o?: any) => any } function - iteratee function
     * //  { boolean = false } bottomUp - optional, set to TRUE to reverse direction
     * //  { object = object } rootObject - optional, root object or array
     * //  { string = '' } pointer - optional, JSON Pointer to object within rootObject
     * // { object } - The modified object
     */
'forEachDeep' function
Iterates over own enumerable properties of an object or items in an array
and invokes an iteratee function for each key/value or index/value pair.
By default, iterates over items within objects and arrays after calling
the iteratee function on the containing object or array itself.

The iteratee is invoked with three arguments: (value, pointer, rootObject),
where pointer is a JSON pointer indicating the location of the current
value within the root object, and rootObject is the root object initially
submitted to th function.

If a third optional parameter 'bottomUp' is set to TRUE, the iterator
function will be called on sub-objects and arrays after being
called on their contents, rather than before, which is the default.

This function can also optionally be called directly on a sub-object by
including optional 4th and 5th parameterss to specify the initial
root object and pointer.


' forEachDeep ' function Iterates over own enumerable properties of an object or items in an array and invokes an iteratee function for each key / value or index / value pair . By default iterates over items within objects and arrays after calling the iteratee function on the containing object or array itself . The iteratee is invoked with three arguments : ( value pointer rootObject ) where pointer is a JSON pointer indicating the location of the current value within the root object and rootObject is the root object initially submitted to th function . If a third optional parameter ' bottomUp ' is set to TRUE the iterator function will be called on sub - objects and arrays after being called on their contents rather than before which is the default . This function can also optionally be called directly on a sub - object by including optional 4th and 5th parameterss to specify the initial root object and pointer .
static forEachDeep(object, fn = (v) => v, bottomUp = false, pointer = '', rootObject = object) {
        if (typeof fn !== 'function') {
            console.error(`forEachDeep error: Iterator is not a function:`, fn);
            return;
        }
        if (!bottomUp) {
            fn(object, pointer, rootObject);
        }
        if (isObject(object) || isArray(object)) {
            for (const key of Object.keys(object)) {
                const newPointer = pointer + '/' + this.escape(key);
                this.forEachDeep(object[key], fn, bottomUp, newPointer, rootObject);
            }
        }
        if (bottomUp) {
            fn(object, pointer, rootObject);
        }
    }
static forEachDeep ( object , fn = ( v ) => v , bottomUp = false , pointer = '' , rootObject = object ) { if ( typeof fn !== 'function' ) { console . error ( ` ` , fn ) ; return ; } if ( ! bottomUp ) { fn ( object , pointer , rootObject ) ; } if ( isObject ( object ) || isArray ( object ) ) { for ( const key of Object . keys ( object ) ) { const newPointer = pointer + '/' + this . escape ( key ) ; this . forEachDeep ( object [ key ] , fn , bottomUp , newPointer , rootObject ) ; } } if ( bottomUp ) { fn ( object , pointer , rootObject ) ; } }
'forEachDeep' function
 Iterates over own enumerable properties of an object or items in an array
 and invokes an iteratee function for each key/value or index/value pair.
' forEachDeep ' function Iterates over own enumerable properties of an object or items in an array and invokes an iteratee function for each key / value or index / value pair .