node_modules ignore

This commit is contained in:
2025-05-08 23:43:47 +02:00
parent e19d52f172
commit 4574544c9f
65041 changed files with 10593536 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
import type {ErrorObject, Vocabulary} from "ajv/dist/core"
import limitNumber, {LimitNumberError} from "./limitNumber"
import limitNumberExclusive from "./limitNumberExclusive"
import multipleOf, {MultipleOfError} from "ajv/dist/vocabularies/validation/multipleOf"
import limitLength from "ajv/dist/vocabularies/validation/limitLength"
import pattern, {PatternError} from "ajv/dist/vocabularies/validation/pattern"
import limitProperties from "ajv/dist/vocabularies/validation/limitProperties"
import required, {RequiredError} from "ajv/dist/vocabularies/validation/required"
import limitItems from "ajv/dist/vocabularies/validation/limitItems"
import uniqueItems, {UniqueItemsError} from "ajv/dist/vocabularies/validation/uniqueItems"
import constKeyword, {ConstError} from "ajv/dist/vocabularies/validation/const"
import enumKeyword, {EnumError} from "ajv/dist/vocabularies/validation/enum"
const validation: Vocabulary = [
// number
limitNumber,
limitNumberExclusive,
multipleOf,
// string
limitLength,
pattern,
// object
limitProperties,
required,
// array
limitItems,
uniqueItems,
// any
{keyword: "type", schemaType: ["string", "array"]},
{keyword: "nullable", schemaType: "boolean"},
constKeyword,
enumKeyword,
]
export default validation
type LimitError = ErrorObject<
"maxItems" | "minItems" | "minProperties" | "maxProperties" | "minLength" | "maxLength",
{limit: number},
number | {$data: string}
>
export type ValidationKeywordError =
| LimitError
| LimitNumberError
| MultipleOfError
| PatternError
| RequiredError
| UniqueItemsError
| ConstError
| EnumError

View File

@@ -0,0 +1,76 @@
import type {
CodeKeywordDefinition,
ErrorObject,
KeywordCxt,
KeywordErrorDefinition,
} from "ajv/dist/core"
import type {KeywordErrorCxt} from "ajv/dist/types"
import {_, str, Code} from "ajv/dist/core"
import {operators} from "ajv/dist/compile/codegen"
const ops = operators
export type LimitKwd = "maximum" | "minimum"
export type ExclusiveLimitKwd = "exclusiveMaximum" | "exclusiveMinimum"
type Comparison = "<=" | ">=" | "<" | ">"
interface KwdOp {
okStr: Comparison
ok: Code
fail: Code
}
interface KwdDef {
exclusive: ExclusiveLimitKwd
ops: [KwdOp, KwdOp]
}
const KWDs: {[K in LimitKwd]: KwdDef} = {
maximum: {
exclusive: "exclusiveMaximum",
ops: [
{okStr: "<=", ok: ops.LTE, fail: ops.GT},
{okStr: "<", ok: ops.LT, fail: ops.GTE},
],
},
minimum: {
exclusive: "exclusiveMinimum",
ops: [
{okStr: ">=", ok: ops.GTE, fail: ops.LT},
{okStr: ">", ok: ops.GT, fail: ops.LTE},
],
},
}
export type LimitNumberError = ErrorObject<
LimitKwd,
{limit: number; comparison: Comparison},
number | {$data: string}
>
const error: KeywordErrorDefinition = {
message: (cxt) => str`must be ${kwdOp(cxt).okStr} ${cxt.schemaCode}`,
params: (cxt) => _`{comparison: ${kwdOp(cxt).okStr}, limit: ${cxt.schemaCode}}`,
}
const def: CodeKeywordDefinition = {
keyword: Object.keys(KWDs),
type: "number",
schemaType: "number",
$data: true,
error,
code(cxt: KeywordCxt) {
const {data, schemaCode} = cxt
cxt.fail$data(_`${data} ${kwdOp(cxt).fail} ${schemaCode} || isNaN(${data})`)
},
}
function kwdOp(cxt: KeywordErrorCxt): KwdOp {
const keyword = cxt.keyword as LimitKwd
const opsIdx = cxt.parentSchema?.[KWDs[keyword].exclusive] ? 1 : 0
return KWDs[keyword].ops[opsIdx]
}
export default def

View File

@@ -0,0 +1,26 @@
import type {
CodeKeywordDefinition,
// ErrorObject,
KeywordCxt,
// KeywordErrorDefinition,
} from "ajv/dist/core"
import {LimitKwd, ExclusiveLimitKwd} from "./limitNumber"
const KWDs: {[K in ExclusiveLimitKwd]: LimitKwd} = {
exclusiveMaximum: "maximum",
exclusiveMinimum: "minimum",
}
const def: CodeKeywordDefinition = {
keyword: Object.keys(KWDs),
type: "number",
schemaType: "boolean",
code({keyword, parentSchema}: KeywordCxt) {
const limitKwd = KWDs[keyword as ExclusiveLimitKwd]
if (parentSchema[limitKwd] === undefined) {
throw new Error(`${keyword} can only be used with ${limitKwd}`)
}
},
}
export default def