50 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | var KEYWORDS = [ | ||
|  |   'multipleOf', | ||
|  |   'maximum', | ||
|  |   'exclusiveMaximum', | ||
|  |   'minimum', | ||
|  |   'exclusiveMinimum', | ||
|  |   'maxLength', | ||
|  |   'minLength', | ||
|  |   'pattern', | ||
|  |   'additionalItems', | ||
|  |   'maxItems', | ||
|  |   'minItems', | ||
|  |   'uniqueItems', | ||
|  |   'maxProperties', | ||
|  |   'minProperties', | ||
|  |   'required', | ||
|  |   'additionalProperties', | ||
|  |   'enum', | ||
|  |   'format', | ||
|  |   'const' | ||
|  | ]; | ||
|  | 
 | ||
|  | module.exports = function (metaSchema, keywordsJsonPointers) { | ||
|  |   for (var i=0; i<keywordsJsonPointers.length; i++) { | ||
|  |     metaSchema = JSON.parse(JSON.stringify(metaSchema)); | ||
|  |     var segments = keywordsJsonPointers[i].split('/'); | ||
|  |     var keywords = metaSchema; | ||
|  |     var j; | ||
|  |     for (j=1; j<segments.length; j++) | ||
|  |       keywords = keywords[segments[j]]; | ||
|  | 
 | ||
|  |     for (j=0; j<KEYWORDS.length; j++) { | ||
|  |       var key = KEYWORDS[j]; | ||
|  |       var schema = keywords[key]; | ||
|  |       if (schema) { | ||
|  |         keywords[key] = { | ||
|  |           anyOf: [ | ||
|  |             schema, | ||
|  |             { $ref: 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' } | ||
|  |           ] | ||
|  |         }; | ||
|  |       } | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   return metaSchema; | ||
|  | }; |