deep-pick-omit
Deep-pick and deep-omit objects with typesafe paths.
Last updated 2 years ago by prazdevs .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install deep-pick-omit 
SYNC missed versions from official npm registry.

deep-pick-omit

npm version bundlephobia license

Deep-pick and deep-omit objects with typesafe paths.

Basic usage

Both 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.

deepPick

import { deepPick } from 'deep-pick-omit'

const obj = {
  a: {
    b: 'this',
    c: 'not this'
  },
  d: 'this'
}

deepPick(obj, ['a.b', 'e'])
// -> { a: { b: 'this' }, d: 'this' }

deepPick(obj, ['f'])
// -> TypeScript Error: `f` is not a key of `obj`

deepOmit

import { deepOmit } from 'deep-pick-omit'

const obj = {
  a: {
    b: 'this',
    c: 'not this'
  },
  d: 'this'
}

deepOmit(obj, ['a.c'])
// -> { a: { b: 'this' }, d: 'this' }

deepOmit(obj, ['f'])
// -> TypeScript Error: `f` is not a key of `obj`

[!NOTE] Pathing through array values is not allowed typesafe path methods. See unsafe methods.

Unsafe methods

If paths type-safety is a problem for some edge cases, the package exposes the same methods without the type-checking on paths.

deepPickUnsafe

import { deepPickUnsafe } from 'deep-pick-omit'

const obj = {
  a: {
    c: 'not this'
  },
  d: 'this'
}

deepPickUnsafe(obj, ['d', 'f'])
// -> { d: 'this' }

deepOmitUnsafe

import { deepOmitUnsafe } from 'deep-pick-omit'

const obj = {
  a: {
    b: 'this',
    c: 'not this'
  },
  d: 'this'
}

deepOmitUnsafe(obj, ['a.c', 'f'])
// -> { a: { b: 'this' }, d: 'this' }

License

MIT — Made with ????.

Current Tags

  • 1.2.1                                ...           latest (2 years ago)

4 Versions

  • 1.2.1                                ...           2 years ago
  • 1.2.0                                ...           2 years ago
  • 1.1.0                                ...           2 years ago
  • 1.0.0                                ...           2 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 1
Dependencies (0)
None
Dev Dependencies (11)

Copyright 2013 - present © cnpmjs.org | Home |