UNPKG

react-schema

Version:

Use react like PropTypes for generic object validation.

60 lines (46 loc) 2 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.format = exports.defineFormatter = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /* eslint no-useless-escape:0 */ var _getTypeName = require('./utils/getTypeName'); var _getTypeName2 = _interopRequireDefault(_getTypeName); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var formatters = {}; var defineFormatter = exports.defineFormatter = function defineFormatter(typeName, formatter) { return formatters[typeName] = formatter; }; var format = exports.format = function format(checker) { var typeName = (0, _getTypeName2.default)(checker); var formatter = formatters[typeName]; if (formatter && checker && checker.$meta) { return formatter(checker.$meta.args); } return typeName; }; var shapeToObject = function shapeToObject(obj) { var result = {}; Object.keys(obj).forEach(function (key) { var value = obj[key]; if (typeof value === 'function') { result[key] = '<' + ((0, _getTypeName2.default)(value) || 'unknown') + '>'; } else if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') { result[key] = shapeToObject(value); // <== RECURSION. } }); return result; }; defineFormatter('shape', function (shape) { var output = shapeToObject(shape); output = JSON.stringify(output).replace(/\"/g, ''); return 'shape(' + output + ')'; }); defineFormatter('oneOfType', function (types) { var typeNames = types.map(format).join(', '); return 'oneOfType(' + typeNames + ')'; }); defineFormatter('oneOf', function (enumValues) { return 'oneOf(' + enumValues.join(', ') + ')'; }); //# sourceMappingURL=PropTypeFormatter.js.map