(typeChecker)
| 12613 | } |
| 12614 | |
| 12615 | function createObjectOfTypeChecker(typeChecker) { |
| 12616 | function validate(props, propName, componentName, location, propFullName) { |
| 12617 | var propValue = props[propName]; |
| 12618 | var propType = getPropType(propValue); |
| 12619 | if (propType !== 'object') { |
| 12620 | var locationName = ReactPropTypeLocationNames[location]; |
| 12621 | return new Error('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); |
| 12622 | } |
| 12623 | for (var key in propValue) { |
| 12624 | if (propValue.hasOwnProperty(key)) { |
| 12625 | var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key); |
| 12626 | if (error instanceof Error) { |
| 12627 | return error; |
| 12628 | } |
| 12629 | } |
| 12630 | } |
| 12631 | return null; |
| 12632 | } |
| 12633 | return createChainableTypeChecker(validate); |
| 12634 | } |
| 12635 | |
| 12636 | function createUnionTypeChecker(arrayOfTypeCheckers) { |
| 12637 | if (!Array.isArray(arrayOfTypeCheckers)) { |
nothing calls this directly
no test coverage detected