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