From 5b03aba347737e7aa3d68540cd9ba0be2125b623 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Felipe=20Schulle?= Date: Fri, 5 Dec 2025 11:04:07 -0300 Subject: [PATCH 1/8] fix: fix received undefined in resolver function e resolve or undefined --- .changeset/clean-zoos-stare.md | 5 +++ src/resolvers/typebox-deprecated.ts | 47 +++++++++++------------------ src/resolvers/typebox.ts | 26 ++++++++-------- 3 files changed, 35 insertions(+), 43 deletions(-) create mode 100644 .changeset/clean-zoos-stare.md diff --git a/.changeset/clean-zoos-stare.md b/.changeset/clean-zoos-stare.md new file mode 100644 index 0000000..448d817 --- /dev/null +++ b/.changeset/clean-zoos-stare.md @@ -0,0 +1,5 @@ +--- +"@brainylab/resolver-validators": patch +--- + +fix: fix received undefined in resolver function e resolve or undefined diff --git a/src/resolvers/typebox-deprecated.ts b/src/resolvers/typebox-deprecated.ts index dc96e85..3155dbb 100644 --- a/src/resolvers/typebox-deprecated.ts +++ b/src/resolvers/typebox-deprecated.ts @@ -24,9 +24,6 @@ import type { RVTypes, } from "@/types"; -// import { TBOptional } from "./optional"; -// import { TBRequired } from "./required"; - function TBString(params?: RVStringParams): TString { const typeBoxParams: StringOptions = {}; @@ -99,10 +96,6 @@ function TBNumber(params?: RVNumberParams): TNumber { return Type.Number(typeBoxParams); } -function TBObject(schema: TObject): TObject { - return Type.Object(schema); -} - type PrimitiveSchema = { type: RVTypes; schema?: RVSchema; @@ -116,9 +109,7 @@ type ResolverObjectSchema = { schema: { [key: string]: PrimitiveSchema }; }; -function resolverPrimitiveSchema( - options: PrimitiveSchema, -): TSchema | undefined { +function resolverPrimitiveSchema(options: PrimitiveSchema): TSchema { if (options.type === "string") { return TBString(options.params); } @@ -148,12 +139,6 @@ function resolverPrimitiveSchema( return TBTuple(tuplePrimitiveResolved as TSchema[]); } - if (options.type === "object") { - return resolverObjectSchema( - options as unknown as ResolverObjectSchema, - ) as TObject; - } - if (options.type === "optional") { return TBOptional( resolverPrimitiveSchema(options.schema as PrimitiveSchema) as TSchema, @@ -173,30 +158,34 @@ function resolverPrimitiveSchema( ) as TSchema[], ); } -} -function resolverObjectSchema(schema: ResolverObjectSchema) { - if (schema.type === "object") { - const resolvedTypeBox = {} as TObject; + return resolverObjectSchema( + options as unknown as ResolverObjectSchema, + ) as TObject; +} - const primitiveSchema = schema.schema; +function resolverObjectSchema(schema: ResolverObjectSchema): TSchema { + const resolvedTypeBox = {} as TObject; - for (const key in primitiveSchema) { - const value = primitiveSchema[key]; + const primitiveSchema = schema.schema; - if (value.type === "optional") { - resolvedTypeBox[key] = resolverPrimitiveSchema(value); - continue; - } + for (const key in primitiveSchema) { + const value = primitiveSchema[key]; + if (value.type === "optional") { resolvedTypeBox[key] = resolverPrimitiveSchema(value); + continue; } - return TBObject(resolvedTypeBox); + resolvedTypeBox[key] = resolverPrimitiveSchema(value); } + + return Type.Object(resolvedTypeBox); } -export function resolver(schema: RVSchema) { +export function resolver(schema: RVSchema): TSchema { + if (!schema) return Type.Any(); + if (isObject(schema)) { return resolverObjectSchema(schema as ResolverObjectSchema); } diff --git a/src/resolvers/typebox.ts b/src/resolvers/typebox.ts index 38a9cc6..48cc3bb 100644 --- a/src/resolvers/typebox.ts +++ b/src/resolvers/typebox.ts @@ -109,26 +109,24 @@ function resolverPrimitiveSchema(options: PrimitiveSchema): TSchema { } function resolverObjectSchema(schema: ResolverObjectSchema) { - if (schema.type === "object") { - const resolvedTypebox: TProperties = {} as TProperties; + const resolvedTypebox: TProperties = {} as TProperties; - const primitiveSchema = schema.schema; + const primitiveSchema = schema.schema; - for (const key in primitiveSchema) { - const value = primitiveSchema[key]; + for (const key in primitiveSchema) { + const value = primitiveSchema[key]; - if (value.type === "optional") { - resolvedTypebox[key] = resolverPrimitiveSchema(value); - continue; - } - - resolvedTypebox[key] = resolverPrimitiveSchema( - value as PrimitiveSchema, - ) as TSchema; + if (value.type === "optional") { + resolvedTypebox[key] = resolverPrimitiveSchema(value); + continue; } - return Type.Object(resolvedTypebox); + resolvedTypebox[key] = resolverPrimitiveSchema( + value as PrimitiveSchema, + ) as TSchema; } + + return Type.Object(resolvedTypebox); } export function resolver(schema?: RVSchema): TSchema { From fd2bd59a75b8546fd1562a48d9705dedc7ccc2bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Felipe=20Schulle?= Date: Fri, 5 Dec 2025 14:04:32 +0000 Subject: [PATCH 2/8] ci(changesets): version packages --- .changeset/clean-zoos-stare.md | 5 ----- CHANGELOG.md | 6 ++++++ package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/clean-zoos-stare.md diff --git a/.changeset/clean-zoos-stare.md b/.changeset/clean-zoos-stare.md deleted file mode 100644 index 448d817..0000000 --- a/.changeset/clean-zoos-stare.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@brainylab/resolver-validators": patch ---- - -fix: fix received undefined in resolver function e resolve or undefined diff --git a/CHANGELOG.md b/CHANGELOG.md index d2516c3..b26bcdf 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # @brainylab/resolver-validators +## 0.8.6 + +### Patch Changes + +- [`5b03aba`](https://github.com/brainylab/resolver-validators/commit/5b03aba347737e7aa3d68540cd9ba0be2125b623) Thanks [@andrefelipeschulle](https://github.com/andrefelipeschulle)! - fix: fix received undefined in resolver function e resolve or undefined + ## 0.8.5 ### Patch Changes diff --git a/package.json b/package.json index 1b25556..4a2c207 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@brainylab/resolver-validators", - "version": "0.8.5", + "version": "0.8.6", "description": "", "keywords": [], "bugs": { From 5e64d69e4ddf8b353d4a9fc503c7cc48e8cdf6bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Felipe=20Schulle?= Date: Fri, 5 Dec 2025 11:12:20 -0300 Subject: [PATCH 3/8] fix: Make resolver schema parameter optional --- .changeset/fast-jars-end.md | 5 +++++ src/resolvers/typebox-deprecated.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/fast-jars-end.md diff --git a/.changeset/fast-jars-end.md b/.changeset/fast-jars-end.md new file mode 100644 index 0000000..2643dac --- /dev/null +++ b/.changeset/fast-jars-end.md @@ -0,0 +1,5 @@ +--- +"@brainylab/resolver-validators": patch +--- + +Make resolver schema parameter optional diff --git a/src/resolvers/typebox-deprecated.ts b/src/resolvers/typebox-deprecated.ts index 3155dbb..68a82b0 100644 --- a/src/resolvers/typebox-deprecated.ts +++ b/src/resolvers/typebox-deprecated.ts @@ -183,7 +183,7 @@ function resolverObjectSchema(schema: ResolverObjectSchema): TSchema { return Type.Object(resolvedTypeBox); } -export function resolver(schema: RVSchema): TSchema { +export function resolver(schema?: RVSchema): TSchema { if (!schema) return Type.Any(); if (isObject(schema)) { From 976146f1a9256620e3af55be8b3b0ef0ce0d29dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Felipe=20Schulle?= Date: Fri, 5 Dec 2025 14:12:54 +0000 Subject: [PATCH 4/8] ci(changesets): version packages --- .changeset/fast-jars-end.md | 5 ----- CHANGELOG.md | 6 ++++++ package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/fast-jars-end.md diff --git a/.changeset/fast-jars-end.md b/.changeset/fast-jars-end.md deleted file mode 100644 index 2643dac..0000000 --- a/.changeset/fast-jars-end.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@brainylab/resolver-validators": patch ---- - -Make resolver schema parameter optional diff --git a/CHANGELOG.md b/CHANGELOG.md index b26bcdf..0cb48ae 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # @brainylab/resolver-validators +## 0.8.7 + +### Patch Changes + +- [`5e64d69`](https://github.com/brainylab/resolver-validators/commit/5e64d69e4ddf8b353d4a9fc503c7cc48e8cdf6bd) Thanks [@andrefelipeschulle](https://github.com/andrefelipeschulle)! - Make resolver schema parameter optional + ## 0.8.6 ### Patch Changes diff --git a/package.json b/package.json index 4a2c207..a0d256d 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@brainylab/resolver-validators", - "version": "0.8.6", + "version": "0.8.7", "description": "", "keywords": [], "bugs": { From cb6e959d146f282e9ad066081067f5e8003e7cb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Felipe=20Schulle?= Date: Fri, 5 Dec 2025 11:31:06 -0300 Subject: [PATCH 5/8] fix: fix import utils on typebox-deprecated resolver --- .changeset/sunny-vans-go.md | 5 +++++ src/resolvers/typebox-deprecated.ts | 4 ++-- tsconfig.json | 35 +++++++++++++++-------------- 3 files changed, 25 insertions(+), 19 deletions(-) create mode 100644 .changeset/sunny-vans-go.md diff --git a/.changeset/sunny-vans-go.md b/.changeset/sunny-vans-go.md new file mode 100644 index 0000000..eb71e1f --- /dev/null +++ b/.changeset/sunny-vans-go.md @@ -0,0 +1,5 @@ +--- +"@brainylab/resolver-validators": patch +--- + +fix import utils on typebox-deprecated resolver diff --git a/src/resolvers/typebox-deprecated.ts b/src/resolvers/typebox-deprecated.ts index 68a82b0..6c22761 100644 --- a/src/resolvers/typebox-deprecated.ts +++ b/src/resolvers/typebox-deprecated.ts @@ -14,8 +14,6 @@ import { Type, } from "@sinclair/typebox"; -import { isObject } from "@/utils"; - import type { RVNumberParams, RVParams, @@ -24,6 +22,8 @@ import type { RVTypes, } from "@/types"; +import { isObject } from "../utils"; + function TBString(params?: RVStringParams): TString { const typeBoxParams: StringOptions = {}; diff --git a/tsconfig.json b/tsconfig.json index 93ca4fd..223669b 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,19 +1,20 @@ { - "compilerOptions": { - "target": "esnext", - "module": "esnext", - "lib": ["dom", "esnext"], - "moduleResolution": "node", - "rootDir": "./", - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "skipLibCheck": true, - "paths": { - "@/*": ["./src/*"] - }, - "types": ["vitest"] - }, - "include": ["src/**/*", "./tsup.config.ts"], - "exclude": ["node_modules"] + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "lib": ["dom", "esnext"], + "moduleResolution": "node", + "rootDir": "./", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, + "types": ["vitest"] + }, + "include": ["src/**/*", "./tsup.config.ts"], + "exclude": ["node_modules"] } From 57ef0f6823fecebc545b61da9f554c34008b9773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Felipe=20Schulle?= Date: Fri, 5 Dec 2025 14:31:46 +0000 Subject: [PATCH 6/8] ci(changesets): version packages --- .changeset/sunny-vans-go.md | 5 ----- CHANGELOG.md | 6 ++++++ package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/sunny-vans-go.md diff --git a/.changeset/sunny-vans-go.md b/.changeset/sunny-vans-go.md deleted file mode 100644 index eb71e1f..0000000 --- a/.changeset/sunny-vans-go.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@brainylab/resolver-validators": patch ---- - -fix import utils on typebox-deprecated resolver diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cb48ae..e4049aa 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # @brainylab/resolver-validators +## 0.8.8 + +### Patch Changes + +- [`cb6e959`](https://github.com/brainylab/resolver-validators/commit/cb6e959d146f282e9ad066081067f5e8003e7cb2) Thanks [@andrefelipeschulle](https://github.com/andrefelipeschulle)! - fix import utils on typebox-deprecated resolver + ## 0.8.7 ### Patch Changes diff --git a/package.json b/package.json index a0d256d..efaf59b 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@brainylab/resolver-validators", - "version": "0.8.7", + "version": "0.8.8", "description": "", "keywords": [], "bugs": { From 9a02ee14bf642ff14ffe3e61332fb47a4de1fd5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Felipe=20Schulle?= Date: Mon, 8 Dec 2025 22:18:18 -0300 Subject: [PATCH 7/8] fix: when adding the parameters in the zod parse --- .changeset/sparkly-goats-swim.md | 5 +++++ src/resolvers/typebox.ts | 1 - src/resolvers/zod.spec.ts | 16 ++++++++++++++++ src/resolvers/zod.ts | 19 +++++++++++++------ src/rv.ts | 8 ++++++-- src/types.ts | 6 ++++-- 6 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 .changeset/sparkly-goats-swim.md diff --git a/.changeset/sparkly-goats-swim.md b/.changeset/sparkly-goats-swim.md new file mode 100644 index 0000000..3856544 --- /dev/null +++ b/.changeset/sparkly-goats-swim.md @@ -0,0 +1,5 @@ +--- +"@brainylab/resolver-validators": patch +--- + +"fix when adding the parameters in the zod parse diff --git a/src/resolvers/typebox.ts b/src/resolvers/typebox.ts index 48cc3bb..ac3d6fb 100644 --- a/src/resolvers/typebox.ts +++ b/src/resolvers/typebox.ts @@ -133,7 +133,6 @@ export function resolver(schema?: RVSchema): TSchema { if (!schema) return Type.Any(); if (isObject(schema)) { - console.log("aqui 3"); return resolverObjectSchema(schema as ResolverObjectSchema) as TSchema; } diff --git a/src/resolvers/zod.spec.ts b/src/resolvers/zod.spec.ts index 438cc64..69e4f01 100755 --- a/src/resolvers/zod.spec.ts +++ b/src/resolvers/zod.spec.ts @@ -83,4 +83,20 @@ describe("Zod Resolver", () => { expect(resolvedZod.parse(schema)).toEqual(zodSchema.parse(schema)); }); + + it("resolve zod number schema number type", async () => { + expect(resolver(rv.number()).parse(20)).toEqual(20); + expect(resolver(rv.number({ coerce: true })).parse("20")).toEqual(20); + expect(resolver(rv.number({ min: 3, max: 5 })).parse(4)).toEqual(4); + expect( + resolver(rv.object({ age: rv.number({ default: 5 }) })).safeParse({}) + .data, + ).toEqual({ age: 5 }); + expect(() => resolver(rv.number({ min: 5 })).parse(4)).toThrowError( + "Too small: expected number to be >=5", + ); + expect(() => resolver(rv.number({ max: 5 })).parse(6)).toThrowError( + "Too big: expected number to be <=5", + ); + }); }); diff --git a/src/resolvers/zod.ts b/src/resolvers/zod.ts index d800849..2ae3051 100644 --- a/src/resolvers/zod.ts +++ b/src/resolvers/zod.ts @@ -42,10 +42,11 @@ function resolverPrimitiveSchema( sSchema = z.string(); } - if (params?.min) sSchema.min(params.min); - if (params?.max) sSchema.max(params.max); + if (params?.min) sSchema = sSchema.min(params.min); + if (params?.max) sSchema = sSchema.max(params.max); + if (params?.default) sSchema = sSchema.default(params.default); - if (params?.description) sSchema.describe(params.description); + if (params?.description) sSchema = sSchema.describe(params.description); return sSchema; } @@ -61,9 +62,11 @@ function resolverPrimitiveSchema( nSchema = z.number(); } - if (params?.min) nSchema.min(params.min); - if (params?.max) nSchema.max(params.max); - if (params?.description) nSchema.describe(params.description); + if (params?.min) nSchema = nSchema.min(params.min); + if (params?.max) nSchema = nSchema.max(params.max); + if (params?.default) nSchema = nSchema.default(params.default); + + if (params?.description) nSchema = nSchema.describe(params.description); return nSchema; } @@ -79,6 +82,8 @@ function resolverPrimitiveSchema( bSchema = z.boolean(); } + if (params?.default) bSchema = bSchema.default(params.default); + return bSchema; } @@ -93,6 +98,8 @@ function resolverPrimitiveSchema( dSchema = z.date(); } + if (params?.default) dSchema = dSchema.default(params.default); + return dSchema; } diff --git a/src/rv.ts b/src/rv.ts index 09832d2..30e757e 100644 --- a/src/rv.ts +++ b/src/rv.ts @@ -1,7 +1,9 @@ import type { RVArray, RVBoolean, + RVBooleanParams, RVDate, + RVDateParams, RVNullable, RVNumber, RVNumberParams, @@ -22,9 +24,10 @@ export function array(schema: T): RVArray { } as never; } -export function boolean(): RVBoolean { +export function boolean(params?: RVBooleanParams): RVBoolean { return { type: "boolean", + params, } as never; } @@ -81,8 +84,9 @@ export function nullable(schema: T): RVNullable { } as never; } -export function date(): RVDate { +export function date(params?: RVDateParams): RVDate { return { type: "date", + params, } as never; } diff --git a/src/types.ts b/src/types.ts index db3abb9..91db475 100644 --- a/src/types.ts +++ b/src/types.ts @@ -44,7 +44,7 @@ export interface RVArray extends RVArraySchema { infer: ArrayStatic; } -export type RVDateParams = { coerce?: boolean }; +export type RVDateParams = { coerce?: boolean; default?: Date }; export interface RVDate extends RVSchema { type: "date"; @@ -58,7 +58,7 @@ export interface RVNullable extends RVSchema { infer: T extends { infer: infer U } ? U | null : null; } -export type RVBooleanParams = { coerce?: boolean }; +export type RVBooleanParams = { coerce?: boolean; default?: boolean }; export interface RVBoolean extends RVSchema { type: "boolean"; @@ -70,6 +70,7 @@ export type RVStringParams = RVParams & { format?: "email"; pattern?: string | RegExp; coerce?: boolean; + default?: string; }; export interface RVString extends RVSchema { @@ -86,6 +87,7 @@ export interface RVOptional extends RVSchema { export type RVNumberParams = RVParams & { coerce?: boolean; + default?: number; }; export interface RVNumber extends RVSchema { From 8ef5e006ec676e47bf02888061c3100f08593f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Felipe=20Schulle?= Date: Tue, 9 Dec 2025 01:25:53 +0000 Subject: [PATCH 8/8] ci(changesets): version packages --- .changeset/sparkly-goats-swim.md | 5 ----- CHANGELOG.md | 6 ++++++ package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/sparkly-goats-swim.md diff --git a/.changeset/sparkly-goats-swim.md b/.changeset/sparkly-goats-swim.md deleted file mode 100644 index 3856544..0000000 --- a/.changeset/sparkly-goats-swim.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@brainylab/resolver-validators": patch ---- - -"fix when adding the parameters in the zod parse diff --git a/CHANGELOG.md b/CHANGELOG.md index e4049aa..624e4f7 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # @brainylab/resolver-validators +## 0.8.9 + +### Patch Changes + +- [`9a02ee1`](https://github.com/brainylab/resolver-validators/commit/9a02ee14bf642ff14ffe3e61332fb47a4de1fd5a) Thanks [@andrefelipeschulle](https://github.com/andrefelipeschulle)! - "fix when adding the parameters in the zod parse + ## 0.8.8 ### Patch Changes diff --git a/package.json b/package.json index efaf59b..54a89fe 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@brainylab/resolver-validators", - "version": "0.8.8", + "version": "0.8.9", "description": "", "keywords": [], "bugs": {