npm

Join us for the "JavaScript Supply Chain Security" tech talk, presented by VP of Security, Adam Baldwin. 6/20 at 10am PT.Sign up here »

falcor-shapes-prop-types

2.1.2 • Public • Published

Falcor Shapes Prop Types

Conversion from falcor-shapes to React propTypes.

NPM

Usage

var falcorShapesPropTypes = require('falcor-shapes-prop-types');
 
var shape = {
  people: {
    length: true,
    $: [
      {from: 0, to: 100},
      {
        name: {
          first: true,
          last: true
        },
        age: true
      }
    ]
  }
};
 
var propTypes = falcorShapesPropTypes(shape);

This is the equivalent of writing:

var propTypes = {
  people: React.PropTypes.shape({
    length: React.PropTypes.any.isRequired,
    '0': React.PropTypes.shape({
      name: React.PropTypes.shape({
        first: React.PropTypes.any.isRequired,
        last: React.PropTypes.any.isRequired
      }),
      age: React.PropTypes.any.isRequired
    })
    '1': // Repeated
    // ...
    '100': // ...
  })
}

Note that we end up with a .shape for key people. This is because Falcor does not return a real array for collections. Instead it returns an object keyed with the indicies requested, which is how Falcor supports sparse arrays.

You'll also notice these indicies are not marked as .isRequired since they may not be returned by Falcor in its dataset.

Optionality

You can force all props to be optional (ie; not .isRequired) by setting the second parameter of falcorShapesPropTypes to false:

var falcorShapesPropTypes = require('falcor-shapes-prop-types');
 
var shape = {
  people: {
    name: true
  }
};
 
var propTypes = falcorShapesPropTypes(shape, false);

This is the equivalent of writing:

var propTypes = {
  people: React.PropTypes.shape({
    name: React.PropTypes.any // no .isRequired
  }) // no .isRequired
}

Compatibility

Tested & works with React versions:

  • 0.13.x
  • 0.14.x

Contributing

Pull Requests are welcome!

This is a truly open open source project: If your contributions are of a high quality, I will give you push permissions to make direct changes in the future.

install

npm i falcor-shapes-prop-types

Downloadsweekly downloads

7

version

2.1.2

license

ISC

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability