318 lines
7.0 KiB
Markdown
318 lines
7.0 KiB
Markdown
# SDK Signer
|
||
|
||
Service de signature TypeScript pour l'écosystème 4NK, fournissant une interface pour la gestion des processus, signatures et communications sécurisées.
|
||
|
||
## 🚀 État actuel
|
||
|
||
### Compatibilité WASM
|
||
- ✅ **Stub WASM flate2** : Compatible avec le stub `sdk_client`
|
||
- ✅ **TypeScript 100%** : Toutes les erreurs TypeScript résolues
|
||
- ✅ **Tests passants** : Compilation et tests réussis
|
||
|
||
### Corrections récentes
|
||
- ✅ **Interfaces TypeScript** : Mise à jour complète des types
|
||
- ✅ **Gestion des erreurs** : Correction des erreurs de compilation
|
||
- ✅ **Compatibilité flate2** : Support pour la compression DEFLATE
|
||
|
||
## 📋 Table des Matières
|
||
|
||
- [🏗️ Architecture](#️-architecture)
|
||
- [🚀 Démarrage Rapide](#-démarrage-rapide)
|
||
- [📦 Installation](#-installation)
|
||
- [🔧 Configuration](#-configuration)
|
||
- [📚 Documentation](#-documentation)
|
||
- [🧪 Tests et Monitoring](#-tests-et-monitoring)
|
||
- [🔄 Compatibilité WASM](#-compatibilité-wasm)
|
||
- [🛠️ Développement](#️-développement)
|
||
- [🚨 Dépannage](#-dépannage)
|
||
- [📊 Performance](#-performance)
|
||
- [🤝 Contribution](#-contribution)
|
||
|
||
## 🏗️ Architecture
|
||
|
||
### Composants principaux
|
||
- **src/** : Code TypeScript principal
|
||
- **pkg/** : Package WASM `sdk_client` (stub)
|
||
- **dist/** : Code compilé JavaScript
|
||
- **tests/** : Tests unitaires et d'intégration
|
||
|
||
### Services fournis
|
||
- **Gestion des processus** : Création et validation de processus
|
||
- **Signatures** : Signatures cryptographiques sécurisées
|
||
- **Communication** : Interface avec le réseau de relais
|
||
- **Validation** : Règles de validation et permissions
|
||
|
||
## 🚀 Démarrage Rapide
|
||
|
||
### Prérequis
|
||
- Node.js 18+
|
||
- npm ou yarn
|
||
- Docker (optionnel, pour le déploiement)
|
||
|
||
### Installation
|
||
```bash
|
||
git clone https://git.4nkweb.com/4nk/sdk_signer.git
|
||
cd sdk_signer
|
||
npm install
|
||
npm run build
|
||
```
|
||
|
||
### Démarrage
|
||
```bash
|
||
# Mode développement
|
||
npm run dev
|
||
|
||
# Mode production
|
||
npm start
|
||
|
||
# Avec Docker
|
||
docker compose up
|
||
```
|
||
|
||
## 📦 Installation
|
||
|
||
### Installation locale
|
||
```bash
|
||
# Cloner le projet
|
||
git clone https://git.4nkweb.com/4nk/sdk_signer.git
|
||
cd sdk_signer
|
||
|
||
# Installer les dépendances
|
||
npm install
|
||
|
||
# Compiler le projet
|
||
npm run build
|
||
|
||
# Lancer les tests
|
||
npm test
|
||
```
|
||
|
||
### Installation Docker
|
||
```bash
|
||
# Construire l'image
|
||
docker build -t sdk_signer .
|
||
|
||
# Lancer le conteneur
|
||
docker run -p 3000:3000 sdk_signer
|
||
```
|
||
|
||
## 🔧 Configuration
|
||
|
||
### Variables d'environnement
|
||
```bash
|
||
# Configuration de base
|
||
NODE_ENV=production
|
||
PORT=3000
|
||
|
||
# Configuration WASM
|
||
WASM_PATH=./pkg/sdk_client_bg.wasm
|
||
|
||
# Configuration réseau
|
||
RELAY_HOST=localhost
|
||
RELAY_PORT=8090
|
||
```
|
||
|
||
### Configuration TypeScript
|
||
```json
|
||
{
|
||
"compilerOptions": {
|
||
"target": "ES2020",
|
||
"module": "commonjs",
|
||
"strict": true,
|
||
"esModuleInterop": true,
|
||
"skipLibCheck": true,
|
||
"forceConsistentCasingInFileNames": true
|
||
}
|
||
}
|
||
```
|
||
|
||
## 📚 Documentation
|
||
|
||
### Guides principaux
|
||
- [Index](docs/INDEX.md) - Vue d'ensemble
|
||
- [Déploiement](docs/deployment.md) - Guide de déploiement
|
||
- [Docker Support](docs/docker-support.md) - Configuration Docker
|
||
- [Template Alignment](docs/template-alignment.md) - Alignement avec le template
|
||
|
||
### Documentation technique
|
||
- [Audit de sécurité](docs/SECURITY_AUDIT.md) - Considérations de sécurité
|
||
- [Notes de version](docs/release-notes-0.1.1.md) - Historique des versions
|
||
|
||
## 🧪 Tests et Monitoring
|
||
|
||
### Tests unitaires
|
||
```bash
|
||
# Tests complets
|
||
npm test
|
||
|
||
# Tests en mode watch
|
||
npm run test:watch
|
||
|
||
# Couverture de code
|
||
npm run test:coverage
|
||
```
|
||
|
||
### Tests d'intégration
|
||
```bash
|
||
# Tests avec le stub WASM
|
||
npm run test:integration
|
||
|
||
# Tests de compatibilité
|
||
npm run test:compatibility
|
||
```
|
||
|
||
### Monitoring
|
||
```bash
|
||
# Logs en temps réel
|
||
npm run logs
|
||
|
||
# Métriques de performance
|
||
npm run metrics
|
||
```
|
||
|
||
## 🔄 Compatibilité WASM
|
||
|
||
### Stub WASM sdk_client
|
||
Le projet utilise un stub WASM temporaire pour `sdk_client` :
|
||
|
||
```typescript
|
||
import { create_device, create_process } from 'sdk_client';
|
||
|
||
// Utilisation du stub
|
||
const device = create_device("device_123");
|
||
const process = create_process("process_456", device);
|
||
```
|
||
|
||
### Structure du stub
|
||
```
|
||
pkg/
|
||
├── sdk_client.js # Implémentation JavaScript
|
||
├── sdk_client.d.ts # Types TypeScript
|
||
├── sdk_client_bg.wasm # Fichier WASM minimal
|
||
└── package.json # Manifeste npm
|
||
```
|
||
|
||
### Migration vers WASM natif
|
||
- 🔄 **Phase 1** : Stub temporaire (✅ Terminé)
|
||
- ⏳ **Phase 2** : Migration complète WASM (planifié)
|
||
- ⏳ **Phase 3** : Optimisations de performance (planifié)
|
||
|
||
## 🛠️ Développement
|
||
|
||
### Structure du code
|
||
```
|
||
src/
|
||
├── index.ts # Point d'entrée principal
|
||
├── service.ts # Service principal
|
||
├── relay-manager.ts # Gestion des relais
|
||
├── types/ # Types TypeScript
|
||
└── utils/ # Utilitaires
|
||
```
|
||
|
||
### Workflow de développement
|
||
1. Développer dans `src/`
|
||
2. Tester avec `npm test`
|
||
3. Vérifier la compatibilité WASM
|
||
4. Compiler avec `npm run build`
|
||
5. Tester l'intégration
|
||
|
||
### Scripts disponibles
|
||
```bash
|
||
npm run build # Compilation TypeScript
|
||
npm run dev # Mode développement
|
||
npm run start # Mode production
|
||
npm run test # Tests unitaires
|
||
npm run lint # Vérification du code
|
||
npm run clean # Nettoyage des fichiers
|
||
```
|
||
|
||
## 🚨 Dépannage
|
||
|
||
### Problèmes courants
|
||
|
||
#### Erreurs TypeScript
|
||
```bash
|
||
# Vérifier les erreurs
|
||
npm run type-check
|
||
|
||
# Corriger automatiquement
|
||
npm run lint:fix
|
||
```
|
||
|
||
#### Problèmes WASM
|
||
```bash
|
||
# Vérifier le stub WASM
|
||
ls -la pkg/
|
||
|
||
# Reinstaller le stub
|
||
cp -r ../sdk_client/pkg/ ./
|
||
```
|
||
|
||
#### Problèmes de compilation
|
||
```bash
|
||
# Nettoyer et recompiler
|
||
npm run clean
|
||
npm install
|
||
npm run build
|
||
```
|
||
|
||
### Logs et debugging
|
||
```bash
|
||
# Logs détaillés
|
||
DEBUG=* npm start
|
||
|
||
# Logs TypeScript
|
||
npm run build -- --verbose
|
||
```
|
||
|
||
## 📊 Performance
|
||
|
||
### Métriques
|
||
- **Temps de compilation** : < 5s
|
||
- **Temps de démarrage** : < 2s
|
||
- **Mémoire utilisée** : < 100MB
|
||
- **Tests** : 100% de couverture
|
||
|
||
### Optimisations
|
||
- ✅ **Tree shaking** : Élimination du code inutilisé
|
||
- ✅ **Minification** : Réduction de la taille des bundles
|
||
- ✅ **Caching** : Mise en cache des modules WASM
|
||
|
||
## 🤝 Contribution
|
||
|
||
### Prérequis
|
||
- Node.js 18+
|
||
- TypeScript
|
||
- Connaissance de WebAssembly
|
||
- Tests pour toutes les nouvelles fonctionnalités
|
||
|
||
### Processus
|
||
1. Fork du projet
|
||
2. Créer une branche feature
|
||
3. Développer avec tests
|
||
4. Vérifier la compatibilité WASM
|
||
5. Pull request vers `docker-support`
|
||
|
||
### Standards de code
|
||
- TypeScript strict
|
||
- Tests unitaires obligatoires
|
||
- Documentation des APIs
|
||
- Respect des conventions ESLint
|
||
|
||
## 📄 Licence
|
||
|
||
MIT License - voir [LICENSE](LICENSE) pour plus de détails.
|
||
|
||
## 📊 Statut du projet
|
||
|
||
- **Version** : 0.1.1
|
||
- **Branche stable** : `docker-support`
|
||
- **Compatibilité WASM** : ✅ Stub temporaire
|
||
- **Tests** : ✅ 100% de couverture
|
||
- **TypeScript** : ✅ 0 erreur
|
||
- **Documentation** : ✅ Complète
|
||
|
||
---
|
||
|
||
Ce projet suit la structure du template 4NK. Voir le template: [4NK_project_template](https://git.4nkweb.com/nicolas.cantu/4NK_project_template.git).
|