MCPcopy Index your code
hub / github.com/HurricaneJames/react-immutable-proptypes

github.com/HurricaneJames/react-immutable-proptypes @1.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.1.0 ↗ · + Follow
14 symbols 27 edges 3 files 0 documented · 0% 4 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

react-immutable-proptypes

npm package Code Climate Test Coverage

PropType validators that work with Immutable.js.

Version Updates

  • 1.1.0 added contains to replace shape validator. shape is deprecated and will be removed in v 1.2.0
  • 1.0.0 marked as stable, no other changes
  • 0.1.8 added setOf checker. Thanks to Don Abrams!
  • 0.1.7 added convencience checkers for "primitive" immutable types (map, list, etc...)
  • 0.1.6 added iterableOf
  • 0.1.4 added mapOf
  • 0.1.3 updated package.json to support React v0.11.0+ (including 0.13.1). Thanks Andrey Okonetchnikov!

About

I got tired of seeing React.PropTypes.instanceOf(Immutable.List) or React.PropTypes.instanceOf(Immutable.Map) as PropTypes for components that should be specifying an Immutable.List of something or that an Immutable.Map contains some keys. A little "googling" came up empty, unless you want to use Flow, which I do not. So, I wrote react-immutable-proptypes.

Usage is simple, they work with and like any React.PropType.* validator.

var ImmutablePropTypes = require('react-immutable-proptypes');
var MyReactComponent = React.createClass({
  // ...
  propTypes: {
    myRequiredImmutableList: ImmutablePropTypes.listOf(
      ImmutablePropTypes.contains({
        someNumberProp: React.PropTypes.number.isRequired
      })
    ).isRequired
  }
  // ...
});

Since version 0.1.7 there are convenience helpers for "primitive" Immutable.js objects.

propTypes: {
  oldListTypeChecker: React.PropTypes.instanceOf(Immutable.List),
  anotherWay: ImmutablePropTypes.list,
  requiredList: ImmutablePropTypes.list.isRequired,
  mapsToo: ImmutablePropTypes.map,
  evenIterable: ImmutablePropTypes.iterable
}

Installation

Installing via npmjs

npm install --save react-immutable-proptypes

API

React-Immutable-PropTypes has: * Primitive Types

    ImmutablePropTypes.list         // Immutable.List.isList
    ImmutablePropTypes.map          // Immutable.Map.isMap
    ImmutablePropTypes.orderedMap   // Immutable.OrderedMap.isOrderedMap
    ImmutablePropTypes.set          // Immutable.Set.isSet
    ImmutablePropTypes.orderedSet   // Immutable.OrderedSet.isOrderedSet
    ImmutablePropTypes.stack        // Immutable.Stack.isStack
    ImmutablePropTypes.seq          // Immutable.Seq.isSeq
    ImmutablePropTypes.iterable     // Immutable.Iterable.isIterable
  • ImmutablePropTypes.listOf is based on React.PropTypes.array and is specific to Immutable.List.

  • ImmutablePropTypes.mapOf is basically the same as listOf, but it is specific to Immutable.Map.

  • ImmutablePropTypes.setOf is basically the same as listOf, but it is specific to Immutable.Set.

  • ImmutbalePropTypes.iterableOf is the generic form of listOf/mapOf. It is useful when there is no need to validate anything other than Immutable.js compatible (ie. Immutable.Iterable). Continue to use listOf and/or mapOf when you know the type.

  • ImmutablePropTypes.contains (formerly shape) is based on React.PropTypes.shape and will try to work with any Immutable.Iterable. In practice, I would recommend limiting this to Immutable.Map or Immutable.OrderedMap. However, it is possible to abuse contains to validate an array via Immutable.List.

    // ...
    aList: ImmutablePropTypes.contains({
      0: React.PropTypes.number.isRequired,
      1: React.PropTypes.string.isRequired,
      2: React.PropTypes.string
    })
    // ...
    <SomeComponent aList={new Immutable.List([1, '2'])} />
    

    That said, don't do this. Please, just... don't.

These two validators cover the output of Immutable.fromJS on standard JSON data sources.

RFC

Please send a message or, better yet, create an issue/pull request if you know a better solution, find bugs, or want a feature. For example, should listOf work with Immutable.Seq or Immutable.Range. I can think of reasons it should, but it is not a use case I have at the present, so I'm less than inclined to implement it. Alternatively, we could add a validator for sequences and/or ranges.

Core symbols most depended-on inside this repo

createImmutableTypeChecker
called by 8
src/ImmutablePropTypes.js
createIterableTypeChecker
called by 4
src/ImmutablePropTypes.js
getPropType
called by 3
src/ImmutablePropTypes.js
createChainableTypeChecker
called by 3
src/ImmutablePropTypes.js
validate
called by 1
src/ImmutablePropTypes.js
checkType
called by 0
src/ImmutablePropTypes.js
createListOfTypeChecker
called by 0
src/ImmutablePropTypes.js
createMapOfTypeChecker
called by 0
src/ImmutablePropTypes.js

Shape

Function 14

Languages

TypeScript100%

Modules by API surface

src/ImmutablePropTypes.js11 symbols
src/__tests__/ImmutablePropTypes-test.js3 symbols

For agents

$ claude mcp add react-immutable-proptypes \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact