You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			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 {oneOf: schemas};
 | |
|     },
 | |
|     metaSchema: {
 | |
|       type: 'array',
 | |
|       items: {
 | |
|         type: 'string'
 | |
|       }
 | |
|     }
 | |
|   };
 | |
| 
 | |
|   ajv.addKeyword('oneRequired', defFunc.definition);
 | |
|   return ajv;
 | |
| };
 |