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.
		
		
		
		
		
			
		
			
				
					48 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					48 lines
				
				1.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								import type {KeywordErrorDefinition, KeywordErrorCxt} from "../../types"
							 | 
						||
| 
								 | 
							
								import type {SchemaCxt} from ".."
							 | 
						||
| 
								 | 
							
								import {reportError} from "../errors"
							 | 
						||
| 
								 | 
							
								import {_, Name} from "../codegen"
							 | 
						||
| 
								 | 
							
								import N from "../names"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const boolError: KeywordErrorDefinition = {
							 | 
						||
| 
								 | 
							
								  message: "boolean schema is false",
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function topBoolOrEmptySchema(it: SchemaCxt): void {
							 | 
						||
| 
								 | 
							
								  const {gen, schema, validateName} = it
							 | 
						||
| 
								 | 
							
								  if (schema === false) {
							 | 
						||
| 
								 | 
							
								    falseSchemaError(it, false)
							 | 
						||
| 
								 | 
							
								  } else if (typeof schema == "object" && schema.$async === true) {
							 | 
						||
| 
								 | 
							
								    gen.return(N.data)
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    gen.assign(_`${validateName}.errors`, null)
							 | 
						||
| 
								 | 
							
								    gen.return(true)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {
							 | 
						||
| 
								 | 
							
								  const {gen, schema} = it
							 | 
						||
| 
								 | 
							
								  if (schema === false) {
							 | 
						||
| 
								 | 
							
								    gen.var(valid, false) // TODO var
							 | 
						||
| 
								 | 
							
								    falseSchemaError(it)
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    gen.var(valid, true) // TODO var
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {
							 | 
						||
| 
								 | 
							
								  const {gen, data} = it
							 | 
						||
| 
								 | 
							
								  // TODO maybe some other interface should be used for non-keyword validation errors...
							 | 
						||
| 
								 | 
							
								  const cxt: KeywordErrorCxt = {
							 | 
						||
| 
								 | 
							
								    gen,
							 | 
						||
| 
								 | 
							
								    keyword: "false schema",
							 | 
						||
| 
								 | 
							
								    data,
							 | 
						||
| 
								 | 
							
								    schema: false,
							 | 
						||
| 
								 | 
							
								    schemaCode: false,
							 | 
						||
| 
								 | 
							
								    schemaValue: false,
							 | 
						||
| 
								 | 
							
								    params: {},
							 | 
						||
| 
								 | 
							
								    it,
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  reportError(cxt, boolError, undefined, overrideAllErrors)
							 | 
						||
| 
								 | 
							
								}
							 |