redux-resource-prop-types
Version:
prop-types for Redux Resource
55 lines (43 loc) • 2.37 kB
JavaScript
'use strict';
exports.__esModule = true;
exports.statusPropType = exports.requestPropType = exports.resourcePropType = exports.requestStatusPropType = exports.idPropType = undefined;
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; };
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _reduxResource = require('redux-resource');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Verifies a resource ID. Useful as a "building block" for
// more advanced prop types.
const idPropType = _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]);
// Verifies a request status. useful as a "building block" for
// more advanced prop types.
const requestStatusPropType = _propTypes2.default.oneOf([_reduxResource.requestStatuses.IDLE, _reduxResource.requestStatuses.PENDING, _reduxResource.requestStatuses.FAILED, _reduxResource.requestStatuses.SUCCEEDED]);
// Similar to `.shape()`, except that it enforces an ID.
const resourcePropType = function (props) {
return _propTypes2.default.shape(_extends({}, props, {
id: idPropType.isRequired
}));
};
// Similar to `.shape()`, except that it enforces proper request
// statuses, as well as an ID list
const requestPropType = function (props) {
return _propTypes2.default.shape(_extends({}, props, {
resourceType: _propTypes2.default.string.isRequired,
requestKey: _propTypes2.default.string.isRequired,
requestName: _propTypes2.default.string,
ids: _propTypes2.default.arrayOf(idPropType).isRequired,
status: requestStatusPropType.isRequired
}));
};
// The return value from `getStatus`.
const statusPropType = _propTypes2.default.shape({
idle: _propTypes2.default.bool.isRequired,
pending: _propTypes2.default.bool.isRequired,
failed: _propTypes2.default.bool.isRequired,
succeeded: _propTypes2.default.bool.isRequired
});
exports.idPropType = idPropType;
exports.requestStatusPropType = requestStatusPropType;
exports.resourcePropType = resourcePropType;
exports.requestPropType = requestPropType;
exports.statusPropType = statusPropType;