From 5cfbc8d4413bdf9d5f453506c5797a7715588af7 Mon Sep 17 00:00:00 2001 From: Alix von Schirp Date: Thu, 17 Apr 2025 03:51:55 +0200 Subject: [PATCH] refactor: Split out zod input and output type Signed-off-by: Alix von Schirp --- src/Pushover.ts | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) 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();