{"_id":"deep-pick-omit","_rev":"3825088","name":"deep-pick-omit","description":"Deep-pick and deep-omit objects with typesafe paths.","dist-tags":{"latest":"1.2.1"},"maintainers":[{"name":"prazdevs","email":""}],"time":{"modified":"2025-08-26T22:17:22.000Z","created":"2023-12-10T20:24:07.177Z","1.2.1":"2024-10-04T20:37:06.307Z","1.2.0":"2024-08-25T21:45:40.068Z","1.1.0":"2023-12-17T10:39:08.680Z","1.0.0":"2023-12-10T20:24:07.177Z"},"users":{},"author":{"name":"PraZ"},"repository":{"type":"git","url":"git+https://github.com/prazdevs/deep-pick-omit.git"},"versions":{"1.2.1":{"name":"deep-pick-omit","type":"module","version":"1.2.1","packageManager":"pnpm@9.12.0","description":"Deep-pick and deep-omit objects with typesafe paths.","author":{"name":"PraZ"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/prazdevs/deep-pick-omit.git"},"sideEffects":false,"exports":{".":{"types":{"import":"./dist/index.d.mts","require":"./dist/index.d.cts"},"import":"./dist/index.mjs","require":"./dist/index.cjs"}},"main":"./dist/index.mjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","scripts":{"build":"unbuild","lint":"eslint .","prepublishOnly":"pnpm build","release":"bumpp","test":"vitest --typecheck","test:coverage":"vitest run --coverage","test:ui":"vitest --typecheck --ui","typecheck":"tsc --noEmit","prepare":"simple-git-hooks"},"devDependencies":{"@antfu/eslint-config":"^3.7.3","@vitest/coverage-v8":"^2.1.2","@vitest/ui":"^2.1.2","bumpp":"^9.6.1","eslint":"^9.11.1","lint-staged":"^15.2.10","simple-git-hooks":"^2.11.1","typescript":"^5.6.2","unbuild":"^2.0.0","vite":"^5.4.8","vitest":"^2.1.2"},"simple-git-hooks":{"pre-commit":"pnpm lint-staged"},"lint-staged":{"*":"eslint --fix"},"_id":"deep-pick-omit@1.2.1","gitHead":"b91b63d3ae7a24ed4388cd680bda47ec4fea7883","bugs":{"url":"https://github.com/prazdevs/deep-pick-omit/issues"},"homepage":"https://github.com/prazdevs/deep-pick-omit#readme","_nodeVersion":"20.12.0","_npmVersion":"10.5.0","dist":{"shasum":"c035b27a4c86518b76f60ffa3004e6c61f317032","size":3273,"noattachment":false,"key":"/deep-pick-omit/-/deep-pick-omit-1.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/deep-pick-omit/download/deep-pick-omit-1.2.1.tgz"},"_npmUser":{"name":"prazdevs","email":"sachabouillez@gmail.com"},"directories":{},"maintainers":[{"name":"prazdevs","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/deep-pick-omit_1.2.1_1728074226084_0.3400358945687738"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-10-04T20:37:06.307Z","publish_time":1728074226307,"_source_registry_name":"default","_cnpm_publish_time":1728074226307},"1.2.0":{"name":"deep-pick-omit","type":"module","version":"1.2.0","packageManager":"pnpm@8.13.1","description":"Deep-pick and deep-omit objects with typesafe paths.","author":{"name":"PraZ"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/prazdevs/deep-pick-omit.git"},"sideEffects":false,"exports":{".":{"types":{"import":"./dist/index.d.mts","require":"./dist/index.d.cts"},"import":"./dist/index.mjs","require":"./dist/index.cjs"}},"main":"./dist/index.mjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","scripts":{"build":"unbuild","lint":"eslint .","prepublishOnly":"pnpm build","release":"bumpp","test":"vitest --typecheck","test:coverage":"vitest run --coverage","test:ui":"vitest --typecheck --ui","typecheck":"tsc --noEmit","prepare":"simple-git-hooks"},"devDependencies":{"@antfu/eslint-config":"^2.6.1","@vitest/coverage-v8":"^1.1.0","@vitest/ui":"^1.1.0","bumpp":"^9.2.1","eslint":"^8.56.0","lint-staged":"^15.2.0","simple-git-hooks":"^2.9.0","typescript":"^5.3.3","unbuild":"^2.0.0","vite":"^5.0.10","vitest":"^1.1.0"},"simple-git-hooks":{"pre-commit":"pnpm lint-staged"},"lint-staged":{"*":"eslint --fix"},"_id":"deep-pick-omit@1.2.0","gitHead":"f71e364a33fd2eb1ce8c0e71b2788f4abe8cee67","bugs":{"url":"https://github.com/prazdevs/deep-pick-omit/issues"},"homepage":"https://github.com/prazdevs/deep-pick-omit#readme","_nodeVersion":"20.12.0","_npmVersion":"10.5.0","dist":{"shasum":"cd14edb242b1eceaeb23527a4eed8b650923c93d","size":3267,"noattachment":false,"key":"/deep-pick-omit/-/deep-pick-omit-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/deep-pick-omit/download/deep-pick-omit-1.2.0.tgz"},"_npmUser":{"name":"prazdevs","email":"sachabouillez@gmail.com"},"directories":{},"maintainers":[{"name":"prazdevs","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/deep-pick-omit_1.2.0_1724622339903_0.4625234520315167"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-08-25T21:45:40.068Z","publish_time":1724622340068,"_source_registry_name":"default","_cnpm_publish_time":1724622340068},"1.1.0":{"name":"deep-pick-omit","type":"module","version":"1.1.0","packageManager":"pnpm@8.12.0","description":"Deep-pick and deep-omit objects with typesafe paths.","author":{"name":"PraZ"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/prazdevs/deep-pick-omit.git"},"sideEffects":false,"exports":{".":{"types":{"import":"./dist/index.d.mts","require":"./dist/index.d.cts"},"import":"./dist/index.mjs","require":"./dist/index.cjs"}},"main":"./dist/index.mjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","scripts":{"build":"unbuild","lint":"eslint .","prepublishOnly":"pnpm build","release":"bumpp","test":"vitest","typecheck":"tsc --noEmit","prepare":"simple-git-hooks"},"devDependencies":{"@antfu/eslint-config":"^2.4.0","bumpp":"^9.2.0","eslint":"^8.55.0","lint-staged":"^15.2.0","simple-git-hooks":"^2.9.0","typescript":"^5.3.3","unbuild":"^2.0.0","vite":"^5.0.6","vitest":"^1.0.2"},"simple-git-hooks":{"pre-commit":"pnpm lint-staged"},"lint-staged":{"*":"eslint --fix"},"_id":"deep-pick-omit@1.1.0","gitHead":"eb3228d87d8dc2eecd7bfb9100354d314e64641d","bugs":{"url":"https://github.com/prazdevs/deep-pick-omit/issues"},"homepage":"https://github.com/prazdevs/deep-pick-omit#readme","_nodeVersion":"20.6.1","_npmVersion":"9.8.1","dist":{"shasum":"ade80486a517f8aa812bf49ad616b38df0597f9d","size":2575,"noattachment":false,"key":"/deep-pick-omit/-/deep-pick-omit-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/deep-pick-omit/download/deep-pick-omit-1.1.0.tgz"},"_npmUser":{"name":"prazdevs","email":"sachabouillez@gmail.com"},"directories":{},"maintainers":[{"name":"prazdevs","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/deep-pick-omit_1.1.0_1702809548503_0.7807592793531857"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-12-17T10:39:08.680Z","publish_time":1702809548680,"_source_registry_name":"default","_cnpm_publish_time":1702809548680},"1.0.0":{"name":"deep-pick-omit","type":"module","version":"1.0.0","packageManager":"pnpm@8.12.0","description":"Deep-pick and deep-omit objects with typesafe paths.","author":{"name":"PraZ"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/prazdevs/deep-pick-omit.git"},"sideEffects":false,"exports":{".":{"types":{"import":"./dist/index.d.mts","require":"./dist/index.d.cts"},"import":"./dist/index.mjs","require":"./dist/index.cjs"}},"main":"./dist/index.mjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","scripts":{"build":"unbuild","lint":"eslint .","prepublishOnly":"pnpm build","release":"bumpp","test":"vitest","typecheck":"tsc --noEmit","prepare":"simple-git-hooks"},"dependencies":{"rambda":"8.6.0"},"devDependencies":{"@antfu/eslint-config":"^2.4.0","bumpp":"^9.2.0","eslint":"^8.55.0","lint-staged":"^15.2.0","simple-git-hooks":"^2.9.0","typescript":"^5.3.3","unbuild":"^2.0.0","vite":"^5.0.6","vitest":"^1.0.2"},"simple-git-hooks":{"pre-commit":"pnpm lint-staged"},"lint-staged":{"*":"eslint --fix"},"_id":"deep-pick-omit@1.0.0","gitHead":"c35a0c43cf81f4c744b22bbe2677e947434b9e24","bugs":{"url":"https://github.com/prazdevs/deep-pick-omit/issues"},"homepage":"https://github.com/prazdevs/deep-pick-omit#readme","_nodeVersion":"20.6.1","_npmVersion":"9.8.1","dist":{"shasum":"a78337d78e9763c27c503ada914740187470bd40","size":2158,"noattachment":false,"key":"/deep-pick-omit/-/deep-pick-omit-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/deep-pick-omit/download/deep-pick-omit-1.0.0.tgz"},"_npmUser":{"name":"prazdevs","email":"sachabouillez@gmail.com"},"directories":{},"maintainers":[{"name":"prazdevs","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/deep-pick-omit_1.0.0_1702239846999_0.21563174094123072"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-12-10T20:24:07.177Z","publish_time":1702239847177,"_source_registry_name":"default","_cnpm_publish_time":1702239847177}},"readme":"# deep-pick-omit\r\n\r\n[![npm version][version-src]][version-href]\r\n[![bundlephobia][bundle-src]][bundle-href]\r\n[![license][license-src]][license-href]\r\n\r\n> Deep-pick and deep-omit objects with typesafe paths.\r\n\r\n## Basic usage\r\n\r\nBoth `deepPick` and `deepOmit` take an object and an array of dot-notation paths to respectively pick and omit from the object. By default, TypeScript will infer types for paths and error if a path does not exist in the object.\r\n\r\n### `deepPick`\r\n\r\n```typescript\r\nimport { deepPick } from 'deep-pick-omit'\r\n\r\nconst obj = {\r\n  a: {\r\n    b: 'this',\r\n    c: 'not this'\r\n  },\r\n  d: 'this'\r\n}\r\n\r\ndeepPick(obj, ['a.b', 'e'])\r\n// -> { a: { b: 'this' }, d: 'this' }\r\n\r\ndeepPick(obj, ['f'])\r\n// -> TypeScript Error: `f` is not a key of `obj`\r\n```\r\n\r\n### `deepOmit`\r\n\r\n```typescript\r\nimport { deepOmit } from 'deep-pick-omit'\r\n\r\nconst obj = {\r\n  a: {\r\n    b: 'this',\r\n    c: 'not this'\r\n  },\r\n  d: 'this'\r\n}\r\n\r\ndeepOmit(obj, ['a.c'])\r\n// -> { a: { b: 'this' }, d: 'this' }\r\n\r\ndeepOmit(obj, ['f'])\r\n// -> TypeScript Error: `f` is not a key of `obj`\r\n```\r\n\r\n> [!NOTE]\r\n> Pathing through array values is not allowed typesafe path methods. See [unsafe methods](#unsafe-methods).\r\n\r\n## Unsafe methods\r\n\r\nIf paths type-safety is a problem for some edge cases, the package exposes the same methods without the type-checking on paths.\r\n\r\n### `deepPickUnsafe`\r\n\r\n```typescript\r\nimport { deepPickUnsafe } from 'deep-pick-omit'\r\n\r\nconst obj = {\r\n  a: {\r\n    c: 'not this'\r\n  },\r\n  d: 'this'\r\n}\r\n\r\ndeepPickUnsafe(obj, ['d', 'f'])\r\n// -> { d: 'this' }\r\n```\r\n\r\n### `deepOmitUnsafe`\r\n\r\n```typescript\r\nimport { deepOmitUnsafe } from 'deep-pick-omit'\r\n\r\nconst obj = {\r\n  a: {\r\n    b: 'this',\r\n    c: 'not this'\r\n  },\r\n  d: 'this'\r\n}\r\n\r\ndeepOmitUnsafe(obj, ['a.c', 'f'])\r\n// -> { a: { b: 'this' }, d: 'this' }\r\n```\r\n\r\n## License\r\n\r\n[MIT](./LICENSE) — Made with ????.\r\n\r\n<!-- Badges -->\r\n\r\n[version-src]: https://img.shields.io/npm/v/deep-pick-omit?style=flat-square&labelColor=313244&color=f38ba8\r\n[version-href]: https://npmjs.com/package/deep-pick-omit\r\n[bundle-src]: https://img.shields.io/bundlephobia/minzip/deep-pick-omit?style=flat-square&labelColor=313244&color=f38ba8\r\n[bundle-href]: https://bundlephobia.com/result?p=deep-pick-omit\r\n[license-src]: https://img.shields.io/github/license/prazdevs/deep-pick-omit?style=flat-square&labelColor=313244&color=f38ba8\r\n[license-href]: https://github.com/prazdevs/deep-pick-omit/blob/main/LICENSE\r\n","_attachments":{},"homepage":"https://github.com/prazdevs/deep-pick-omit#readme","bugs":{"url":"https://github.com/prazdevs/deep-pick-omit/issues"},"license":"MIT"}