You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

exactProp.js 1.4 KiB

3 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = exports.specialProperty = void 0;
  7. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  8. var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  9. // This module is based on https://github.com/airbnb/prop-types-exact repository.
  10. // However, in order to reduce the number of dependencies and to remove some extra safe checks
  11. // the module was forked.
  12. // Only exported for test purposes.
  13. var specialProperty = "exact-prop: \u200B";
  14. exports.specialProperty = specialProperty;
  15. function exactProp(propTypes) {
  16. /* istanbul ignore if */
  17. if (process.env.NODE_ENV === 'production') {
  18. return propTypes;
  19. }
  20. return (0, _extends3.default)({}, propTypes, (0, _defineProperty2.default)({}, specialProperty, function (props) {
  21. var unsupportedProps = Object.keys(props).filter(function (prop) {
  22. return !propTypes.hasOwnProperty(prop);
  23. });
  24. if (unsupportedProps.length > 0) {
  25. return new Error("The following properties are not supported: ".concat(unsupportedProps.map(function (prop) {
  26. return "`".concat(prop, "`");
  27. }).join(', '), ". Please remove them."));
  28. }
  29. return null;
  30. }));
  31. }
  32. var _default = exactProp;
  33. exports.default = _default;