redux-resource-prop-types
Version:
prop-types for Redux Resource
41 lines (34 loc) • 1.72 kB
JavaScript
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
import PropTypes from 'prop-types';
import { requestStatuses } from 'redux-resource';
// Verifies a resource ID. Useful as a "building block" for
// more advanced prop types.
var idPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.number]);
// Verifies a request status. useful as a "building block" for
// more advanced prop types.
var requestStatusPropType = PropTypes.oneOf([requestStatuses.IDLE, requestStatuses.PENDING, requestStatuses.FAILED, requestStatuses.SUCCEEDED]);
// Similar to `.shape()`, except that it enforces an ID.
var resourcePropType = function resourcePropType(props) {
return PropTypes.shape(_extends({}, props, {
id: idPropType.isRequired
}));
};
// Similar to `.shape()`, except that it enforces proper request
// statuses, as well as an ID list
var requestPropType = function requestPropType(props) {
return PropTypes.shape(_extends({}, props, {
resourceType: PropTypes.string.isRequired,
requestKey: PropTypes.string.isRequired,
requestName: PropTypes.string,
ids: PropTypes.arrayOf(idPropType).isRequired,
status: requestStatusPropType.isRequired
}));
};
// The return value from `getStatus`.
var statusPropType = PropTypes.shape({
idle: PropTypes.bool.isRequired,
pending: PropTypes.bool.isRequired,
failed: PropTypes.bool.isRequired,
succeeded: PropTypes.bool.isRequired
});
export { idPropType, requestStatusPropType, resourcePropType, requestPropType, statusPropType };