From 1ef7c4932d1376fc3f1f73912e87fc9991263e50 Mon Sep 17 00:00:00 2001 From: Avior Date: Wed, 2 Apr 2025 14:18:43 +0200 Subject: [PATCH] fix: nullable number not passing the nullable checks --- src/items/nullable.ts | 2 +- tests/Schema.test.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/items/nullable.ts b/src/items/nullable.ts index 9afbe46..7c3d667 100644 --- a/src/items/nullable.ts +++ b/src/items/nullable.ts @@ -19,7 +19,7 @@ export default class SchemaNullable extends SchemaItem< public override parse(input: unknown, options?: { fast?: boolean }): ValidationResult | undefined> { const res = super.parse(input, options) if (!res.valid) { - return res + return this.child.parse(input, options) } if (this.isNull(res.object)) { diff --git a/tests/Schema.test.ts b/tests/Schema.test.ts index 7da8717..8f3014a 100644 --- a/tests/Schema.test.ts +++ b/tests/Schema.test.ts @@ -63,6 +63,14 @@ test('number', () => { expect(c.parse(1).valid).toBe(true) expect(c.parse('2').valid).toBe(true) expect(c.parse(true).valid).toBe(false) + + // handle parsing a nullable number + // @ts-ignore + c = s.number().parseString().nullable() + expect(c.parse(1).valid).toBe(true) + expect(c.parse('2').valid).toBe(true) + expect(c.parse(null).valid).toBe(true) + expect(c.parse(true).valid).toBe(false) }) test('object', () => {