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.
		
		
		
		
		
			
		
			
				
					39 lines
				
				859 B
			
		
		
			
		
	
	
					39 lines
				
				859 B
			| 
											3 years ago
										 | import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from "../../types" | ||
|  | import type {KeywordCxt} from "../../compile/validate" | ||
|  | import {alwaysValidSchema} from "../../compile/util" | ||
|  | 
 | ||
|  | export type NotKeywordError = ErrorNoParams<"not", AnySchema> | ||
|  | 
 | ||
|  | const def: CodeKeywordDefinition = { | ||
|  |   keyword: "not", | ||
|  |   schemaType: ["object", "boolean"], | ||
|  |   trackErrors: true, | ||
|  |   code(cxt: KeywordCxt) { | ||
|  |     const {gen, schema, it} = cxt | ||
|  |     if (alwaysValidSchema(it, schema)) { | ||
|  |       cxt.fail() | ||
|  |       return | ||
|  |     } | ||
|  | 
 | ||
|  |     const valid = gen.name("valid") | ||
|  |     cxt.subschema( | ||
|  |       { | ||
|  |         keyword: "not", | ||
|  |         compositeRule: true, | ||
|  |         createErrors: false, | ||
|  |         allErrors: false, | ||
|  |       }, | ||
|  |       valid | ||
|  |     ) | ||
|  | 
 | ||
|  |     cxt.failResult( | ||
|  |       valid, | ||
|  |       () => cxt.reset(), | ||
|  |       () => cxt.error() | ||
|  |     ) | ||
|  |   }, | ||
|  |   error: {message: "must NOT be valid"}, | ||
|  | } | ||
|  | 
 | ||
|  | export default def |