@sahabaplus/moyasar
Version:
A comprehensive TypeScript SDK for integrating with the Moyasar payment gateway
66 lines • 2.39 kB
JavaScript
import { z } from "zod";
import { Currency } from "../../../shared/types/index";
import { InvoiceStatus } from "../enums";
import { BulkInvoiceLimit } from "../constants";
import { amountSchema } from "../../../shared/validation/index";
export const CreateInvoiceSchema = z.object({
amount: amountSchema,
currency: z
.string()
.transform(val => val.toUpperCase())
.refine(val => Object.values(Currency).includes(val), {
message: "Invalid currency",
}),
description: z
.string()
.min(1, "description is required")
.max(255, "description must be less than 255 characters")
.transform(val => val.trim()),
callback_url: z.url("callback_url must be a valid URL").optional(),
success_url: z.url("success_url must be a valid URL").optional(),
back_url: z.url("back_url must be a valid URL").optional(),
expired_at: z.coerce
.date()
.refine(date => new Date(date) > new Date(), "expired_at must be in the future")
.optional(),
metadata: z.record(z.string(), z.string()).optional(),
});
export const BulkCreateInvoiceSchema = z.object({
invoices: z
.array(CreateInvoiceSchema)
.min(1, "at least one invoice is required")
.max(BulkInvoiceLimit.MAX_BULK_INVOICES, `maximum of ${BulkInvoiceLimit.MAX_BULK_INVOICES} invoices allowed per bulk request`),
});
export const invoiceSchema = z.object({
id: z.string(),
status: z.enum(InvoiceStatus),
amount: amountSchema,
currency: z.enum(Currency),
description: z.string(),
logo_url: z
.url("logo_url must be a valid URL")
.transform(val => val),
callback_url: z
.url("callback_url must be a valid URL")
.transform(val => val)
.optional(),
success_url: z
.url("success_url must be a valid URL")
.transform(val => val)
.optional(),
back_url: z
.url("back_url must be a valid URL")
.transform(val => val)
.optional(),
expired_at: z.coerce.date().optional(),
created_at: z.coerce.date(),
updated_at: z.coerce.date(),
metadata: z.record(z.string(), z.string()).optional(),
amount_format: z
.string()
.transform(val => val),
url: z
.url("url must be a valid URL")
.transform(val => val),
});
//# sourceMappingURL=schemas.js.map