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
						
					
					
				| 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
 |