SDK TypeScript pour Node.js et Bun

Le même package typé fonctionne sur Node.js et Bun. Il est généré depuis le contrat OpenAPI de Spore et expose les modèles de requête et de réponse sans configuration SMTP.

Installation

Avec Node.js :

pnpm add @lalternative/spore-sdk

Avec Bun :

bun add @lalternative/spore-sdk

Configuration Node.js

import { configureSporeClient } from '@lalternative/spore-sdk'
 
configureSporeClient({ apiKey: process.env.SPORE_API_KEY })

Configuration Bun

import { configureSporeClient } from '@lalternative/spore-sdk'
 
configureSporeClient({ apiKey: Bun.env.SPORE_API_KEY })

Envoyer un email

import { randomUUID } from 'node:crypto'
import { getSporeAPI } from '@lalternative/spore-sdk'
 
const result = await getSporeAPI().sendEmail(
  {
    from: 'hello@votredomaine.fr',
    to: ['alex@example.com'],
    subject: 'Bienvenue',
    html: '<p>Votre compte est prêt.</p>',
  },
  { headers: { 'Idempotency-Key': randomUUID() } },
)
 
console.log(result.messageId)

Sous Bun, remplacez randomUUID() par crypto.randomUUID(). Dans une queue ou un job, préférez une clé stable dérivée de l’action métier afin qu’un retry ne crée pas un second message.

Gérer les erreurs

Le SDK utilise Axios. Les réponses non 2xx sont donc disponibles via AxiosError.response : statut HTTP, corps JSON et en-têtes restent accessibles pour décider de retenter ou non.

import axios from 'axios'
 
try {
  await getSporeAPI().sendEmail(message)
} catch (error) {
  if (axios.isAxiosError(error)) {
    console.error(error.response?.status, error.response?.data)
  }
}

Aller plus loin