Spaces:
Running
Running
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})`] | |
} | |