UNPKG

@solufy/evolution-sdk

Version:

Unofficial SDK for the Evolution Whatsapp API v2

205 lines (193 loc) 7 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/modules/groups/index.ts var groups_exports = {}; __export(groups_exports, { GroupsModule: () => GroupsModule }); module.exports = __toCommonJS(groups_exports); var import_zod5 = require("zod"); // src/api/routes.ts var Routes = { Message: { SendText: "message/sendText", SendMedia: "message/sendMedia", SendVoice: "message/sendWhatsAppAudio", SendSticker: "message/sendSticker", SendLocation: "message/sendLocation", SendContact: "message/sendContact", SendPoll: "message/sendPoll" }, Chats: { Check: "chat/whatsappNumbers", FindAll: "chat/findChats", SendPresence: "chat/sendPresence" }, Groups: { FindAll: "group/fetchAllGroups", FindByJid: "group/findGroupInfos", FindByInviteCode: "group/inviteInfo" } }; // src/schemas/common.ts var import_libphonenumber_js = require("libphonenumber-js"); var import_zod = require("zod"); var PhoneNumberSchema = import_zod.z.custom((value) => (0, import_libphonenumber_js.isValidPhoneNumber)(value), "Invalid phone number").transform((phoneNumber) => (0, import_libphonenumber_js.parsePhoneNumber)(phoneNumber).number); var JidSchema = import_zod.z.string().endsWith( "@s.whatsapp.net", "Invalid remote JID, should end with @s.whatsapp.net" ); var GroupJidSchema = import_zod.z.string().endsWith( "@g.us", "Invalid group JID, should end with @g.us" ); var GroupInviteCodeSchema = import_zod.z.string().length(22).regex( /^[a-zA-Z0-9]{22}$/, "Invalid group invite code" ); var ApiNumberSchema = import_zod.z.union([ PhoneNumberSchema, JidSchema, GroupJidSchema ]); var mediaSchema = import_zod.z.union([import_zod.z.string().url(), import_zod.z.string().base64()]); // src/modules/groups/schemas/find-all.ts var import_zod3 = require("zod"); // src/modules/groups/schemas/common.ts var import_zod2 = require("zod"); // src/types/tags.ts var Jid = (jid) => jid; var GroupJid = (jid) => jid; // src/utils/phone-numer-from-jid.ts var import_libphonenumber_js2 = require("libphonenumber-js"); function phoneNumberFromJid(jid) { return (0, import_libphonenumber_js2.parsePhoneNumber)(`+${jid.split("@")[0]}`).number; } // src/modules/groups/schemas/common.ts var GroupResponseSchema = import_zod2.z.object({ id: import_zod2.z.string(), subject: import_zod2.z.string(), subjectOwner: import_zod2.z.string(), subjectTime: import_zod2.z.coerce.date(), pictureUrl: import_zod2.z.string().url().nullish(), size: import_zod2.z.number(), creation: import_zod2.z.coerce.date(), owner: import_zod2.z.string(), restrict: import_zod2.z.boolean(), announce: import_zod2.z.boolean() }); var ParticipantResponseSchema = import_zod2.z.object({ id: import_zod2.z.string(), admin: import_zod2.z.enum(["admin", "superadmin"]).nullish() }); var GroupWithParticipantsResponseSchema = GroupResponseSchema.extend({ participants: import_zod2.z.array(ParticipantResponseSchema) }); var GroupResponseSchemaTransform = (group) => ({ jid: GroupJid(group.id), name: group.subject, pictureUrl: group.pictureUrl || void 0, size: group.size, subject: { owner: Jid(group.subjectOwner), time: group.subjectTime }, owner: { jid: Jid(group.owner), phoneNumber: phoneNumberFromJid(group.owner) }, createdAt: group.creation, restrict: group.restrict, announce: group.announce }); var ParticipantResponseSchemaTransform = (participant) => ({ id: participant.id, role: participant.admin || "member" }); var GroupWithParticipantsResponseSchemaTransform = (group) => ({ ...GroupResponseSchemaTransform(group), participants: group.participants.map(ParticipantResponseSchemaTransform) }); // src/modules/groups/schemas/find-all.ts var FindAllGroupsResponseSchema = import_zod3.z.array(GroupResponseSchema).transform( (groups) => groups.map((group) => GroupResponseSchemaTransform(group)) ); var FindAllGroupsWithParticipantsResponseSchema = import_zod3.z.array(GroupWithParticipantsResponseSchema).transform( (groups) => groups.map((group) => GroupWithParticipantsResponseSchemaTransform(group)) ); // src/modules/groups/schemas/find-by-invite-code.ts var import_zod4 = require("zod"); var FindGroupByInviteCodeResponseSchema = GroupWithParticipantsResponseSchema.extend({ isCommunity: import_zod4.z.boolean(), isCommunityAnnounce: import_zod4.z.boolean(), joinApprovalMode: import_zod4.z.boolean(), memberAddMode: import_zod4.z.boolean() }).omit({ pictureUrl: true }).transform((group) => ({ ...GroupWithParticipantsResponseSchemaTransform({ ...group, pictureUrl: null }), isCommunity: group.isCommunity, isCommunityAnnounce: group.isCommunityAnnounce, joinApprovalMode: group.joinApprovalMode, memberAddMode: group.memberAddMode })); // src/modules/groups/schemas/find-by-jid.ts var FindGroupByJidResponseSchema = GroupWithParticipantsResponseSchema.transform( GroupWithParticipantsResponseSchemaTransform ); // src/modules/groups/index.ts var GroupsModule = class { constructor(api) { this.api = api; } async findAll(getParticipants = false) { const response = await this.api.get(Routes.Groups.FindAll, { params: { getParticipants: import_zod5.z.boolean().parse(getParticipants) } }); if (getParticipants) { return FindAllGroupsWithParticipantsResponseSchema.parse(response); } return FindAllGroupsResponseSchema.parse(response); } /** * Gets a group by invite code * @param inviteCode - The group invite code (not the URL) */ async findByInviteCode(inviteCode) { const response = await this.api.get(Routes.Groups.FindByInviteCode, { params: { inviteCode: GroupInviteCodeSchema.parse(inviteCode) } }); return FindGroupByInviteCodeResponseSchema.parse(response); } /** * Gets a group by JID * @param groupJid - The group JID terminated with \@g.us */ async findByJid(groupJid) { const response = await this.api.get(Routes.Groups.FindByJid, { params: { groupJid: GroupJidSchema.parse(groupJid) } }); return FindGroupByJidResponseSchema.parse(response); } }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { GroupsModule }); //# sourceMappingURL=index.js.map