From 771bc1599d4beb8120b2644c4492630ed7b21f38 Mon Sep 17 00:00:00 2001 From: Damian Glowala Date: Wed, 8 Nov 2023 19:53:22 +0100 Subject: [PATCH] feat: add `getValidatedRouterParams` util --- README.md | 2 ++ src/types.ts | 5 ++--- src/utils/request.ts | 10 ++++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 86fb1c07..cbaa8809 100644 --- a/README.md +++ b/README.md @@ -215,6 +215,8 @@ H3 has a concept of composable utilities that accept `event` (from `eventHandler - `getQuery(event)` - `getValidatedQuery(event, validate)` - `getRouterParams(event)` +- `getValidatedRouterParams(event, validate)` +- `getRouterParam(event, name)` - `getMethod(event, default?)` - `isMethod(event, expected, allowHead?)` - `assertMethod(event, expected, allowHead?)` diff --git a/src/types.ts b/src/types.ts index 30531a89..1c664df3 100644 --- a/src/types.ts +++ b/src/types.ts @@ -51,10 +51,9 @@ export interface H3EventContext extends Record { export type EventHandlerResponse = T | Promise; export interface EventHandlerRequest { - // TODO: Default to unknown in next major version - body?: any; - + body?: any; // TODO: Default to unknown in next major version query?: QueryObject; + routerParams?: Record; } export type InferEventInput< diff --git a/src/utils/request.ts b/src/utils/request.ts index f72df198..28785e8e 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -34,6 +34,16 @@ export function getRouterParams( return event.context.params || {}; } +export function getValidatedRouterParams< + T, + Event extends H3Event = H3Event, + _T = InferEventInput<"routerParams", Event, T>, +>(event: Event, validate: ValidateFunction<_T>): Promise<_T> { + const routerParams = getRouterParams(event); + + return validateData(routerParams, validate); +} + export function getRouterParam( event: H3Event, name: string,