.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / table / node_modules / ajv / lib / compile / validate / boolSchema.ts
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/table/node_modules/ajv/lib/compile/validate/boolSchema.ts b/.config/coc/extensions/node_modules/coc-prettier/node_modules/table/node_modules/ajv/lib/compile/validate/boolSchema.ts
new file mode 100644 (file)
index 0000000..1563550
--- /dev/null
@@ -0,0 +1,47 @@
+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)
+}