react-schema
Version:
Use react like PropTypes for generic object validation.
39 lines (34 loc) • 1.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _PropTypeAnalyzer = require('./PropTypeAnalyzer');
/**
* Provides a primitive form of a schema node to use with
* [Object.whitelist] and other schema-based utils.
*
* @param {Object} node: The PropTypes node to examine.
* @return {Object}.
*/
var schemaToObject = function schemaToObject(node) {
if (node.type === 'shape') {
return node.properties.reduce(function (hash, entry) {
hash[entry.name] = schemaToObject(entry);
return hash;
}, {});
} else if (node.type === 'arrayOf') {
return [schemaToObject(node.element)];
} else if (node.type === 'literal') {
return node.value !== undefined ? node.value : null;
}
return null;
};
/**
* Converts the given schema node to a simple object.
* @param {Object} rootNode: The PropTypes node to examine.
* @return {Object}.
*/
exports.default = function (rootNode) {
return schemaToObject((0, _PropTypeAnalyzer.analyze)(rootNode));
};
//# sourceMappingURL=schemaToObject.js.map