Initial commit
This commit is contained in:
26
lib/validation.ts
Normal file
26
lib/validation.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export const amountSchema = z
|
||||
.string()
|
||||
.trim()
|
||||
.min(1, "Enter an amount")
|
||||
.refine((value) => !Number.isNaN(Number(value)), "Enter a valid number")
|
||||
.transform((value) => Number(value))
|
||||
.refine((value) => Number.isFinite(value), "Enter a valid number")
|
||||
.refine((value) => value > 0, "Amount must be greater than zero")
|
||||
.refine((value) => value <= 1_000_000_000_000, "Amount is too large");
|
||||
|
||||
export function validateAmount(amount: string):
|
||||
| { ok: true; value: number }
|
||||
| { ok: false; error: string } {
|
||||
const result = amountSchema.safeParse(amount);
|
||||
|
||||
if (result.success) {
|
||||
return { ok: true, value: result.data };
|
||||
}
|
||||
|
||||
return {
|
||||
ok: false,
|
||||
error: result.error.issues[0]?.message ?? "Invalid amount"
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user