25 lines
		
	
	
		
			531 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			531 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
module.exports = function defFunc(ajv) {
 | 
						|
  defFunc.definition = {
 | 
						|
    type: 'object',
 | 
						|
    macro: function (schema) {
 | 
						|
      if (schema.length == 0) return true;
 | 
						|
      if (schema.length == 1) return {required: schema};
 | 
						|
      var schemas = schema.map(function (prop) {
 | 
						|
        return {required: [prop]};
 | 
						|
      });
 | 
						|
      return {anyOf: schemas};
 | 
						|
    },
 | 
						|
    metaSchema: {
 | 
						|
      type: 'array',
 | 
						|
      items: {
 | 
						|
        type: 'string'
 | 
						|
      }
 | 
						|
    }
 | 
						|
  };
 | 
						|
 | 
						|
  ajv.addKeyword('anyRequired', defFunc.definition);
 | 
						|
  return ajv;
 | 
						|
};
 |