123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /**
- * Module dependencies
- */
- var _ = require('@sailshq/lodash');
- var typeInfo = require('./type-info');
- var dehydrate = require('./dehydrate');
- var buildSchemaIterator = require('./helpers/build-schema-iterator');
- /**
- * Given a type schema, return an exemplar which accepts precisely the same set of values.
- *
- * @param {*} typeSchema
- * @return {*}
- */
- module.exports = function getDefaultExemplar (typeSchema) {
- // Dehydrate the type schema to avoid circular recursion
- var dehydratedTypeSchema = dehydrate(typeSchema);
- // Configure type schema iterator
- return buildSchemaIterator(
- function onFacetDict(facetDictionary, parentKeyOrIndex, callRecursive){
- return _.reduce(facetDictionary, function (memo, val, key) {
- var facet = callRecursive(val, key);
- memo[key] = facet;
- return memo;
- }, {});
- },
- function onPatternArray(patternArray, parentKeyOrIndex, iterateRecursive){
- var pattern = iterateRecursive(patternArray[0], 0);
- return [ pattern ];
- },
- function onGenericDict(schema, parentKeyOrIndex){
- return typeInfo('dictionary').getExemplar();
- },
- function onGenericArray(schema, parentKeyOrIndex){
- return typeInfo('array').getExemplar();
- },
- function onOther(schema, parentKeyOrIndex){
- return typeInfo(schema).getExemplar();
- }
- )(dehydratedTypeSchema);
- };
|