mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-02-16 10:42:08 +00:00
32 lines
1.0 KiB
TypeScript
32 lines
1.0 KiB
TypeScript
import { z } from 'zod';
|
|
|
|
const UploadImageValidationSchema = z.object({
|
|
images: z
|
|
.instanceof(typeof FileList !== 'undefined' ? FileList : Object)
|
|
.refine((fileList) => fileList instanceof FileList, {
|
|
message: 'You must submit this form in a web browser.',
|
|
})
|
|
.refine((fileList) => (fileList as FileList).length > 0, {
|
|
message: 'You must upload at least one file.',
|
|
})
|
|
.refine((fileList) => (fileList as FileList).length < 5, {
|
|
message: 'You can only upload up to 5 files at a time.',
|
|
})
|
|
.refine(
|
|
(fileList) =>
|
|
[...(fileList as FileList)]
|
|
.map((file) => file.type)
|
|
.every((fileType) => fileType.startsWith('image/')),
|
|
{ message: 'You must upload only images.' },
|
|
)
|
|
.refine(
|
|
(fileList) =>
|
|
[...(fileList as FileList)]
|
|
.map((file) => file.size)
|
|
.every((fileSize) => fileSize < 15 * 1024 * 1024),
|
|
{ message: 'You must upload images smaller than 15MB.' },
|
|
),
|
|
});
|
|
|
|
export default UploadImageValidationSchema;
|