diff --git a/src/Pushover.ts b/src/Pushover.ts index 0532e2f..8d91341 100644 --- a/src/Pushover.ts +++ b/src/Pushover.ts @@ -60,8 +60,8 @@ const MessageSchema = z .optional(), sound: z.string().optional(), timestamp: z.number().optional(), - html: z.boolean().optional(), - monospace: z.boolean().optional(), + html: z.boolean().optional().default(false), + monospace: z.boolean().optional().default(false), ttl: z.number().optional(), }) .refine( @@ -84,7 +84,9 @@ const MessageSchema = z }, ); -export type PushoverMessage = z.infer; +export type PushoverMessage = z.input; + +type PushoverMessageParsed = z.output; interface PushoverResponse { status: number; @@ -152,16 +154,27 @@ export class Pushover { reject("No recipients specified."); } + const { + success, + error, + data: parsedMessage, + } = MessageSchema.safeParse(message); + + if (!success) { + reject(`Message validation failed: ${error}`); + return; + } + if (options.verbose) { console.log("Verbose mode enabled. Logging message and options:"); - console.log(message); + console.log(parsedMessage); console.log(options); console.log("----------------------"); console.log("Sending message..."); } const promises = options.recipients.map((recipient) => - this.sendToSingleRecipient(message, recipient), + this.sendToSingleRecipient(parsedMessage, recipient), ); resolve(Promise.all(promises)); @@ -169,7 +182,7 @@ export class Pushover { } private async sendToSingleRecipient( - message: PushoverMessage, + message: PushoverMessageParsed, user: PushoverUser, ): Promise { const params = new URLSearchParams();