(typeChecker)
| 12697 | } |
| 12698 | |
| 12699 | function createObjectOfTypeChecker(typeChecker) { |
| 12700 | function validate(props, propName, componentName, location, propFullName) { |
| 12701 | if (typeof typeChecker !== 'function') { |
| 12702 | return new Error('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); |
| 12703 | } |
| 12704 | var propValue = props[propName]; |
| 12705 | var propType = getPropType(propValue); |
| 12706 | if (propType !== 'object') { |
| 12707 | var locationName = ReactPropTypeLocationNames[location]; |
| 12708 | return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); |
| 12709 | } |
| 12710 | for (var key in propValue) { |
| 12711 | if (propValue.hasOwnProperty(key)) { |
| 12712 | var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key); |
| 12713 | if (error instanceof Error) { |
| 12714 | return error; |
| 12715 | } |
| 12716 | } |
| 12717 | } |
| 12718 | return null; |
| 12719 | } |
| 12720 | return createChainableTypeChecker(validate); |
| 12721 | } |
| 12722 | |
| 12723 | function createUnionTypeChecker(arrayOfTypeCheckers) { |
| 12724 | if (!Array.isArray(arrayOfTypeCheckers)) { |
nothing calls this directly
no test coverage detected
searching dependent graphs…