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