UNPKG

@solufy/evolution-sdk

Version:

Unofficial SDK for the Evolution Whatsapp API v2

132 lines (127 loc) 3.61 kB
// src/modules/messages/schemas/contact.ts import { parsePhoneNumber as parsePhoneNumber3 } from "libphonenumber-js"; 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/contact.ts var ContactMessageOptionsSchema = BaseMessageOptionsSchema.extend({ /** * Contact list */ contacts: z3.array( z3.object({ /** * Contact display name */ fullName: z3.string(), /** * Contact phone number */ phoneNumber: PhoneNumberSchema, /** * Contact organization */ organization: z3.string().optional(), /** * Contact email */ email: z3.string().email().optional(), /** * Contact website url */ url: z3.string().url().optional() }) ) }); var ContactMessageBodySchema = ContactMessageOptionsSchema.transform( ({ contacts, ...data }) => ({ ...data, contact: contacts.map((contact) => ({ ...contact, phoneNumber: parsePhoneNumber3(contact.phoneNumber).formatInternational(), wuid: contact.phoneNumber.replace(/\D/g, "") })) }) ); var ContactMessageResponseSchema = z3.object({ key: z3.object({ remoteJid: z3.string(), id: z3.string() }), message: z3.union([ z3.object({ contactMessage: z3.object({ displayName: z3.string(), vcard: z3.string() }) }), z3.object({ contactsArrayMessage: z3.object({ contacts: z3.array( z3.object({ displayName: z3.string(), vcard: z3.string() }) ) }) }) ]), messageTimestamp: z3.coerce.date() }).transform((data) => ({ receiver: { phoneNumber: phoneNumberFromJid(data.key.remoteJid), jid: Jid(data.key.remoteJid) }, contacts: "contactMessage" in data.message ? [data.message.contactMessage] : data.message.contactsArrayMessage.contacts, id: MessageId(data.key.id), timestamp: data.messageTimestamp })); export { ContactMessageBodySchema as BodySchema, ContactMessageBodySchema, ContactMessageOptionsSchema, ContactMessageResponseSchema, ContactMessageOptionsSchema as OptionsSchema, ContactMessageResponseSchema as ResponseSchema }; //# sourceMappingURL=contact.mjs.map