Setup del progetto
Installa le dipendenze: axios o node-fetch per le chiamate HTTP, e zod per la validazione dei payload webhook. Crea un file chatapi.ts con i tipi TypeScript per i messaggi, i template e i webhook di Chat API.
Definisci le interfacce TypeScript per i tipi di messaggio WhatsApp: TextMessage, TemplateMessage, MediaMessage, e i tipi di webhook: MessageStatusWebhook, InboundMessageWebhook. Questi tipi ti daranno autocompletamento e type-checking durante lo sviluppo.
Client TypeScript per Chat API
Crea una classe ChatAPIClient con metodi asincroni per ogni operazione principale: sendTextMessage, sendTemplateMessage, sendMediaMessage, e getMessageStatus. Usa generics TypeScript per il tipo di ritorno delle chiamate API.
Implementa il retry con backoff esponenziale per gestire i rate limit. Usa una libreria come p-retry o implementa la logica manualmente: al 429 Too Many Requests, aspetta (baseDelay * 2^attempt) millisecondi prima di riprovare.
Validazione webhook con Zod
Usa Zod per validare e tipizzare i payload dei webhook in runtime: definisci uno schema Zod per ogni tipo di evento webhook, e usa schema.parse() per validare il payload prima di processarlo. Questo garantisce sia la type-safety statica che la validazione runtime.
Testing con TypeScript
Usa Jest con ts-jest per i test TypeScript. Mocka le chiamate HTTP con jest-mock-extended o con la funzione jest.spyOn. Testa sia i casi di successo che gli errori: 429 rate limit, 400 numero non valido, 500 errore server.
Configura un ambiente di test con variabili d'ambiente separate per non usare le credenziali di produzione nei test. Chat API offre un ambiente sandbox per i test che non genera costi reali.