From 1a9139eef877e17b907439b52fc6bd6f4c568afb Mon Sep 17 00:00:00 2001 From: Rory& Date: Sat, 5 Sep 2026 18:41:53 +0200 Subject: [PATCH] Fix ajv init w/ formats --- assets/openapi.json | Bin 1077657 -> 1077633 bytes assets/schemas.json | Bin 495678 -> 495654 bytes src/schemas/HelperTypes.ts | 8 ++++---- src/schemas/Validator.ts | 33 +++++++++++++++++++-------------- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/assets/openapi.json b/assets/openapi.json index e7126eb0f207ed8b9ec4a173fa0a104897c35a00..813a68633d794d5bfbdcb57866390925365c4c98 100644 GIT binary patch delta 168 zcmbRF*s<}kV?zsL3sVbo3rh=Y3)>dbv2S1R#Bo;(r@HMxbrsB$6O7!aPiSId*)CATAt6u0HEGJ&j0`b delta 261 zcmZpC>^SqWV?zsL3sVbo3rh=Y3)>dXOWyPV9d)o{emhR7f577E=MAW z{&#7!&USkb=DnSJ{@XO3%{q?j?;L0@8ez&sX~ z=?MueaoclBIi4_0PB3zxKB0+;Wm^%4JQMk*wF6B9Voo6D0%C3;<^f_}Am#(w#4q{> E0Pnt782|tP diff --git a/assets/schemas.json b/assets/schemas.json index 3c70ca90c7b9f4543e980adf89262906411cfb8a..eaae4268268e50190197e30ce6528a62e8d9464a 100644 GIT binary patch delta 142 zcmdnDKyKLrxrP?T7N!>F7M2#)Eo|R4rcZd!EI8fIiiLCfhgnQq)8#eUJf}a%W0eAP i+b3wUO`o92-h^KnPzjsT_On{-TUm%vXluaEm;eBaXEKZc delta 247 zcmZ3sKyKdxxrP?T7N!>F7M2#)Eo|R4*sK)tN^_H@J6f@bP5&^9iHpffVY;3cyC;bL z_?txvEXZo5kW^VRz3~;3{IrFv`=_5XWEYqo%fu`. */ -import Ajv from "ajv"; +import Ajv, { SchemaObject } from "ajv"; import addFormats from "ajv-formats"; import fs from "node:fs"; import path from "node:path"; @@ -39,20 +39,25 @@ const schemas = JSON.parse(fs.readFileSync(SchemaPath, { encoding: "utf8" }).rep // } // } -export const ajv = new Ajv({ - allErrors: true, - parseDate: true, - allowDate: true, - // schemas: schemas, - coerceTypes: true, - messages: true, - strict: true, - strictRequired: true, - allowUnionTypes: true, -}); +export const ajv = (function () { + console.log("[Validation] Initializing Ajv with", Object.entries(schemas).length, "schemas..."); + const _ajv = new Ajv({ + allErrors: true, + parseDate: true, + allowDate: true, + // schemas: schemas, + coerceTypes: true, + messages: true, + strict: true, + strictRequired: true, + allowUnionTypes: true, + }); -addFormats(ajv); -ajv.addSchema(schemas); + addFormats(_ajv); + Object.entries(schemas).forEach((s) => _ajv.addSchema(s[1] as SchemaObject, s[0])); + + return _ajv; +})(); export function validateSchema(schema: string, data: G): G { const valid = ajv.validate(schema, data);