Compare commits

..

2 Commits

Author SHA1 Message Date
4f8162294b
0.4.2 2025-04-02 14:18:48 +02:00
1ef7c4932d
fix: nullable number not passing the nullable checks 2025-04-02 14:18:43 +02:00
4 changed files with 12 additions and 4 deletions

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "@dzeio/schema", "name": "@dzeio/schema",
"version": "0.4.1", "version": "0.4.2",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@dzeio/schema", "name": "@dzeio/schema",
"version": "0.4.1", "version": "0.4.2",
"dependencies": { "dependencies": {
"@dzeio/object-util": "^1.8.3", "@dzeio/object-util": "^1.8.3",
"@standard-schema/spec": "^1.0.0", "@standard-schema/spec": "^1.0.0",

View File

@ -1,6 +1,6 @@
{ {
"name": "@dzeio/schema", "name": "@dzeio/schema",
"version": "0.4.1", "version": "0.4.2",
"dependencies": { "dependencies": {
"@dzeio/object-util": "^1.8.3" "@dzeio/object-util": "^1.8.3"
}, },

View File

@ -19,7 +19,7 @@ export default class SchemaNullable<Type extends SchemaItem> extends SchemaItem<
public override parse(input: unknown, options?: { fast?: boolean }): ValidationResult<SchemaInfer<Type> | undefined> { public override parse(input: unknown, options?: { fast?: boolean }): ValidationResult<SchemaInfer<Type> | undefined> {
const res = super.parse(input, options) const res = super.parse(input, options)
if (!res.valid) { if (!res.valid) {
return res return this.child.parse(input, options)
} }
if (this.isNull(res.object)) { if (this.isNull(res.object)) {

View File

@ -63,6 +63,14 @@ test('number', () => {
expect(c.parse(1).valid).toBe(true) expect(c.parse(1).valid).toBe(true)
expect(c.parse('2').valid).toBe(true) expect(c.parse('2').valid).toBe(true)
expect(c.parse(true).valid).toBe(false) 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', () => { test('object', () => {