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.
		
		
		
		
		
			
		
			
				
					
					
						
							22 lines
						
					
					
						
							649 B
						
					
					
				
			
		
		
	
	
							22 lines
						
					
					
						
							649 B
						
					
					
				import type {KeywordCxt} from "../../compile/validate"
 | 
						|
import {_, not, nil, Code, Name} from "../../compile/codegen"
 | 
						|
 | 
						|
export function checkNullable(
 | 
						|
  {gen, data, parentSchema}: KeywordCxt,
 | 
						|
  cond: Code = nil
 | 
						|
): [Name, Code] {
 | 
						|
  const valid = gen.name("valid")
 | 
						|
  if (parentSchema.nullable) {
 | 
						|
    gen.let(valid, _`${data} === null`)
 | 
						|
    cond = not(valid)
 | 
						|
  } else {
 | 
						|
    gen.let(valid, false)
 | 
						|
  }
 | 
						|
  return [valid, cond]
 | 
						|
}
 | 
						|
 | 
						|
export function checkNullableObject(cxt: KeywordCxt, cond: Code): [Name, Code] {
 | 
						|
  const [valid, cond_] = checkNullable(cxt, cond)
 | 
						|
  return [valid, _`${cond_} && typeof ${cxt.data} == "object" && !Array.isArray(${cxt.data})`]
 | 
						|
}
 |