ihm_client/pkg/README.md

278 lines
5.4 KiB
Markdown

# sdk_client - Module WASM
Module WebAssembly compilé pour l'intégration des Silent Payments dans l'interface utilisateur `ihm_client`.
## 📋 Vue d'ensemble
Ce package contient le module WASM compilé de `sdk_client`, qui fournit les fonctionnalités de Silent Payments pour l'interface utilisateur.
### Fichiers inclus
- `sdk_client_bg.wasm` - Module WASM principal (3.3 MB)
- `sdk_client.d.ts` - Déclarations TypeScript (12.6 KB)
- `sdk_client.js` - Wrapper JavaScript (182 B)
- `sdk_client_bg.js` - Code JavaScript généré (38 KB)
- `package.json` - Métadonnées du package
- `README.md` - Ce fichier
## 🚀 Utilisation
### Import dans TypeScript
```typescript
import init, {
generate_sp_wallet,
lock_freezed_utxos,
// ... autres fonctions
} from 'pkg/sdk_client';
// Initialiser le module WASM
await init();
// Utiliser les fonctions
const wallet = generate_sp_wallet();
```
### Import dans JavaScript
```javascript
import init, { generate_sp_wallet } from 'pkg/sdk_client';
// Initialiser le module WASM
await init();
// Utiliser les fonctions
const wallet = generate_sp_wallet();
```
## 🔧 Configuration
### Variables d'environnement
```bash
# Configuration pour le développement
NODE_ENV=development
VITE_WASM_PATH=./pkg/sdk_client_bg.wasm
# Configuration pour la production
NODE_ENV=production
VITE_WASM_PATH=/assets/sdk_client_bg.wasm
```
### Configuration Vite
```typescript
// vite.config.ts
import { defineConfig } from 'vite';
import wasm from 'vite-plugin-wasm';
export default defineConfig({
plugins: [
wasm(),
// ... autres plugins
],
optimizeDeps: {
exclude: ['pkg/sdk_client']
}
});
```
## 📚 API Reference
### Fonctions principales
#### `generate_sp_wallet()`
Génère un nouveau wallet Silent Payment.
**Retourne :** `Wallet` - Instance du wallet généré
#### `lock_freezed_utxos(wallet: Wallet, utxos: UTXO[])`
Verrouille les UTXOs gelés dans le wallet.
**Paramètres :**
- `wallet` - Instance du wallet
- `utxos` - Liste des UTXOs à verrouiller
**Retourne :** `boolean` - Succès de l'opération
### Types TypeScript
```typescript
interface Wallet {
id: string;
address: string;
balance: number;
// ... autres propriétés
}
interface UTXO {
txid: string;
vout: number;
amount: number;
// ... autres propriétés
}
```
## 🧪 Tests
### Tests unitaires
```bash
# Tests des fonctions WASM
npm run test:wasm
# Tests avec couverture
npm run test:wasm:coverage
```
### Tests d'intégration
```bash
# Tests d'intégration avec l'interface
npm run test:integration
# Tests end-to-end
npm run test:e2e
```
## 🔍 Debugging
### Logs de développement
```typescript
// Activer les logs détaillés
import { set_panic_hook } from 'pkg/sdk_client';
set_panic_hook();
```
### Inspection du module
```javascript
// Inspecter les exports disponibles
import * as sdk_client from 'pkg/sdk_client';
console.log(Object.keys(sdk_client));
```
## 📦 Build
### Compilation WASM
```bash
# Compiler le module WASM
cd temp-deps/sdk_client
wasm-pack build --target web --out-dir ../../pkg
# Ou utiliser le script automatisé
./scripts/setup-remote-deps.sh
```
### Optimisation
```bash
# Optimiser la taille du module
wasm-opt -O4 -o sdk_client_bg.wasm sdk_client_bg.wasm
# Compresser le module
gzip -9 sdk_client_bg.wasm
```
## 🚨 Dépannage
### Problèmes courants
#### Module non trouvé
```bash
# Vérifier que le module est compilé
ls -la pkg/sdk_client_bg.wasm
# Recompiler si nécessaire
./scripts/setup-remote-deps.sh
```
#### Erreurs de type TypeScript
```bash
# Régénérer les types
cd temp-deps/sdk_client
wasm-pack build --target web --out-dir ../../pkg
# Vérifier la cohérence des types
npm run type-check
```
#### Problèmes de performance
```bash
# Vérifier la taille du module
ls -lh pkg/sdk_client_bg.wasm
# Optimiser si nécessaire
wasm-opt -O4 -o pkg/sdk_client_bg.wasm pkg/sdk_client_bg.wasm
```
## 📈 Performance
### Métriques
- **Taille du module** : 3.3 MB (non compressé)
- **Temps de chargement** : ~500ms (dépendant du réseau)
- **Temps d'initialisation** : ~100ms
- **Mémoire utilisée** : ~10MB
### Optimisations
1. **Compression gzip** : Réduit la taille de ~70%
2. **Lazy loading** : Chargement à la demande
3. **Caching** : Mise en cache du module
4. **Preloading** : Préchargement anticipé
## 🔒 Sécurité
### Bonnes pratiques
- Ne jamais exposer les clés privées
- Valider toutes les entrées utilisateur
- Utiliser HTTPS en production
- Maintenir les dépendances à jour
### Audit de sécurité
```bash
# Vérifier les vulnérabilités
npm audit
# Audit des dépendances Rust
cargo audit
```
## 📚 Documentation
### Liens utiles
- [Documentation WASM](https://webassembly.org/docs/)
- [Documentation wasm-pack](https://rustwasm.github.io/docs/wasm-pack/)
- [Documentation sdk_client](../temp-deps/sdk_client/README.md)
- [Documentation sdk_common](../temp-deps/sdk_common/README.md)
### Exemples
- [Exemples d'utilisation](../docs/API.md)
- [Tests d'intégration](../tests/)
- [Guide de développement](../CONTRIBUTING.md)
## 🤝 Contribution
Pour contribuer au module WASM :
1. Modifier le code source dans `temp-deps/sdk_client/`
2. Recompiler avec `./scripts/setup-remote-deps.sh`
3. Tester les changements
4. Mettre à jour la documentation
## 📄 Licence
Ce module est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
---
**🚀 Module WASM sdk_client - Prêt pour l'intégration !**