You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					23 lines
				
				717 B
			
		
		
			
		
	
	
					23 lines
				
				717 B
			| 
											3 years ago
										 | import type {CodeKeywordDefinition, AnySchema} from "../../types" | ||
|  | import type {KeywordCxt} from "../../compile/validate" | ||
|  | import {alwaysValidSchema} from "../../compile/util" | ||
|  | 
 | ||
|  | const def: CodeKeywordDefinition = { | ||
|  |   keyword: "allOf", | ||
|  |   schemaType: "array", | ||
|  |   code(cxt: KeywordCxt) { | ||
|  |     const {gen, schema, it} = cxt | ||
|  |     /* istanbul ignore if */ | ||
|  |     if (!Array.isArray(schema)) throw new Error("ajv implementation error") | ||
|  |     const valid = gen.name("valid") | ||
|  |     schema.forEach((sch: AnySchema, i: number) => { | ||
|  |       if (alwaysValidSchema(it, sch)) return | ||
|  |       const schCxt = cxt.subschema({keyword: "allOf", schemaProp: i}, valid) | ||
|  |       cxt.ok(valid) | ||
|  |       cxt.mergeEvaluated(schCxt) | ||
|  |     }) | ||
|  |   }, | ||
|  | } | ||
|  | 
 | ||
|  | export default def |