{"_id":"@bobyzgirlllnpm/fugit-et-reprehenderit","name":"@bobyzgirlllnpm/fugit-et-reprehenderit","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@bobyzgirlllnpm/fugit-et-reprehenderit","version":"1.0.0","description":"[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) ![npm (scoped)](https://img.shields.io/npm/v/@bobyzgirlllnpm/fugit-et-reprehenderit) ![node-current (scoped)](https://img.shields.io/node/v/@bobyzgir","main":"index.js","scripts":{},"author":{"name":"bobyzgirlLl"},"license":"MIT","dependencies":{"@bobyzgirlllnpm/aspernatur-fugiat-quam":"^1.0.0","@bobyzgirlllnpm/autem-nemo-incidunt":"^1.0.0","@bobyzgirlllnpm/dolorem-officia-assumenda":"^1.0.0","@bobyzgirlllnpm/dolorem-vero-atque":"^1.0.0","@bobyzgirlllnpm/facere-ipsum-aspernatur":"^1.0.0","@bobyzgirlllnpm/id-nobis-pariatur":"^1.0.0","@bobyzgirlllnpm/illo-architecto-dolorum":"^1.0.0","@bobyzgirlllnpm/impedit-quia-ea":"^1.0.0","@bobyzgirlllnpm/itaque-similique-commodi":"^1.0.0","@bobyzgirlllnpm/iure-velit-sapiente":"^1.0.0","@bobyzgirlllnpm/libero-facere-id":"^1.0.0","@bobyzgirlllnpm/libero-itaque-consequuntur":"^1.0.0","@bobyzgirlllnpm/magnam-laboriosam-illum":"^1.0.0","@bobyzgirlllnpm/mollitia-doloribus-sapiente":"^1.0.0","@bobyzgirlllnpm/mollitia-fugit-officia":"^1.0.0","@bobyzgirlllnpm/nesciunt-voluptatibus-nesciunt":"^1.0.0","@bobyzgirlllnpm/nostrum-inventore-quasi":"^1.0.0","@bobyzgirlllnpm/nostrum-voluptate-provident":"^1.0.0","@bobyzgirlllnpm/pariatur-recusandae-id":"^1.0.0","@bobyzgirlllnpm/perspiciatis-sequi-eligendi":"^1.0.0","@bobyzgirlllnpm/recusandae-minus-veritatis":"^1.0.0","@bobyzgirlllnpm/repudiandae-quae-in":"^1.0.0","@bobyzgirlllnpm/saepe-autem-impedit":"^1.0.0","@bobyzgirlllnpm/suscipit-nisi-fuga":"^1.0.0","@bobyzgirlllnpm/ullam-voluptate-placeat":"^1.0.0","@drftgyhuji7npm/repellendus-eum-et-itaque":"^1.0.0","hai-custom-button":"^1.0.0","remind-works-8th":"^1.0.2","web3-khai-1":"^1.0.1","web3-khai-2":"^1.0.1"},"keywords":["some","deterministic","framework","call-bind","endpoint","stylesheet","directory","column","date","form","trimStart","drop","debug","es8","redirect","mime-db","trim","has","test","ECMAScript 2017","command-line","routing","callbound","api","CSSStyleDeclaration","id","browser","toSorted","Uint8Array","parent","properties","argument","loading","Uint32Array","WebSockets","rangeerror","Object","nope","throttle","input","eventEmitter","which","sameValueZero","ECMAScript 2020","Streams","traverse","ts","mkdir","deepclone","unicode","runtime","telephone","authentication","debugger","toobject","l10n","reuse","cloudsearch","simpledb","concatMap","tslib","testing","helpers","less.js","watch","typed","map","groupBy","agent","prop","positive","typescript","schema","ES5","style","mkdirp","watcher","slot","chrome","expression","fsevents","deep-clone","zod","vest","jsdom","logger","querystring","setPrototypeOf","readablestream","weakset","sequence","es-shim API","iam","byteLength","superagent","limited","parser","util.inspect","redux-toolkit","check","types","utilities","ECMAScript 2016","wrap","i18n","regular expressions","characters","code points","shared","bdd","korean","packages","toStringTag","equal","jwt","collection.es6","moment","lesscss","setter","fastclone","react-hook-form","ES","modules","color","connect","stringifier","fast-clone","estree","aws","ArrayBuffer.prototype.slice","compile less","Array.prototype.flatMap","error","xhr","promise","ava","watching","random","regular","width","symbol","mkdirs","ES2017","dayjs","writable","look-up","syntaxerror","ECMAScript 3","asserts","state","equality","beanstalk","pretty","valid","es-shims","task","guid","consume","password","-0","classes","json","Object.values","Object.entries","resolve","RxJS","Symbol","eslint","last","Array","collection","japanese","apollo","ES2016","censor","ECMAScript 5","parsing","path","io-ts","make dir","installer","extra","ESnext","rate","settings","shim","regexp","css less","tc39","immutable","crypto","invariant","performant","extension","arktype","form-validation","colour","classnames","character","make","hooks","ecmascript","graphql","negative","Set","art","fast","keys","option","inspect","gradients css","native","stream","TypeScript","@@toStringTag","bootstrap css","columns","js","curl","ratelimit","bundling","pipe","Int8Array","string","batch","object","safe","serialize","property","deepcopy","monorepo","command","es5","node","css nesting","define","live","getintrinsic","stringify","trimRight","Uint8ClampedArray","async","arraybuffer","dynamodb","data","argparse","in","ebs","Array.prototype.contains","fullwidth","typed array","postcss","es","chromium","ast","ses","output","es7","mixins","TypedArray","deep","buffers","web","Underscore","descriptor","worker","hash","minimal","_.extend","banner","eventDispatcher","commander","ECMAScript 2015","es-abstract","ender","awesomesauce","rds","flux","arrays","dom","getter","ECMAScript 7","names","regex","swf","preserve-symlinks","react-hooks","jQuery","find-up","fastify","toArray","browserlist","flags","ec2","generics","cloudformation","util","forEach","isConcatSpreadable","WeakMap","events","flat","sham","recursive","values","type","Int32Array","stateless","is","ES2019","structuredClone","cli","dependencies","picomatch","react-testing-library","term","break","format","xterm","tools","exec","Observables","spec","config","performance","readable","byte","superstruct","circular","figlet","JSON-Schema","console","shebang","variables","styling","progress","ajax","jest","robust","electron","queueMicrotask","cloudwatch","es2017","findLast","Object.keys","symbols","eslintconfig",".env","Float32Array","ES2021","espree","offset","css-in-js","callback","forms","elb","chai","karma","assign","getPrototypeOf","configurable","TypeBox","sorted","take","write","dom-testing-library","String.prototype.matchAll","gradients css3","YAML","internal","uuid","internal slot","environment","compare","BigInt64Array","amazon","logging","ECMAScript 2023","mimetypes","core-js","wait","css","glob","push","iterator","efficient","HyBi","args","dotenv","workspace:*","sqs","URLSearchParams","browserslist","Microsoft","streams","package","text","waf","ES2015","contains","jsdiff","delete","fastcopy","concat","__proto__","Rx","rm -fr","warning","sns","Array.prototype.flatten","formatting","mapreduce","accessor","tape","Push","negative zero","array","Object.is","wordwrap","merge","reducer","call","elasticache","dataView","Uint16Array","hasOwn","real-time","mobile","predictable","lazy","sharedarraybuffer","location","0","styled-components","Object.getPrototypeOf","codes","importexport","yup","https","postcss-plugin","install","extend","protocol-buffers","coercible","watchFile","lint","bundler","react"],"repository":{"type":"git","url":"git+https://github.com/bobyzgirlllnpm/fugit-et-reprehenderit.git"},"homepage":"https://github.com/bobyzgirlllnpm/fugit-et-reprehenderit/#readme","bugs":{"url":"https://github.com/bobyzgirlllnpm/fugit-et-reprehenderit/issues"},"_id":"@bobyzgirlllnpm/fugit-et-reprehenderit@1.0.0","gitHead":"80787b908e9307fbba93e003618e6114a6995a63","_nodeVersion":"20.12.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-z8ElKMnkUqPr579X0kN9Nh66aHJZ73zik5IVanzSowWDX3W+hdbbedLxCCQwfh32mF5XA8jrzt+aqlNLydxbMQ==","shasum":"9de980d59ae7b3e310f414f26a0e4b36509ed828","tarball":"https://registry.npmjs.org/@bobyzgirlllnpm/fugit-et-reprehenderit/-/fugit-et-reprehenderit-1.0.0.tgz","fileCount":8,"unpackedSize":22278,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG56ZhyHDIViClBiJH93hBzKdUt3aCZ5sBjZaPnUgVLuAiBIqfETD9qOQmWCf9p/L/ozM8XTQ0B9bso7DBH6wDN0SQ=="}]},"_npmUser":{"name":"haiminh1192","email":"haiminh1192@gmail.com"},"directories":{},"maintainers":[{"name":"haiminh1192","email":"haiminh1192@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fugit-et-reprehenderit_1.0.0_1714822569869_0.49414753805807843"},"_hasShrinkwrap":false}},"time":{"created":"2024-05-04T11:36:09.775Z","1.0.0":"2024-05-04T11:36:10.013Z","modified":"2024-05-04T11:36:10.362Z"},"maintainers":[{"name":"haiminh1192","email":"haiminh1192@gmail.com"}],"description":"[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) ![npm (scoped)](https://img.shields.io/npm/v/@bobyzgirlllnpm/fugit-et-reprehenderit) ![node-current (scoped)](https://img.shields.io/node/v/@bobyzgir","homepage":"https://github.com/bobyzgirlllnpm/fugit-et-reprehenderit/#readme","keywords":["some","deterministic","framework","call-bind","endpoint","stylesheet","directory","column","date","form","trimStart","drop","debug","es8","redirect","mime-db","trim","has","test","ECMAScript 2017","command-line","routing","callbound","api","CSSStyleDeclaration","id","browser","toSorted","Uint8Array","parent","properties","argument","loading","Uint32Array","WebSockets","rangeerror","Object","nope","throttle","input","eventEmitter","which","sameValueZero","ECMAScript 2020","Streams","traverse","ts","mkdir","deepclone","unicode","runtime","telephone","authentication","debugger","toobject","l10n","reuse","cloudsearch","simpledb","concatMap","tslib","testing","helpers","less.js","watch","typed","map","groupBy","agent","prop","positive","typescript","schema","ES5","style","mkdirp","watcher","slot","chrome","expression","fsevents","deep-clone","zod","vest","jsdom","logger","querystring","setPrototypeOf","readablestream","weakset","sequence","es-shim API","iam","byteLength","superagent","limited","parser","util.inspect","redux-toolkit","check","types","utilities","ECMAScript 2016","wrap","i18n","regular expressions","characters","code points","shared","bdd","korean","packages","toStringTag","equal","jwt","collection.es6","moment","lesscss","setter","fastclone","react-hook-form","ES","modules","color","connect","stringifier","fast-clone","estree","aws","ArrayBuffer.prototype.slice","compile less","Array.prototype.flatMap","error","xhr","promise","ava","watching","random","regular","width","symbol","mkdirs","ES2017","dayjs","writable","look-up","syntaxerror","ECMAScript 3","asserts","state","equality","beanstalk","pretty","valid","es-shims","task","guid","consume","password","-0","classes","json","Object.values","Object.entries","resolve","RxJS","Symbol","eslint","last","Array","collection","japanese","apollo","ES2016","censor","ECMAScript 5","parsing","path","io-ts","make dir","installer","extra","ESnext","rate","settings","shim","regexp","css less","tc39","immutable","crypto","invariant","performant","extension","arktype","form-validation","colour","classnames","character","make","hooks","ecmascript","graphql","negative","Set","art","fast","keys","option","inspect","gradients css","native","stream","TypeScript","@@toStringTag","bootstrap css","columns","js","curl","ratelimit","bundling","pipe","Int8Array","string","batch","object","safe","serialize","property","deepcopy","monorepo","command","es5","node","css nesting","define","live","getintrinsic","stringify","trimRight","Uint8ClampedArray","async","arraybuffer","dynamodb","data","argparse","in","ebs","Array.prototype.contains","fullwidth","typed array","postcss","es","chromium","ast","ses","output","es7","mixins","TypedArray","deep","buffers","web","Underscore","descriptor","worker","hash","minimal","_.extend","banner","eventDispatcher","commander","ECMAScript 2015","es-abstract","ender","awesomesauce","rds","flux","arrays","dom","getter","ECMAScript 7","names","regex","swf","preserve-symlinks","react-hooks","jQuery","find-up","fastify","toArray","browserlist","flags","ec2","generics","cloudformation","util","forEach","isConcatSpreadable","WeakMap","events","flat","sham","recursive","values","type","Int32Array","stateless","is","ES2019","structuredClone","cli","dependencies","picomatch","react-testing-library","term","break","format","xterm","tools","exec","Observables","spec","config","performance","readable","byte","superstruct","circular","figlet","JSON-Schema","console","shebang","variables","styling","progress","ajax","jest","robust","electron","queueMicrotask","cloudwatch","es2017","findLast","Object.keys","symbols","eslintconfig",".env","Float32Array","ES2021","espree","offset","css-in-js","callback","forms","elb","chai","karma","assign","getPrototypeOf","configurable","TypeBox","sorted","take","write","dom-testing-library","String.prototype.matchAll","gradients css3","YAML","internal","uuid","internal slot","environment","compare","BigInt64Array","amazon","logging","ECMAScript 2023","mimetypes","core-js","wait","css","glob","push","iterator","efficient","HyBi","args","dotenv","workspace:*","sqs","URLSearchParams","browserslist","Microsoft","streams","package","text","waf","ES2015","contains","jsdiff","delete","fastcopy","concat","__proto__","Rx","rm -fr","warning","sns","Array.prototype.flatten","formatting","mapreduce","accessor","tape","Push","negative zero","array","Object.is","wordwrap","merge","reducer","call","elasticache","dataView","Uint16Array","hasOwn","real-time","mobile","predictable","lazy","sharedarraybuffer","location","0","styled-components","Object.getPrototypeOf","codes","importexport","yup","https","postcss-plugin","install","extend","protocol-buffers","coercible","watchFile","lint","bundler","react"],"repository":{"type":"git","url":"git+https://github.com/bobyzgirlllnpm/fugit-et-reprehenderit.git"},"author":{"name":"bobyzgirlLl"},"bugs":{"url":"https://github.com/bobyzgirlllnpm/fugit-et-reprehenderit/issues"},"license":"MIT","readme":"# [**@bobyzgirlllnpm/fugit-et-reprehenderit**](https://github.com/bobyzgirlllnpm/fugit-et-reprehenderit)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n![npm (scoped)](https://img.shields.io/npm/v/@bobyzgirlllnpm/fugit-et-reprehenderit)\n![node-current (scoped)](https://img.shields.io/node/v/@bobyzgirlllnpm/fugit-et-reprehenderit)\n[![Build Status](https://img.shields.io/github/actions/workflow/status/bobyzgirlllnpm/fugit-et-reprehenderit/git-build.yml?branch=master)](https://img.shields.io/github/actions/workflow/status/bobyzgirlllnpm/fugit-et-reprehenderit/git-build.yml?branch=master)\n[![Coverage Status](https://coveralls.io/repos/github/bobyzgirlllnpm/fugit-et-reprehenderit/badge.svg?branch=master)](https://coveralls.io/github/bobyzgirlllnpm/fugit-et-reprehenderit?branch=master)\n\n> Traverse and manipulate JSON objects.\n\n## Usage\n\n### Basic usage\n\n```js\nconst jt = require('@bobyzgirlllnpm/fugit-et-reprehenderit');\n\nconst callbacks = {\n    processValue: (key, value, level, path, isObjectRoot, isArrayElement, cbSetValue) => { \n            /* your logic here */ \n        },\n    enterLevel: (level, path) => { \n            /* your logic here */ \n        },\n    exitLevel: (level, path) => { \n            /* your logic here */ \n        }\n};\n\nvar obj = { /* your JSON object */ };\n\njt.traverse(obj, callbacks);\n```\n\n### Example 1: print out a simple object\n\n```js\nvar simpleObj = {\n    MyValue: 'test',\n    OtherValue: 'zzz',\n    NumberValue: 311,\n    MyArray: [1, 2, 3, 50, 60, 70]\n};\n\nconst callbacks = {\n    processValue: (key, value, level, path, isObjectRoot, isArrayElement, cbSetValue) => { \n        console.log(level + ' ' + (path.length > 0 ? (path.join('.') + '.') : '') + key + ' = ' + value); \n    }\n};\n\nconst jt = require('@bobyzgirlllnpm/fugit-et-reprehenderit');\n\njt.traverse(simpleObj, callbacks);\n// 0 MyValue = test\n// 0 OtherValue = xxx\n// 0 NumberValue = 311\n// 0 MyArray._0 = 1\n// 0 MyArray._1 = 2\n// 0 MyArray._2 = 3\n// 0 MyArray._3 = 50\n// 0 MyArray._4 = 60\n// 0 MyArray._5 = 70\n\n// flat array-mode: flattenArray = true (arrays are treated as one value)\njt.traverse(simpleObj, callbacks, true);\n// 0 MyValue = test\n// 0 OtherValue = xxx\n// 0 NumberValue = 311\n// 0 MyArray = 1,2,3,50,60,70\n```\n\n### Example 2: change values of an object\n\n```js\nvar simpleObj = {\n    MyValue: 'test',\n    OtherValue: 'zzz',\n    NumberValue: 311,\n    MyArray: [1, 2, 3, 50, 60, 70]\n};\n\nconst callbacks = {\n    processValue: (key, value, level, path, isObjectRoot, isArrayElement, cbSetValue) => { \n        // change values of properties starting with 'My' and\n        // multiply all numeric array values greater then 50 by 100\n        if (key.startsWith('My')) {\n            cbSetValue('MyNew-' + value);\n        }\n        if (isArrayElement && parseInt(value) > 50) {\n            cbSetValue(100 * parseInt(value));\n        }\n    }\n};\n\nconst jt = require('@bobyzgirlllnpm/fugit-et-reprehenderit');\n\njt.traverse(simpleObj, callbacks);\n\n// {\n//   MyValue : \"MyNew-test\",\n//   OtherValue: \"xxx\",\n//   NumberValue: 311,\n//   MyArray: [ 1, 2, 3, 50, 6000, 7000 ]\n// }\n```\n\n### Example 3: convert a more complex object to a collapsible HTML list\n\n```js\nvar htmlObj = {\n    MyArray: [0, 0],\n    ArrayInArray: [0, 1, ['two', 'three', [4, 5, 6]]],\n    MyNumber: 123,\n    MyString: 'test',\n    Child: {\n        ChildVal: 1,\n        SubChild: {\n            SubChildVal: 777\n        },\n        ChildArray: [1, 2, 66, 9, 900]\n    },\n    TrailingValue: 'testtesttest'\n}\n\nconst callbacksHtmlList = {\n    processValue: (key, value, level, path, isObjectRoot, isArrayElement, cbSetValue) => {\n        if (isObjectRoot) {\n            console.log(('  ').repeat(level) + ' <li class=\\\"caret\\\">Key: ' + key + '</li>')\n        }\n        else {\n            console.log(('  ').repeat(level) + ' <li>Key: ' + key + ', Value: ' + value + '</li>')\n        };\n    },\n    enterLevel: (level, path) => {\n        if (level == 0) {\n            console.log('<ul>');\n        }\n        else {\n            console.log(('  ').repeat(level) + '<ul class=\\\"nested\\\">');\n        };\n    },\n    exitLevel: (level, path) => { console.log(('  ').repeat(level) + '</ul>'); }\n};\n\nconst jt = require('@bobyzgirlllnpm/fugit-et-reprehenderit');\n\njt.traverse(htmlObj, callbacksHtmlList, true);\n\n// <ul>\n//  <li>Key: MyArray, Value: 0,0</li>\n//  <li>Key: ArrayInArray, Value: 0,1,two,three,4,5,6</li>\n//  <li>Key: MyNumber, Value: 123</li>\n//  <li>Key: MyString, Value: test</li>\n//  <li class=\"caret\">Key: Child</li>\n//   <ul class=\"nested\">\n//    <li>Key: ChildVal, Value: 1</li>\n//    <li class=\"caret\">Key: SubChild</li>\n//     <ul class=\"nested\">\n//      <li>Key: SubChildVal, Value: 777</li>\n//     </ul>\n//    <li>Key: ChildArray, Value: 1,2,66,9,900</li>\n//   </ul>\n//  <li>Key: TrailingValue, Value: testtesttest</li>\n// </ul>\n\n```\n\n## Key-features\n\n- Define your callbacks for the following events:\n  - `processValue`: processing a traversed value\n  - `enterLevel`: entering a new nesting level\n  - `exitLevel`: leaving nesting level\n- For every inspected value you will get rich meta-data\n  - key name\n  - level of nesting\n  - `isObjectRoot` flag to indicate if it's an object root (root of a nested object)\n  - `isArrayElement` flag to indicate if it's an array item\n  - full path to the key as an array of path elements\n- Provides `cbSetValue` function to change any value in-place (directly in the traversed object)\n- Supports deep inspection of\n  - Subobjects\n  - Arrays\n  - Arrays-in-Arrays\n  - Subobjects-in-Arrays\n- Optional array flattening (treat arrays as flat values)\n\n## API\n\n### traverse(obj, callbacks = null, flattenArray = false)\n\nTraverse the `obj` and apply the defined callbacks while traversing.\n\n#### obj\n\nType: `Object`\n\nThe object to be traversed.\n\n#### callbacks\n\nType: `Object`\nDefault: `null`\n\nAn Object containing the callback functions that should be applied while traversing `obj`. Every callback is optional. The expected form is:\n\n```js\ncallbacks = {\n    processValue: (key, value, level, path, isObjectRoot, isArrayElement, cbSetValue) => { \n            /* your logic here */ \n        },\n    enterLevel: (level, path) => { \n            /* your logic here */ \n        },\n    exitLevel: (level, path) => { \n            /* your logic here */ \n        }\n};\n```\n\n##### processValue(key, value, level, path, isObjectRoot, isArrayElement, cbSetValue)\n\nDefined callback function that is executed on each value when traversing the object. Receives the following input parameters:\n\n###### key\n\nType: `String`\n\nThe key of the current value that is processed. If an array is deep-inspected the key for each processed item is `_ + Index` (`_0`, `_1`, `_2`,...).\n\n###### value\n\nType: `String`\n\nThe actual value for `key`.\n\n###### level\n\nType: `Number`\n\nThe nesting level. `0` indicates the first level.\n\n###### path\n\nType: `Array`\n\nAn array containing all keys that where passed to reach the current key/value pair. Example:\n\n```js\n{\n    child: {\n        subchild: {\n            myvalue: 123;\n        }\n    }\n}\n```\n\nWhen processing the value `123` with key `myvalue`, path would be `['child', 'subchild' ]`. \n\nFor deep-inspected arrays the path would contain the name of the array itself whereas the key would be the index of the processed value. Example:\n\n```js\n{\n    child: {\n        subchild: {\n            myvalues: [1, 2, 3]\n        }\n    }\n}\n```\n\nWhen processing the array the keys would be `_0`, `_1` and `_2` and the path would always be `['child', 'subchild', 'myvalues']`.\n\n###### isObjectRoot\n\nType: `Boolean`\n\n`true` if the currently processed key is the root of another sub-object. In our example:\n\n```js\n{\n    child: {\n        subchild: {\n            myvalue: 123;\n        }\n    }\n}\n```\n\n`isObjectRoot` would be `true` for the keys `child` and `subchild`.\n\n###### isArrayElement\n\nType: `Boolean`\n\n`true` if the currently processed key is an item of an array.\n\n###### cbSetValue(newValue)\n\nType: `Function`\n\nCallback function receiving the `newValue` that should replace the currently traversed `value`.\n\n**Note:** Setting a new value directly changes the traversed object! So if you need the original later on be sure to create a copy of the object first.\n\n##### enterLevel(level, path)\n\nDefined callback function that is executed on entering a new nesting level when traversing the object. Receives the following input parameters:\n\n###### level\n\nType: `Number`\n\n0-based index of the nesting level that is entered.\n\n###### path\n\nType: `Array`\n\nAn array containing all keys that where passed to reach the current level that is entered.\n\n##### exitLevel(level, path)\n\nDefined callback function that is executed on leaving a nesting level when traversing the object. Receives the following input parameters:\n\n###### level\n\nType: `Number`\n\n0-based index of the nesting level that is exited.\n\n###### path\n\nType: `Array`\n\nAn array containing all keys that where passed to reach the current level that is exited.\n\n#### flattenArray\n\nType: `Boolean`\nDefault: `false`\n\nIf set to `true` arrays will not be iterated but treated as one single value. The default is `false`, where arrays are iterated and each entry is processed separately including deep-inspection, e.g. if the entry is an object or another array.","readmeFilename":"README.md"}