From 29e2efddd83d6a265e5724b90ebb9cde6856be1f Mon Sep 17 00:00:00 2001 From: Vitali Haradkou Date: Mon, 22 Jan 2024 00:01:33 +0400 Subject: [PATCH] add validation for refine method --- src/builder.ts | 3 +++ tests/base.test.ts | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/builder.ts b/src/builder.ts index a2633f0..0842c9a 100644 --- a/src/builder.ts +++ b/src/builder.ts @@ -196,6 +196,9 @@ abstract class SchemaBuilder< * Schema.parse([{ active: true, name: 'some 1' }, { active: true, name: 'some 2' }]) // throws Error */ refine(fn: (output: Output) => any) { + if (typeof fn !== 'function') { + throw new TypeError(`Cannot set for not a function for refine. Expect "function", Got: ${typeof fn}`, { cause: { fn, type: typeof fn } }) + } this.refineFns.push(fn) return this } diff --git a/tests/base.test.ts b/tests/base.test.ts index de76e51..4742ad7 100644 --- a/tests/base.test.ts +++ b/tests/base.test.ts @@ -213,3 +213,8 @@ test('refine should throws default error', () => { expect(result.error).toBeInstanceOf(Error) expect(result.error?.message).toBe('refine error') }) + +test('refine should throws TypeError for not a function', () => { + // @ts-expect-error + expect(() => s.number().refine(false)).toThrow(TypeError) +})