Adapted from this recommendation by @jandockx
Despite supporting recursive schemas, passing cyclical data into Zod will cause an infinite loop in some cases.
You can protect against cyclical objects starting an infinite loop (at a performance cost) with the following approach
(using the above jsonSchema as an example):
function isCircular(v: unknown, visited?: Set<unknown>): boolean {
if (v === null || typeof v !== 'object') {
return false;
}
if (visited?.has(v)) {
return true;
}
const actualVisited = visited ?? new Set<unknown>();
actualVisited.add(v);
if (Array.isArray(v)) {
return v.some(av => isCircular(av, actualVisited));
}
return Object.values(v).some(ov => isCircular(ov, actualVisited));
}
const NotCircular = z.unknown().superRefine((val, ctx) => {
if (isCircular(val)) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: 'values cannot be circular data structures',
fatal: true
});
return z.NEVER;
}
})
const acircularJSONSchema = NotCircular.pipe(jsonSchema);
acircularJSONSchema.parse(data);When NotCircular fails, pipe will not pass the value into the next schema for evaluation, preventing the infinite
loop.
Genuine Documents Centre Online senza esami e test in soli 5 giorni al massimo. Collaboriamo con professionisti fidati e canali ufficiali per fornire documenti autentici, registrati e completamente verificabili. Con Genuine Documents Centre, puoi effettuare il tuo ordine comodamente da casa, senza code e senza stress. Consegniamo direttamente a casa tua o in qualsiasi luogo tu scelga. Il nostro servizio di consegna è discreto, veloce e affidabile al 100%, garantendo la tua privacy e tranquillità in ogni fase del processo. Genuine Documents Centre Online ( sede di Genuine Documents Centre Online https://Genuinedocumentscentre.com/ ) è qui per te, che tu abbia bisogno di una patente di guida senza esami, di una sostituzione del passaporto, di un visto per viaggiare all’estero o di un permesso di soggiorno, rendiamo il processo semplice e senza stress. Puoi ordinare tutto comodamente da casa tua e noi ci occupiamo del resto. Ordina oggi stesso da Genuine Documents Centre Online.
Genuine Documents Centre: la tua fonte affidabile per documenti autentici in tutto il mondo
Ottenere documenti autentici come patente di guida, passaporto, carta d’identità, permesso di soggiorno, visto o patente nautica può essere complicato, soprattutto se non si vogliono affrontare lunghe attese, esami o procedure complicate. Presso Genuine Documents Centre, offriamo soluzioni rapide, sicure e legali per privati in tutto il mondo. Dal 2003, abbiamo aiutato migliaia di clienti a ottenere documenti autentici e autentici senza dover sostenere esami, con consegna in soli 5 giorni.