{"id":13728219,"url":"https://github.com/YuriGor/deepdash","last_synced_at":"2025-05-08T00:31:27.614Z","repository":{"id":33214317,"uuid":"155125331","full_name":"YuriGor/deepdash","owner":"YuriGor","description":"eachDeep, filterDeep, findDeep, someDeep, omitDeep, pickDeep, keysDeep etc.. Tree traversal library written in Underscore/Lodash fashion","archived":false,"fork":false,"pushed_at":"2023-01-06T06:49:56.000Z","size":8673,"stargazers_count":275,"open_issues_count":25,"forks_count":12,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-07T18:07:40.955Z","etag":null,"topics":["eachdeep","filterdeep","foreachdeep","keysdeep","lodash","object","paths","traversal","tree"],"latest_commit_sha":null,"homepage":"https://deepdash.io/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YuriGor.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["YuriGor"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2018-10-28T23:20:18.000Z","updated_at":"2024-10-10T08:30:47.000Z","dependencies_parsed_at":"2023-01-14T23:56:30.437Z","dependency_job_id":null,"html_url":"https://github.com/YuriGor/deepdash","commit_stats":null,"previous_names":[],"tags_count":113,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriGor%2Fdeepdash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriGor%2Fdeepdash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriGor%2Fdeepdash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriGor%2Fdeepdash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YuriGor","download_url":"https://codeload.github.com/YuriGor/deepdash/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224679862,"owners_count":17351880,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eachdeep","filterdeep","foreachdeep","keysdeep","lodash","object","paths","traversal","tree"],"created_at":"2024-08-03T02:00:38.797Z","updated_at":"2024-11-14T19:30:51.123Z","avatar_url":"https://github.com/YuriGor.png","language":"JavaScript","readme":"\u003cimg src=\"deepdash.svg?sanitize=true\" width=\"64px\"/\u003e\n\n## Deepdash\neachDeep, filterDeep, findDeep, someDeep, omitDeep, pickDeep, keysDeep etc..\nTree traversal library written in Underscore/Lodash fashion.\nStandalone or as a Lodash mixin extension\n\n\u003e Deepdash lib is used in [PlanZed.org](https://planzed.org/) - awesome cloud mind map app created by the author of deepdash.  \nPlz check it, it's free and I need [feedback](https://github.com/YuriGor/PlanZed.org) 😉 \n\n[![All Contributors](https://img.shields.io/badge/all_contributors-13-orange.svg?style=flat-square)](#contributors-)\n[![Known Vulnerabilities](https://snyk.io/test/npm/deepdash/badge.svg)](https://snyk.io/test/npm/deepdash) [![Travis (.org)](https://api.travis-ci.org/YuriGor/deepdash.svg?branch=master)](https://travis-ci.org/YuriGor/deepdash) [![Coverage Status](https://coveralls.io/repos/github/YuriGor/deepdash/badge.svg?branch=master)](https://coveralls.io/github/YuriGor/deepdash?branch=master) \u003cbr\u003e\n[![NPM](https://nodei.co/npm/deepdash.png?compact=true)](https://nodei.co/npm/deepdash/)\n\n### Installation\n#### In a browser\nLoad [script](https://cdn.jsdelivr.net/npm/deepdash/browser/deepdash.min.js) after Lodash, then pass a lodash instance to the deepdash function:\n```html\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/lodash/lodash.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/deepdash/browser/deepdash.min.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n  deepdash(_);\n  console.log(_.eachDeep); // --\u003e new methods mixed into Lodash\n\u003c/script\u003e\n```\n\nIf you don't use Lodash - there is a standalone version:\n```html\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/deepdash/browser/deepdash.standalone.min.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n  console.log(deepdash.eachDeep); // --\u003e all the methods just work\n\u003c/script\u003e\n```\nStandalone Deepdash weighs more then \"dry\" version, because it includes some of cherry-picked Lodash methods it depends on.\nBut it's better to use Standalone version, than include full Lodash just as dependency, if you don't need Lodash.\n\n\n#### Using npm:\n```\nnpm i --save deepdash\n```\nIn Node.js:\n```js\n// load Lodash if you need it\nconst _ = require('lodash');\n//mixin all the methods into Lodash object\nrequire('deepdash')(_);\n// or cherry-pick method you only need and mix it into lodash\nrequire('deepdash/addFilterDeep')(_);\n// or cherry-pick method separately if you don't want to mutate Lodash instance\nconst filterDeep = require('deepdash/getFilterDeep')(_);\n// If you don't need Lodash - there is standalone version\nconst deepdash = require('deepdash/standalone'); // full\nconst filterDeep = require('deepdash/filterDeep'); // or separate standalone methods\n```\n\nThere is also deepdash as ES6 module\n```\nnpm i --save deepdash-es\n```\n```js\nimport lodash from 'lodash-es';\nimport deepdash from 'deepdash-es';\nconst _ = deepdash(lodash);\n```\nin the ES package there are same cherry-pick and/or standalone methods as in the main package.\n```js\nimport filterDeep from 'deepdash-es/filterDeep';\n```\nor\n```js\nimport { filterDeep } from 'deepdash-es/standalone';\n```\nor\n```js\nimport _ from 'lodash-es';\nimport getFilterDeep from 'deepdash-es/getFilterDeep';\nconst filterDeep = getFilterDeep(_);\n```\nor\n```js\nimport _ from 'lodash-es';\nimport addFilterDeep from 'deepdash-es/addFilterDeep';\naddFilterDeep(_);// --\u003e _.filterDeep\n```\n\n## Demo\n[Example react+redux app](https://codesandbox.io/s/github/YuriGor/deepdash-example-comments/) with nested comments filtered by Deepdash.([source is here](https://github.com/YuriGor/deepdash-example-comments/tree/master/))\n\n## Methods\n\n### eachDeep (forEachDeep)\n› iterate over all the children and sub-children [📚 see docs](https://deepdash.io/#eachdeep-foreachdeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e let children = [/* expand to see */];\u003c/summary\u003e\n\n```js\nlet children = [\n  {\n    description: 'description for node 1',\n    comment: 'comment for node 1',\n    note: 'note for node 1',\n    name: 'node 1',\n    bad: false,\n    children: [\n      {\n        description: 'description for node 1.1',\n        comment: 'comment for node 1.1',\n        note: 'note for node 1.1',\n        name: 'node 1.1',\n        bad: false,\n      },\n      {\n        description: 'description for node 1.2',\n        comment: 'comment for node 1.2',\n        note: 'note for node 1.2',\n        name: 'node 1.2',\n        good: true,\n      },\n      {\n        description: 'description for node 1.3',\n        comment: 'comment for node 1.3',\n        note: 'note for node 1.3',\n        name: 'node 1.3',\n        bad: true,\n        good: false,\n      },\n    ],\n  },\n  {\n    description: 'description for node 2',\n    comment: 'comment for node 2',\n    note: 'note for node 2',\n    name: 'node 2',\n    good: true,\n    children: [\n      {\n        description: 'description for node 2.1',\n        comment: 'comment for node 2.1',\n        note: 'note for node 2.1',\n        name: 'node 2.1',\n        bad: false,\n      },\n      {\n        description: 'description for node 2.2',\n        comment: 'comment for node 2.2',\n        note: 'note for node 2.2',\n        name: 'node 2.2',\n        good: true,\n      },\n      {\n        description: 'description for node 2.3',\n        comment: 'comment for node 2.3',\n        note: 'note for node 2.3',\n        name: 'node 2.3',\n        bad: true,\n        good: false,\n      },\n    ],\n  },\n  {\n    description: 'description for node 3',\n    comment: 'comment for node 3',\n    note: 'note for node 3',\n    name: 'node 3',\n    bad: true,\n    good: false,\n    children: [\n      {\n        description: 'description for node 3.1',\n        comment: 'comment for node 3.1',\n        note: 'note for node 3.1',\n        name: 'node 3.1',\n        bad: false,\n      },\n      {\n        description: 'description for node 3.2',\n        comment: 'comment for node 3.2',\n        note: 'note for node 3.2',\n        name: 'node 3.2',\n        good: true,\n      },\n      {\n        description: 'description for node 3.3',\n        comment: 'comment for node 3.3',\n        note: 'note for node 3.3',\n        name: 'node 3.3',\n        bad: true,\n        good: false,\n      },\n    ],\n  },\n];\n```\n\u003c/details\u003e\n\n```js\n  function displayField(val, key, parent, context) {\n      if (_.isArray(parent)) {\n        key = '[' + key + ']';\n      }\n      console.log(\n        _.repeat('   ', context.depth) +\n          '→ ' +\n          key +\n          ': ' +\n          (_.isArray(val)\n            ? '[' + val.length + ']'\n            : _.isObject(val)\n            ? '{' + (val.name || '') + '}'\n            : val)\n      );\n    }\n\n    console.log('\\n = Iterate over tree (each child object) = \\n');\n\n    _.eachDeep(children, displayField, { childrenPath: 'children' });\n\n    console.log('\\n = Iterate over object (each field) = \\n');\n\n    _.eachDeep(children, displayField);\n```\n\u003cdetails\u003e\n  \u003csummary\u003eConsole: \u003c/summary\u003e\n\n```\n = Iterate over tree (each child object) =\n\n→ [0]: {node 1}\n      → [0]: {node 1.1}\n      → [1]: {node 1.2}\n      → [2]: {node 1.3}\n→ [1]: {node 2}\n      → [0]: {node 2.1}\n      → [1]: {node 2.2}\n      → [2]: {node 2.3}\n→ [2]: {node 3}\n      → [0]: {node 3.1}\n      → [1]: {node 3.2}\n      → [2]: {node 3.3}\n\n = Iterate over object (each field) =\n\n→ [0]: {node 1}\n   → description: description for node 1\n   → comment: comment for node 1\n   → note: note for node 1\n   → name: node 1\n   → bad: false\n   → children: [3]\n      → [0]: {node 1.1}\n         → description: description for node 1.1\n         → comment: comment for node 1.1\n         → note: note for node 1.1\n         → name: node 1.1\n         → bad: false\n      → [1]: {node 1.2}\n         → description: description for node 1.2\n         → comment: comment for node 1.2\n         → note: note for node 1.2\n         → name: node 1.2\n         → good: true\n      → [2]: {node 1.3}\n         → description: description for node 1.3\n         → comment: comment for node 1.3\n         → note: note for node 1.3\n         → name: node 1.3\n         → bad: true\n         → good: false\n→ [1]: {node 2}\n   → description: description for node 2\n   → comment: comment for node 2\n   → note: note for node 2\n   → name: node 2\n   → good: true\n   → children: [3]\n      → [0]: {node 2.1}\n         → description: description for node 2.1\n         → comment: comment for node 2.1\n         → note: note for node 2.1\n         → name: node 2.1\n         → bad: false\n      → [1]: {node 2.2}\n         → description: description for node 2.2\n         → comment: comment for node 2.2\n         → note: note for node 2.2\n         → name: node 2.2\n         → good: true\n      → [2]: {node 2.3}\n         → description: description for node 2.3\n         → comment: comment for node 2.3\n         → note: note for node 2.3\n         → name: node 2.3\n         → bad: true\n         → good: false\n→ [2]: {node 3}\n   → description: description for node 3\n   → comment: comment for node 3\n   → note: note for node 3\n   → name: node 3\n   → bad: true\n   → good: false\n   → children: [3]\n      → [0]: {node 3.1}\n         → description: description for node 3.1\n         → comment: comment for node 3.1\n         → note: note for node 3.1\n         → name: node 3.1\n         → bad: false\n      → [1]: {node 3.2}\n         → description: description for node 3.2\n         → comment: comment for node 3.2\n         → note: note for node 3.2\n         → name: node 3.2\n         → good: true\n      → [2]: {node 3.3}\n         → description: description for node 3.3\n         → comment: comment for node 3.3\n         → note: note for node 3.3\n         → name: node 3.3\n         → bad: true\n         → good: false\n```\n\u003c/details\u003e\n\u003c/details\u003e\n\n[Try it yourself ›››](https://codepen.io/yurigor/pen/BeBEqx?editors=0010)\n\n### filterDeep\n› deep filter object [📚 see docs](https://deepdash.io/#filterdeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e let children = [/* expand to see */];\u003c/summary\u003e\n\n```js\nlet children = [\n  {\n    description: 'description for node 1',\n    comment: 'comment for node 1',\n    note: 'note for node 1',\n    name: 'node 1',\n    bad: false,\n    children: [\n      {\n        description: 'description for node 1.1',\n        comment: 'comment for node 1.1',\n        note: 'note for node 1.1',\n        name: 'node 1.1',\n        bad: false,\n      },\n      {\n        description: 'description for node 1.2',\n        comment: 'comment for node 1.2',\n        note: 'note for node 1.2',\n        name: 'node 1.2',\n        good: true,\n      },\n      {\n        description: 'description for node 1.3',\n        comment: 'comment for node 1.3',\n        note: 'note for node 1.3',\n        name: 'node 1.3',\n        bad: true,\n        good: false,\n      },\n    ],\n  },\n  {\n    description: 'description for node 2',\n    comment: 'comment for node 2',\n    note: 'note for node 2',\n    name: 'node 2',\n    good: true,\n    children: [\n      {\n        description: 'description for node 2.1',\n        comment: 'comment for node 2.1',\n        note: 'note for node 2.1',\n        name: 'node 2.1',\n        bad: false,\n      },\n      {\n        description: 'description for node 2.2',\n        comment: 'comment for node 2.2',\n        note: 'note for node 2.2',\n        name: 'node 2.2',\n        good: true,\n      },\n      {\n        description: 'description for node 2.3',\n        comment: 'comment for node 2.3',\n        note: 'note for node 2.3',\n        name: 'node 2.3',\n        bad: true,\n        good: false,\n      },\n    ],\n  },\n  {\n    description: 'description for node 3',\n    comment: 'comment for node 3',\n    note: 'note for node 3',\n    name: 'node 3',\n    bad: true,\n    good: false,\n    children: [\n      {\n        description: 'description for node 3.1',\n        comment: 'comment for node 3.1',\n        note: 'note for node 3.1',\n        name: 'node 3.1',\n        bad: false,\n      },\n      {\n        description: 'description for node 3.2',\n        comment: 'comment for node 3.2',\n        note: 'note for node 3.2',\n        name: 'node 3.2',\n        good: true,\n      },\n      {\n        description: 'description for node 3.3',\n        comment: 'comment for node 3.3',\n        note: 'note for node 3.3',\n        name: 'node 3.3',\n        bad: true,\n        good: false,\n      },\n    ],\n  },\n];\n```\n\u003c/details\u003e\n\n```js\n  console.log('\\n = Filter tree (good children) = \\n');\n\n  console.log(\n    _.filterDeep(children, 'good', { childrenPath: 'children' })\n  );\n\n  console.log('\\n = Filter object (names of good children) = \\n');\n\n  console.log(\n      _.filterDeep(children, (val, key, parent) =\u003e {\n        if (key == 'name' \u0026\u0026 parent.good) return true;\n      })\n  );\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003eConsole:\u003c/summary\u003e\n\n```\n = Filter tree (good children) =\n\n[\n  {\n    \"description\": \"description for node 1\",\n    \"comment\": \"comment for node 1\",\n    \"note\": \"note for node 1\",\n    \"name\": \"node 1\",\n    \"bad\": false,\n    \"children\": [\n      {\n        \"description\": \"description for node 1.2\",\n        \"comment\": \"comment for node 1.2\",\n        \"note\": \"note for node 1.2\",\n        \"name\": \"node 1.2\",\n        \"good\": true\n      }\n    ]\n  },\n  {\n    \"description\": \"description for node 2\",\n    \"comment\": \"comment for node 2\",\n    \"note\": \"note for node 2\",\n    \"name\": \"node 2\",\n    \"good\": true,\n    \"children\": [\n      {\n        \"description\": \"description for node 2.2\",\n        \"comment\": \"comment for node 2.2\",\n        \"note\": \"note for node 2.2\",\n        \"name\": \"node 2.2\",\n        \"good\": true\n      }\n    ]\n  },\n  {\n    \"description\": \"description for node 3\",\n    \"comment\": \"comment for node 3\",\n    \"note\": \"note for node 3\",\n    \"name\": \"node 3\",\n    \"bad\": true,\n    \"good\": false,\n    \"children\": [\n      {\n        \"description\": \"description for node 3.2\",\n        \"comment\": \"comment for node 3.2\",\n        \"note\": \"note for node 3.2\",\n        \"name\": \"node 3.2\",\n        \"good\": true\n      }\n    ]\n  }\n]\n\n = Filter object (names of good children) =\n\n[\n  {\n    \"children\": [\n      {\n        \"name\": \"node 1.2\"\n      }\n    ]\n  },\n  {\n    \"name\": \"node 2\",\n    \"children\": [\n      {\n        \"name\": \"node 2.2\"\n      }\n    ]\n  },\n  {\n    \"children\": [\n      {\n        \"name\": \"node 3.2\"\n      }\n    ]\n  }\n]\n\n```\n\u003c/details\u003e\n\u003c/details\u003e\n\n[Try it yourself ›››](https://codepen.io/yurigor/pen/eaOaQg?editors=0010)\n\n### findDeep\n› find first matching deep meta-value [📚 see docs](https://deepdash.io/#finddeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexample a bit later\u003c/summary\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e let children = [/* expand to see */];\u003c/summary\u003e\n\n```js\n// next time\n```\n\u003c/details\u003e\n\n```js\n// sorry\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003eConsole:\u003c/summary\u003e\n\n```\n❤️\n\n```\n\u003c/details\u003e\n\u003c/details\u003e\n\n[Try it yourself (no yet) ›››](https://codepen.io/yurigor)\n\n### findValueDeep\n› find first matching deep value [📚 see docs](https://deepdash.io/#findvaluedeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexample a bit later\u003c/summary\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e let children = [/* expand to see */];\u003c/summary\u003e\n\n```js\n// next time\n```\n\u003c/details\u003e\n\n```js\n// sorry\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003eConsole:\u003c/summary\u003e\n\n```\n❤️\n\n```\n\u003c/details\u003e\n\u003c/details\u003e\n\n[Try it yourself (no yet) ›››](https://codepen.io/yurigor)\n\n### findPathDeep\n› find the path of the first matching deep value [📚 see docs](https://deepdash.io/#findpathdeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexample a bit later\u003c/summary\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e let children = [/* expand to see */];\u003c/summary\u003e\n\n```js\n// next time\n```\n\u003c/details\u003e\n\n```js\n// sorry\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003eConsole:\u003c/summary\u003e\n\n```\n❤️\n\n```\n\u003c/details\u003e\n\u003c/details\u003e\n\n[Try it yourself (no yet) ›››](https://codepen.io/yurigor)\n\n### mapDeep\n› get array of values processed by iteratee. [📚 see docs](https://deepdash.io/#mapdeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n```js\n  let res = _.mapDeep(\n    { hello: { from: { the: 'deep world', and: 'deepdash' } } },\n    (v) =\u003e v.toUpperCase(),\n    { leavesOnly: true }\n  );\n  // res -\u003e ['DEEP WORLD','DEEPDASH']\n```\n\u003c/details\u003e\n\n[Try it yourself (no yet) ›››](https://codepen.io/yurigor)\n\n### mapValuesDeep\n› get the object with same structure, but transformed values. [📚 see docs](https://deepdash.io/#mapvaluesdeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n```js\n  let res = _.mapValuesDeep(\n    { hello: { from: { the: 'deep world' } } },\n    (v) =\u003e v.toUpperCase(),\n    { leavesOnly: true }\n  );\n  // res -\u003e { hello: { from: { the: 'DEEP WORLD' } } }\n```\n\u003c/details\u003e\n\n[Try it yourself ›››](https://codepen.io/yurigor/pen/yWBzGV?editors=0010)\n\n### mapKeysDeep\n› get the object with same values, but transformed keys. [📚 see docs](https://deepdash.io/#mapkeysdeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n```js\n  let res = _.mapKeysDeep(\n    { hello: { from: { the: 'deep world' } } },\n    (v, k) =\u003e k.toUpperCase()\n  );\n  // res -\u003e { HELLO: { FROM: { THE: 'deep world' } } }\n```\n\u003c/details\u003e\n\n[Try it yourself (no yet) ›››](https://codepen.io/yurigor/)\n\n### reduceDeep\n› like reduce, but deep [📚 see docs](https://deepdash.io/#reducedeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n```js\n  let max = _.reduceDeep({ a: 2, b: 3, c: { d: 6, e: [1, 5, 8] } },\n    (acc, value, key, parent, ctx) =\u003e {\n      if (typeof value == 'number' \u0026\u0026 (typeof acc != 'number' || value \u003e acc))\n        return value;\n      return undefined;\n    }\n  );\n  // max == 8\n```\n\u003c/details\u003e\n\n[Try it yourself ›››](https://codepen.io/yurigor/pen/ZNzmmR?editors=0010)\n\n### someDeep\n› returns true if some matching deep value found  [📚 see docs](https://deepdash.io/#somedeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexample a bit later\u003c/summary\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e let children = [/* expand to see */];\u003c/summary\u003e\n\n```js\n// next time\n```\n\u003c/details\u003e\n\n```js\n// sorry\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003eConsole:\u003c/summary\u003e\n\n```\n❤️\n\n```\n\u003c/details\u003e\n\u003c/details\u003e\n\n[Try it yourself (no yet) ›››](https://codepen.io/yurigor)\n\n### pickDeep\n› pick values by paths specified by endings or regexes [📚 see docs](https://deepdash.io/#pickdeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e let children = [/* expand to see */];\u003c/summary\u003e\n\n```js\nlet children = [\n  {\n    description: 'description for node 1',\n    comment: 'comment for node 1',\n    note: 'note for node 1',\n    name: 'node 1',\n    bad: false,\n    children: [\n      {\n        description: 'description for node 1.1',\n        comment: 'comment for node 1.1',\n        note: 'note for node 1.1',\n        name: 'node 1.1',\n        bad: false,\n      },\n      {\n        description: 'description for node 1.2',\n        comment: 'comment for node 1.2',\n        note: 'note for node 1.2',\n        name: 'node 1.2',\n        good: true,\n      },\n      {\n        description: 'description for node 1.3',\n        comment: 'comment for node 1.3',\n        note: 'note for node 1.3',\n        name: 'node 1.3',\n        bad: true,\n        good: false,\n      },\n    ],\n  },\n  {\n    description: 'description for node 2',\n    comment: 'comment for node 2',\n    note: 'note for node 2',\n    name: 'node 2',\n    good: true,\n    children: [\n      {\n        description: 'description for node 2.1',\n        comment: 'comment for node 2.1',\n        note: 'note for node 2.1',\n        name: 'node 2.1',\n        bad: false,\n      },\n      {\n        description: 'description for node 2.2',\n        comment: 'comment for node 2.2',\n        note: 'note for node 2.2',\n        name: 'node 2.2',\n        good: true,\n      },\n      {\n        description: 'description for node 2.3',\n        comment: 'comment for node 2.3',\n        note: 'note for node 2.3',\n        name: 'node 2.3',\n        bad: true,\n        good: false,\n      },\n    ],\n  },\n  {\n    description: 'description for node 3',\n    comment: 'comment for node 3',\n    note: 'note for node 3',\n    name: 'node 3',\n    bad: true,\n    good: false,\n    children: [\n      {\n        description: 'description for node 3.1',\n        comment: 'comment for node 3.1',\n        note: 'note for node 3.1',\n        name: 'node 3.1',\n        bad: false,\n      },\n      {\n        description: 'description for node 3.2',\n        comment: 'comment for node 3.2',\n        note: 'note for node 3.2',\n        name: 'node 3.2',\n        good: true,\n      },\n      {\n        description: 'description for node 3.3',\n        comment: 'comment for node 3.3',\n        note: 'note for node 3.3',\n        name: 'node 3.3',\n        bad: true,\n        good: false,\n      },\n    ],\n  },\n];\n```\n\u003c/details\u003e\n\n```js\n  console.log('\\n = Pick name and description only = \\n');\n\n  console.log(\n    _.pickDeep(children, ['name', 'description'])\n  );\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003eConsole:\u003c/summary\u003e\n\n```\n = Pick name and description only =\n\n[\n  {\n    \"description\": \"description for node 1\",\n    \"name\": \"node 1\",\n    \"children\": [\n      {\n        \"description\": \"description for node 1.1\",\n        \"name\": \"node 1.1\"\n      },\n      {\n        \"description\": \"description for node 1.2\",\n        \"name\": \"node 1.2\"\n      },\n      {\n        \"description\": \"description for node 1.3\",\n        \"name\": \"node 1.3\"\n      }\n    ]\n  },\n  {\n    \"description\": \"description for node 2\",\n    \"name\": \"node 2\",\n    \"children\": [\n      {\n        \"description\": \"description for node 2.1\",\n        \"name\": \"node 2.1\"\n      },\n      {\n        \"description\": \"description for node 2.2\",\n        \"name\": \"node 2.2\"\n      },\n      {\n        \"description\": \"description for node 2.3\",\n        \"name\": \"node 2.3\"\n      }\n    ]\n  },\n  {\n    \"description\": \"description for node 3\",\n    \"name\": \"node 3\",\n    \"children\": [\n      {\n        \"description\": \"description for node 3.1\",\n        \"name\": \"node 3.1\"\n      },\n      {\n        \"description\": \"description for node 3.2\",\n        \"name\": \"node 3.2\"\n      },\n      {\n        \"description\": \"description for node 3.3\",\n        \"name\": \"node 3.3\"\n      }\n    ]\n  }\n]\n```\n\u003c/details\u003e\n\u003c/details\u003e\n\n[Try it yourself ›››](https://codepen.io/yurigor/pen/zQOVBR?editors=0010)\n\n### omitDeep\n› get object without paths specified by endings or regexes [📚 see docs](https://deepdash.io/#omitdeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e let children = [/* expand to see */];\u003c/summary\u003e\n\n```js\nlet children = [\n  {\n    description: 'description for node 1',\n    comment: 'comment for node 1',\n    note: 'note for node 1',\n    name: 'node 1',\n    bad: false,\n    children: [\n      {\n        description: 'description for node 1.1',\n        comment: 'comment for node 1.1',\n        note: 'note for node 1.1',\n        name: 'node 1.1',\n        bad: false,\n      },\n      {\n        description: 'description for node 1.2',\n        comment: 'comment for node 1.2',\n        note: 'note for node 1.2',\n        name: 'node 1.2',\n        good: true,\n      },\n      {\n        description: 'description for node 1.3',\n        comment: 'comment for node 1.3',\n        note: 'note for node 1.3',\n        name: 'node 1.3',\n        bad: true,\n        good: false,\n      },\n    ],\n  },\n  {\n    description: 'description for node 2',\n    comment: 'comment for node 2',\n    note: 'note for node 2',\n    name: 'node 2',\n    good: true,\n    children: [\n      {\n        description: 'description for node 2.1',\n        comment: 'comment for node 2.1',\n        note: 'note for node 2.1',\n        name: 'node 2.1',\n        bad: false,\n      },\n      {\n        description: 'description for node 2.2',\n        comment: 'comment for node 2.2',\n        note: 'note for node 2.2',\n        name: 'node 2.2',\n        good: true,\n      },\n      {\n        description: 'description for node 2.3',\n        comment: 'comment for node 2.3',\n        note: 'note for node 2.3',\n        name: 'node 2.3',\n        bad: true,\n        good: false,\n      },\n    ],\n  },\n  {\n    description: 'description for node 3',\n    comment: 'comment for node 3',\n    note: 'note for node 3',\n    name: 'node 3',\n    bad: true,\n    good: false,\n    children: [\n      {\n        description: 'description for node 3.1',\n        comment: 'comment for node 3.1',\n        note: 'note for node 3.1',\n        name: 'node 3.1',\n        bad: false,\n      },\n      {\n        description: 'description for node 3.2',\n        comment: 'comment for node 3.2',\n        note: 'note for node 3.2',\n        name: 'node 3.2',\n        good: true,\n      },\n      {\n        description: 'description for node 3.3',\n        comment: 'comment for node 3.3',\n        note: 'note for node 3.3',\n        name: 'node 3.3',\n        bad: true,\n        good: false,\n      },\n    ],\n  },\n];\n```\n\u003c/details\u003e\n\n```js\n  console.log('\\n = Omit paths not ending with \"e\" = \\n');\n\n  console.log(\n    _.omitDeep(children, /[^e]$/i, { onMatch: { skipChildren: false } }),\n  );\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003eConsole:\u003c/summary\u003e\n\n```\n = Omit paths not ending with \"e\" =\n\n[\n  {\n    \"note\": \"note for node 1\",\n    \"name\": \"node 1\",\n    \"children\": [\n      {\n        \"note\": \"note for node 1.1\",\n        \"name\": \"node 1.1\"\n      },\n      {\n        \"note\": \"note for node 1.2\",\n        \"name\": \"node 1.2\"\n      },\n      {\n        \"note\": \"note for node 1.3\",\n        \"name\": \"node 1.3\"\n      }\n    ]\n  },\n  {\n    \"note\": \"note for node 2\",\n    \"name\": \"node 2\",\n    \"children\": [\n      {\n        \"note\": \"note for node 2.1\",\n        \"name\": \"node 2.1\"\n      },\n      {\n        \"note\": \"note for node 2.2\",\n        \"name\": \"node 2.2\"\n      },\n      {\n        \"note\": \"note for node 2.3\",\n        \"name\": \"node 2.3\"\n      }\n    ]\n  },\n  {\n    \"note\": \"note for node 3\",\n    \"name\": \"node 3\",\n    \"children\": [\n      {\n        \"note\": \"note for node 3.1\",\n        \"name\": \"node 3.1\"\n      },\n      {\n        \"note\": \"note for node 3.2\",\n        \"name\": \"node 3.2\"\n      },\n      {\n        \"note\": \"note for node 3.3\",\n        \"name\": \"node 3.3\"\n      }\n    ]\n  }\n]\n```\n\u003c/details\u003e\n\u003c/details\u003e\n\n[Try it yourself ›››](https://codepen.io/yurigor/pen/YbKoNM?editors=0010)\n\n### index\n› get an object with all the paths as keys and corresponding values [📚 see docs](https://deepdash.io/#index)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n```js\n  let index = _.index(\n    {\n      a: {\n        b: {\n          c: [1, 2, 3],\n          'hello world': {},\n        },\n      },\n    },\n    { leavesOnly: true }\n  );\n  console.log(index);\n```\n\nConsole:\n\n```\n{ 'a.b.c[0]': 1,\n  'a.b.c[1]': 2,\n  'a.b.c[2]': 3,\n  'a.b[\"hello world\"]': {} }\n```\n\u003c/details\u003e\n\n[Try it yourself ›››](https://codepen.io/yurigor/pen/rgBzdB?editors=0010)\n\n### paths (keysDeep)\n› get an array of paths [📚 see docs](https://deepdash.io/#paths-keysdeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n```js\n  let paths = _.paths(\n    {\n      a: {\n        b: {\n          c: [1, 2, 3],\n          'hello world': {},\n        },\n      },\n    },\n    { leavesOnly: false }\n  );\n  console.log(paths);\n```\n\nConsole:\n\n```\n[ 'a',\n  'a.b',\n  'a.b.c',\n  'a.b.c[0]',\n  'a.b.c[1]',\n  'a.b.c[2]',\n  'a.b[\"hello world\"]' ]\n```\n\u003c/details\u003e\n\n[Try it yourself ›››](https://codepen.io/yurigor/pen/mYbByL?editors=0010)\n\n### condense\n› condense sparse array [📚 see docs](https://deepdash.io/#condense)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n```js\n  let arr = ['a', 'b', 'c', 'd', 'e'];\n  delete arr[1];\n  console.log(arr);\n  delete arr[3];\n  console.log(arr);\n  _.condense(arr);\n  console.log(arr);\n```\n\nConsole:\n\n```\n  [ 'a', \u003c1 empty item\u003e, 'c', 'd', 'e' ]\n  [ 'a', \u003c1 empty item\u003e, 'c', \u003c1 empty item\u003e, 'e' ]\n  [ 'a', 'c', 'e' ]\n```\n\u003c/details\u003e\n\n[Try it yourself ›››](https://codepen.io/yurigor/pen/oOKGXE?editors=0010)\n\n### condenseDeep\n› condense all the nested arrays [📚 see docs](https://deepdash.io/#condensedeep)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n```js\n  let obj = { arr: ['a', 'b', { c: [1, , 2, , 3] }, 'd', 'e'] };\n  delete obj.arr[1];\n  delete obj.arr[3];\n  _.condenseDeep(obj);\n  console.log(obj);\n```\n\nConsole:\n\n```\n  { arr: [ 'a', { c: [ 1, 2, 3 ] }, 'e' ] }\n```\n\u003c/details\u003e\n\n[Try it yourself ›››](https://codepen.io/yurigor/pen/mgNBOa?editors=0010)\n\n### exists\n› like a `_.has` but returns `false` for empty array slots [📚 see docs](https://deepdash.io/#exists)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n```js\n  var obj = [, { a: [, 'b'] }];\n  console.log(_.exists(obj, 0)); // false\n  console.log(_.exists(obj, 1)); // true\n  console.log(_.exists(obj, '[1].a[0]')); // false\n  console.log(_.exists(obj, '[1].a[1]')); // true\n```\n\u003c/details\u003e\n\n[Try it yourself ›››](https://codepen.io/yurigor/pen/MRNOQB?editors=0010)\n\n### pathToString\n› convert an array to string path (opposite to _.toPath) [📚 see docs](https://deepdash.io/#pathtostring)\n\u003cdetails\u003e\n  \u003csummary\u003eexpand example\u003c/summary\u003e\n\n```js\n  console.log(_.pathToString(['a', 'b', 'c', 'defg', 0, '1', 2.3]\n    ,'prefix1', 'prefix2', '[3]'));\n  // prefix1.prefix2[3].a.b.c.defg[0][1][\"2.3\"]\n  console.log(_.pathToString(['\"', '\"', '\"']));\n  // [\"\\\\\"\"][\"\\\\\"\"][\"\\\\\"\"]\n  console.log(_.pathToString('it.s.a.string'));\n  // it.s.a.string\n```\n\u003c/details\u003e\n\n[Try it yourself ›››](https://codepen.io/yurigor/pen/joNXGv?editors=0010)\n\n### See [full docs](https://deepdash.io) for details.\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/raz-sinay\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/15093043?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRaz Sinay\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/commits?author=raz-sinay\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#userTesting-raz-sinay\" title=\"User Testing\"\u003e📓\u003c/a\u003e \u003ca href=\"#ideas-raz-sinay\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.florent-grandval.fr\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/5641890?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFlorent\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/issues?q=author%3Afgrandval\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#userTesting-fgrandval\" title=\"User Testing\"\u003e📓\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/JoeSchr\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/8218910?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJoeSchr\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-JoeSchr\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#userTesting-JoeSchr\" title=\"User Testing\"\u003e📓\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/mattblackdev\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/5210361?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMatt Black\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-mattblackdev\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/simlu\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1539747?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLukas Siemon\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-simlu\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#userTesting-simlu\" title=\"User Testing\"\u003e📓\u003c/a\u003e \u003ca href=\"https://github.com/YuriGor/Deepdash/commits?author=simlu\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#talk-simlu\" title=\"Talks\"\u003e📢\u003c/a\u003e \u003ca href=\"https://github.com/YuriGor/Deepdash/commits?author=simlu\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/crapthings\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/1147704?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ecrapthings\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-crapthings\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://masciugo.github.io/\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/454321?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCorrado Masciullo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/issues?q=author%3Amasciugo\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#ideas-masciugo\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/jedrichards\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/1078571?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJed Richards\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-jedrichards\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ArSn\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/2803693?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKolja Zuelsdorf\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/issues?q=author%3AArSn\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#userTesting-ArSn\" title=\"User Testing\"\u003e📓\u003c/a\u003e \u003ca href=\"#example-ArSn\" title=\"Examples\"\u003e💡\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://stackoverflow.com/users/1467988\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/982868?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNoval Agung Prayogo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#question-novalagung\" title=\"Answering Questions\"\u003e💬\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/MrKumaPants\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/39394314?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNathan Tomsic\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-MrKumaPants\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/madflow\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/183248?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003emadflow\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#question-madflow\" title=\"Answering Questions\"\u003e💬\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ventralnet\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/686309?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMatthew Kirkley\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/issues?q=author%3Aventralnet\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#ideas-ventralnet\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/GaborTorma\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/11255009?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTorma Gábor\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/issues?q=author%3AGaborTorma\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#ideas-GaborTorma\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#userTesting-GaborTorma\" title=\"User Testing\"\u003e📓\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://richtera.org\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/708186?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAndreas Richter\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/issues?q=author%3Arichtera\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#userTesting-richtera\" title=\"User Testing\"\u003e📓\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/jwhitmarsh\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/8026009?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJames\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/issues?q=author%3Ajwhitmarsh\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/YuriGor/Deepdash/commits?author=jwhitmarsh\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/YuriGor/Deepdash/commits?author=jwhitmarsh\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#userTesting-jwhitmarsh\" title=\"User Testing\"\u003e📓\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://blog.rxliuli.com\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/24560368?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003erxliuli\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/issues?q=author%3Arxliuli\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/YuriGor/Deepdash/commits?author=rxliuli\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/YuriGor/Deepdash/commits?author=rxliuli\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/TeleMediaCC\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/66513308?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTeleMediaCC\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/issues?q=author%3ATeleMediaCC\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://nicolas-coutin.com\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/6564012?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNicolas Coutin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#financial-Ilshidur\" title=\"Financial\"\u003e💵\u003c/a\u003e \u003ca href=\"#userTesting-Ilshidur\" title=\"User Testing\"\u003e📓\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/barrct\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/13442267?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ebarrct\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/issues?q=author%3Abarrct\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/YuriGor/Deepdash/commits?author=barrct\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/casamia918\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/8295005?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ecasamia918\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/issues?q=author%3Acasamia918\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/YuriGor/Deepdash/commits?author=casamia918\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/YuriGor/Deepdash/commits?author=casamia918\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ferreirix\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/10561360?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eferreirix\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-ferreirix\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://cloverxuesongzhou.com/\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/5461045?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJohn Camden\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/issues?q=author%3Ajcamden\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/JoshuaM1995\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/26679919?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJoshua\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/YuriGor/Deepdash/commits?author=JoshuaM1995\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/YuriGor/Deepdash/commits?author=JoshuaM1995\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","funding_links":["https://github.com/sponsors/YuriGor"],"categories":["Packages"],"sub_categories":["Functional programming"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FYuriGor%2Fdeepdash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FYuriGor%2Fdeepdash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FYuriGor%2Fdeepdash/lists"}