sunuid-sdk 1.0.20 → 1.0.22
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/dist/sunuid-sdk.esm.js +146 -3
- package/dist/sunuid-sdk.esm.js.map +1 -1
- package/dist/sunuid-sdk.js +146 -3
- package/dist/sunuid-sdk.js.map +1 -1
- package/dist/sunuid-sdk.min.js +3 -3
- package/dist/sunuid-sdk.min.js.map +1 -1
- package/package.json +4 -1
package/dist/sunuid-sdk.esm.js
CHANGED
|
@@ -212,7 +212,9 @@ function _toPropertyKey(t) {
|
|
|
212
212
|
refreshInterval: 30000,
|
|
213
213
|
// 30 secondes
|
|
214
214
|
onSuccess: null,
|
|
215
|
-
onError: null
|
|
215
|
+
onError: null,
|
|
216
|
+
onStatusUpdate: null,
|
|
217
|
+
onExpired: null
|
|
216
218
|
};
|
|
217
219
|
|
|
218
220
|
/**
|
|
@@ -226,6 +228,7 @@ function _toPropertyKey(t) {
|
|
|
226
228
|
this.qrCode = null;
|
|
227
229
|
this.refreshTimer = null;
|
|
228
230
|
this.isInitialized = false;
|
|
231
|
+
this.socket = null;
|
|
229
232
|
this.init();
|
|
230
233
|
}
|
|
231
234
|
|
|
@@ -240,6 +243,131 @@ function _toPropertyKey(t) {
|
|
|
240
243
|
}
|
|
241
244
|
this.isInitialized = true;
|
|
242
245
|
console.log('SunuID SDK initialisé avec succès');
|
|
246
|
+
|
|
247
|
+
// Initialiser la connexion WebSocket
|
|
248
|
+
this.initWebSocket();
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Initialiser la connexion WebSocket
|
|
253
|
+
*/
|
|
254
|
+
}, {
|
|
255
|
+
key: "initWebSocket",
|
|
256
|
+
value: function initWebSocket() {
|
|
257
|
+
var _this = this;
|
|
258
|
+
try {
|
|
259
|
+
// Obtenir l'IP du client (simulation)
|
|
260
|
+
var ip = this.getClientIP();
|
|
261
|
+
|
|
262
|
+
// Initialiser la connexion WebSocket si elle n'existe pas
|
|
263
|
+
if (!this.socket) {
|
|
264
|
+
this.socket = io('wss://samasocket.fayma.sn:9443', {
|
|
265
|
+
query: {
|
|
266
|
+
token: this.config.clientId,
|
|
267
|
+
type: 'web',
|
|
268
|
+
userId: this.config.clientId,
|
|
269
|
+
username: ip
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
// Gestion des événements WebSocket
|
|
274
|
+
this.socket.on('connect', function () {
|
|
275
|
+
console.log('🌐 WebSocket connecté avec succès');
|
|
276
|
+
console.log('📊 Socket ID:', _this.socket.id);
|
|
277
|
+
});
|
|
278
|
+
this.socket.on('disconnect', function (reason) {
|
|
279
|
+
console.log('❌ WebSocket déconnecté:', reason);
|
|
280
|
+
});
|
|
281
|
+
this.socket.on('connect_error', function (error) {
|
|
282
|
+
console.error('❌ Erreur connexion WebSocket:', error);
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
// Écouter les événements spécifiques
|
|
286
|
+
this.socket.on('qr_status_update', function (data) {
|
|
287
|
+
console.log('📱 Mise à jour statut QR reçue:', data);
|
|
288
|
+
_this.handleQRStatusUpdate(data);
|
|
289
|
+
});
|
|
290
|
+
this.socket.on('qr_scan_success', function (data) {
|
|
291
|
+
console.log('✅ Scan QR réussi reçu:', data);
|
|
292
|
+
_this.handleQRScanSuccess(data);
|
|
293
|
+
});
|
|
294
|
+
this.socket.on('qr_expired', function (data) {
|
|
295
|
+
console.log('⏰ QR expiré reçu:', data);
|
|
296
|
+
_this.handleQRExpired(data);
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
} catch (error) {
|
|
300
|
+
console.error('❌ Erreur initialisation WebSocket:', error);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Obtenir l'IP du client (simulation)
|
|
306
|
+
*/
|
|
307
|
+
}, {
|
|
308
|
+
key: "getClientIP",
|
|
309
|
+
value: function getClientIP() {
|
|
310
|
+
// Simulation - en production, vous pourriez utiliser un service d'IP
|
|
311
|
+
return '127.0.0.1';
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Gérer la mise à jour du statut QR
|
|
316
|
+
*/
|
|
317
|
+
}, {
|
|
318
|
+
key: "handleQRStatusUpdate",
|
|
319
|
+
value: function handleQRStatusUpdate(data) {
|
|
320
|
+
if (this.config.onStatusUpdate) {
|
|
321
|
+
this.config.onStatusUpdate(data);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* Gérer le succès du scan QR
|
|
327
|
+
*/
|
|
328
|
+
}, {
|
|
329
|
+
key: "handleQRScanSuccess",
|
|
330
|
+
value: function handleQRScanSuccess(data) {
|
|
331
|
+
if (this.config.onSuccess) {
|
|
332
|
+
this.config.onSuccess(data);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Gérer l'expiration du QR
|
|
338
|
+
*/
|
|
339
|
+
}, {
|
|
340
|
+
key: "handleQRExpired",
|
|
341
|
+
value: function handleQRExpired(data) {
|
|
342
|
+
if (this.config.onExpired) {
|
|
343
|
+
this.config.onExpired(data);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Émettre un événement WebSocket
|
|
349
|
+
*/
|
|
350
|
+
}, {
|
|
351
|
+
key: "emitWebSocketEvent",
|
|
352
|
+
value: function emitWebSocketEvent(event, data) {
|
|
353
|
+
if (this.socket && this.socket.connected) {
|
|
354
|
+
this.socket.emit(event, data);
|
|
355
|
+
console.log("\uD83D\uDCE4 \xC9v\xE9nement WebSocket \xE9mis: ".concat(event), data);
|
|
356
|
+
} else {
|
|
357
|
+
console.warn('⚠️ WebSocket non connecté, impossible d\'émettre l\'événement:', event);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* Obtenir le statut de la connexion WebSocket
|
|
363
|
+
*/
|
|
364
|
+
}, {
|
|
365
|
+
key: "getWebSocketStatus",
|
|
366
|
+
value: function getWebSocketStatus() {
|
|
367
|
+
if (!this.socket) {
|
|
368
|
+
return 'not_initialized';
|
|
369
|
+
}
|
|
370
|
+
return this.socket.connected ? 'connected' : 'disconnected';
|
|
243
371
|
}
|
|
244
372
|
|
|
245
373
|
/**
|
|
@@ -281,6 +409,14 @@ function _toPropertyKey(t) {
|
|
|
281
409
|
qrImageUrl = "".concat(imageBaseUrl).concat(response.data.qrcode);
|
|
282
410
|
this.displayQRCode(containerId, qrImageUrl, this.config.type, options);
|
|
283
411
|
this.startAutoRefresh(containerId, this.config.type, options);
|
|
412
|
+
|
|
413
|
+
// Émettre un événement WebSocket pour la génération du QR
|
|
414
|
+
this.emitWebSocketEvent('qr_generated', {
|
|
415
|
+
serviceId: response.data.service_id,
|
|
416
|
+
type: this.config.type,
|
|
417
|
+
qrCodeUrl: qrImageUrl,
|
|
418
|
+
timestamp: Date.now()
|
|
419
|
+
});
|
|
284
420
|
return _context.a(2, _objectSpread2(_objectSpread2({}, response.data), {}, {
|
|
285
421
|
qrCodeUrl: qrImageUrl,
|
|
286
422
|
sessionId: response.data.service_id
|
|
@@ -561,7 +697,7 @@ function _toPropertyKey(t) {
|
|
|
561
697
|
}, {
|
|
562
698
|
key: "startAutoRefresh",
|
|
563
699
|
value: function startAutoRefresh(containerId, type, options) {
|
|
564
|
-
var
|
|
700
|
+
var _this2 = this;
|
|
565
701
|
if (!this.config.autoRefresh) return;
|
|
566
702
|
this.refreshTimer = setInterval(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7() {
|
|
567
703
|
var _t5;
|
|
@@ -570,7 +706,7 @@ function _toPropertyKey(t) {
|
|
|
570
706
|
case 0:
|
|
571
707
|
_context7.p = 0;
|
|
572
708
|
_context7.n = 1;
|
|
573
|
-
return
|
|
709
|
+
return _this2.refreshQR(containerId, type, options);
|
|
574
710
|
case 1:
|
|
575
711
|
_context7.n = 3;
|
|
576
712
|
break;
|
|
@@ -694,6 +830,13 @@ function _toPropertyKey(t) {
|
|
|
694
830
|
if (this.refreshTimer) {
|
|
695
831
|
clearInterval(this.refreshTimer);
|
|
696
832
|
}
|
|
833
|
+
|
|
834
|
+
// Fermer la connexion WebSocket
|
|
835
|
+
if (this.socket) {
|
|
836
|
+
this.socket.disconnect();
|
|
837
|
+
this.socket = null;
|
|
838
|
+
console.log('🌐 WebSocket déconnecté');
|
|
839
|
+
}
|
|
697
840
|
this.isInitialized = false;
|
|
698
841
|
console.log('SunuID SDK détruit');
|
|
699
842
|
}
|
|
@@ -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 };\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 \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\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 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 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","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","init","_createClass","key","value","Error","console","log","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","imageBaseUrl","qrImageUrl","_args","_t","w","_context","p","n","makeRequest","v","success","concat","data","qrcode","displayQRCode","startAutoRefresh","a","qrCodeUrl","sessionId","service_id","message","error","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","serviceId","handleError","checkQRStatus","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_args6","_t4","_context6","refreshQR","_x7","_this","setInterval","_callee7","_t5","_context7","warn","_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","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 \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 // 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 {\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 * 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","ip","getClientIP","io","query","token","userId","username","on","id","reason","error","data","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","emitWebSocketEvent","event","connected","emit","concat","warn","getWebSocketStatus","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","imageBaseUrl","qrImageUrl","_args","_t","w","_context","p","n","makeRequest","v","success","qrcode","displayQRCode","startAutoRefresh","serviceId","service_id","qrCodeUrl","timestamp","Date","now","a","sessionId","message","displayServiceUnavailable","generateQR","_x","apply","_generateCustomQR","_callee2","_args2","_t2","_context2","generateCustomQR","_x2","_x3","_generateAuthQR","_callee3","_args3","_context3","generateAuthQR","_x4","_generateKYCQR","_callee4","originalType","_args4","_context4","f","generateKYCQR","_x5","_checkQRStatus","_callee5","_t3","_context5","handleError","checkQRStatus","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_args6","_t4","_context6","refreshQR","_x7","_this2","setInterval","_callee7","_t5","_context7","_makeRequest","_callee8","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t6","_context8","endpoints","replace","fetch","method","headers","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x8","_x9","querySelector","destroy","clearInterval","disconnect","sunuidInstance","initSunuID"],"mappings":"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"}
|
package/dist/sunuid-sdk.js
CHANGED
|
@@ -215,7 +215,9 @@
|
|
|
215
215
|
refreshInterval: 30000,
|
|
216
216
|
// 30 secondes
|
|
217
217
|
onSuccess: null,
|
|
218
|
-
onError: null
|
|
218
|
+
onError: null,
|
|
219
|
+
onStatusUpdate: null,
|
|
220
|
+
onExpired: null
|
|
219
221
|
};
|
|
220
222
|
|
|
221
223
|
/**
|
|
@@ -229,6 +231,7 @@
|
|
|
229
231
|
this.qrCode = null;
|
|
230
232
|
this.refreshTimer = null;
|
|
231
233
|
this.isInitialized = false;
|
|
234
|
+
this.socket = null;
|
|
232
235
|
this.init();
|
|
233
236
|
}
|
|
234
237
|
|
|
@@ -243,6 +246,131 @@
|
|
|
243
246
|
}
|
|
244
247
|
this.isInitialized = true;
|
|
245
248
|
console.log('SunuID SDK initialisé avec succès');
|
|
249
|
+
|
|
250
|
+
// Initialiser la connexion WebSocket
|
|
251
|
+
this.initWebSocket();
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Initialiser la connexion WebSocket
|
|
256
|
+
*/
|
|
257
|
+
}, {
|
|
258
|
+
key: "initWebSocket",
|
|
259
|
+
value: function initWebSocket() {
|
|
260
|
+
var _this = this;
|
|
261
|
+
try {
|
|
262
|
+
// Obtenir l'IP du client (simulation)
|
|
263
|
+
var ip = this.getClientIP();
|
|
264
|
+
|
|
265
|
+
// Initialiser la connexion WebSocket si elle n'existe pas
|
|
266
|
+
if (!this.socket) {
|
|
267
|
+
this.socket = io('wss://samasocket.fayma.sn:9443', {
|
|
268
|
+
query: {
|
|
269
|
+
token: this.config.clientId,
|
|
270
|
+
type: 'web',
|
|
271
|
+
userId: this.config.clientId,
|
|
272
|
+
username: ip
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
// Gestion des événements WebSocket
|
|
277
|
+
this.socket.on('connect', function () {
|
|
278
|
+
console.log('🌐 WebSocket connecté avec succès');
|
|
279
|
+
console.log('📊 Socket ID:', _this.socket.id);
|
|
280
|
+
});
|
|
281
|
+
this.socket.on('disconnect', function (reason) {
|
|
282
|
+
console.log('❌ WebSocket déconnecté:', reason);
|
|
283
|
+
});
|
|
284
|
+
this.socket.on('connect_error', function (error) {
|
|
285
|
+
console.error('❌ Erreur connexion WebSocket:', error);
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
// Écouter les événements spécifiques
|
|
289
|
+
this.socket.on('qr_status_update', function (data) {
|
|
290
|
+
console.log('📱 Mise à jour statut QR reçue:', data);
|
|
291
|
+
_this.handleQRStatusUpdate(data);
|
|
292
|
+
});
|
|
293
|
+
this.socket.on('qr_scan_success', function (data) {
|
|
294
|
+
console.log('✅ Scan QR réussi reçu:', data);
|
|
295
|
+
_this.handleQRScanSuccess(data);
|
|
296
|
+
});
|
|
297
|
+
this.socket.on('qr_expired', function (data) {
|
|
298
|
+
console.log('⏰ QR expiré reçu:', data);
|
|
299
|
+
_this.handleQRExpired(data);
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
} catch (error) {
|
|
303
|
+
console.error('❌ Erreur initialisation WebSocket:', error);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Obtenir l'IP du client (simulation)
|
|
309
|
+
*/
|
|
310
|
+
}, {
|
|
311
|
+
key: "getClientIP",
|
|
312
|
+
value: function getClientIP() {
|
|
313
|
+
// Simulation - en production, vous pourriez utiliser un service d'IP
|
|
314
|
+
return '127.0.0.1';
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Gérer la mise à jour du statut QR
|
|
319
|
+
*/
|
|
320
|
+
}, {
|
|
321
|
+
key: "handleQRStatusUpdate",
|
|
322
|
+
value: function handleQRStatusUpdate(data) {
|
|
323
|
+
if (this.config.onStatusUpdate) {
|
|
324
|
+
this.config.onStatusUpdate(data);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Gérer le succès du scan QR
|
|
330
|
+
*/
|
|
331
|
+
}, {
|
|
332
|
+
key: "handleQRScanSuccess",
|
|
333
|
+
value: function handleQRScanSuccess(data) {
|
|
334
|
+
if (this.config.onSuccess) {
|
|
335
|
+
this.config.onSuccess(data);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Gérer l'expiration du QR
|
|
341
|
+
*/
|
|
342
|
+
}, {
|
|
343
|
+
key: "handleQRExpired",
|
|
344
|
+
value: function handleQRExpired(data) {
|
|
345
|
+
if (this.config.onExpired) {
|
|
346
|
+
this.config.onExpired(data);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Émettre un événement WebSocket
|
|
352
|
+
*/
|
|
353
|
+
}, {
|
|
354
|
+
key: "emitWebSocketEvent",
|
|
355
|
+
value: function emitWebSocketEvent(event, data) {
|
|
356
|
+
if (this.socket && this.socket.connected) {
|
|
357
|
+
this.socket.emit(event, data);
|
|
358
|
+
console.log("\uD83D\uDCE4 \xC9v\xE9nement WebSocket \xE9mis: ".concat(event), data);
|
|
359
|
+
} else {
|
|
360
|
+
console.warn('⚠️ WebSocket non connecté, impossible d\'émettre l\'événement:', event);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Obtenir le statut de la connexion WebSocket
|
|
366
|
+
*/
|
|
367
|
+
}, {
|
|
368
|
+
key: "getWebSocketStatus",
|
|
369
|
+
value: function getWebSocketStatus() {
|
|
370
|
+
if (!this.socket) {
|
|
371
|
+
return 'not_initialized';
|
|
372
|
+
}
|
|
373
|
+
return this.socket.connected ? 'connected' : 'disconnected';
|
|
246
374
|
}
|
|
247
375
|
|
|
248
376
|
/**
|
|
@@ -284,6 +412,14 @@
|
|
|
284
412
|
qrImageUrl = "".concat(imageBaseUrl).concat(response.data.qrcode);
|
|
285
413
|
this.displayQRCode(containerId, qrImageUrl, this.config.type, options);
|
|
286
414
|
this.startAutoRefresh(containerId, this.config.type, options);
|
|
415
|
+
|
|
416
|
+
// Émettre un événement WebSocket pour la génération du QR
|
|
417
|
+
this.emitWebSocketEvent('qr_generated', {
|
|
418
|
+
serviceId: response.data.service_id,
|
|
419
|
+
type: this.config.type,
|
|
420
|
+
qrCodeUrl: qrImageUrl,
|
|
421
|
+
timestamp: Date.now()
|
|
422
|
+
});
|
|
287
423
|
return _context.a(2, _objectSpread2(_objectSpread2({}, response.data), {}, {
|
|
288
424
|
qrCodeUrl: qrImageUrl,
|
|
289
425
|
sessionId: response.data.service_id
|
|
@@ -564,7 +700,7 @@
|
|
|
564
700
|
}, {
|
|
565
701
|
key: "startAutoRefresh",
|
|
566
702
|
value: function startAutoRefresh(containerId, type, options) {
|
|
567
|
-
var
|
|
703
|
+
var _this2 = this;
|
|
568
704
|
if (!this.config.autoRefresh) return;
|
|
569
705
|
this.refreshTimer = setInterval(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7() {
|
|
570
706
|
var _t5;
|
|
@@ -573,7 +709,7 @@
|
|
|
573
709
|
case 0:
|
|
574
710
|
_context7.p = 0;
|
|
575
711
|
_context7.n = 1;
|
|
576
|
-
return
|
|
712
|
+
return _this2.refreshQR(containerId, type, options);
|
|
577
713
|
case 1:
|
|
578
714
|
_context7.n = 3;
|
|
579
715
|
break;
|
|
@@ -697,6 +833,13 @@
|
|
|
697
833
|
if (this.refreshTimer) {
|
|
698
834
|
clearInterval(this.refreshTimer);
|
|
699
835
|
}
|
|
836
|
+
|
|
837
|
+
// Fermer la connexion WebSocket
|
|
838
|
+
if (this.socket) {
|
|
839
|
+
this.socket.disconnect();
|
|
840
|
+
this.socket = null;
|
|
841
|
+
console.log('🌐 WebSocket déconnecté');
|
|
842
|
+
}
|
|
700
843
|
this.isInitialized = false;
|
|
701
844
|
console.log('SunuID SDK détruit');
|
|
702
845
|
}
|
package/dist/sunuid-sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sunuid-sdk.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null\n };\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 \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\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 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 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","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","init","_createClass","key","value","Error","console","log","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","imageBaseUrl","qrImageUrl","_args","_t","w","_context","p","n","makeRequest","v","success","concat","data","qrcode","displayQRCode","startAutoRefresh","a","qrCodeUrl","sessionId","service_id","message","error","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","serviceId","handleError","checkQRStatus","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_args6","_t4","_context6","refreshQR","_x7","_this","setInterval","_callee7","_t5","_context7","warn","_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","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 \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 // 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 {\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 * 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","ip","getClientIP","io","query","token","userId","username","on","id","reason","error","data","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","emitWebSocketEvent","event","connected","emit","concat","warn","getWebSocketStatus","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","imageBaseUrl","qrImageUrl","_args","_t","w","_context","p","n","makeRequest","v","success","qrcode","displayQRCode","startAutoRefresh","serviceId","service_id","qrCodeUrl","timestamp","Date","now","a","sessionId","message","displayServiceUnavailable","generateQR","_x","apply","_generateCustomQR","_callee2","_args2","_t2","_context2","generateCustomQR","_x2","_x3","_generateAuthQR","_callee3","_args3","_context3","generateAuthQR","_x4","_generateKYCQR","_callee4","originalType","_args4","_context4","f","generateKYCQR","_x5","_checkQRStatus","_callee5","_t3","_context5","handleError","checkQRStatus","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_args6","_t4","_context6","refreshQR","_x7","_this2","setInterval","_callee7","_t5","_context7","_makeRequest","_callee8","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t6","_context8","endpoints","replace","fetch","method","headers","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x8","_x9","querySelector","destroy","clearInterval","disconnect","sunuidInstance","initSunuID"],"mappings":"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"}
|
package/dist/sunuid-sdk.min.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
!function(){"use strict";function e(e,n,t,r,i,o,
|
|
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(){
|
|
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
|
|
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+""}
|
|
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},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.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")}},{key:"generateQR",value:(v=n(a().m(function e(n){var t,r,i,s,c=arguments;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t=c.length>1&&void 0!==c[1]?c[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),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:(h=n(a().m(function e(n,t){var r,i,s,c,u=arguments;return a().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,c=e.v,console.error("Erreur API détectée:",c.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 h.apply(this,arguments)})},{key:"generateAuthQR",value:(d=n(a().m(function e(n){var t,r=arguments;return a().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 d.apply(this,arguments)})},{key:"generateKYCQR",value:(p=n(a().m(function e(n){var t,r,i=arguments;return a().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 p.apply(this,arguments)})},{key:"checkQRStatus",value:(f=n(a().m(function e(n){var t,r;return a().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(a().m(function e(n){var t,r,i,o=arguments;return a().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(a().m(function n(){var o;return a().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(a().m(function n(t,r){var i,s,c,u,l,f,p,d;return a().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,c="".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(c,{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 p=n.v,n.a(2,p);case 6:throw n.p=6,d=n.v,console.error("Erreur API SunuID:",d),d;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.isInitialized=!1,console.log("SunuID SDK détruit")}}],s&&t(r.prototype,s),c&&t(r,c),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,s,c,u,l,f,p,d,h,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 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{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)):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:"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)}();
|
|
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 };\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 \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\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 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 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","SunuID","config","arguments","length","undefined","_classCallCheck","this","_objectSpread","qrCode","refreshTimer","isInitialized","init","key","value","Error","console","log","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","qrImageUrl","_t","_args","w","_context","p","n","makeRequest","v","success","concat","data","qrcode","displayQRCode","startAutoRefresh","a","qrCodeUrl","sessionId","service_id","message","error","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","serviceId","handleError","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_t4","_args6","_context6","_x7","_this","setInterval","_callee7","_t5","_context7","refreshQR","warn","_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","sunuidInstance","initSunuID"],"mappings":";;;;;;;;;MAQA,SAAUA,EAAMC,GAIZ,IAAMC,EAAiB,CACnBC,QAA2BF,QAAnBA,EAAAD,EAAOI,oBAAPH,IAAmBA,OAAnBA,EAAAA,EAAqBE,SAAU,8BACvCE,SAAU,KACVC,SAAU,KACVC,KAAM,EACNC,MAAO,QACPC,SAAU,KACVC,aAAa,EACbC,gBAAiB,IACjBC,UAAW,KACXC,QAAS,MAMPC,EAAM,WAUR,SATA,SAAAA,IAAyB,IAAbC,EAAMC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAA,+FAAEG,MAAAL,GACnBM,KAAKL,OAAMM,EAAAA,EAAQnB,CAAAA,EAAAA,GAAmBa,GACtCK,KAAKE,OAAS,KACdF,KAAKG,aAAe,KACpBH,KAAKI,eAAgB,EAErBJ,KAAKK,MACT,IAEA,CAAA,CAAAC,IAAA,OAAAC,MAGA,WACI,IAAKP,KAAKL,OAAOV,WAAae,KAAKL,OAAOT,SACtC,MAAM,IAAIsB,MAAM,4CAGpBR,KAAKI,eAAgB,EACrBK,QAAQC,IAAI,oCAChB,GAEA,CAAAJ,IAAA,aAAAC,OAAAI,EAAAC,EAAAC,IAAAC,EAGA,SAAAC,EAAiBC,GAAW,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAzB,UAAA,OAAAiB,IAAAS,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAAc,GAAZR,EAAOI,EAAAxB,OAAAwB,QAAAvB,IAAAuB,EAAAvB,GAAAuB,EAAG,GAAA,CAAA,EAC/BrB,KAAKI,cAAa,CAAAmB,EAAAE,EAAA,EAAA,KAAA,CAAA,MACb,IAAIjB,MAAM,8BAA6B,KAAA,EAAA,OAAAe,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAItBzB,KAAK0B,YAAY,eAAczB,EAAA,CAClDd,KAAMa,KAAKL,OAAOR,MACf8B,IACL,KAAA,EAHY,KAARC,EAAQK,EAAAI,GAKDC,QAAO,CAAAL,EAAAE,EAAA,EAAA,KAAA,CAK8C,OAFxDN,EAAU,GAAAU,OADK,2BACaA,OAAGX,EAASY,KAAKC,QACnD/B,KAAKgC,cAAchB,EAAaG,EAAYnB,KAAKL,OAAOR,KAAM8B,GAC9DjB,KAAKiC,iBAAiBjB,EAAahB,KAAKL,OAAOR,KAAM8B,GAASM,EAAAW,EAAAjC,EAAAA,EAAAA,EAAA,CAAA,EAEvDiB,EAASY,MAAI,GAAA,CAChBK,UAAWhB,EACXiB,UAAWlB,EAASY,KAAKO,cAAU,KAAA,EAAA,MAGjC,IAAI7B,MAAMU,EAASoB,SAAW,2CAA0C,KAAA,EAAAf,EAAAE,EAAA,EAAA,MAAA,KAAA,EAKpB,MALoBF,EAAAC,EAAA,EAAAJ,EAAAG,EAAAI,EAGlFlB,QAAQ8B,MAAM,uBAAwBnB,EAAMkB,SAC5C7B,QAAQC,IAAI,2DAA6DV,KAAKL,OAAOR,MACrFa,KAAKwC,0BAA0BxB,EAAahB,KAAKL,OAAOR,MAClD,IAAIqB,MAAM,0BAAyB,KAAA,EAAA,OAAAe,EAAAW,EAAA,GAAA,EAAAnB,EAAAf,KAAA,CAAA,CAAA,EAAA,IAEhD,IAAA,SA/BeyC,GAAA,OAAA9B,EAAA+B,MAAA1C,KAAAJ,UAAA,IAmChB,CAAAU,IAAA,mBAAAC,OAAAoC,EAAA/B,EAAAC,IAAAC,EAGA,SAAA8B,EAAuB5B,EAAa7B,GAAI,IAAA8B,EAAAC,EAAAC,EAAA0B,EAAAC,EAAAlD,UAAA,OAAAiB,IAAAS,EAAA,SAAAyB,GAAA,cAAAA,EAAAvB,EAAAuB,EAAAtB,GAAA,KAAA,EAAc,GAAZR,EAAO6B,EAAAjD,OAAAiD,QAAAhD,IAAAgD,EAAAhD,GAAAgD,EAAG,GAAA,CAAA,EAC3C9C,KAAKI,cAAa,CAAA2C,EAAAtB,EAAA,EAAA,KAAA,CAAA,MACb,IAAIjB,MAAM,8BAA6B,KAAA,EAAA,OAAAuC,EAAAvB,EAAA,EAAAuB,EAAAtB,EAAA,EAItBzB,KAAK0B,YAAY,eAAczB,EAAA,CAClDd,KAAMA,GACH8B,IACL,KAAA,EAHY,KAARC,EAAQ6B,EAAApB,GAKDC,QAAO,CAAAmB,EAAAtB,EAAA,EAAA,KAAA,CAKkC,OAF5CN,EAAU,GAAAU,OADK,2BACaA,OAAGX,EAASY,KAAKC,QACnD/B,KAAKgC,cAAchB,EAAaG,EAAYhC,EAAM8B,GAClDjB,KAAKiC,iBAAiBjB,EAAa7B,EAAM8B,GAAS8B,EAAAb,EAAAjC,EAAAA,EAAAA,EAAA,CAAA,EAE3CiB,EAASY,MAAI,GAAA,CAChBK,UAAWhB,EACXiB,UAAWlB,EAASY,KAAKO,cAAU,KAAA,EAAA,MAGjC,IAAI7B,MAAMU,EAASoB,SAAW,2CAA0C,KAAA,EAAAS,EAAAtB,EAAA,EAAA,MAAA,KAAA,EAKhC,MALgCsB,EAAAvB,EAAA,EAAAqB,EAAAE,EAAApB,EAGlFlB,QAAQ8B,MAAM,uBAAwBM,EAAMP,SAC5C7B,QAAQC,IAAI,2DAA6DvB,GACzEa,KAAKwC,0BAA0BxB,EAAa7B,GACtC,IAAIqB,MAAM,0BAAyB,KAAA,EAAA,OAAAuC,EAAAb,EAAA,GAAA,EAAAU,EAAA5C,KAAA,CAAA,CAAA,EAAA,IAEhD,IAAA,SA/BqBgD,EAAAC,GAAA,OAAAN,EAAAD,MAAA1C,KAAAJ,UAAA,IAiCtB,CAAAU,IAAA,iBAAAC,OAAA2C,EAAAtC,EAAAC,IAAAC,EACA,SAAAqC,EAAqBnC,GAAW,IAAAC,EAAAmC,EAAAxD,UAAA,OAAAiB,IAAAS,EAAA,SAAA+B,GAAA,UAAA,IAAAA,EAAA5B,EAAc,OAAZR,EAAOmC,EAAAvD,OAAAuD,QAAAtD,IAAAsD,EAAAtD,GAAAsD,EAAG,GAAA,CAAA,EAAEC,EAAAnB,EACnC,EAAAlC,KAAKsD,WAAWtC,EAAaC,GAAQ,EAAAkC,EAAAnD,KAC/C,IAAA,SAFmBuD,GAAA,OAAAL,EAAAR,MAAA1C,KAAAJ,UAAA,IAAA,CAAAU,IAAA,gBAAAC,OAAAiD,EAAA5C,EAAAC,IAAAC,EAIpB,SAAA2C,EAAoBzC,GAAW,IAAAC,EAAAyC,EAAAC,EAAA/D,UAAA,OAAAiB,IAAAS,EAAA,SAAAsC,GAAA,cAAAA,EAAApC,EAAAoC,EAAAnC,GAAA,KAAA,EAIN,OAJQR,EAAO0C,EAAA9D,OAAA8D,QAAA7D,IAAA6D,EAAA7D,GAAA6D,EAAG,GAAA,CAAA,EAEjCD,EAAe1D,KAAKL,OAAOR,KAEjCa,KAAKL,OAAOR,KAAO,EAAEyE,EAAApC,EAAA,EAAAoC,EAAAnC,EAAA,EAEJzB,KAAKsD,WAAWtC,EAAaC,GAAQ,KAAA,EAAA,OAAA2C,EAAA1B,EAAA0B,EAAAA,EAAAjC,GAAA,KAAA,EAGlB,OAHkBiC,EAAApC,EAAA,EAGlDxB,KAAKL,OAAOR,KAAOuE,EAAaE,EAAAC,EAAA,GAAA,KAAA,EAAA,OAAAD,EAAA1B,EAAA,GAAA,EAAAuB,EAAAzD,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,IAEvC,IAAA,SAXkB8D,GAAA,OAAAN,EAAAd,MAAA1C,KAAAJ,UAAA,IAanB,CAAAU,IAAA,gBAAAC,OAAAwD,EAAAnD,EAAAC,IAAAC,EAGA,SAAAkD,EAAoB5B,GAAS,IAAAlB,EAAA+C,EAAA,OAAApD,IAAAS,EAAA,SAAA4C,GAAA,cAAAA,EAAA1C,EAAA0C,EAAAzC,GAAA,KAAA,EAAA,GACpBzB,KAAKI,cAAa,CAAA8D,EAAAzC,EAAA,EAAA,KAAA,CAAA,MACb,IAAIjB,MAAM,8BAA6B,KAAA,EAAA,OAAA0D,EAAA1C,EAAA,EAAA0C,EAAAzC,EAAA,EAItBzB,KAAK0B,YAAY,aAAc,CAClDyC,UAAW/B,IACb,KAAA,EAFY,KAARlB,EAAQgD,EAAAvC,GAIDC,QAAO,CAAAsC,EAAAzC,EAAA,EAAA,KAAA,CAAA,OAAAyC,EAAAhC,EACThB,EAAAA,EAASY,MAAI,KAAA,EAAA,MAEd,IAAItB,MAAMU,EAASoB,SAAW,4CAA2C,KAAA,EAAA4B,EAAAzC,EAAA,EAAA,MAAA,KAAA,EAG3D,MAH2DyC,EAAA1C,EAAA,EAAAyC,EAAAC,EAAAvC,EAGnF3B,KAAKoE,YAAWH,GAAQA,EAAA,KAAA,EAAA,OAAAC,EAAAhC,EAAA,GAAA,EAAA8B,EAAAhE,KAAA,CAAA,CAAA,EAAA,IAG/B,IAAA,SAnBkBqE,GAAA,OAAAN,EAAArB,MAAA1C,KAAAJ,UAAA,IAqBnB,CAAAU,IAAA,gBAAAC,MAGA,SAAcS,EAAasD,EAAOnF,GAAoB,IAAd8B,EAAOrB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAA,EACxC2E,EAAYC,SAASC,eAAezD,GAC1C,IAAKuD,EACD,MAAM,IAAI/D,MAAK,yBAAAqB,OAAyBb,mBAI5CuD,EAAUG,UAAY,GAGtB,IAAMC,EAAYH,SAASI,cAAc,OACzCD,EAAUE,UAAY,iBACtBF,EAAUD,UAAS7C,iFAAAA,OAEI,IAAT1C,EAAa,mBAA8B,IAATA,EAAa,mBAA8B,IAATA,EAAa,iBAAmB,gBAAkBA,EAAI,oHAAA0C,OAGpHyC,EAQnB,0aAEDC,EAAUO,YAAYH,GAGtB3E,KAAK+E,WAAW9D,EAAQ7B,OAASY,KAAKL,OAAOP,MACjD,GAEA,CAAAkB,IAAA,4BAAAC,MAGA,SAA0BS,EAAa7B,GACnCsB,QAAQC,IAAG,0CAAAmB,OAA2Cb,EAAW,YAAAa,OAAW1C,IAC5E,IAAMoF,EAAYC,SAASC,eAAezD,GACrCuD,EAKLA,EAAUG,UAAS,45BAAA7C,OAiBC1C,EAAK6F,cAGxB,sEAxBGvE,QAAQ8B,MAAK,aAAAV,OAAcb,iBAyBnC,GAEA,CAAAV,IAAA,YAAAC,OAAA0E,EAAArE,EAAAC,IAAAC,EAGA,SAAAoE,EAAgBlE,GAAW,IAAAC,EAAAkE,EAAAC,EAAAC,EAAAzF,UAAA,OAAAiB,IAAAS,EAAA,SAAAgE,GAAA,cAAAA,EAAA9D,EAAA8D,EAAA7D,GAAA,KAAA,EAAc,OAAZR,EAAOoE,EAAAxF,OAAAwF,QAAAvF,IAAAuF,EAAAvF,GAAAuF,EAAG,GAAA,CAAA,EAAEC,EAAA9D,EAAA,EAAA8D,EAAA7D,EAAA,EAEZzB,KAAKsD,WAAWtC,EAAaC,GAAQ,KAAA,EAA9C,OAANkE,EAAMG,EAAA3D,EAAA2D,EAAApD,EAAA,EACLiD,GAAM,KAAA,EAGiD,MAHjDG,EAAA9D,EAAA,EAAA4D,EAAAE,EAAA3D,EAEblB,QAAQ8B,MAAM,mCAAoC6C,EAAM9C,SACxDtC,KAAKwC,0BAA0BxB,EAAahB,KAAKL,OAAOR,MAAMiG,EAAA,KAAA,EAAA,OAAAE,EAAApD,EAAA,GAAA,EAAAgD,EAAAlF,KAAA,CAAA,CAAA,EAAA,IAGrE,IAAA,SATcuF,GAAA,OAAAN,EAAAvC,MAAA1C,KAAAJ,UAAA,IAWf,CAAAU,IAAA,mBAAAC,MAGA,SAAiBS,EAAa7B,EAAM8B,GAAS,IAAAuE,EAAAxF,KACpCA,KAAKL,OAAOL,cAEjBU,KAAKG,aAAesF,YAAW7E,EAAAC,IAAAC,EAAC,SAAA4E,IAAA,IAAAC,EAAA,OAAA9E,IAAAS,EAAA,SAAAsE,GAAA,cAAAA,EAAApE,EAAAoE,EAAAnE,GAAA,KAAA,EAAA,OAAAmE,EAAApE,EAAA,EAAAoE,EAAAnE,EAAA,EAElB+D,EAAKK,UAAU7E,EAAa7B,EAAM8B,GAAQ,KAAA,EAAA2E,EAAAnE,EAAA,EAAA,MAAA,KAAA,EAAAmE,EAAApE,EAAA,EAAAmE,EAAAC,EAAAjE,EAEhDlB,QAAQqF,KAAK,+CAA8CH,GAAS,KAAA,EAAA,OAAAC,EAAA1D,EAAA,GAAA,EAAAwD,EAAA,KAAA,CAAA,CAAA,EAAA,IAE3E,IAAE1F,KAAKL,OAAOJ,iBACnB,GAOA,CAAAe,IAAA,cAAAC,OAAAwF,EAAAnF,EAAAC,IAAAC,EAGA,SAAAkF,EAAkBC,EAAUnE,GAAI,IAAAoE,EAAAC,EAAAC,EAAAlF,EAAAmF,EAAAC,EAAAnB,EAAAoB,EAAA,OAAA1F,IAAAS,EAAA,SAAAkF,GAAA,cAAAA,EAAAhF,EAAAgF,EAAA/E,GAAA,KAAA,EAQ3B,OANK0E,GAAkC,QAAnBD,EAAAtH,EAAOI,oBAAY,IAAAkH,GAAWA,QAAXA,EAAnBA,EAAqBO,iBAArBP,IAA8BA,OAA9BA,EAAAA,EAAiCD,EAASS,QAAQ,IAAK,OAAQT,EAC9EG,EAAGvE,GAAAA,OAAM7B,KAAKL,OAAOZ,QAAM8C,OAAGsE,QAGlBrG,IAAdgC,EAAK3C,MACLsB,QAAQC,IAAGmB,gCAAAA,OAAiCC,EAAK3C,KAAI0C,gBAAAA,OAAeoE,IACvEO,EAAAhF,EAAA,EAAAgF,EAAA/E,EAAA,EAG0BkF,MAAMP,EAAK,CAC9BQ,OAAQ,OACRC,QAAS,CACL,eAAgB,mBAChBC,wBAAejF,OAAY7B,KAAKL,OAAOV,SAAQ4C,KAAAA,OAAI7B,KAAKL,OAAOT,UAC/D6H,OAAU,oBAEdC,KAAMC,KAAKC,UAASjH,EAAAA,EAAA,GACb6B,GAAI,GAAA,CACPqF,UAAWnH,KAAKL,OAAOV,SACvBmI,UAAWpH,KAAKL,OAAOT,cAE7B,KAAA,EAZY,IAARgC,EAAQsF,EAAA7E,GAcA0F,GAAE,CAAAb,EAAA/E,EAAA,EAAA,KAAA,CAAA,OAAA+E,EAAA/E,EAAA,EACYP,EAASoG,OAAM,KAAA,EAAjCjB,EAASG,EAAA7E,EAEf,IACI2E,EAAYW,KAAKM,MAAMlB,EAC1B,CAAC,MAAOmB,GACLlB,EAAY,CAAEhE,QAAS+D,EAC3B,CAAC,MAEK,IAAI7F,MAAM8F,EAAUhE,SAAOT,gBAAAA,OAAoBX,EAASuG,SAAS,KAAA,EAAA,OAAAjB,EAAA/E,EAAA,EAGtDP,EAASwG,OAAM,KAAA,EAAxB,OAANvC,EAAMqB,EAAA7E,EAAA6E,EAAAtE,EAAA,EACLiD,GAAM,KAAA,EAE8B,MAF9BqB,EAAAhF,EAAA,EAAA+E,EAAAC,EAAA7E,EAEblB,QAAQ8B,MAAM,qBAAoBgE,GAASA,EAAA,KAAA,EAAA,OAAAC,EAAAtE,EAAA,GAAA,EAAA8D,EAAAhG,KAAA,CAAA,CAAA,EAAA,IAGlD,IAAA,SA3CgB2H,EAAAC,GAAA,OAAA7B,EAAArD,MAAA1C,KAAAJ,UAAA,IA6CjB,CAAAU,IAAA,aAAAC,MAGA,SAAWnB,GACP,IAAMmF,EAAYC,SAASqD,cAAc,mBACrCtD,IACAA,EAAUM,UAAS,+BAAAhD,OAAkCzC,GAE7D,GAEA,CAAAkB,IAAA,cAAAC,MAGA,SAAYgC,GACR9B,QAAQ8B,MAAM,oBAAqBA,GAE/BvC,KAAKL,OAAOF,SACZO,KAAKL,OAAOF,QAAQ8C,EAE5B,GAEA,CAAAjC,IAAA,UAAAC,MAGA,WACQP,KAAKG,cACL2H,cAAc9H,KAAKG,cAGvBH,KAAKI,eAAgB,EACrBK,QAAQC,IAAI,qBAChB,iGA/EAqF,EAlCAd,EA9FAlB,EAjBoBP,EADpBN,EApCAP,EAtCAhC,EAtBQ,GAqUZ/B,EAAOc,OAASA,EAChBd,EAAOmJ,eAAiB,KAGxBnJ,EAAOoJ,WAAa,SAASrI,GACzB,IAEI,OADAf,EAAOmJ,eAAiB,IAAIrI,EAAOC,GAC5Bf,EAAOmJ,cACjB,CAAC,MAAOxF,GAEL,MADA9B,QAAQ8B,MAAM,6CAA+CA,GACvDA,CACV,EAGP,CAvWD,CAuWG3D"}
|
|
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 // 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 {\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 * 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","ip","getClientIP","io","query","token","userId","username","on","id","reason","error","data","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","event","connected","emit","concat","warn","_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.
|
|
3
|
+
"version": "1.0.22",
|
|
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",
|
|
@@ -47,6 +47,9 @@
|
|
|
47
47
|
"url": "https://github.com/sunuid/sunuid-sdk/issues"
|
|
48
48
|
},
|
|
49
49
|
"homepage": "https://docs.sunuid.sn",
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"socket.io-client": "^4.7.0"
|
|
52
|
+
},
|
|
50
53
|
"devDependencies": {
|
|
51
54
|
"@babel/core": "^7.22.0",
|
|
52
55
|
"@babel/preset-env": "^7.22.0",
|