UNPKG

@solufy/evolution-sdk

Version:

Unofficial SDK for the Evolution Whatsapp API v2

130 lines (125 loc) 3.9 kB
// src/modules/messages/schemas/document.ts import { z as z3 } from "zod"; // src/schemas/common.ts import { isValidPhoneNumber, parsePhoneNumber } from "libphonenumber-js"; import { z } from "zod"; var PhoneNumberSchema = z.custom((value) => isValidPhoneNumber(value), "Invalid phone number").transform((phoneNumber) => parsePhoneNumber(phoneNumber).number); var JidSchema = z.string().endsWith( "@s.whatsapp.net", "Invalid remote JID, should end with @s.whatsapp.net" ); var GroupJidSchema = z.string().endsWith( "@g.us", "Invalid group JID, should end with @g.us" ); var GroupInviteCodeSchema = z.string().length(22).regex( /^[a-zA-Z0-9]{22}$/, "Invalid group invite code" ); var ApiNumberSchema = z.union([ PhoneNumberSchema, JidSchema, GroupJidSchema ]); var mediaSchema = z.union([z.string().url(), z.string().base64()]); // src/types/tags.ts var Jid = (jid) => jid; var MessageId = (id) => id; // src/utils/phone-numer-from-jid.ts import { parsePhoneNumber as parsePhoneNumber2 } from "libphonenumber-js"; function phoneNumberFromJid(jid) { return parsePhoneNumber2(`+${jid.split("@")[0]}`).number; } // src/modules/messages/schemas/base.ts import { z as z2 } from "zod"; var BaseMessageOptionsSchema = z2.object({ /** * Number (with country code) or JID to receive the message */ number: ApiNumberSchema, /** * Time in milliseconds before sending message */ delay: z2.number().optional() }); // src/modules/messages/schemas/document.ts var DocumentMessageOptionsSchema = BaseMessageOptionsSchema.extend({ /** * Document URL or file in base64 */ document: mediaSchema, /** * Caption to send with document */ caption: z3.string().optional(), /** * Document mimetype */ mimetype: z3.string().optional(), /** * Name of the file */ fileName: z3.string().optional() }).refine( (data) => URL.canParse(data.document) ? true : Boolean(data.fileName), { message: "fileName must be provided when document is not an URL", path: ["fileName"] } ); var DocumentMessageBodySchema = DocumentMessageOptionsSchema.transform( ({ document, ...data }) => ({ ...data, media: document, mediatype: "document" }) ); var DocumentMessageResponseSchema = z3.object({ key: z3.object({ remoteJid: z3.string(), id: z3.string() }), message: z3.object({ documentMessage: z3.object({ url: z3.string().url(), mimetype: z3.string().optional(), fileSha256: z3.string().base64(), fileLength: z3.coerce.number(), mediaKey: z3.string().base64(), caption: z3.string().optional(), fileName: z3.string(), fileEncSha256: z3.string().base64(), directPath: z3.string(), mediaKeyTimestamp: z3.coerce.number().transform((value) => new Date(value)) }) }), messageTimestamp: z3.coerce.date() }).transform((data) => ({ receiver: { phoneNumber: phoneNumberFromJid(data.key.remoteJid), jid: Jid(data.key.remoteJid) }, media: { url: data.message.documentMessage.url, caption: data.message.documentMessage.caption, mimetype: data.message.documentMessage.mimetype, length: data.message.documentMessage.fileLength, sha256: data.message.documentMessage.fileSha256, fileName: data.message.documentMessage.fileName, encryptedSha256: data.message.documentMessage.fileEncSha256, directPath: data.message.documentMessage.directPath, key: data.message.documentMessage.mediaKey, keyTimestamp: data.message.documentMessage.mediaKeyTimestamp }, id: MessageId(data.key.id), timestamp: data.messageTimestamp })); export { DocumentMessageBodySchema as BodySchema, DocumentMessageBodySchema, DocumentMessageOptionsSchema, DocumentMessageResponseSchema, DocumentMessageOptionsSchema as OptionsSchema, DocumentMessageResponseSchema as ResponseSchema }; //# sourceMappingURL=document.mjs.map