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 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.0/dist/sunuid-sdk.css">
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.0/dist/sunuid-sdk.js"></script>
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/api',
48
+ apiUrl: 'https://api.sunuid.fayma.sn',
44
49
  clientId: 'VOTRE_CLIENT_ID',
45
50
  secretId: 'VOTRE_SECRET_ID',
46
- theme: 'light'
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. Authentification
68
+ ### 2. Génération QR avec WebSocket
51
69
 
52
70
  ```html
53
- <div id="auth-qr-container"></div>
71
+ <div id="qr-container"></div>
54
72
  ```
55
73
 
56
74
  ```javascript
57
- sunuid.generateAuthQR('auth-qr-container', {
58
- redirectUrl: 'https://votre-site.com/dashboard'
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
- ### 3. KYC
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
- sunuid.generateKYCQR('kyc-qr-container', {
70
- kycType: 'full',
71
- requiredFields: ['identity', 'address', 'phone']
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.0/dist/sunuid-sdk.css">
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="auth-qr-container"></div>
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
- <script src="https://unpkg.com/sunuid-sdk@1.0.0/dist/sunuid-sdk.js"></script>
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/api',
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
- sunuid.generateAuthQR('auth-qr-container');
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/api'` | URL de l'API SunuID |
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, partner, etc.
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
- onExpired: function() {
154
- console.log('QR code expiré');
155
- // Le QR code a expiré, actualisation automatique
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
- #### `generateAuthQR(containerId, options)`
165
- Génère un QR code d'authentification.
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(qrId)`
253
+ #### `checkQRStatus(serviceId)`
188
254
  Vérifie le statut d'un QR code.
189
255
 
190
256
  ```javascript
191
- const status = await sunuid.checkQRStatus('qr-id-123');
257
+ const status = await sunuid.checkQRStatus('service-id-123');
192
258
  console.log('Statut:', status);
193
259
  ```
194
260
 
195
- #### `refreshQR(containerId, type, options)`
261
+ #### `refreshQR(containerId, options)`
196
262
  Actualise un QR code.
197
263
 
198
264
  ```javascript
199
- sunuid.refreshQR('container-id', 'auth', { theme: 'light' });
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
- - `X-SunuID-Client-ID`
214
- - `X-SunuID-Secret-ID`
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.error('SunuID SDK Error:', error);
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
 
@@ -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
- console.warn('⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard');
262
- // Réessayer après un délai
263
- setTimeout(function () {
264
- return _this.initWebSocket();
265
- }, 1000);
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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"}
@@ -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
- console.warn('⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard');
265
- // Réessayer après un délai
266
- setTimeout(function () {
267
- return _this.initWebSocket();
268
- }, 1000);
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
 
@@ -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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"}
@@ -1,11 +1,11 @@
1
- !function(){"use strict";function e(e,n,t,r,i,o,c){try{var s=e[o](c),a=s.value}catch(e){return void t(e)}s.done?n(a):Promise.resolve(a).then(r,i)}function n(n){return function(){var t=this,r=arguments;return new Promise(function(i,o){var c=n.apply(t,r);function s(n){e(c,i,o,s,a,"next",n)}function a(n){e(c,i,o,s,a,"throw",n)}s(void 0)})}}function t(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,a(r.key),r)}}function r(e,n,t){return(n=a(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),t.push.apply(t,r)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach(function(n){r(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function c(){
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,t="function"==typeof Symbol?Symbol:{},r=t.iterator||"@@iterator",i=t.toStringTag||"@@toStringTag";function o(t,r,i,o){var c=r&&r.prototype instanceof u?r:u,l=Object.create(c.prototype);return s(l,"_invoke",function(t,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(n,t){return o=n,c=0,s=e,d.n=t,a}};function h(t,r){for(c=t,s=r,n=0;!f&&u&&!i&&n<l.length;n++){var i,o=l[n],h=d.p,p=o[2];t>3?(i=p===r)&&(s=o[(c=o[4])?5:(c=3,3)],o[4]=o[5]=e):o[0]<=h&&((i=t<2&&h<o[1])?(c=0,d.v=r,d.n=o[1]):h<p&&(i=t<3||o[0]>r||r>p)&&(o[4]=t,o[5]=r,d.n=p,c=0))}if(i||t>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;(n=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"),n=o[i]){if(!(n=n.call(o,s)))throw TypeError("iterator result is not an object");if(!n.done)return n;s=n.value,c<2&&(c=0)}else 1===c&&(n=o.return)&&n.call(o),c<2&&(s=TypeError("The iterator does not provide a '"+i+"' method"),c=1);o=e}else if((n=(f=d.n<0)?s:t.call(r,d))!==a)break}catch(n){o=e,c=1,s=n}finally{u=1}}return{value:n,done:f}}}(t,i,o),!0),l}var a={};function u(){}function l(){}function f(){}n=Object.getPrototypeOf;var d=[][r]?n(n([][r]())):(s(n={},r,function(){return this}),n),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,n,t,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}s=function(e,n,t,r){function o(n,t){s(e,n,function(e){return this._invoke(n,t,e)})}n?i?i(e,n,{value:t,enumerable:!r,configurable:!r,writable:!r}):e[n]=t:(o("next",0),o("throw",1),o("return",2))},s(e,n,t,r)}function a(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n: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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sunuid-sdk",
3
- "version": "1.0.23",
3
+ "version": "1.0.24",
4
4
  "type": "module",
5
5
  "description": "SDK JavaScript pour l'intégration des QR codes d'authentification et KYC SunuID",
6
6
  "main": "dist/sunuid-sdk.js",