0.4.0 • Published 1 year ago

only-nested v0.4.0

Weekly downloads
675
License
MIT
Repository
github
Last release
1 year ago

only-nested

npm Travis Code Climate Code Climate Coverage

Return on the whitelisted properties of an object, similar to only, but with support for nested properties.

Installation

$ npm isntall only-nested --save

Usage

var only = require('only-nested')

var whitelist = {
  a: null,
  b: {
    x: null,
    y: null
  },
  // Support for arrays
  c: [{ some: null, value: null }],
  d: {
    // Support for mapped types via the special key [Symbol.for('key')]
    [Symbol.for('key')]: {
      one: null,
      two: null
    }
  }
}

var obj = {
  a: 1,
  b: {
    x: 2,
    y: 3,
    z: 4
  },
  c: [
    { some: 'some', value: 'value' },
    { some: 'other', value: 'here', invalid: 'key' }
  ],
  d: {
    someKey: {
      one: 1,
      two: 2
    },
    someOtherKey: {
      one: 3,
      two: 4,
      three: 5
    },
    invalidValue: 'some value',
    otherInvalidValue: { four: 4, five: 5 }
  },
  e: 'nope'
}

only(whitelist, obj)
/*
-> {
  a: 1,
  b: {
    x: 2,
    y: 3
  },
  c: [
    { some: 'some', value: 'value' },
    { some: 'other', value: 'here' }
  ],
  d: {
    someKey: { one: 1, two: 2 },
    someOtherKey: { one: 3, two: 4 },
  }
}
*/

Arrays of Objects

The only() function also supports whitelisting keys of objects in an array. This is expressed in the whitelist by having an array with a whitelist object as the first element.

var whitelistWithArray = {
  a: [{
    x: null
  }]
}

var objWithArray = {
  a: [
    {
      x: 1,
      y: 2
    },
    {
      x: 3,
      y: 4,
      z: 5
    }
  ]
}

only(whitelistWithArray, objWithArray)
/*
-> {
  a: [
    {
      x: 1
    },
    {
      x: 3
    }
  ]
}
*/

Mapped Types

You can specify a mapped type using the special key [Symbol.for('key')]. Types specified as such will accept any key, provided it's value conforms to the given spec for the mapped type. See example above for more details.

Partial Application

If you call only() with a whitelist as the only argument, it returns a partially applied function which takes a source object as its only argument.

var onlyWhitelist = only(whitelist)
onlyWhitelist(obj)

It works great with map().

someArrayOfObjects.map(only({a: null}))
0.4.0

1 year ago

0.3.3

10 years ago

0.3.2

10 years ago

0.3.1

10 years ago

0.3.0

10 years ago

0.2.0

10 years ago

0.1.1

10 years ago

0.0.0

10 years ago