UNPKG

@solufy/evolution-sdk

Version:

Unofficial SDK for the Evolution Whatsapp API v2

111 lines (105 loc) 3.11 kB
// src/modules/messages/schemas/poll.ts import { z as z3 } from "zod"; // src/types/tags.ts var Jid = (jid) => jid; var MessageId = (id) => id; // src/utils/phone-numer-from-jid.ts import { parsePhoneNumber } from "libphonenumber-js"; function phoneNumberFromJid(jid) { return parsePhoneNumber(`+${jid.split("@")[0]}`).number; } // src/modules/messages/schemas/base.ts import { z as z2 } from "zod"; // src/schemas/common.ts import { isValidPhoneNumber, parsePhoneNumber as parsePhoneNumber2 } from "libphonenumber-js"; import { z } from "zod"; var PhoneNumberSchema = z.custom((value) => isValidPhoneNumber(value), "Invalid phone number").transform((phoneNumber) => parsePhoneNumber2(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/modules/messages/schemas/base.ts 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/poll.ts var PollMessageOptionsSchema = BaseMessageOptionsSchema.extend({ /** * Name of the poll */ name: z3.string(), /** * Whether multiple options can be selected * @default false */ multiple: z3.boolean().optional().default(false), /** * Poll options */ options: z3.array(z3.string()) }); var PollMessageBodySchema = PollMessageOptionsSchema.transform( ({ multiple, options, ...data }) => ({ ...data, selectableCount: multiple ? options.length : 1, values: options }) ); var PollMessageResponseSchema = z3.object({ key: z3.object({ remoteJid: z3.string(), id: z3.string() }), message: z3.object({ pollCreationMessageV3: z3.object({ name: z3.string(), options: z3.array(z3.object({ optionName: z3.string() })), selectableOptionsCount: z3.number() }) }), messageTimestamp: z3.coerce.date() }).transform((data) => ({ receiver: { phoneNumber: phoneNumberFromJid(data.key.remoteJid), jid: Jid(data.key.remoteJid) }, poll: { name: data.message.pollCreationMessageV3.name, options: data.message.pollCreationMessageV3.options.map( (option) => option.optionName ), multiple: data.message.pollCreationMessageV3.selectableOptionsCount > 1 }, id: MessageId(data.key.id), timestamp: data.messageTimestamp })); export { PollMessageBodySchema as BodySchema, PollMessageOptionsSchema as OptionsSchema, PollMessageBodySchema, PollMessageOptionsSchema, PollMessageResponseSchema, PollMessageResponseSchema as ResponseSchema }; //# sourceMappingURL=poll.mjs.map