Loading...
Loading...
Anders & A-Cube S.r.l. / 15 juillet 2025 • 3 min read
@a-cube-io/ereceipts-js-sdk est un SDK TypeScript prêt pour la production pour la gestion des reçus électroniques, offrant un support multi-plateforme transparent sur les environnements Browser, Node.js et React Native. Construit avec des outils modernes et une type safety stricte, il offre une fiabilité de niveau entreprise avec une expérience développeur intuitive.
Le SDK implémente une architecture en couches avec des optimisations spécifiques à la plateforme:
┌─────────────────────────────────────────────────┐
│ Couche Application (React/RN/Node) │
│ Hooks Personnalisés & Utilitaires │
└────────────────┬────────────────────────────────┘
│
┌────────────────▼────────────────────────────────┐
│ Couche SDK Core (TypeScript) │
│ Gestion Reçus • Validation • Mise en Cache │
└──────┬──────────────────────────────┬──────────┘
│ │
┌──────▼─────────┐ ┌─────────▼──────────┐
│ Couche │ │ Couche Native │
│ Navigateur │ │ - AsyncStorage │
│ - IndexedDB │ │ - SQLite │
│ - LocalStorage │ │ - Modules Expo │
│ - Fetch API │ │ │
└────────────────┘ └────────────────────┘
Le SDK fournit une gestion complète du cycle de vie des reçus:
import { EReceiptsSDK } from '@a-cube-io/ereceipts-js-sdk'
// Initialiser le SDK
const sdk = new EReceiptsSDK({
apiUrl: 'https://api.acubeapi.com',
authToken: 'user-jwt-token',
enableCache: true,
cacheTTL: 3600000 // 1 heure
})
// Récupérer les reçus avec mise en cache automatique
const receipts = await sdk.getReceipts({
startDate: '2025-01-01',
endDate: '2025-12-31',
status: 'validated'
})
// Obtenir un seul reçu (depuis le cache si disponible)
const receipt = await sdk.getReceipt('receipt-id-123')
// Télécharger le PDF du reçu
const pdfBlob = await sdk.downloadReceiptPDF('receipt-id-123')import { useReceipts, useReceipt } from '@a-cube-io/ereceipts-js-sdk/react'
function ReceiptsList() {
const { receipts, loading, error, refresh } = useReceipts({
startDate: '2025-01-01',
endDate: '2025-12-31'
})
if (loading) return <LoadingSpinner />
if (error) return <ErrorMessage error={error} />
return (
<div>
{receipts.map(receipt => (
Toutes les réponses API et structures de données validées au runtime:
import { z } from 'zod'
// Schéma de reçu
const ReceiptSchema = z.object({
id: z.string().uuid(),
merchantName: z.string().min(1),
amount: z.number().positive(),
currency: z.enum(['EUR', 'USD', 'GBP']),
date: z.string().datetime(),
status: z.enum(['pending', 'validated', 'rejected'
Stratégie de mise en cache multi-couche optimisée pour chaque plateforme:
Intégration transparente avec @a-cube-io/expo-mutual-tls pour appels API sécurisés:
import ExpoMutualTls from '@a-cube-io/expo-mutual-tls'
import { EReceiptsSDK } from '@a-cube-io/ereceipts-js-sdk'
// Configurer mTLS
await ExpoMutualTls.configureP12('ereceipts-app', true)
await ExpoMutualTls.storeP12(certificateData, password)
// Le SDK utilise automatiquement mTLS pour les appels API
const sdk = new EReceiptsSDK({
apiUrl: 'https://api.acubeapi.com',
useMTLS: true,
authToken: 'user-jwt-token'
})
// Tous les appels API utilisent l'authentification par certificat client
const receipts = await sdk.getReceipts() | Opération | Navigateur | React Native | Node.js |
|---|---|---|---|
| Initialisation SDK | 50ms | 80ms | 30ms |
| Lecture Cache (100 reçus) | 20ms | 40ms | 15ms |
| Écriture Cache (100 reçus) | 100ms | 180ms | 50ms |
| Fetch API (100 reçus) | 800ms | 900ms | 600ms |
| Validation Reçu (Zod) | 5ms | 7ms |
import React, { useEffect } from 'react'
import { View, FlatList, Text, Button } from 'react-native'
import { useReceipts } from '@a-cube-io/ereceipts-js-sdk/react'
import ExpoMutualTls from '@a-cube-io/expo-mutual-tls'
export default function ReceiptsScreen() {
const { receipts, loading, error, refresh, downloadPDF } = useReceipts({
startDate: '2025-01-01',
endDate: '2025-12-31'
})
useEffect(() => {
const setupAuth =
✅ Ce Qui A Bien Fonctionné:
📚 Points Clés:
@a-cube-io/ereceipts-js-sdk démontre le développement de SDK multi-plateforme prêt pour la production avec un focus sur type safety, performance et expérience développeur. Le projet équilibre avec succès:
Dépôt: Dépôt interne A-Cube Package: @a-cube-io/ereceipts-js-sdk Licence: MIT
| 3ms |