sunuid-sdk 1.0.23 → 1.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +164 -43
- package/dist/sunuid-sdk.esm.js +12 -5
- package/dist/sunuid-sdk.esm.js.map +1 -1
- package/dist/sunuid-sdk.js +12 -5
- package/dist/sunuid-sdk.js.map +1 -1
- package/dist/sunuid-sdk.min.js +3 -3
- package/dist/sunuid-sdk.min.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,11 +10,13 @@ SDK JavaScript officiel pour intégrer facilement les QR codes d'authentificatio
|
|
|
10
10
|
|
|
11
11
|
- 🔐 **Authentification QR Code** - Connexion sécurisée avec SunuID
|
|
12
12
|
- 📋 **Vérification KYC** - Collecte et validation d'identité
|
|
13
|
+
- 🌐 **WebSocket en Temps Réel** - Connexion automatique pour les mises à jour
|
|
13
14
|
- 🎨 **Thèmes personnalisables** - Support des thèmes clair et sombre
|
|
14
15
|
- 🔄 **Actualisation automatique** - QR codes qui se renouvellent automatiquement
|
|
15
16
|
- 📱 **Responsive design** - Compatible mobile et desktop
|
|
16
17
|
- 🌍 **Multi-langue** - Support français, anglais, arabe
|
|
17
18
|
- 🛡️ **Sécurisé** - Authentification par clés API
|
|
19
|
+
- 🔢 **Types numériques** - Support des types 1, 2, 3 pour différents services
|
|
18
20
|
|
|
19
21
|
## 🚀 Installation
|
|
20
22
|
|
|
@@ -27,54 +29,82 @@ npm install sunuid-sdk
|
|
|
27
29
|
### Via CDN
|
|
28
30
|
|
|
29
31
|
```html
|
|
32
|
+
<!-- Socket.IO requis pour WebSocket -->
|
|
33
|
+
<script src="https://cdn.socket.io/4.7.0/socket.io.min.js"></script>
|
|
34
|
+
|
|
30
35
|
<!-- CSS -->
|
|
31
|
-
<link rel="stylesheet" href="https://unpkg.com/sunuid-sdk@1.0.
|
|
36
|
+
<link rel="stylesheet" href="https://unpkg.com/sunuid-sdk@1.0.23/dist/sunuid-sdk.css">
|
|
32
37
|
|
|
33
38
|
<!-- JavaScript -->
|
|
34
|
-
<script src="https://unpkg.com/sunuid-sdk@1.0.
|
|
39
|
+
<script src="https://unpkg.com/sunuid-sdk@1.0.23/dist/sunuid-sdk.js"></script>
|
|
35
40
|
```
|
|
36
41
|
|
|
37
42
|
## 📖 Utilisation Rapide
|
|
38
43
|
|
|
39
|
-
### 1. Initialisation
|
|
44
|
+
### 1. Initialisation avec WebSocket
|
|
40
45
|
|
|
41
46
|
```javascript
|
|
42
47
|
const sunuid = initSunuID({
|
|
43
|
-
apiUrl: 'https://sunuid.fayma.sn
|
|
48
|
+
apiUrl: 'https://api.sunuid.fayma.sn',
|
|
44
49
|
clientId: 'VOTRE_CLIENT_ID',
|
|
45
50
|
secretId: 'VOTRE_SECRET_ID',
|
|
46
|
-
|
|
51
|
+
type: 1, // 1 = authentification, 2 = KYC, 3 = service personnalisé
|
|
52
|
+
theme: 'light',
|
|
53
|
+
onSuccess: function(data) {
|
|
54
|
+
console.log('Authentification réussie:', data);
|
|
55
|
+
},
|
|
56
|
+
onError: function(error) {
|
|
57
|
+
console.error('Erreur:', error);
|
|
58
|
+
},
|
|
59
|
+
onStatusUpdate: function(data) {
|
|
60
|
+
console.log('Mise à jour statut:', data);
|
|
61
|
+
},
|
|
62
|
+
onExpired: function(data) {
|
|
63
|
+
console.log('QR expiré:', data);
|
|
64
|
+
}
|
|
47
65
|
});
|
|
48
66
|
```
|
|
49
67
|
|
|
50
|
-
### 2.
|
|
68
|
+
### 2. Génération QR avec WebSocket
|
|
51
69
|
|
|
52
70
|
```html
|
|
53
|
-
<div id="
|
|
71
|
+
<div id="qr-container"></div>
|
|
54
72
|
```
|
|
55
73
|
|
|
56
74
|
```javascript
|
|
57
|
-
|
|
58
|
-
|
|
75
|
+
// Génère QR et émet automatiquement un événement WebSocket
|
|
76
|
+
const result = await sunuid.generateQR('qr-container', {
|
|
77
|
+
metadata: {
|
|
78
|
+
customData: 'votre-donnée'
|
|
79
|
+
}
|
|
59
80
|
});
|
|
60
|
-
```
|
|
61
81
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
```html
|
|
65
|
-
<div id="kyc-qr-container"></div>
|
|
82
|
+
console.log('QR généré:', result.qrCodeUrl);
|
|
83
|
+
console.log('Service ID:', result.service_id);
|
|
66
84
|
```
|
|
67
85
|
|
|
86
|
+
### 3. Écoute des événements WebSocket
|
|
87
|
+
|
|
68
88
|
```javascript
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
89
|
+
// Le SDK se connecte automatiquement au WebSocket
|
|
90
|
+
// Événements disponibles :
|
|
91
|
+
// - qr_status_update : Mise à jour du statut
|
|
92
|
+
// - qr_scan_success : Scan réussi
|
|
93
|
+
// - qr_expired : QR expiré
|
|
94
|
+
|
|
95
|
+
// Émettre un événement personnalisé
|
|
96
|
+
sunuid.emitWebSocketEvent('custom_event', {
|
|
97
|
+
message: 'Hello WebSocket!',
|
|
98
|
+
timestamp: Date.now()
|
|
72
99
|
});
|
|
100
|
+
|
|
101
|
+
// Vérifier le statut WebSocket
|
|
102
|
+
const status = sunuid.getWebSocketStatus(); // 'connected', 'disconnected', 'not_initialized'
|
|
73
103
|
```
|
|
74
104
|
|
|
75
105
|
## 🎨 Exemples
|
|
76
106
|
|
|
77
|
-
### Page de Connexion
|
|
107
|
+
### Page de Connexion avec WebSocket
|
|
78
108
|
|
|
79
109
|
```html
|
|
80
110
|
<!DOCTYPE html>
|
|
@@ -83,7 +113,7 @@ sunuid.generateKYCQR('kyc-qr-container', {
|
|
|
83
113
|
<meta charset="UTF-8">
|
|
84
114
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
85
115
|
<title>Connexion - Mon Application</title>
|
|
86
|
-
<link rel="stylesheet" href="https://unpkg.com/sunuid-sdk@1.0.
|
|
116
|
+
<link rel="stylesheet" href="https://unpkg.com/sunuid-sdk@1.0.23/dist/sunuid-sdk.css">
|
|
87
117
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
|
88
118
|
</head>
|
|
89
119
|
<body>
|
|
@@ -91,7 +121,7 @@ sunuid.generateKYCQR('kyc-qr-container', {
|
|
|
91
121
|
<h1>Connexion Sécurisée</h1>
|
|
92
122
|
<p>Scannez le QR code avec l'application SunuID</p>
|
|
93
123
|
|
|
94
|
-
<div id="
|
|
124
|
+
<div id="qr-container"></div>
|
|
95
125
|
|
|
96
126
|
<div class="login-footer">
|
|
97
127
|
<p>Pas encore d'application SunuID ?</p>
|
|
@@ -99,22 +129,37 @@ sunuid.generateKYCQR('kyc-qr-container', {
|
|
|
99
129
|
</div>
|
|
100
130
|
</div>
|
|
101
131
|
|
|
102
|
-
|
|
132
|
+
<!-- Socket.IO requis -->
|
|
133
|
+
<script src="https://cdn.socket.io/4.7.0/socket.io.min.js"></script>
|
|
134
|
+
|
|
135
|
+
<!-- SDK SunuID -->
|
|
136
|
+
<script src="https://unpkg.com/sunuid-sdk@1.0.23/dist/sunuid-sdk.js"></script>
|
|
137
|
+
|
|
103
138
|
<script>
|
|
104
139
|
const sunuid = initSunuID({
|
|
105
|
-
apiUrl: 'https://sunuid.fayma.sn
|
|
140
|
+
apiUrl: 'https://api.sunuid.fayma.sn',
|
|
106
141
|
clientId: 'VOTRE_CLIENT_ID',
|
|
107
142
|
secretId: 'VOTRE_SECRET_ID',
|
|
143
|
+
type: 1,
|
|
108
144
|
theme: 'light',
|
|
109
145
|
onSuccess: function(data) {
|
|
146
|
+
console.log('✅ Authentification réussie:', data);
|
|
110
147
|
window.location.href = '/dashboard?token=' + data.token;
|
|
111
148
|
},
|
|
112
149
|
onError: function(error) {
|
|
150
|
+
console.error('❌ Erreur:', error);
|
|
113
151
|
alert('Erreur de connexion: ' + error.message);
|
|
152
|
+
},
|
|
153
|
+
onStatusUpdate: function(data) {
|
|
154
|
+
console.log('📱 Mise à jour statut:', data);
|
|
155
|
+
},
|
|
156
|
+
onExpired: function(data) {
|
|
157
|
+
console.log('⏰ QR expiré:', data);
|
|
114
158
|
}
|
|
115
159
|
});
|
|
116
160
|
|
|
117
|
-
|
|
161
|
+
// Générer le QR code (WebSocket se connecte automatiquement)
|
|
162
|
+
sunuid.generateQR('qr-container');
|
|
118
163
|
</script>
|
|
119
164
|
</body>
|
|
120
165
|
</html>
|
|
@@ -126,33 +171,39 @@ sunuid.generateKYCQR('kyc-qr-container', {
|
|
|
126
171
|
|
|
127
172
|
| Option | Type | Défaut | Description |
|
|
128
173
|
|--------|------|--------|-------------|
|
|
129
|
-
| `apiUrl` | string | `'https://sunuid.fayma.sn
|
|
174
|
+
| `apiUrl` | string | `'https://api.sunuid.fayma.sn'` | URL de l'API SunuID |
|
|
130
175
|
| `clientId` | string | - | Clé client (requise) |
|
|
131
176
|
| `secretId` | string | - | Clé secrète (requise) |
|
|
177
|
+
| `type` | number | `1` | Type de service: `1` (auth), `2` (KYC), `3` (personnalisé) |
|
|
132
178
|
| `theme` | string | `'light'` | Thème: `'light'` ou `'dark'` |
|
|
133
179
|
| `language` | string | `'fr'` | Langue: `'fr'`, `'en'`, `'ar'` |
|
|
134
180
|
| `autoRefresh` | boolean | `true` | Actualisation automatique |
|
|
135
181
|
| `refreshInterval` | number | `30000` | Intervalle en millisecondes |
|
|
136
182
|
| `onSuccess` | function | - | Callback en cas de succès |
|
|
137
183
|
| `onError` | function | - | Callback en cas d'erreur |
|
|
184
|
+
| `onStatusUpdate` | function | - | Callback pour mises à jour WebSocket |
|
|
138
185
|
| `onExpired` | function | - | Callback quand le QR expire |
|
|
139
186
|
|
|
140
|
-
### Événements
|
|
187
|
+
### Événements WebSocket
|
|
141
188
|
|
|
142
189
|
```javascript
|
|
143
190
|
const sunuid = initSunuID({
|
|
144
191
|
// ... configuration
|
|
145
192
|
onSuccess: function(data) {
|
|
146
|
-
console.log('Authentification réussie:', data);
|
|
147
|
-
// data contient: token, user,
|
|
193
|
+
console.log('✅ Authentification réussie:', data);
|
|
194
|
+
// data contient: token, user, service_id, etc.
|
|
148
195
|
},
|
|
149
196
|
onError: function(error) {
|
|
150
|
-
console.error('Erreur:', error);
|
|
197
|
+
console.error('❌ Erreur:', error);
|
|
151
198
|
// error contient: message, code, details
|
|
152
199
|
},
|
|
153
|
-
|
|
154
|
-
console.log('
|
|
155
|
-
//
|
|
200
|
+
onStatusUpdate: function(data) {
|
|
201
|
+
console.log('📱 Mise à jour statut:', data);
|
|
202
|
+
// Mise à jour reçue via WebSocket
|
|
203
|
+
},
|
|
204
|
+
onExpired: function(data) {
|
|
205
|
+
console.log('⏰ QR expiré:', data);
|
|
206
|
+
// QR expiré, actualisation automatique
|
|
156
207
|
}
|
|
157
208
|
});
|
|
158
209
|
```
|
|
@@ -161,8 +212,23 @@ const sunuid = initSunuID({
|
|
|
161
212
|
|
|
162
213
|
### Méthodes principales
|
|
163
214
|
|
|
164
|
-
#### `
|
|
165
|
-
Génère un QR code
|
|
215
|
+
#### `generateQR(containerId, options)`
|
|
216
|
+
Génère un QR code avec le type configuré et émet un événement WebSocket.
|
|
217
|
+
|
|
218
|
+
```javascript
|
|
219
|
+
const result = await sunuid.generateQR('container-id', {
|
|
220
|
+
metadata: {
|
|
221
|
+
customData: 'votre-donnée',
|
|
222
|
+
timestamp: Date.now()
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
console.log('QR généré:', result.qrCodeUrl);
|
|
227
|
+
console.log('Service ID:', result.service_id);
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
#### `generateAuthQR(containerId, options)` (Alias)
|
|
231
|
+
Génère un QR code d'authentification (type 1).
|
|
166
232
|
|
|
167
233
|
```javascript
|
|
168
234
|
sunuid.generateAuthQR('container-id', {
|
|
@@ -172,8 +238,8 @@ sunuid.generateAuthQR('container-id', {
|
|
|
172
238
|
});
|
|
173
239
|
```
|
|
174
240
|
|
|
175
|
-
#### `generateKYCQR(containerId, options)`
|
|
176
|
-
Génère un QR code KYC.
|
|
241
|
+
#### `generateKYCQR(containerId, options)` (Alias)
|
|
242
|
+
Génère un QR code KYC (type 2).
|
|
177
243
|
|
|
178
244
|
```javascript
|
|
179
245
|
sunuid.generateKYCQR('container-id', {
|
|
@@ -184,45 +250,96 @@ sunuid.generateKYCQR('container-id', {
|
|
|
184
250
|
});
|
|
185
251
|
```
|
|
186
252
|
|
|
187
|
-
#### `checkQRStatus(
|
|
253
|
+
#### `checkQRStatus(serviceId)`
|
|
188
254
|
Vérifie le statut d'un QR code.
|
|
189
255
|
|
|
190
256
|
```javascript
|
|
191
|
-
const status = await sunuid.checkQRStatus('
|
|
257
|
+
const status = await sunuid.checkQRStatus('service-id-123');
|
|
192
258
|
console.log('Statut:', status);
|
|
193
259
|
```
|
|
194
260
|
|
|
195
|
-
#### `refreshQR(containerId,
|
|
261
|
+
#### `refreshQR(containerId, options)`
|
|
196
262
|
Actualise un QR code.
|
|
197
263
|
|
|
198
264
|
```javascript
|
|
199
|
-
sunuid.refreshQR('container-id',
|
|
265
|
+
sunuid.refreshQR('container-id', { theme: 'light' });
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Méthodes WebSocket
|
|
269
|
+
|
|
270
|
+
#### `getWebSocketStatus()`
|
|
271
|
+
Retourne le statut de la connexion WebSocket.
|
|
272
|
+
|
|
273
|
+
```javascript
|
|
274
|
+
const status = sunuid.getWebSocketStatus();
|
|
275
|
+
// 'connected', 'disconnected', 'not_initialized'
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
#### `emitWebSocketEvent(event, data)`
|
|
279
|
+
Émet un événement WebSocket personnalisé.
|
|
280
|
+
|
|
281
|
+
```javascript
|
|
282
|
+
sunuid.emitWebSocketEvent('custom_event', {
|
|
283
|
+
message: 'Hello WebSocket!',
|
|
284
|
+
timestamp: Date.now(),
|
|
285
|
+
serviceId: 'service-id'
|
|
286
|
+
});
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
#### `forceWebSocketInit()`
|
|
290
|
+
Force l'initialisation WebSocket si Socket.IO devient disponible plus tard.
|
|
291
|
+
|
|
292
|
+
```javascript
|
|
293
|
+
sunuid.forceWebSocketInit();
|
|
200
294
|
```
|
|
201
295
|
|
|
202
296
|
#### `destroy()`
|
|
203
|
-
Nettoie les ressources du SDK.
|
|
297
|
+
Nettoie les ressources du SDK et ferme la connexion WebSocket.
|
|
204
298
|
|
|
205
299
|
```javascript
|
|
206
300
|
sunuid.destroy();
|
|
207
301
|
```
|
|
208
302
|
|
|
303
|
+
## 🌐 WebSocket
|
|
304
|
+
|
|
305
|
+
### Connexion Automatique
|
|
306
|
+
Le SDK se connecte automatiquement au WebSocket lors de l'initialisation :
|
|
307
|
+
- **Serveur :** `wss://samasocket.fayma.sn:9443`
|
|
308
|
+
- **Paramètres :** token, type: 'web', userId, username
|
|
309
|
+
|
|
310
|
+
### Événements Reçus
|
|
311
|
+
- `qr_status_update` - Mise à jour du statut QR
|
|
312
|
+
- `qr_scan_success` - Scan QR réussi
|
|
313
|
+
- `qr_expired` - QR expiré
|
|
314
|
+
|
|
315
|
+
### Événements Émis
|
|
316
|
+
- `qr_generated` - QR généré (automatique)
|
|
317
|
+
- `custom_event` - Événements personnalisés
|
|
318
|
+
|
|
319
|
+
### Gestion des Erreurs
|
|
320
|
+
- Tentatives limitées (5 max) si Socket.IO non disponible
|
|
321
|
+
- Désactivation automatique après échec
|
|
322
|
+
- Logs détaillés pour le debugging
|
|
323
|
+
|
|
209
324
|
## 🛡️ Sécurité
|
|
210
325
|
|
|
211
326
|
### Authentification
|
|
212
327
|
Le SDK utilise les clés API pour s'authentifier :
|
|
213
|
-
- `
|
|
214
|
-
-
|
|
328
|
+
- `clientId` et `secretId` dans le corps des requêtes
|
|
329
|
+
- Connexion WebSocket sécurisée avec token
|
|
215
330
|
|
|
216
331
|
### Validation
|
|
217
332
|
- Vérification des paramètres requis
|
|
218
333
|
- Validation des URLs de redirection
|
|
219
334
|
- Protection contre les attaques CSRF
|
|
335
|
+
- Types numériques pour éviter les injections
|
|
220
336
|
|
|
221
337
|
## 🌐 Compatibilité
|
|
222
338
|
|
|
223
339
|
- **Navigateurs** : Chrome 60+, Firefox 55+, Safari 12+, Edge 79+
|
|
224
340
|
- **Mobile** : iOS Safari 12+, Chrome Mobile 60+
|
|
225
341
|
- **Node.js** : 14.0.0+
|
|
342
|
+
- **WebSocket** : Socket.IO 4.7.0+
|
|
226
343
|
|
|
227
344
|
## 📊 Monitoring
|
|
228
345
|
|
|
@@ -230,7 +347,9 @@ Le SDK utilise les clés API pour s'authentifier :
|
|
|
230
347
|
Le SDK génère des logs pour le debugging :
|
|
231
348
|
```javascript
|
|
232
349
|
console.log('SunuID SDK initialisé avec succès');
|
|
233
|
-
console.
|
|
350
|
+
console.log('🌐 WebSocket connecté avec succès');
|
|
351
|
+
console.log('📤 Événement WebSocket émis: qr_generated');
|
|
352
|
+
console.error('❌ Erreur connexion WebSocket:', error);
|
|
234
353
|
```
|
|
235
354
|
|
|
236
355
|
### Métriques
|
|
@@ -238,6 +357,7 @@ Les partenaires peuvent suivre :
|
|
|
238
357
|
- Nombre de QR codes générés
|
|
239
358
|
- Taux de succès d'authentification
|
|
240
359
|
- Temps de réponse de l'API
|
|
360
|
+
- Statut des connexions WebSocket
|
|
241
361
|
|
|
242
362
|
## 🆘 Support
|
|
243
363
|
|
|
@@ -293,6 +413,7 @@ Ce projet est distribué sous licence MIT. Voir le fichier [LICENSE](LICENSE) po
|
|
|
293
413
|
- [FontAwesome](https://fontawesome.com/) pour les icônes
|
|
294
414
|
- [Inter](https://rsms.me/inter/) pour la typographie
|
|
295
415
|
- [Rollup](https://rollupjs.org/) pour le bundling
|
|
416
|
+
- [Socket.IO](https://socket.io/) pour les WebSockets
|
|
296
417
|
|
|
297
418
|
---
|
|
298
419
|
|
package/dist/sunuid-sdk.esm.js
CHANGED
|
@@ -229,6 +229,8 @@ function _toPropertyKey(t) {
|
|
|
229
229
|
this.refreshTimer = null;
|
|
230
230
|
this.isInitialized = false;
|
|
231
231
|
this.socket = null;
|
|
232
|
+
this.websocketRetryCount = 0;
|
|
233
|
+
this.maxWebSocketRetries = 5;
|
|
232
234
|
this.init();
|
|
233
235
|
}
|
|
234
236
|
|
|
@@ -258,11 +260,16 @@ function _toPropertyKey(t) {
|
|
|
258
260
|
try {
|
|
259
261
|
// Vérifier si Socket.IO est disponible
|
|
260
262
|
if (typeof io === 'undefined') {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
263
|
+
this.websocketRetryCount++;
|
|
264
|
+
if (this.websocketRetryCount <= this.maxWebSocketRetries) {
|
|
265
|
+
console.warn("\u26A0\uFE0F Socket.IO non disponible (tentative ".concat(this.websocketRetryCount, "/").concat(this.maxWebSocketRetries, "), WebSocket sera initialis\xE9 plus tard"));
|
|
266
|
+
// Réessayer après un délai
|
|
267
|
+
setTimeout(function () {
|
|
268
|
+
return _this.initWebSocket();
|
|
269
|
+
}, 1000);
|
|
270
|
+
} else {
|
|
271
|
+
console.warn('⚠️ Socket.IO non disponible après plusieurs tentatives, WebSocket désactivé');
|
|
272
|
+
}
|
|
266
273
|
return;
|
|
267
274
|
}
|
|
268
275
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sunuid-sdk.esm.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // Vérifier si Socket.IO est disponible\n if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard');\n // Réessayer après un délai\n setTimeout(() => this.initWebSocket(), 1000);\n return;\n }\n \n // Obtenir l'IP du client (simulation)\n const ip = this.getClientIP();\n \n // Initialiser la connexion WebSocket si elle n'existe pas\n if (!this.socket) {\n this.socket = io('wss://samasocket.fayma.sn:9443', {\n query: {\n token: this.config.clientId,\n type: 'web',\n userId: this.config.clientId,\n username: ip\n }\n });\n\n // Gestion des événements WebSocket\n this.socket.on('connect', () => {\n console.log('🌐 WebSocket connecté avec succès');\n console.log('📊 Socket ID:', this.socket.id);\n });\n\n this.socket.on('disconnect', (reason) => {\n console.log('❌ WebSocket déconnecté:', reason);\n });\n\n this.socket.on('connect_error', (error) => {\n console.error('❌ Erreur connexion WebSocket:', error);\n });\n\n // Écouter les événements spécifiques\n this.socket.on('qr_status_update', (data) => {\n console.log('📱 Mise à jour statut QR reçue:', data);\n this.handleQRStatusUpdate(data);\n });\n\n this.socket.on('qr_scan_success', (data) => {\n console.log('✅ Scan QR réussi reçu:', data);\n this.handleQRScanSuccess(data);\n });\n\n this.socket.on('qr_expired', (data) => {\n console.log('⏰ QR expiré reçu:', data);\n this.handleQRExpired(data);\n });\n }\n } catch (error) {\n console.error('❌ Erreur initialisation WebSocket:', error);\n }\n }\n\n /**\n * Obtenir l'IP du client (simulation)\n */\n getClientIP() {\n // Simulation - en production, vous pourriez utiliser un service d'IP\n return '127.0.0.1';\n }\n\n /**\n * Gérer la mise à jour du statut QR\n */\n handleQRStatusUpdate(data) {\n if (this.config.onStatusUpdate) {\n this.config.onStatusUpdate(data);\n }\n }\n\n /**\n * Gérer le succès du scan QR\n */\n handleQRScanSuccess(data) {\n if (this.config.onSuccess) {\n this.config.onSuccess(data);\n }\n }\n\n /**\n * Gérer l'expiration du QR\n */\n handleQRExpired(data) {\n if (this.config.onExpired) {\n this.config.onExpired(data);\n }\n }\n\n /**\n * Émettre un événement WebSocket\n */\n emitWebSocketEvent(event, data) {\n if (this.socket && this.socket.connected) {\n this.socket.emit(event, data);\n console.log(`📤 Événement WebSocket émis: ${event}`, data);\n } else if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, impossible d\\'émettre l\\'événement:', event);\n } else {\n console.warn('⚠️ WebSocket non connecté, impossible d\\'émettre l\\'événement:', event);\n }\n }\n\n /**\n * Obtenir le statut de la connexion WebSocket\n */\n getWebSocketStatus() {\n if (!this.socket) {\n return 'not_initialized';\n }\n return this.socket.connected ? 'connected' : 'disconnected';\n }\n\n /**\n * Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)\n */\n forceWebSocketInit() {\n if (typeof io !== 'undefined' && !this.socket) {\n console.log('🔄 Forçage de l\\'initialisation WebSocket...');\n this.initWebSocket();\n }\n }\n\n /**\n * Générer un QR code avec le type configuré\n */\n async generateQR(containerId, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: this.config.type, // Utilise le type configuré\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n this.startAutoRefresh(containerId, this.config.type, options);\n \n // Émettre un événement WebSocket pour la génération du QR\n this.emitWebSocketEvent('qr_generated', {\n serviceId: response.data.service_id,\n type: this.config.type,\n qrCodeUrl: qrImageUrl,\n timestamp: Date.now()\n });\n \n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + this.config.type);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw new Error('Service non disponible');\n }\n }\n\n\n\n /**\n * Générer un QR code avec un type personnalisé\n */\n async generateCustomQR(containerId, type, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: type, // Type personnalisé (1, 2, 3, etc.)\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, type, options);\n this.startAutoRefresh(containerId, type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + type);\n this.displayServiceUnavailable(containerId, type);\n throw new Error('Service non disponible');\n }\n }\n\n // Alias pour maintenir la compatibilité\n async generateAuthQR(containerId, options = {}) {\n return this.generateQR(containerId, options);\n }\n\n async generateKYCQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour KYC\n this.config.type = 2;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(sessionId) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-status', {\n serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Authentification' : type === 2 ? 'Vérification KYC' : type === 3 ? 'Service Type 3' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\">\n <img src=\"${qrUrl}\" alt=\"QR Code SunuID\" style=\"max-width: 300px; height: auto;\">\n </div>\n <div class=\"sunuid-qr-instructions\">\n <p>Scannez ce QR code avec l'application SunuID pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${type.toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, options = {}) {\n try {\n const result = await this.generateQR(containerId, options);\n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw error;\n }\n }\n\n /**\n * Démarrer le rafraîchissement automatique\n */\n startAutoRefresh(containerId, type, options) {\n if (!this.config.autoRefresh) return;\n\n this.refreshTimer = setInterval(async () => {\n try {\n await this.refreshQR(containerId, type, options);\n } catch (error) {\n console.warn('Erreur lors du rafraîchissement automatique:', error);\n }\n }, this.config.refreshInterval);\n }\n\n /**\n * Démarrer le timer de compte à rebours\n */\n\n\n /**\n * Effectuer une requête API\n */\n async makeRequest(endpoint, data) {\n // Utiliser l'endpoint depuis la configuration si disponible\n const endpointPath = window.SunuIDConfig?.endpoints?.[endpoint.replace('/', '')] || endpoint;\n const url = `${this.config.apiUrl}${endpointPath}`;\n \n // Log pour déboguer l'envoi du type\n if (data.type !== undefined) {\n console.log(`🌐 Envoi requête API - Type: ${data.type}, Endpoint: ${endpoint}`);\n }\n \n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n // Fermer la connexion WebSocket\n if (this.socket) {\n this.socket.disconnect();\n this.socket = null;\n console.log('🌐 WebSocket déconnecté');\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","socket","init","_createClass","key","value","Error","console","log","initWebSocket","_this","io","warn","setTimeout","ip","getClientIP","query","token","userId","username","on","id","reason","error","data","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","emitWebSocketEvent","event","connected","emit","concat","getWebSocketStatus","forceWebSocketInit","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","imageBaseUrl","qrImageUrl","_args","_t","w","_context","p","n","makeRequest","v","success","qrcode","displayQRCode","startAutoRefresh","serviceId","service_id","qrCodeUrl","timestamp","Date","now","a","sessionId","message","displayServiceUnavailable","generateQR","_x","apply","_generateCustomQR","_callee2","_args2","_t2","_context2","generateCustomQR","_x2","_x3","_generateAuthQR","_callee3","_args3","_context3","generateAuthQR","_x4","_generateKYCQR","_callee4","originalType","_args4","_context4","f","generateKYCQR","_x5","_checkQRStatus","_callee5","_t3","_context5","handleError","checkQRStatus","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_args6","_t4","_context6","refreshQR","_x7","_this2","setInterval","_callee7","_t5","_context7","_makeRequest","_callee8","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t6","_context8","endpoints","replace","fetch","method","headers","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x8","_x9","querySelector","destroy","clearInterval","disconnect","sunuidInstance","initSunuID"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sunuid-sdk.esm.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n this.websocketRetryCount = 0;\n this.maxWebSocketRetries = 5;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // Vérifier si Socket.IO est disponible\n if (typeof io === 'undefined') {\n this.websocketRetryCount++;\n \n if (this.websocketRetryCount <= this.maxWebSocketRetries) {\n console.warn(`⚠️ Socket.IO non disponible (tentative ${this.websocketRetryCount}/${this.maxWebSocketRetries}), WebSocket sera initialisé plus tard`);\n // Réessayer après un délai\n setTimeout(() => this.initWebSocket(), 1000);\n } else {\n console.warn('⚠️ Socket.IO non disponible après plusieurs tentatives, WebSocket désactivé');\n }\n return;\n }\n \n // Obtenir l'IP du client (simulation)\n const ip = this.getClientIP();\n \n // Initialiser la connexion WebSocket si elle n'existe pas\n if (!this.socket) {\n this.socket = io('wss://samasocket.fayma.sn:9443', {\n query: {\n token: this.config.clientId,\n type: 'web',\n userId: this.config.clientId,\n username: ip\n }\n });\n\n // Gestion des événements WebSocket\n this.socket.on('connect', () => {\n console.log('🌐 WebSocket connecté avec succès');\n console.log('📊 Socket ID:', this.socket.id);\n });\n\n this.socket.on('disconnect', (reason) => {\n console.log('❌ WebSocket déconnecté:', reason);\n });\n\n this.socket.on('connect_error', (error) => {\n console.error('❌ Erreur connexion WebSocket:', error);\n });\n\n // Écouter les événements spécifiques\n this.socket.on('qr_status_update', (data) => {\n console.log('📱 Mise à jour statut QR reçue:', data);\n this.handleQRStatusUpdate(data);\n });\n\n this.socket.on('qr_scan_success', (data) => {\n console.log('✅ Scan QR réussi reçu:', data);\n this.handleQRScanSuccess(data);\n });\n\n this.socket.on('qr_expired', (data) => {\n console.log('⏰ QR expiré reçu:', data);\n this.handleQRExpired(data);\n });\n }\n } catch (error) {\n console.error('❌ Erreur initialisation WebSocket:', error);\n }\n }\n\n /**\n * Obtenir l'IP du client (simulation)\n */\n getClientIP() {\n // Simulation - en production, vous pourriez utiliser un service d'IP\n return '127.0.0.1';\n }\n\n /**\n * Gérer la mise à jour du statut QR\n */\n handleQRStatusUpdate(data) {\n if (this.config.onStatusUpdate) {\n this.config.onStatusUpdate(data);\n }\n }\n\n /**\n * Gérer le succès du scan QR\n */\n handleQRScanSuccess(data) {\n if (this.config.onSuccess) {\n this.config.onSuccess(data);\n }\n }\n\n /**\n * Gérer l'expiration du QR\n */\n handleQRExpired(data) {\n if (this.config.onExpired) {\n this.config.onExpired(data);\n }\n }\n\n /**\n * Émettre un événement WebSocket\n */\n emitWebSocketEvent(event, data) {\n if (this.socket && this.socket.connected) {\n this.socket.emit(event, data);\n console.log(`📤 Événement WebSocket émis: ${event}`, data);\n } else if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, impossible d\\'émettre l\\'événement:', event);\n } else {\n console.warn('⚠️ WebSocket non connecté, impossible d\\'émettre l\\'événement:', event);\n }\n }\n\n /**\n * Obtenir le statut de la connexion WebSocket\n */\n getWebSocketStatus() {\n if (!this.socket) {\n return 'not_initialized';\n }\n return this.socket.connected ? 'connected' : 'disconnected';\n }\n\n /**\n * Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)\n */\n forceWebSocketInit() {\n if (typeof io !== 'undefined' && !this.socket) {\n console.log('🔄 Forçage de l\\'initialisation WebSocket...');\n this.initWebSocket();\n }\n }\n\n /**\n * Générer un QR code avec le type configuré\n */\n async generateQR(containerId, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: this.config.type, // Utilise le type configuré\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n this.startAutoRefresh(containerId, this.config.type, options);\n \n // Émettre un événement WebSocket pour la génération du QR\n this.emitWebSocketEvent('qr_generated', {\n serviceId: response.data.service_id,\n type: this.config.type,\n qrCodeUrl: qrImageUrl,\n timestamp: Date.now()\n });\n \n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + this.config.type);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw new Error('Service non disponible');\n }\n }\n\n\n\n /**\n * Générer un QR code avec un type personnalisé\n */\n async generateCustomQR(containerId, type, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: type, // Type personnalisé (1, 2, 3, etc.)\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, type, options);\n this.startAutoRefresh(containerId, type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + type);\n this.displayServiceUnavailable(containerId, type);\n throw new Error('Service non disponible');\n }\n }\n\n // Alias pour maintenir la compatibilité\n async generateAuthQR(containerId, options = {}) {\n return this.generateQR(containerId, options);\n }\n\n async generateKYCQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour KYC\n this.config.type = 2;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(sessionId) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-status', {\n serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Authentification' : type === 2 ? 'Vérification KYC' : type === 3 ? 'Service Type 3' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\">\n <img src=\"${qrUrl}\" alt=\"QR Code SunuID\" style=\"max-width: 300px; height: auto;\">\n </div>\n <div class=\"sunuid-qr-instructions\">\n <p>Scannez ce QR code avec l'application SunuID pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${type.toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, options = {}) {\n try {\n const result = await this.generateQR(containerId, options);\n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw error;\n }\n }\n\n /**\n * Démarrer le rafraîchissement automatique\n */\n startAutoRefresh(containerId, type, options) {\n if (!this.config.autoRefresh) return;\n\n this.refreshTimer = setInterval(async () => {\n try {\n await this.refreshQR(containerId, type, options);\n } catch (error) {\n console.warn('Erreur lors du rafraîchissement automatique:', error);\n }\n }, this.config.refreshInterval);\n }\n\n /**\n * Démarrer le timer de compte à rebours\n */\n\n\n /**\n * Effectuer une requête API\n */\n async makeRequest(endpoint, data) {\n // Utiliser l'endpoint depuis la configuration si disponible\n const endpointPath = window.SunuIDConfig?.endpoints?.[endpoint.replace('/', '')] || endpoint;\n const url = `${this.config.apiUrl}${endpointPath}`;\n \n // Log pour déboguer l'envoi du type\n if (data.type !== undefined) {\n console.log(`🌐 Envoi requête API - Type: ${data.type}, Endpoint: ${endpoint}`);\n }\n \n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n // Fermer la connexion WebSocket\n if (this.socket) {\n this.socket.disconnect();\n this.socket = null;\n console.log('🌐 WebSocket déconnecté');\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","socket","websocketRetryCount","maxWebSocketRetries","init","_createClass","key","value","Error","console","log","initWebSocket","_this","io","warn","concat","setTimeout","ip","getClientIP","query","token","userId","username","on","id","reason","error","data","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","emitWebSocketEvent","event","connected","emit","getWebSocketStatus","forceWebSocketInit","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","imageBaseUrl","qrImageUrl","_args","_t","w","_context","p","n","makeRequest","v","success","qrcode","displayQRCode","startAutoRefresh","serviceId","service_id","qrCodeUrl","timestamp","Date","now","a","sessionId","message","displayServiceUnavailable","generateQR","_x","apply","_generateCustomQR","_callee2","_args2","_t2","_context2","generateCustomQR","_x2","_x3","_generateAuthQR","_callee3","_args3","_context3","generateAuthQR","_x4","_generateKYCQR","_callee4","originalType","_args4","_context4","f","generateKYCQR","_x5","_checkQRStatus","_callee5","_t3","_context5","handleError","checkQRStatus","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_args6","_t4","_context6","refreshQR","_x7","_this2","setInterval","_callee7","_t5","_context7","_makeRequest","_callee8","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t6","_context8","endpoints","replace","fetch","method","headers","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x8","_x9","querySelector","destroy","clearInterval","disconnect","sunuidInstance","initSunuID"],"mappings":"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"}
|
package/dist/sunuid-sdk.js
CHANGED
|
@@ -232,6 +232,8 @@
|
|
|
232
232
|
this.refreshTimer = null;
|
|
233
233
|
this.isInitialized = false;
|
|
234
234
|
this.socket = null;
|
|
235
|
+
this.websocketRetryCount = 0;
|
|
236
|
+
this.maxWebSocketRetries = 5;
|
|
235
237
|
this.init();
|
|
236
238
|
}
|
|
237
239
|
|
|
@@ -261,11 +263,16 @@
|
|
|
261
263
|
try {
|
|
262
264
|
// Vérifier si Socket.IO est disponible
|
|
263
265
|
if (typeof io === 'undefined') {
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
266
|
+
this.websocketRetryCount++;
|
|
267
|
+
if (this.websocketRetryCount <= this.maxWebSocketRetries) {
|
|
268
|
+
console.warn("\u26A0\uFE0F Socket.IO non disponible (tentative ".concat(this.websocketRetryCount, "/").concat(this.maxWebSocketRetries, "), WebSocket sera initialis\xE9 plus tard"));
|
|
269
|
+
// Réessayer après un délai
|
|
270
|
+
setTimeout(function () {
|
|
271
|
+
return _this.initWebSocket();
|
|
272
|
+
}, 1000);
|
|
273
|
+
} else {
|
|
274
|
+
console.warn('⚠️ Socket.IO non disponible après plusieurs tentatives, WebSocket désactivé');
|
|
275
|
+
}
|
|
269
276
|
return;
|
|
270
277
|
}
|
|
271
278
|
|
package/dist/sunuid-sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sunuid-sdk.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // Vérifier si Socket.IO est disponible\n if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard');\n // Réessayer après un délai\n setTimeout(() => this.initWebSocket(), 1000);\n return;\n }\n \n // Obtenir l'IP du client (simulation)\n const ip = this.getClientIP();\n \n // Initialiser la connexion WebSocket si elle n'existe pas\n if (!this.socket) {\n this.socket = io('wss://samasocket.fayma.sn:9443', {\n query: {\n token: this.config.clientId,\n type: 'web',\n userId: this.config.clientId,\n username: ip\n }\n });\n\n // Gestion des événements WebSocket\n this.socket.on('connect', () => {\n console.log('🌐 WebSocket connecté avec succès');\n console.log('📊 Socket ID:', this.socket.id);\n });\n\n this.socket.on('disconnect', (reason) => {\n console.log('❌ WebSocket déconnecté:', reason);\n });\n\n this.socket.on('connect_error', (error) => {\n console.error('❌ Erreur connexion WebSocket:', error);\n });\n\n // Écouter les événements spécifiques\n this.socket.on('qr_status_update', (data) => {\n console.log('📱 Mise à jour statut QR reçue:', data);\n this.handleQRStatusUpdate(data);\n });\n\n this.socket.on('qr_scan_success', (data) => {\n console.log('✅ Scan QR réussi reçu:', data);\n this.handleQRScanSuccess(data);\n });\n\n this.socket.on('qr_expired', (data) => {\n console.log('⏰ QR expiré reçu:', data);\n this.handleQRExpired(data);\n });\n }\n } catch (error) {\n console.error('❌ Erreur initialisation WebSocket:', error);\n }\n }\n\n /**\n * Obtenir l'IP du client (simulation)\n */\n getClientIP() {\n // Simulation - en production, vous pourriez utiliser un service d'IP\n return '127.0.0.1';\n }\n\n /**\n * Gérer la mise à jour du statut QR\n */\n handleQRStatusUpdate(data) {\n if (this.config.onStatusUpdate) {\n this.config.onStatusUpdate(data);\n }\n }\n\n /**\n * Gérer le succès du scan QR\n */\n handleQRScanSuccess(data) {\n if (this.config.onSuccess) {\n this.config.onSuccess(data);\n }\n }\n\n /**\n * Gérer l'expiration du QR\n */\n handleQRExpired(data) {\n if (this.config.onExpired) {\n this.config.onExpired(data);\n }\n }\n\n /**\n * Émettre un événement WebSocket\n */\n emitWebSocketEvent(event, data) {\n if (this.socket && this.socket.connected) {\n this.socket.emit(event, data);\n console.log(`📤 Événement WebSocket émis: ${event}`, data);\n } else if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, impossible d\\'émettre l\\'événement:', event);\n } else {\n console.warn('⚠️ WebSocket non connecté, impossible d\\'émettre l\\'événement:', event);\n }\n }\n\n /**\n * Obtenir le statut de la connexion WebSocket\n */\n getWebSocketStatus() {\n if (!this.socket) {\n return 'not_initialized';\n }\n return this.socket.connected ? 'connected' : 'disconnected';\n }\n\n /**\n * Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)\n */\n forceWebSocketInit() {\n if (typeof io !== 'undefined' && !this.socket) {\n console.log('🔄 Forçage de l\\'initialisation WebSocket...');\n this.initWebSocket();\n }\n }\n\n /**\n * Générer un QR code avec le type configuré\n */\n async generateQR(containerId, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: this.config.type, // Utilise le type configuré\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n this.startAutoRefresh(containerId, this.config.type, options);\n \n // Émettre un événement WebSocket pour la génération du QR\n this.emitWebSocketEvent('qr_generated', {\n serviceId: response.data.service_id,\n type: this.config.type,\n qrCodeUrl: qrImageUrl,\n timestamp: Date.now()\n });\n \n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + this.config.type);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw new Error('Service non disponible');\n }\n }\n\n\n\n /**\n * Générer un QR code avec un type personnalisé\n */\n async generateCustomQR(containerId, type, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: type, // Type personnalisé (1, 2, 3, etc.)\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, type, options);\n this.startAutoRefresh(containerId, type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + type);\n this.displayServiceUnavailable(containerId, type);\n throw new Error('Service non disponible');\n }\n }\n\n // Alias pour maintenir la compatibilité\n async generateAuthQR(containerId, options = {}) {\n return this.generateQR(containerId, options);\n }\n\n async generateKYCQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour KYC\n this.config.type = 2;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(sessionId) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-status', {\n serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Authentification' : type === 2 ? 'Vérification KYC' : type === 3 ? 'Service Type 3' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\">\n <img src=\"${qrUrl}\" alt=\"QR Code SunuID\" style=\"max-width: 300px; height: auto;\">\n </div>\n <div class=\"sunuid-qr-instructions\">\n <p>Scannez ce QR code avec l'application SunuID pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${type.toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, options = {}) {\n try {\n const result = await this.generateQR(containerId, options);\n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw error;\n }\n }\n\n /**\n * Démarrer le rafraîchissement automatique\n */\n startAutoRefresh(containerId, type, options) {\n if (!this.config.autoRefresh) return;\n\n this.refreshTimer = setInterval(async () => {\n try {\n await this.refreshQR(containerId, type, options);\n } catch (error) {\n console.warn('Erreur lors du rafraîchissement automatique:', error);\n }\n }, this.config.refreshInterval);\n }\n\n /**\n * Démarrer le timer de compte à rebours\n */\n\n\n /**\n * Effectuer une requête API\n */\n async makeRequest(endpoint, data) {\n // Utiliser l'endpoint depuis la configuration si disponible\n const endpointPath = window.SunuIDConfig?.endpoints?.[endpoint.replace('/', '')] || endpoint;\n const url = `${this.config.apiUrl}${endpointPath}`;\n \n // Log pour déboguer l'envoi du type\n if (data.type !== undefined) {\n console.log(`🌐 Envoi requête API - Type: ${data.type}, Endpoint: ${endpoint}`);\n }\n \n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n // Fermer la connexion WebSocket\n if (this.socket) {\n this.socket.disconnect();\n this.socket = null;\n console.log('🌐 WebSocket déconnecté');\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","socket","init","_createClass","key","value","Error","console","log","initWebSocket","_this","io","warn","setTimeout","ip","getClientIP","query","token","userId","username","on","id","reason","error","data","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","emitWebSocketEvent","event","connected","emit","concat","getWebSocketStatus","forceWebSocketInit","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","imageBaseUrl","qrImageUrl","_args","_t","w","_context","p","n","makeRequest","v","success","qrcode","displayQRCode","startAutoRefresh","serviceId","service_id","qrCodeUrl","timestamp","Date","now","a","sessionId","message","displayServiceUnavailable","generateQR","_x","apply","_generateCustomQR","_callee2","_args2","_t2","_context2","generateCustomQR","_x2","_x3","_generateAuthQR","_callee3","_args3","_context3","generateAuthQR","_x4","_generateKYCQR","_callee4","originalType","_args4","_context4","f","generateKYCQR","_x5","_checkQRStatus","_callee5","_t3","_context5","handleError","checkQRStatus","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_args6","_t4","_context6","refreshQR","_x7","_this2","setInterval","_callee7","_t5","_context7","_makeRequest","_callee8","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t6","_context8","endpoints","replace","fetch","method","headers","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x8","_x9","querySelector","destroy","clearInterval","disconnect","sunuidInstance","initSunuID"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sunuid-sdk.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n this.websocketRetryCount = 0;\n this.maxWebSocketRetries = 5;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // Vérifier si Socket.IO est disponible\n if (typeof io === 'undefined') {\n this.websocketRetryCount++;\n \n if (this.websocketRetryCount <= this.maxWebSocketRetries) {\n console.warn(`⚠️ Socket.IO non disponible (tentative ${this.websocketRetryCount}/${this.maxWebSocketRetries}), WebSocket sera initialisé plus tard`);\n // Réessayer après un délai\n setTimeout(() => this.initWebSocket(), 1000);\n } else {\n console.warn('⚠️ Socket.IO non disponible après plusieurs tentatives, WebSocket désactivé');\n }\n return;\n }\n \n // Obtenir l'IP du client (simulation)\n const ip = this.getClientIP();\n \n // Initialiser la connexion WebSocket si elle n'existe pas\n if (!this.socket) {\n this.socket = io('wss://samasocket.fayma.sn:9443', {\n query: {\n token: this.config.clientId,\n type: 'web',\n userId: this.config.clientId,\n username: ip\n }\n });\n\n // Gestion des événements WebSocket\n this.socket.on('connect', () => {\n console.log('🌐 WebSocket connecté avec succès');\n console.log('📊 Socket ID:', this.socket.id);\n });\n\n this.socket.on('disconnect', (reason) => {\n console.log('❌ WebSocket déconnecté:', reason);\n });\n\n this.socket.on('connect_error', (error) => {\n console.error('❌ Erreur connexion WebSocket:', error);\n });\n\n // Écouter les événements spécifiques\n this.socket.on('qr_status_update', (data) => {\n console.log('📱 Mise à jour statut QR reçue:', data);\n this.handleQRStatusUpdate(data);\n });\n\n this.socket.on('qr_scan_success', (data) => {\n console.log('✅ Scan QR réussi reçu:', data);\n this.handleQRScanSuccess(data);\n });\n\n this.socket.on('qr_expired', (data) => {\n console.log('⏰ QR expiré reçu:', data);\n this.handleQRExpired(data);\n });\n }\n } catch (error) {\n console.error('❌ Erreur initialisation WebSocket:', error);\n }\n }\n\n /**\n * Obtenir l'IP du client (simulation)\n */\n getClientIP() {\n // Simulation - en production, vous pourriez utiliser un service d'IP\n return '127.0.0.1';\n }\n\n /**\n * Gérer la mise à jour du statut QR\n */\n handleQRStatusUpdate(data) {\n if (this.config.onStatusUpdate) {\n this.config.onStatusUpdate(data);\n }\n }\n\n /**\n * Gérer le succès du scan QR\n */\n handleQRScanSuccess(data) {\n if (this.config.onSuccess) {\n this.config.onSuccess(data);\n }\n }\n\n /**\n * Gérer l'expiration du QR\n */\n handleQRExpired(data) {\n if (this.config.onExpired) {\n this.config.onExpired(data);\n }\n }\n\n /**\n * Émettre un événement WebSocket\n */\n emitWebSocketEvent(event, data) {\n if (this.socket && this.socket.connected) {\n this.socket.emit(event, data);\n console.log(`📤 Événement WebSocket émis: ${event}`, data);\n } else if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, impossible d\\'émettre l\\'événement:', event);\n } else {\n console.warn('⚠️ WebSocket non connecté, impossible d\\'émettre l\\'événement:', event);\n }\n }\n\n /**\n * Obtenir le statut de la connexion WebSocket\n */\n getWebSocketStatus() {\n if (!this.socket) {\n return 'not_initialized';\n }\n return this.socket.connected ? 'connected' : 'disconnected';\n }\n\n /**\n * Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)\n */\n forceWebSocketInit() {\n if (typeof io !== 'undefined' && !this.socket) {\n console.log('🔄 Forçage de l\\'initialisation WebSocket...');\n this.initWebSocket();\n }\n }\n\n /**\n * Générer un QR code avec le type configuré\n */\n async generateQR(containerId, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: this.config.type, // Utilise le type configuré\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n this.startAutoRefresh(containerId, this.config.type, options);\n \n // Émettre un événement WebSocket pour la génération du QR\n this.emitWebSocketEvent('qr_generated', {\n serviceId: response.data.service_id,\n type: this.config.type,\n qrCodeUrl: qrImageUrl,\n timestamp: Date.now()\n });\n \n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + this.config.type);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw new Error('Service non disponible');\n }\n }\n\n\n\n /**\n * Générer un QR code avec un type personnalisé\n */\n async generateCustomQR(containerId, type, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: type, // Type personnalisé (1, 2, 3, etc.)\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, type, options);\n this.startAutoRefresh(containerId, type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + type);\n this.displayServiceUnavailable(containerId, type);\n throw new Error('Service non disponible');\n }\n }\n\n // Alias pour maintenir la compatibilité\n async generateAuthQR(containerId, options = {}) {\n return this.generateQR(containerId, options);\n }\n\n async generateKYCQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour KYC\n this.config.type = 2;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(sessionId) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-status', {\n serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Authentification' : type === 2 ? 'Vérification KYC' : type === 3 ? 'Service Type 3' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\">\n <img src=\"${qrUrl}\" alt=\"QR Code SunuID\" style=\"max-width: 300px; height: auto;\">\n </div>\n <div class=\"sunuid-qr-instructions\">\n <p>Scannez ce QR code avec l'application SunuID pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${type.toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, options = {}) {\n try {\n const result = await this.generateQR(containerId, options);\n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw error;\n }\n }\n\n /**\n * Démarrer le rafraîchissement automatique\n */\n startAutoRefresh(containerId, type, options) {\n if (!this.config.autoRefresh) return;\n\n this.refreshTimer = setInterval(async () => {\n try {\n await this.refreshQR(containerId, type, options);\n } catch (error) {\n console.warn('Erreur lors du rafraîchissement automatique:', error);\n }\n }, this.config.refreshInterval);\n }\n\n /**\n * Démarrer le timer de compte à rebours\n */\n\n\n /**\n * Effectuer une requête API\n */\n async makeRequest(endpoint, data) {\n // Utiliser l'endpoint depuis la configuration si disponible\n const endpointPath = window.SunuIDConfig?.endpoints?.[endpoint.replace('/', '')] || endpoint;\n const url = `${this.config.apiUrl}${endpointPath}`;\n \n // Log pour déboguer l'envoi du type\n if (data.type !== undefined) {\n console.log(`🌐 Envoi requête API - Type: ${data.type}, Endpoint: ${endpoint}`);\n }\n \n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n // Fermer la connexion WebSocket\n if (this.socket) {\n this.socket.disconnect();\n this.socket = null;\n console.log('🌐 WebSocket déconnecté');\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","socket","websocketRetryCount","maxWebSocketRetries","init","_createClass","key","value","Error","console","log","initWebSocket","_this","io","warn","concat","setTimeout","ip","getClientIP","query","token","userId","username","on","id","reason","error","data","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","emitWebSocketEvent","event","connected","emit","getWebSocketStatus","forceWebSocketInit","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","imageBaseUrl","qrImageUrl","_args","_t","w","_context","p","n","makeRequest","v","success","qrcode","displayQRCode","startAutoRefresh","serviceId","service_id","qrCodeUrl","timestamp","Date","now","a","sessionId","message","displayServiceUnavailable","generateQR","_x","apply","_generateCustomQR","_callee2","_args2","_t2","_context2","generateCustomQR","_x2","_x3","_generateAuthQR","_callee3","_args3","_context3","generateAuthQR","_x4","_generateKYCQR","_callee4","originalType","_args4","_context4","f","generateKYCQR","_x5","_checkQRStatus","_callee5","_t3","_context5","handleError","checkQRStatus","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_args6","_t4","_context6","refreshQR","_x7","_this2","setInterval","_callee7","_t5","_context7","_makeRequest","_callee8","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t6","_context8","endpoints","replace","fetch","method","headers","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x8","_x9","querySelector","destroy","clearInterval","disconnect","sunuidInstance","initSunuID"],"mappings":"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"}
|
package/dist/sunuid-sdk.min.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
!function(){"use strict";function e(e,n,
|
|
1
|
+
!function(){"use strict";function e(e,t,n,r,i,o,c){try{var s=e[o](c),a=s.value}catch(e){return void n(e)}s.done?t(a):Promise.resolve(a).then(r,i)}function t(t){return function(){var n=this,r=arguments;return new Promise(function(i,o){var c=t.apply(n,r);function s(t){e(c,i,o,s,a,"next",t)}function a(t){e(c,i,o,s,a,"throw",t)}s(void 0)})}}function n(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,a(r.key),r)}}function r(e,t,n){return(t=a(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach(function(t){r(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function c(){
|
|
2
2
|
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
3
|
-
var e,n
|
|
3
|
+
var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function o(n,r,i,o){var c=r&&r.prototype instanceof u?r:u,l=Object.create(c.prototype);return s(l,"_invoke",function(n,r,i){var o,c,s,u=0,l=i||[],f=!1,d={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(t,n){return o=t,c=0,s=e,d.n=n,a}};function h(n,r){for(c=n,s=r,t=0;!f&&u&&!i&&t<l.length;t++){var i,o=l[t],h=d.p,p=o[2];n>3?(i=p===r)&&(s=o[(c=o[4])?5:(c=3,3)],o[4]=o[5]=e):o[0]<=h&&((i=n<2&&h<o[1])?(c=0,d.v=r,d.n=o[1]):h<p&&(i=n<3||o[0]>r||r>p)&&(o[4]=n,o[5]=r,d.n=p,c=0))}if(i||n>1)return a;throw f=!0,r}return function(i,l,p){if(u>1)throw TypeError("Generator is already running");for(f&&1===l&&h(l,p),c=l,s=p;(t=c<2?e:s)||!f;){o||(c?c<3?(c>1&&(d.n=-1),h(c,s)):d.n=s:d.v=s);try{if(u=2,o){if(c||(i="next"),t=o[i]){if(!(t=t.call(o,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,c<2&&(c=0)}else 1===c&&(t=o.return)&&t.call(o),c<2&&(s=TypeError("The iterator does not provide a '"+i+"' method"),c=1);o=e}else if((t=(f=d.n<0)?s:n.call(r,d))!==a)break}catch(t){o=e,c=1,s=t}finally{u=1}}return{value:t,done:f}}}(n,i,o),!0),l}var a={};function u(){}function l(){}function f(){}t=Object.getPrototypeOf;var d=[][r]?t(t([][r]())):(s(t={},r,function(){return this}),t),h=f.prototype=u.prototype=Object.create(d);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,s(e,i,"GeneratorFunction")),e.prototype=Object.create(h),e}return l.prototype=f,s(h,"constructor",f),s(f,"constructor",l),l.displayName="GeneratorFunction",s(f,i,"GeneratorFunction"),s(h),s(h,i,"Generator"),s(h,r,function(){return this}),s(h,"toString",function(){return"[object Generator]"}),(c=function(){return{w:o,m:p}})()}function s(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}s=function(e,t,n,r){function o(t,n){s(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(o("next",0),o("throw",1),o("return",2))},s(e,t,n,r)}function a(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}
|
|
4
4
|
/**
|
|
5
5
|
* SunuID SDK - Package d'intégration pour partenaires
|
|
6
6
|
*
|
|
7
7
|
* @version 1.0.0
|
|
8
8
|
* @author SunuID Team
|
|
9
9
|
* @license MIT
|
|
10
|
-
*/!function(e,r){var i={apiUrl:(null===(r=e.SunuIDConfig)||void 0===r?void 0:r.apiUrl)||"https://api.sunuid.fayma.sn",clientId:null,secretId:null,type:1,theme:"light",language:"fr",autoRefresh:!0,refreshInterval:3e4,onSuccess:null,onError:null,onStatusUpdate:null,onExpired:null},s=function(){return r=function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=o(o({},i),n),this.qrCode=null,this.refreshTimer=null,this.isInitialized=!1,this.socket=null,this.init()},s=[{key:"init",value:function(){if(!this.config.clientId||!this.config.secretId)throw new Error("SunuID: clientId et secretId sont requis");this.isInitialized=!0,console.log("SunuID SDK initialisé avec succès"),this.initWebSocket()}},{key:"initWebSocket",value:function(){var e=this;try{if("undefined"==typeof io)return console.warn("⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard"),void setTimeout(function(){return e.initWebSocket()},1e3);var n=this.getClientIP();this.socket||(this.socket=io("wss://samasocket.fayma.sn:9443",{query:{token:this.config.clientId,type:"web",userId:this.config.clientId,username:n}}),this.socket.on("connect",function(){console.log("🌐 WebSocket connecté avec succès"),console.log("📊 Socket ID:",e.socket.id)}),this.socket.on("disconnect",function(e){console.log("❌ WebSocket déconnecté:",e)}),this.socket.on("connect_error",function(e){console.error("❌ Erreur connexion WebSocket:",e)}),this.socket.on("qr_status_update",function(n){console.log("📱 Mise à jour statut QR reçue:",n),e.handleQRStatusUpdate(n)}),this.socket.on("qr_scan_success",function(n){console.log("✅ Scan QR réussi reçu:",n),e.handleQRScanSuccess(n)}),this.socket.on("qr_expired",function(n){console.log("⏰ QR expiré reçu:",n),e.handleQRExpired(n)}))}catch(e){console.error("❌ Erreur initialisation WebSocket:",e)}}},{key:"getClientIP",value:function(){return"127.0.0.1"}},{key:"handleQRStatusUpdate",value:function(e){this.config.onStatusUpdate&&this.config.onStatusUpdate(e)}},{key:"handleQRScanSuccess",value:function(e){this.config.onSuccess&&this.config.onSuccess(e)}},{key:"handleQRExpired",value:function(e){this.config.onExpired&&this.config.onExpired(e)}},{key:"emitWebSocketEvent",value:function(e,n){this.socket&&this.socket.connected?(this.socket.emit(e,n),console.log("📤 Événement WebSocket émis: ".concat(e),n)):"undefined"==typeof io?console.warn("⚠️ Socket.IO non disponible, impossible d'émettre l'événement:",e):console.warn("⚠️ WebSocket non connecté, impossible d'émettre l'événement:",e)}},{key:"getWebSocketStatus",value:function(){return this.socket?this.socket.connected?"connected":"disconnected":"not_initialized"}},{key:"forceWebSocketInit",value:function(){"undefined"==typeof io||this.socket||(console.log("🔄 Forçage de l'initialisation WebSocket..."),this.initWebSocket())}},{key:"generateQR",value:(v=n(c().m(function e(n){var t,r,i,s,a=arguments;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t=a.length>1&&void 0!==a[1]?a[1]:{},this.isInitialized){e.n=1;break}throw new Error("SunuID: SDK non initialisé");case 1:return e.p=1,e.n=2,this.makeRequest("/qr-generate",o({type:this.config.type},t));case 2:if(!(r=e.v).success){e.n=3;break}return i="".concat("https://sunuid.fayma.sn").concat(r.data.qrcode),this.displayQRCode(n,i,this.config.type,t),this.startAutoRefresh(n,this.config.type,t),this.emitWebSocketEvent("qr_generated",{serviceId:r.data.service_id,type:this.config.type,qrCodeUrl:i,timestamp:Date.now()}),e.a(2,o(o({},r.data),{},{qrCodeUrl:i,sessionId:r.data.service_id}));case 3:throw new Error(r.message||"Erreur lors de la génération du QR code");case 4:e.n=6;break;case 5:throw e.p=5,s=e.v,console.error("Erreur API détectée:",s.message),console.log('Affichage du message "Service non disponible" pour type '+this.config.type),this.displayServiceUnavailable(n,this.config.type),new Error("Service non disponible");case 6:return e.a(2)}},e,this,[[1,5]])})),function(e){return v.apply(this,arguments)})},{key:"generateCustomQR",value:(p=n(c().m(function e(n,t){var r,i,s,a,u=arguments;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:if(r=u.length>2&&void 0!==u[2]?u[2]:{},this.isInitialized){e.n=1;break}throw new Error("SunuID: SDK non initialisé");case 1:return e.p=1,e.n=2,this.makeRequest("/qr-generate",o({type:t},r));case 2:if(!(i=e.v).success){e.n=3;break}return s="".concat("https://sunuid.fayma.sn").concat(i.data.qrcode),this.displayQRCode(n,s,t,r),this.startAutoRefresh(n,t,r),e.a(2,o(o({},i.data),{},{qrCodeUrl:s,sessionId:i.data.service_id}));case 3:throw new Error(i.message||"Erreur lors de la génération du QR code");case 4:e.n=6;break;case 5:throw e.p=5,a=e.v,console.error("Erreur API détectée:",a.message),console.log('Affichage du message "Service non disponible" pour type '+t),this.displayServiceUnavailable(n,t),new Error("Service non disponible");case 6:return e.a(2)}},e,this,[[1,5]])})),function(e,n){return p.apply(this,arguments)})},{key:"generateAuthQR",value:(h=n(c().m(function e(n){var t,r=arguments;return c().w(function(e){for(;;)if(0===e.n)return t=r.length>1&&void 0!==r[1]?r[1]:{},e.a(2,this.generateQR(n,t))},e,this)})),function(e){return h.apply(this,arguments)})},{key:"generateKYCQR",value:(d=n(c().m(function e(n){var t,r,i=arguments;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:return t=i.length>1&&void 0!==i[1]?i[1]:{},r=this.config.type,this.config.type=2,e.p=1,e.n=2,this.generateQR(n,t);case 2:return e.a(2,e.v);case 3:return e.p=3,this.config.type=r,e.f(3);case 4:return e.a(2)}},e,this,[[1,,3,4]])})),function(e){return d.apply(this,arguments)})},{key:"checkQRStatus",value:(f=n(c().m(function e(n){var t,r;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:if(this.isInitialized){e.n=1;break}throw new Error("SunuID: SDK non initialisé");case 1:return e.p=1,e.n=2,this.makeRequest("/qr-status",{serviceId:n});case 2:if(!(t=e.v).success){e.n=3;break}return e.a(2,t.data);case 3:throw new Error(t.message||"Erreur lors de la vérification du statut");case 4:e.n=6;break;case 5:throw e.p=5,r=e.v,this.handleError(r),r;case 6:return e.a(2)}},e,this,[[1,5]])})),function(e){return f.apply(this,arguments)})},{key:"displayQRCode",value:function(e,n,t){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=document.getElementById(e);if(!i)throw new Error("Conteneur avec l'ID \"".concat(e,'" non trouvé'));i.innerHTML="";var o=document.createElement("div");o.className="sunuid-qr-code",o.innerHTML='\n <div class="sunuid-qr-header">\n <h3>'.concat(1===t?"Authentification":2===t?"Vérification KYC":3===t?"Service Type 3":"Service Type "+t,'</h3>\n </div>\n <div class="sunuid-qr-image">\n <img src="').concat(n,'" alt="QR Code SunuID" style="max-width: 300px; height: auto;">\n </div>\n <div class="sunuid-qr-instructions">\n <p>Scannez ce QR code avec l\'application SunuID pour vous connecter</p>\n </div>\n <div class="sunuid-qr-status" id="sunuid-status">\n <p>En attente de scan...</p>\n </div>\n '),i.appendChild(o),this.applyTheme(r.theme||this.config.theme)}},{key:"displayServiceUnavailable",value:function(e,n){console.log("displayServiceUnavailable appelée pour ".concat(e,", type: ").concat(n));var t=document.getElementById(e);t?t.innerHTML='\n <div class="sunuid-service-unavailable" style="\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n ">\n <div style="font-size: 48px; margin-bottom: 20px;">⚠️</div>\n <h3 style="margin: 0 0 10px 0; color: #495057;">Service Non Disponible</h3>\n <p style="margin: 0; font-size: 14px;">\n Le service d\'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style="margin-top: 20px; font-size: 12px; color: #adb5bd;">\n Type: '.concat(n.toUpperCase(),"\n </div>\n </div>\n "):console.error("Container ".concat(e," non trouvé"))}},{key:"refreshQR",value:(l=n(c().m(function e(n){var t,r,i,o=arguments;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:return t=o.length>1&&void 0!==o[1]?o[1]:{},e.p=1,e.n=2,this.generateQR(n,t);case 2:return r=e.v,e.a(2,r);case 3:throw e.p=3,i=e.v,console.error("Erreur lors du rafraîchissement:",i.message),this.displayServiceUnavailable(n,this.config.type),i;case 4:return e.a(2)}},e,this,[[1,3]])})),function(e){return l.apply(this,arguments)})},{key:"startAutoRefresh",value:function(e,t,r){var i=this;this.config.autoRefresh&&(this.refreshTimer=setInterval(n(c().m(function n(){var o;return c().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.p=0,n.n=1,i.refreshQR(e,t,r);case 1:n.n=3;break;case 2:n.p=2,o=n.v,console.warn("Erreur lors du rafraîchissement automatique:",o);case 3:return n.a(2)}},n,null,[[0,2]])})),this.config.refreshInterval))}},{key:"makeRequest",value:(u=n(c().m(function n(t,r){var i,s,a,u,l,f,d,h;return c().w(function(n){for(;;)switch(n.p=n.n){case 0:return s=(null===(i=e.SunuIDConfig)||void 0===i||null===(i=i.endpoints)||void 0===i?void 0:i[t.replace("/","")])||t,a="".concat(this.config.apiUrl).concat(s),void 0!==r.type&&console.log("🌐 Envoi requête API - Type: ".concat(r.type,", Endpoint: ").concat(t)),n.p=1,n.n=2,fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(this.config.clientId,":").concat(this.config.secretId),Accept:"application/json"},body:JSON.stringify(o(o({},r),{},{client_id:this.config.clientId,secret_id:this.config.secretId}))});case 2:if((u=n.v).ok){n.n=4;break}return n.n=3,u.text();case 3:l=n.v;try{f=JSON.parse(l)}catch(e){f={message:l}}throw new Error(f.message||"Erreur HTTP: ".concat(u.status));case 4:return n.n=5,u.json();case 5:return d=n.v,n.a(2,d);case 6:throw n.p=6,h=n.v,console.error("Erreur API SunuID:",h),h;case 7:return n.a(2)}},n,this,[[1,6]])})),function(e,n){return u.apply(this,arguments)})},{key:"applyTheme",value:function(e){var n=document.querySelector(".sunuid-qr-code");n&&(n.className="sunuid-qr-code sunuid-theme-".concat(e))}},{key:"handleError",value:function(e){console.error("SunuID SDK Error:",e),this.config.onError&&this.config.onError(e)}},{key:"destroy",value:function(){this.refreshTimer&&clearInterval(this.refreshTimer),this.socket&&(this.socket.disconnect(),this.socket=null,console.log("🌐 WebSocket déconnecté")),this.isInitialized=!1,console.log("SunuID SDK détruit")}}],s&&t(r.prototype,s),a&&t(r,a),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,s,a,u,l,f,d,h,p,v}();e.SunuID=s,e.sunuidInstance=null,e.initSunuID=function(n){try{return e.sunuidInstance=new s(n),e.sunuidInstance}catch(e){throw console.error("Erreur lors de l'initialisation de SunuID:",e),e}}}(window)}();
|
|
10
|
+
*/!function(e,r){var i={apiUrl:(null===(r=e.SunuIDConfig)||void 0===r?void 0:r.apiUrl)||"https://api.sunuid.fayma.sn",clientId:null,secretId:null,type:1,theme:"light",language:"fr",autoRefresh:!0,refreshInterval:3e4,onSuccess:null,onError:null,onStatusUpdate:null,onExpired:null},s=function(){return r=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=o(o({},i),t),this.qrCode=null,this.refreshTimer=null,this.isInitialized=!1,this.socket=null,this.websocketRetryCount=0,this.maxWebSocketRetries=5,this.init()},s=[{key:"init",value:function(){if(!this.config.clientId||!this.config.secretId)throw new Error("SunuID: clientId et secretId sont requis");this.isInitialized=!0,console.log("SunuID SDK initialisé avec succès"),this.initWebSocket()}},{key:"initWebSocket",value:function(){var e=this;try{if("undefined"==typeof io)return this.websocketRetryCount++,void(this.websocketRetryCount<=this.maxWebSocketRetries?(console.warn("⚠️ Socket.IO non disponible (tentative ".concat(this.websocketRetryCount,"/").concat(this.maxWebSocketRetries,"), WebSocket sera initialisé plus tard")),setTimeout(function(){return e.initWebSocket()},1e3)):console.warn("⚠️ Socket.IO non disponible après plusieurs tentatives, WebSocket désactivé"));var t=this.getClientIP();this.socket||(this.socket=io("wss://samasocket.fayma.sn:9443",{query:{token:this.config.clientId,type:"web",userId:this.config.clientId,username:t}}),this.socket.on("connect",function(){console.log("🌐 WebSocket connecté avec succès"),console.log("📊 Socket ID:",e.socket.id)}),this.socket.on("disconnect",function(e){console.log("❌ WebSocket déconnecté:",e)}),this.socket.on("connect_error",function(e){console.error("❌ Erreur connexion WebSocket:",e)}),this.socket.on("qr_status_update",function(t){console.log("📱 Mise à jour statut QR reçue:",t),e.handleQRStatusUpdate(t)}),this.socket.on("qr_scan_success",function(t){console.log("✅ Scan QR réussi reçu:",t),e.handleQRScanSuccess(t)}),this.socket.on("qr_expired",function(t){console.log("⏰ QR expiré reçu:",t),e.handleQRExpired(t)}))}catch(e){console.error("❌ Erreur initialisation WebSocket:",e)}}},{key:"getClientIP",value:function(){return"127.0.0.1"}},{key:"handleQRStatusUpdate",value:function(e){this.config.onStatusUpdate&&this.config.onStatusUpdate(e)}},{key:"handleQRScanSuccess",value:function(e){this.config.onSuccess&&this.config.onSuccess(e)}},{key:"handleQRExpired",value:function(e){this.config.onExpired&&this.config.onExpired(e)}},{key:"emitWebSocketEvent",value:function(e,t){this.socket&&this.socket.connected?(this.socket.emit(e,t),console.log("📤 Événement WebSocket émis: ".concat(e),t)):"undefined"==typeof io?console.warn("⚠️ Socket.IO non disponible, impossible d'émettre l'événement:",e):console.warn("⚠️ WebSocket non connecté, impossible d'émettre l'événement:",e)}},{key:"getWebSocketStatus",value:function(){return this.socket?this.socket.connected?"connected":"disconnected":"not_initialized"}},{key:"forceWebSocketInit",value:function(){"undefined"==typeof io||this.socket||(console.log("🔄 Forçage de l'initialisation WebSocket..."),this.initWebSocket())}},{key:"generateQR",value:(v=t(c().m(function e(t){var n,r,i,s,a=arguments;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:if(n=a.length>1&&void 0!==a[1]?a[1]:{},this.isInitialized){e.n=1;break}throw new Error("SunuID: SDK non initialisé");case 1:return e.p=1,e.n=2,this.makeRequest("/qr-generate",o({type:this.config.type},n));case 2:if(!(r=e.v).success){e.n=3;break}return i="".concat("https://sunuid.fayma.sn").concat(r.data.qrcode),this.displayQRCode(t,i,this.config.type,n),this.startAutoRefresh(t,this.config.type,n),this.emitWebSocketEvent("qr_generated",{serviceId:r.data.service_id,type:this.config.type,qrCodeUrl:i,timestamp:Date.now()}),e.a(2,o(o({},r.data),{},{qrCodeUrl:i,sessionId:r.data.service_id}));case 3:throw new Error(r.message||"Erreur lors de la génération du QR code");case 4:e.n=6;break;case 5:throw e.p=5,s=e.v,console.error("Erreur API détectée:",s.message),console.log('Affichage du message "Service non disponible" pour type '+this.config.type),this.displayServiceUnavailable(t,this.config.type),new Error("Service non disponible");case 6:return e.a(2)}},e,this,[[1,5]])})),function(e){return v.apply(this,arguments)})},{key:"generateCustomQR",value:(p=t(c().m(function e(t,n){var r,i,s,a,u=arguments;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:if(r=u.length>2&&void 0!==u[2]?u[2]:{},this.isInitialized){e.n=1;break}throw new Error("SunuID: SDK non initialisé");case 1:return e.p=1,e.n=2,this.makeRequest("/qr-generate",o({type:n},r));case 2:if(!(i=e.v).success){e.n=3;break}return s="".concat("https://sunuid.fayma.sn").concat(i.data.qrcode),this.displayQRCode(t,s,n,r),this.startAutoRefresh(t,n,r),e.a(2,o(o({},i.data),{},{qrCodeUrl:s,sessionId:i.data.service_id}));case 3:throw new Error(i.message||"Erreur lors de la génération du QR code");case 4:e.n=6;break;case 5:throw e.p=5,a=e.v,console.error("Erreur API détectée:",a.message),console.log('Affichage du message "Service non disponible" pour type '+n),this.displayServiceUnavailable(t,n),new Error("Service non disponible");case 6:return e.a(2)}},e,this,[[1,5]])})),function(e,t){return p.apply(this,arguments)})},{key:"generateAuthQR",value:(h=t(c().m(function e(t){var n,r=arguments;return c().w(function(e){for(;;)if(0===e.n)return n=r.length>1&&void 0!==r[1]?r[1]:{},e.a(2,this.generateQR(t,n))},e,this)})),function(e){return h.apply(this,arguments)})},{key:"generateKYCQR",value:(d=t(c().m(function e(t){var n,r,i=arguments;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:return n=i.length>1&&void 0!==i[1]?i[1]:{},r=this.config.type,this.config.type=2,e.p=1,e.n=2,this.generateQR(t,n);case 2:return e.a(2,e.v);case 3:return e.p=3,this.config.type=r,e.f(3);case 4:return e.a(2)}},e,this,[[1,,3,4]])})),function(e){return d.apply(this,arguments)})},{key:"checkQRStatus",value:(f=t(c().m(function e(t){var n,r;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:if(this.isInitialized){e.n=1;break}throw new Error("SunuID: SDK non initialisé");case 1:return e.p=1,e.n=2,this.makeRequest("/qr-status",{serviceId:t});case 2:if(!(n=e.v).success){e.n=3;break}return e.a(2,n.data);case 3:throw new Error(n.message||"Erreur lors de la vérification du statut");case 4:e.n=6;break;case 5:throw e.p=5,r=e.v,this.handleError(r),r;case 6:return e.a(2)}},e,this,[[1,5]])})),function(e){return f.apply(this,arguments)})},{key:"displayQRCode",value:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=document.getElementById(e);if(!i)throw new Error("Conteneur avec l'ID \"".concat(e,'" non trouvé'));i.innerHTML="";var o=document.createElement("div");o.className="sunuid-qr-code",o.innerHTML='\n <div class="sunuid-qr-header">\n <h3>'.concat(1===n?"Authentification":2===n?"Vérification KYC":3===n?"Service Type 3":"Service Type "+n,'</h3>\n </div>\n <div class="sunuid-qr-image">\n <img src="').concat(t,'" alt="QR Code SunuID" style="max-width: 300px; height: auto;">\n </div>\n <div class="sunuid-qr-instructions">\n <p>Scannez ce QR code avec l\'application SunuID pour vous connecter</p>\n </div>\n <div class="sunuid-qr-status" id="sunuid-status">\n <p>En attente de scan...</p>\n </div>\n '),i.appendChild(o),this.applyTheme(r.theme||this.config.theme)}},{key:"displayServiceUnavailable",value:function(e,t){console.log("displayServiceUnavailable appelée pour ".concat(e,", type: ").concat(t));var n=document.getElementById(e);n?n.innerHTML='\n <div class="sunuid-service-unavailable" style="\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n ">\n <div style="font-size: 48px; margin-bottom: 20px;">⚠️</div>\n <h3 style="margin: 0 0 10px 0; color: #495057;">Service Non Disponible</h3>\n <p style="margin: 0; font-size: 14px;">\n Le service d\'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style="margin-top: 20px; font-size: 12px; color: #adb5bd;">\n Type: '.concat(t.toUpperCase(),"\n </div>\n </div>\n "):console.error("Container ".concat(e," non trouvé"))}},{key:"refreshQR",value:(l=t(c().m(function e(t){var n,r,i,o=arguments;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:return n=o.length>1&&void 0!==o[1]?o[1]:{},e.p=1,e.n=2,this.generateQR(t,n);case 2:return r=e.v,e.a(2,r);case 3:throw e.p=3,i=e.v,console.error("Erreur lors du rafraîchissement:",i.message),this.displayServiceUnavailable(t,this.config.type),i;case 4:return e.a(2)}},e,this,[[1,3]])})),function(e){return l.apply(this,arguments)})},{key:"startAutoRefresh",value:function(e,n,r){var i=this;this.config.autoRefresh&&(this.refreshTimer=setInterval(t(c().m(function t(){var o;return c().w(function(t){for(;;)switch(t.p=t.n){case 0:return t.p=0,t.n=1,i.refreshQR(e,n,r);case 1:t.n=3;break;case 2:t.p=2,o=t.v,console.warn("Erreur lors du rafraîchissement automatique:",o);case 3:return t.a(2)}},t,null,[[0,2]])})),this.config.refreshInterval))}},{key:"makeRequest",value:(u=t(c().m(function t(n,r){var i,s,a,u,l,f,d,h;return c().w(function(t){for(;;)switch(t.p=t.n){case 0:return s=(null===(i=e.SunuIDConfig)||void 0===i||null===(i=i.endpoints)||void 0===i?void 0:i[n.replace("/","")])||n,a="".concat(this.config.apiUrl).concat(s),void 0!==r.type&&console.log("🌐 Envoi requête API - Type: ".concat(r.type,", Endpoint: ").concat(n)),t.p=1,t.n=2,fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(this.config.clientId,":").concat(this.config.secretId),Accept:"application/json"},body:JSON.stringify(o(o({},r),{},{client_id:this.config.clientId,secret_id:this.config.secretId}))});case 2:if((u=t.v).ok){t.n=4;break}return t.n=3,u.text();case 3:l=t.v;try{f=JSON.parse(l)}catch(e){f={message:l}}throw new Error(f.message||"Erreur HTTP: ".concat(u.status));case 4:return t.n=5,u.json();case 5:return d=t.v,t.a(2,d);case 6:throw t.p=6,h=t.v,console.error("Erreur API SunuID:",h),h;case 7:return t.a(2)}},t,this,[[1,6]])})),function(e,t){return u.apply(this,arguments)})},{key:"applyTheme",value:function(e){var t=document.querySelector(".sunuid-qr-code");t&&(t.className="sunuid-qr-code sunuid-theme-".concat(e))}},{key:"handleError",value:function(e){console.error("SunuID SDK Error:",e),this.config.onError&&this.config.onError(e)}},{key:"destroy",value:function(){this.refreshTimer&&clearInterval(this.refreshTimer),this.socket&&(this.socket.disconnect(),this.socket=null,console.log("🌐 WebSocket déconnecté")),this.isInitialized=!1,console.log("SunuID SDK détruit")}}],s&&n(r.prototype,s),a&&n(r,a),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,s,a,u,l,f,d,h,p,v}();e.SunuID=s,e.sunuidInstance=null,e.initSunuID=function(t){try{return e.sunuidInstance=new s(t),e.sunuidInstance}catch(e){throw console.error("Erreur lors de l'initialisation de SunuID:",e),e}}}(window)}();
|
|
11
11
|
//# sourceMappingURL=sunuid-sdk.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sunuid-sdk.min.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // Vérifier si Socket.IO est disponible\n if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard');\n // Réessayer après un délai\n setTimeout(() => this.initWebSocket(), 1000);\n return;\n }\n \n // Obtenir l'IP du client (simulation)\n const ip = this.getClientIP();\n \n // Initialiser la connexion WebSocket si elle n'existe pas\n if (!this.socket) {\n this.socket = io('wss://samasocket.fayma.sn:9443', {\n query: {\n token: this.config.clientId,\n type: 'web',\n userId: this.config.clientId,\n username: ip\n }\n });\n\n // Gestion des événements WebSocket\n this.socket.on('connect', () => {\n console.log('🌐 WebSocket connecté avec succès');\n console.log('📊 Socket ID:', this.socket.id);\n });\n\n this.socket.on('disconnect', (reason) => {\n console.log('❌ WebSocket déconnecté:', reason);\n });\n\n this.socket.on('connect_error', (error) => {\n console.error('❌ Erreur connexion WebSocket:', error);\n });\n\n // Écouter les événements spécifiques\n this.socket.on('qr_status_update', (data) => {\n console.log('📱 Mise à jour statut QR reçue:', data);\n this.handleQRStatusUpdate(data);\n });\n\n this.socket.on('qr_scan_success', (data) => {\n console.log('✅ Scan QR réussi reçu:', data);\n this.handleQRScanSuccess(data);\n });\n\n this.socket.on('qr_expired', (data) => {\n console.log('⏰ QR expiré reçu:', data);\n this.handleQRExpired(data);\n });\n }\n } catch (error) {\n console.error('❌ Erreur initialisation WebSocket:', error);\n }\n }\n\n /**\n * Obtenir l'IP du client (simulation)\n */\n getClientIP() {\n // Simulation - en production, vous pourriez utiliser un service d'IP\n return '127.0.0.1';\n }\n\n /**\n * Gérer la mise à jour du statut QR\n */\n handleQRStatusUpdate(data) {\n if (this.config.onStatusUpdate) {\n this.config.onStatusUpdate(data);\n }\n }\n\n /**\n * Gérer le succès du scan QR\n */\n handleQRScanSuccess(data) {\n if (this.config.onSuccess) {\n this.config.onSuccess(data);\n }\n }\n\n /**\n * Gérer l'expiration du QR\n */\n handleQRExpired(data) {\n if (this.config.onExpired) {\n this.config.onExpired(data);\n }\n }\n\n /**\n * Émettre un événement WebSocket\n */\n emitWebSocketEvent(event, data) {\n if (this.socket && this.socket.connected) {\n this.socket.emit(event, data);\n console.log(`📤 Événement WebSocket émis: ${event}`, data);\n } else if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, impossible d\\'émettre l\\'événement:', event);\n } else {\n console.warn('⚠️ WebSocket non connecté, impossible d\\'émettre l\\'événement:', event);\n }\n }\n\n /**\n * Obtenir le statut de la connexion WebSocket\n */\n getWebSocketStatus() {\n if (!this.socket) {\n return 'not_initialized';\n }\n return this.socket.connected ? 'connected' : 'disconnected';\n }\n\n /**\n * Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)\n */\n forceWebSocketInit() {\n if (typeof io !== 'undefined' && !this.socket) {\n console.log('🔄 Forçage de l\\'initialisation WebSocket...');\n this.initWebSocket();\n }\n }\n\n /**\n * Générer un QR code avec le type configuré\n */\n async generateQR(containerId, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: this.config.type, // Utilise le type configuré\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n this.startAutoRefresh(containerId, this.config.type, options);\n \n // Émettre un événement WebSocket pour la génération du QR\n this.emitWebSocketEvent('qr_generated', {\n serviceId: response.data.service_id,\n type: this.config.type,\n qrCodeUrl: qrImageUrl,\n timestamp: Date.now()\n });\n \n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + this.config.type);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw new Error('Service non disponible');\n }\n }\n\n\n\n /**\n * Générer un QR code avec un type personnalisé\n */\n async generateCustomQR(containerId, type, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: type, // Type personnalisé (1, 2, 3, etc.)\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, type, options);\n this.startAutoRefresh(containerId, type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + type);\n this.displayServiceUnavailable(containerId, type);\n throw new Error('Service non disponible');\n }\n }\n\n // Alias pour maintenir la compatibilité\n async generateAuthQR(containerId, options = {}) {\n return this.generateQR(containerId, options);\n }\n\n async generateKYCQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour KYC\n this.config.type = 2;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(sessionId) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-status', {\n serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Authentification' : type === 2 ? 'Vérification KYC' : type === 3 ? 'Service Type 3' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\">\n <img src=\"${qrUrl}\" alt=\"QR Code SunuID\" style=\"max-width: 300px; height: auto;\">\n </div>\n <div class=\"sunuid-qr-instructions\">\n <p>Scannez ce QR code avec l'application SunuID pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${type.toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, options = {}) {\n try {\n const result = await this.generateQR(containerId, options);\n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw error;\n }\n }\n\n /**\n * Démarrer le rafraîchissement automatique\n */\n startAutoRefresh(containerId, type, options) {\n if (!this.config.autoRefresh) return;\n\n this.refreshTimer = setInterval(async () => {\n try {\n await this.refreshQR(containerId, type, options);\n } catch (error) {\n console.warn('Erreur lors du rafraîchissement automatique:', error);\n }\n }, this.config.refreshInterval);\n }\n\n /**\n * Démarrer le timer de compte à rebours\n */\n\n\n /**\n * Effectuer une requête API\n */\n async makeRequest(endpoint, data) {\n // Utiliser l'endpoint depuis la configuration si disponible\n const endpointPath = window.SunuIDConfig?.endpoints?.[endpoint.replace('/', '')] || endpoint;\n const url = `${this.config.apiUrl}${endpointPath}`;\n \n // Log pour déboguer l'envoi du type\n if (data.type !== undefined) {\n console.log(`🌐 Envoi requête API - Type: ${data.type}, Endpoint: ${endpoint}`);\n }\n \n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n // Fermer la connexion WebSocket\n if (this.socket) {\n this.socket.disconnect();\n this.socket = null;\n console.log('🌐 WebSocket déconnecté');\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","this","_objectSpread","qrCode","refreshTimer","isInitialized","socket","init","key","value","Error","console","log","initWebSocket","_this","io","warn","setTimeout","ip","getClientIP","query","token","userId","username","on","id","reason","error","data","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","event","connected","emit","concat","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","qrImageUrl","_t","_args","w","_context","p","n","makeRequest","v","success","qrcode","displayQRCode","startAutoRefresh","emitWebSocketEvent","serviceId","service_id","qrCodeUrl","timestamp","Date","now","a","sessionId","message","displayServiceUnavailable","_x","apply","_generateCustomQR","_callee2","_t2","_args2","_context2","_x2","_x3","_generateAuthQR","_callee3","_args3","_context3","generateQR","_x4","_generateKYCQR","_callee4","originalType","_args4","_context4","f","_x5","_checkQRStatus","_callee5","_t3","_context5","handleError","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_t4","_args6","_context6","_x7","_this2","setInterval","_callee7","_t5","_context7","refreshQR","_makeRequest","_callee8","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t6","_context8","endpoints","replace","fetch","method","headers","Authorization","Accept","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x8","_x9","querySelector","clearInterval","disconnect","sunuidInstance","initSunuID"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sunuid-sdk.min.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n this.websocketRetryCount = 0;\n this.maxWebSocketRetries = 5;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // Vérifier si Socket.IO est disponible\n if (typeof io === 'undefined') {\n this.websocketRetryCount++;\n \n if (this.websocketRetryCount <= this.maxWebSocketRetries) {\n console.warn(`⚠️ Socket.IO non disponible (tentative ${this.websocketRetryCount}/${this.maxWebSocketRetries}), WebSocket sera initialisé plus tard`);\n // Réessayer après un délai\n setTimeout(() => this.initWebSocket(), 1000);\n } else {\n console.warn('⚠️ Socket.IO non disponible après plusieurs tentatives, WebSocket désactivé');\n }\n return;\n }\n \n // Obtenir l'IP du client (simulation)\n const ip = this.getClientIP();\n \n // Initialiser la connexion WebSocket si elle n'existe pas\n if (!this.socket) {\n this.socket = io('wss://samasocket.fayma.sn:9443', {\n query: {\n token: this.config.clientId,\n type: 'web',\n userId: this.config.clientId,\n username: ip\n }\n });\n\n // Gestion des événements WebSocket\n this.socket.on('connect', () => {\n console.log('🌐 WebSocket connecté avec succès');\n console.log('📊 Socket ID:', this.socket.id);\n });\n\n this.socket.on('disconnect', (reason) => {\n console.log('❌ WebSocket déconnecté:', reason);\n });\n\n this.socket.on('connect_error', (error) => {\n console.error('❌ Erreur connexion WebSocket:', error);\n });\n\n // Écouter les événements spécifiques\n this.socket.on('qr_status_update', (data) => {\n console.log('📱 Mise à jour statut QR reçue:', data);\n this.handleQRStatusUpdate(data);\n });\n\n this.socket.on('qr_scan_success', (data) => {\n console.log('✅ Scan QR réussi reçu:', data);\n this.handleQRScanSuccess(data);\n });\n\n this.socket.on('qr_expired', (data) => {\n console.log('⏰ QR expiré reçu:', data);\n this.handleQRExpired(data);\n });\n }\n } catch (error) {\n console.error('❌ Erreur initialisation WebSocket:', error);\n }\n }\n\n /**\n * Obtenir l'IP du client (simulation)\n */\n getClientIP() {\n // Simulation - en production, vous pourriez utiliser un service d'IP\n return '127.0.0.1';\n }\n\n /**\n * Gérer la mise à jour du statut QR\n */\n handleQRStatusUpdate(data) {\n if (this.config.onStatusUpdate) {\n this.config.onStatusUpdate(data);\n }\n }\n\n /**\n * Gérer le succès du scan QR\n */\n handleQRScanSuccess(data) {\n if (this.config.onSuccess) {\n this.config.onSuccess(data);\n }\n }\n\n /**\n * Gérer l'expiration du QR\n */\n handleQRExpired(data) {\n if (this.config.onExpired) {\n this.config.onExpired(data);\n }\n }\n\n /**\n * Émettre un événement WebSocket\n */\n emitWebSocketEvent(event, data) {\n if (this.socket && this.socket.connected) {\n this.socket.emit(event, data);\n console.log(`📤 Événement WebSocket émis: ${event}`, data);\n } else if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, impossible d\\'émettre l\\'événement:', event);\n } else {\n console.warn('⚠️ WebSocket non connecté, impossible d\\'émettre l\\'événement:', event);\n }\n }\n\n /**\n * Obtenir le statut de la connexion WebSocket\n */\n getWebSocketStatus() {\n if (!this.socket) {\n return 'not_initialized';\n }\n return this.socket.connected ? 'connected' : 'disconnected';\n }\n\n /**\n * Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)\n */\n forceWebSocketInit() {\n if (typeof io !== 'undefined' && !this.socket) {\n console.log('🔄 Forçage de l\\'initialisation WebSocket...');\n this.initWebSocket();\n }\n }\n\n /**\n * Générer un QR code avec le type configuré\n */\n async generateQR(containerId, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: this.config.type, // Utilise le type configuré\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n this.startAutoRefresh(containerId, this.config.type, options);\n \n // Émettre un événement WebSocket pour la génération du QR\n this.emitWebSocketEvent('qr_generated', {\n serviceId: response.data.service_id,\n type: this.config.type,\n qrCodeUrl: qrImageUrl,\n timestamp: Date.now()\n });\n \n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + this.config.type);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw new Error('Service non disponible');\n }\n }\n\n\n\n /**\n * Générer un QR code avec un type personnalisé\n */\n async generateCustomQR(containerId, type, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: type, // Type personnalisé (1, 2, 3, etc.)\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, type, options);\n this.startAutoRefresh(containerId, type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + type);\n this.displayServiceUnavailable(containerId, type);\n throw new Error('Service non disponible');\n }\n }\n\n // Alias pour maintenir la compatibilité\n async generateAuthQR(containerId, options = {}) {\n return this.generateQR(containerId, options);\n }\n\n async generateKYCQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour KYC\n this.config.type = 2;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(sessionId) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-status', {\n serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Authentification' : type === 2 ? 'Vérification KYC' : type === 3 ? 'Service Type 3' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\">\n <img src=\"${qrUrl}\" alt=\"QR Code SunuID\" style=\"max-width: 300px; height: auto;\">\n </div>\n <div class=\"sunuid-qr-instructions\">\n <p>Scannez ce QR code avec l'application SunuID pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${type.toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, options = {}) {\n try {\n const result = await this.generateQR(containerId, options);\n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw error;\n }\n }\n\n /**\n * Démarrer le rafraîchissement automatique\n */\n startAutoRefresh(containerId, type, options) {\n if (!this.config.autoRefresh) return;\n\n this.refreshTimer = setInterval(async () => {\n try {\n await this.refreshQR(containerId, type, options);\n } catch (error) {\n console.warn('Erreur lors du rafraîchissement automatique:', error);\n }\n }, this.config.refreshInterval);\n }\n\n /**\n * Démarrer le timer de compte à rebours\n */\n\n\n /**\n * Effectuer une requête API\n */\n async makeRequest(endpoint, data) {\n // Utiliser l'endpoint depuis la configuration si disponible\n const endpointPath = window.SunuIDConfig?.endpoints?.[endpoint.replace('/', '')] || endpoint;\n const url = `${this.config.apiUrl}${endpointPath}`;\n \n // Log pour déboguer l'envoi du type\n if (data.type !== undefined) {\n console.log(`🌐 Envoi requête API - Type: ${data.type}, Endpoint: ${endpoint}`);\n }\n \n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n // Fermer la connexion WebSocket\n if (this.socket) {\n this.socket.disconnect();\n this.socket = null;\n console.log('🌐 WebSocket déconnecté');\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","this","_objectSpread","qrCode","refreshTimer","isInitialized","socket","websocketRetryCount","maxWebSocketRetries","init","key","value","Error","console","log","initWebSocket","_this","io","warn","concat","setTimeout","ip","getClientIP","query","token","userId","username","on","id","reason","error","data","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","event","connected","emit","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","qrImageUrl","_t","_args","w","_context","p","n","makeRequest","v","success","qrcode","displayQRCode","startAutoRefresh","emitWebSocketEvent","serviceId","service_id","qrCodeUrl","timestamp","Date","now","a","sessionId","message","displayServiceUnavailable","_x","apply","_generateCustomQR","_callee2","_t2","_args2","_context2","_x2","_x3","_generateAuthQR","_callee3","_args3","_context3","generateQR","_x4","_generateKYCQR","_callee4","originalType","_args4","_context4","f","_x5","_checkQRStatus","_callee5","_t3","_context5","handleError","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_t4","_args6","_context6","_x7","_this2","setInterval","_callee7","_t5","_context7","refreshQR","_makeRequest","_callee8","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t6","_context8","endpoints","replace","fetch","method","headers","Authorization","Accept","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x8","_x9","querySelector","clearInterval","disconnect","sunuidInstance","initSunuID"],"mappings":"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"}
|