@solufy/evolution-sdk
Version:
Unofficial SDK for the Evolution Whatsapp API v2
205 lines (193 loc) • 7 kB
JavaScript
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