tyntec-sdk
Version:
TypeScript SDK for Tyntec Conversations API V3
58 lines (57 loc) • 2.67 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.reactionMessageSchema = exports.contactsMessageSchema = exports.locationMessageSchema = exports.textMessageSchema = exports.mediaMessageSchema = void 0;
const zod_1 = require("zod");
const base_schema_1 = require("./base.schema");
const documentContentSchema = zod_1.z.object({
url: zod_1.z.string().url(),
caption: zod_1.z.string().optional(),
filename: zod_1.z.string().optional(),
type: zod_1.z.string().optional(),
privateUrl: zod_1.z.string().url().optional(),
idFile: zod_1.z.string().optional(),
});
// Media message schemas using discriminated unions
exports.mediaMessageSchema = zod_1.z.union([
base_schema_1.whatsAppBaseFields.extend({
contentType: zod_1.z.literal('image'),
image: base_schema_1.mediaContentSchema.optional(),
// TODO: use separate schema for messageRequest since files could be loaded separately
}),
base_schema_1.whatsAppBaseFields.extend({
contentType: zod_1.z.literal('video'),
video: base_schema_1.mediaContentSchema.optional(),
// TODO: use separate schema for messageRequest since files could be loaded separately
}),
base_schema_1.whatsAppBaseFields.extend({
contentType: zod_1.z.literal('document'),
document: documentContentSchema.optional(),
// TODO: use separate schema for messageRequest since files could be loaded separately
}),
base_schema_1.whatsAppBaseFields.extend({
contentType: zod_1.z.literal('audio'),
audio: base_schema_1.mediaContentSchema.optional(),
// TODO: use separate schema for messageRequest since files could be loaded separately
}),
base_schema_1.whatsAppBaseFields.extend({
contentType: zod_1.z.literal('sticker'),
sticker: base_schema_1.mediaContentSchema.optional(),
// TODO: use separate schema for messageRequest since files could be loaded separately
}),
]);
exports.textMessageSchema = base_schema_1.whatsAppBaseFields.extend({
contentType: zod_1.z.literal('text'),
text: zod_1.z.string(),
});
exports.locationMessageSchema = base_schema_1.whatsAppBaseFields.extend({
contentType: zod_1.z.literal('location'),
location: base_schema_1.locationContentSchema,
});
exports.contactsMessageSchema = base_schema_1.whatsAppBaseFields.extend({
contentType: zod_1.z.literal('contacts'),
contacts: zod_1.z.array(base_schema_1.contactSchema),
});
exports.reactionMessageSchema = base_schema_1.whatsAppBaseFields.extend({
contentType: zod_1.z.literal('reaction'),
reaction: base_schema_1.reactionContentSchema,
});