X-Git-Url: https://git.josue.xyz/?p=dotfiles%2F.git;a=blobdiff_plain;f=.config%2Fcoc%2Fextensions%2Fnode_modules%2Fcoc-prettier%2Fnode_modules%2Ftable%2Fnode_modules%2Fajv%2Flib%2Fvocabularies%2Fjtd%2Ftype.ts;h=17274300b70b11b72977a965a4410f21a8f0f19c;hp=d284281991053a2aec919ea123c7db23ded2a50e;hb=3be0a9efc698a9570a44456009afc6014812625a;hpb=d2f432cc757f42f0318fdddcab8c00b240d47088 diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/type.ts b/.config/coc/extensions/node_modules/coc-prettier/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/type.ts index d2842819..17274300 100644 --- a/.config/coc/extensions/node_modules/coc-prettier/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/type.ts +++ b/.config/coc/extensions/node_modules/coc-prettier/node_modules/table/node_modules/ajv/lib/vocabularies/jtd/type.ts @@ -1,6 +1,6 @@ import type {CodeKeywordDefinition, KeywordErrorDefinition} from "../../types" import type {KeywordCxt} from "../../compile/validate" -import {_, or, Code} from "../../compile/codegen" +import {_, nil, or, Code} from "../../compile/codegen" import validTimestamp from "../../runtime/timestamp" import {useFunc} from "../../compile/util" import {checkMetadata} from "./metadata" @@ -26,13 +26,23 @@ const error: KeywordErrorDefinition = { params: (cxt) => typeErrorParams(cxt, cxt.schema), } +function timestampCode(cxt: KeywordCxt): Code { + const {gen, data, it} = cxt + const {timestamp, allowDate} = it.opts + if (timestamp === "date") return _`${data} instanceof Date ` + const vts = useFunc(gen, validTimestamp) + const allowDateArg = allowDate ? _`, true` : nil + const validString = _`typeof ${data} == "string" && ${vts}(${data}${allowDateArg})` + return timestamp === "string" ? validString : or(_`${data} instanceof Date`, validString) +} + const def: CodeKeywordDefinition = { keyword: "type", schemaType: "string", error, code(cxt: KeywordCxt) { checkMetadata(cxt) - const {gen, data, schema, parentSchema} = cxt + const {data, schema, parentSchema, it} = cxt let cond: Code switch (schema) { case "boolean": @@ -40,8 +50,7 @@ const def: CodeKeywordDefinition = { cond = _`typeof ${data} == ${schema}` break case "timestamp": { - const vts = useFunc(gen, validTimestamp) - cond = _`${data} instanceof Date || (typeof ${data} == "string" && ${vts}(${data}))` + cond = timestampCode(cxt) break } case "float32": @@ -49,8 +58,14 @@ const def: CodeKeywordDefinition = { cond = _`typeof ${data} == "number"` break default: { - const [min, max] = intRange[schema as IntType] - cond = _`typeof ${data} == "number" && isFinite(${data}) && ${data} >= ${min} && ${data} <= ${max} && !(${data} % 1)` + const sch = schema as IntType + cond = _`typeof ${data} == "number" && isFinite(${data}) && !(${data} % 1)` + if (!it.opts.int32range && (sch === "int32" || sch === "uint32")) { + if (sch === "uint32") cond = _`${cond} && ${data} >= 0` + } else { + const [min, max] = intRange[sch] + cond = _`${cond} && ${data} >= ${min} && ${data} <= ${max}` + } } } cxt.pass(parentSchema.nullable ? or(_`${data} === null`, cond) : cond)