mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-05-24 23:28:32 +08:00
25 lines
735 B
TypeScript
25 lines
735 B
TypeScript
'use client'
|
|
import React from 'react'
|
|
import type { ZodSchema } from 'zod'
|
|
|
|
function withValidation<T extends Record<string, unknown>, K extends keyof T>(
|
|
WrappedComponent: React.ComponentType<T>,
|
|
schema: ZodSchema<Pick<T, K>>,
|
|
) {
|
|
return function EnsuredComponent(props: T) {
|
|
const partialProps = Object.fromEntries(
|
|
Object.entries(props).filter(([key]) => key in (schema._def as any).shape),
|
|
) as Pick<T, K>
|
|
|
|
const checkRes = schema.safeParse(partialProps)
|
|
if (!checkRes.success) {
|
|
console.error(checkRes.error)
|
|
// Maybe there is a better way to handle this, like error logic placeholder
|
|
return null
|
|
}
|
|
return <WrappedComponent {...props} />
|
|
}
|
|
}
|
|
|
|
export default withValidation
|