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