.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / table / node_modules / ajv / lib / vocabularies / validation / multipleOf.ts
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/table/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts b/.config/coc/extensions/node_modules/coc-prettier/node_modules/table/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts
new file mode 100644 (file)
index 0000000..1fd79ab
--- /dev/null
@@ -0,0 +1,34 @@
+import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from "../../types"
+import type {KeywordCxt} from "../../compile/validate"
+import {_, str} from "../../compile/codegen"
+
+export type MultipleOfError = ErrorObject<
+  "multipleOf",
+  {multipleOf: number},
+  number | {$data: string}
+>
+
+const error: KeywordErrorDefinition = {
+  message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,
+  params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,
+}
+
+const def: CodeKeywordDefinition = {
+  keyword: "multipleOf",
+  type: "number",
+  schemaType: "number",
+  $data: true,
+  error,
+  code(cxt: KeywordCxt) {
+    const {gen, data, schemaCode, it} = cxt
+    // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)
+    const prec = it.opts.multipleOfPrecision
+    const res = gen.let("res")
+    const invalid = prec
+      ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`
+      : _`${res} !== parseInt(${res})`
+    cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)
+  },
+}
+
+export default def