From ae26879957baab05386eaf3e2e1ab6e0f878764b Mon Sep 17 00:00:00 2001 From: paihu <13479783+paihu@users.noreply.github.com> Date: Sat, 8 Feb 2025 18:37:52 +0900 Subject: [PATCH 1/2] fix standard validator type --- .changeset/gorgeous-crabs-doubt.md | 5 +++++ packages/standard-validator/src/index.ts | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/gorgeous-crabs-doubt.md diff --git a/.changeset/gorgeous-crabs-doubt.md b/.changeset/gorgeous-crabs-doubt.md new file mode 100644 index 000000000..6749860cc --- /dev/null +++ b/.changeset/gorgeous-crabs-doubt.md @@ -0,0 +1,5 @@ +--- +'@hono/standard-validator': patch +--- + +fix result type diff --git a/packages/standard-validator/src/index.ts b/packages/standard-validator/src/index.ts index 2df2bfd92..b7bb6106c 100644 --- a/packages/standard-validator/src/index.ts +++ b/packages/standard-validator/src/index.ts @@ -13,8 +13,8 @@ type Hook< O = {} > = ( result: ( - | { success: boolean; data: T } - | { success: boolean; error: ReadonlyArray; data: T } + | { success: true; data: T } + | { success: false; error: ReadonlyArray; data: T } ) & { target: Target }, From bc6b5009bb5ccfdc057c0043c6eb2ef22686cfc4 Mon Sep 17 00:00:00 2001 From: Yusuke Wada Date: Mon, 10 Feb 2025 18:32:56 +0900 Subject: [PATCH 2/2] add test and format code --- packages/standard-validator/src/index.ts | 4 ++-- packages/standard-validator/test/__schemas__/arktype.ts | 1 + packages/standard-validator/test/index.test.ts | 8 ++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/standard-validator/src/index.ts b/packages/standard-validator/src/index.ts index b7bb6106c..70b0c3e00 100644 --- a/packages/standard-validator/src/index.ts +++ b/packages/standard-validator/src/index.ts @@ -1,6 +1,6 @@ +import type { StandardSchemaV1 } from '@standard-schema/spec' import type { Context, Env, Input, MiddlewareHandler, TypedResponse, ValidationTargets } from 'hono' import { validator } from 'hono/validator' -import type { StandardSchemaV1 } from '@standard-schema/spec' type HasUndefined = undefined extends T ? true : false type TOrPromiseOfT = T | Promise @@ -54,7 +54,7 @@ const sValidator = < if (hook) { const hookResult = await hook( - !!result.issues + result.issues ? { data: value, error: result.issues, success: false, target } : { data: value, success: true, target }, c diff --git a/packages/standard-validator/test/__schemas__/arktype.ts b/packages/standard-validator/test/__schemas__/arktype.ts index 3f0fb8d6a..4e2a62f1d 100644 --- a/packages/standard-validator/test/__schemas__/arktype.ts +++ b/packages/standard-validator/test/__schemas__/arktype.ts @@ -23,6 +23,7 @@ const queryPaginationSchema = type({ }) const querySortSchema = type({ + // eslint-disable-next-line quotes order: "'asc'|'desc'", }) diff --git a/packages/standard-validator/test/index.test.ts b/packages/standard-validator/test/index.test.ts index bd4558cc9..f68495406 100644 --- a/packages/standard-validator/test/index.test.ts +++ b/packages/standard-validator/test/index.test.ts @@ -1,11 +1,12 @@ +import type { StandardSchemaV1 } from '@standard-schema/spec' import { Hono } from 'hono' import type { Equal, Expect, UnionToIntersection } from 'hono/utils/types' -import { sValidator } from '../src' import { vi } from 'vitest' +import { sValidator } from '../src' +import * as arktypeSchemas from './__schemas__/arktype' import * as valibotSchemas from './__schemas__/valibot' import * as zodSchemas from './__schemas__/zod' -import * as arktypeSchemas from './__schemas__/arktype' type ExtractSchema = T extends Hono ? S : never type MergeDiscriminatedUnion = UnionToIntersection extends infer O @@ -183,6 +184,9 @@ describe('Standard Schema Validation', () => { '/post', sValidator('json', schema, (result, c) => { if (!result.success) { + type verify = Expect< + Equal, typeof result.error> + > return c.text(`${result.data.id} is invalid!`, 400) } }),