sunuid-sdk 1.0.22 → 1.0.23
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
CHANGED
|
@@ -256,6 +256,16 @@ function _toPropertyKey(t) {
|
|
|
256
256
|
value: function initWebSocket() {
|
|
257
257
|
var _this = this;
|
|
258
258
|
try {
|
|
259
|
+
// Vérifier si Socket.IO est disponible
|
|
260
|
+
if (typeof io === 'undefined') {
|
|
261
|
+
console.warn('⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard');
|
|
262
|
+
// Réessayer après un délai
|
|
263
|
+
setTimeout(function () {
|
|
264
|
+
return _this.initWebSocket();
|
|
265
|
+
}, 1000);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
|
|
259
269
|
// Obtenir l'IP du client (simulation)
|
|
260
270
|
var ip = this.getClientIP();
|
|
261
271
|
|
|
@@ -353,6 +363,8 @@ function _toPropertyKey(t) {
|
|
|
353
363
|
if (this.socket && this.socket.connected) {
|
|
354
364
|
this.socket.emit(event, data);
|
|
355
365
|
console.log("\uD83D\uDCE4 \xC9v\xE9nement WebSocket \xE9mis: ".concat(event), data);
|
|
366
|
+
} else if (typeof io === 'undefined') {
|
|
367
|
+
console.warn('⚠️ Socket.IO non disponible, impossible d\'émettre l\'événement:', event);
|
|
356
368
|
} else {
|
|
357
369
|
console.warn('⚠️ WebSocket non connecté, impossible d\'émettre l\'événement:', event);
|
|
358
370
|
}
|
|
@@ -370,6 +382,18 @@ function _toPropertyKey(t) {
|
|
|
370
382
|
return this.socket.connected ? 'connected' : 'disconnected';
|
|
371
383
|
}
|
|
372
384
|
|
|
385
|
+
/**
|
|
386
|
+
* Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)
|
|
387
|
+
*/
|
|
388
|
+
}, {
|
|
389
|
+
key: "forceWebSocketInit",
|
|
390
|
+
value: function forceWebSocketInit() {
|
|
391
|
+
if (typeof io !== 'undefined' && !this.socket) {
|
|
392
|
+
console.log('🔄 Forçage de l\'initialisation WebSocket...');
|
|
393
|
+
this.initWebSocket();
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
|
|
373
397
|
/**
|
|
374
398
|
* Générer un QR code avec le type configuré
|
|
375
399
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sunuid-sdk.esm.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // 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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"}
|
|
1
|
+
{"version":3,"file":"sunuid-sdk.esm.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // Vérifier si Socket.IO est disponible\n if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard');\n // Réessayer après un délai\n setTimeout(() => this.initWebSocket(), 1000);\n return;\n }\n \n // Obtenir l'IP du client (simulation)\n const ip = this.getClientIP();\n \n // Initialiser la connexion WebSocket si elle n'existe pas\n if (!this.socket) {\n this.socket = io('wss://samasocket.fayma.sn:9443', {\n query: {\n token: this.config.clientId,\n type: 'web',\n userId: this.config.clientId,\n username: ip\n }\n });\n\n // Gestion des événements WebSocket\n this.socket.on('connect', () => {\n console.log('🌐 WebSocket connecté avec succès');\n console.log('📊 Socket ID:', this.socket.id);\n });\n\n this.socket.on('disconnect', (reason) => {\n console.log('❌ WebSocket déconnecté:', reason);\n });\n\n this.socket.on('connect_error', (error) => {\n console.error('❌ Erreur connexion WebSocket:', error);\n });\n\n // Écouter les événements spécifiques\n this.socket.on('qr_status_update', (data) => {\n console.log('📱 Mise à jour statut QR reçue:', data);\n this.handleQRStatusUpdate(data);\n });\n\n this.socket.on('qr_scan_success', (data) => {\n console.log('✅ Scan QR réussi reçu:', data);\n this.handleQRScanSuccess(data);\n });\n\n this.socket.on('qr_expired', (data) => {\n console.log('⏰ QR expiré reçu:', data);\n this.handleQRExpired(data);\n });\n }\n } catch (error) {\n console.error('❌ Erreur initialisation WebSocket:', error);\n }\n }\n\n /**\n * Obtenir l'IP du client (simulation)\n */\n getClientIP() {\n // Simulation - en production, vous pourriez utiliser un service d'IP\n return '127.0.0.1';\n }\n\n /**\n * Gérer la mise à jour du statut QR\n */\n handleQRStatusUpdate(data) {\n if (this.config.onStatusUpdate) {\n this.config.onStatusUpdate(data);\n }\n }\n\n /**\n * Gérer le succès du scan QR\n */\n handleQRScanSuccess(data) {\n if (this.config.onSuccess) {\n this.config.onSuccess(data);\n }\n }\n\n /**\n * Gérer l'expiration du QR\n */\n handleQRExpired(data) {\n if (this.config.onExpired) {\n this.config.onExpired(data);\n }\n }\n\n /**\n * Émettre un événement WebSocket\n */\n emitWebSocketEvent(event, data) {\n if (this.socket && this.socket.connected) {\n this.socket.emit(event, data);\n console.log(`📤 Événement WebSocket émis: ${event}`, data);\n } else if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, impossible d\\'émettre l\\'événement:', event);\n } else {\n console.warn('⚠️ WebSocket non connecté, impossible d\\'émettre l\\'événement:', event);\n }\n }\n\n /**\n * Obtenir le statut de la connexion WebSocket\n */\n getWebSocketStatus() {\n if (!this.socket) {\n return 'not_initialized';\n }\n return this.socket.connected ? 'connected' : 'disconnected';\n }\n\n /**\n * Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)\n */\n forceWebSocketInit() {\n if (typeof io !== 'undefined' && !this.socket) {\n console.log('🔄 Forçage de l\\'initialisation WebSocket...');\n this.initWebSocket();\n }\n }\n\n /**\n * Générer un QR code avec le type configuré\n */\n async generateQR(containerId, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: this.config.type, // Utilise le type configuré\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n this.startAutoRefresh(containerId, this.config.type, options);\n \n // Émettre un événement WebSocket pour la génération du QR\n this.emitWebSocketEvent('qr_generated', {\n serviceId: response.data.service_id,\n type: this.config.type,\n qrCodeUrl: qrImageUrl,\n timestamp: Date.now()\n });\n \n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + this.config.type);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw new Error('Service non disponible');\n }\n }\n\n\n\n /**\n * Générer un QR code avec un type personnalisé\n */\n async generateCustomQR(containerId, type, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: type, // Type personnalisé (1, 2, 3, etc.)\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, type, options);\n this.startAutoRefresh(containerId, type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + type);\n this.displayServiceUnavailable(containerId, type);\n throw new Error('Service non disponible');\n }\n }\n\n // Alias pour maintenir la compatibilité\n async generateAuthQR(containerId, options = {}) {\n return this.generateQR(containerId, options);\n }\n\n async generateKYCQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour KYC\n this.config.type = 2;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(sessionId) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-status', {\n serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Authentification' : type === 2 ? 'Vérification KYC' : type === 3 ? 'Service Type 3' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\">\n <img src=\"${qrUrl}\" alt=\"QR Code SunuID\" style=\"max-width: 300px; height: auto;\">\n </div>\n <div class=\"sunuid-qr-instructions\">\n <p>Scannez ce QR code avec l'application SunuID pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${type.toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, options = {}) {\n try {\n const result = await this.generateQR(containerId, options);\n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw error;\n }\n }\n\n /**\n * Démarrer le rafraîchissement automatique\n */\n startAutoRefresh(containerId, type, options) {\n if (!this.config.autoRefresh) return;\n\n this.refreshTimer = setInterval(async () => {\n try {\n await this.refreshQR(containerId, type, options);\n } catch (error) {\n console.warn('Erreur lors du rafraîchissement automatique:', error);\n }\n }, this.config.refreshInterval);\n }\n\n /**\n * Démarrer le timer de compte à rebours\n */\n\n\n /**\n * Effectuer une requête API\n */\n async makeRequest(endpoint, data) {\n // Utiliser l'endpoint depuis la configuration si disponible\n const endpointPath = window.SunuIDConfig?.endpoints?.[endpoint.replace('/', '')] || endpoint;\n const url = `${this.config.apiUrl}${endpointPath}`;\n \n // Log pour déboguer l'envoi du type\n if (data.type !== undefined) {\n console.log(`🌐 Envoi requête API - Type: ${data.type}, Endpoint: ${endpoint}`);\n }\n \n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n // Fermer la connexion WebSocket\n if (this.socket) {\n this.socket.disconnect();\n this.socket = null;\n console.log('🌐 WebSocket déconnecté');\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","socket","init","_createClass","key","value","Error","console","log","initWebSocket","_this","io","warn","setTimeout","ip","getClientIP","query","token","userId","username","on","id","reason","error","data","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","emitWebSocketEvent","event","connected","emit","concat","getWebSocketStatus","forceWebSocketInit","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","imageBaseUrl","qrImageUrl","_args","_t","w","_context","p","n","makeRequest","v","success","qrcode","displayQRCode","startAutoRefresh","serviceId","service_id","qrCodeUrl","timestamp","Date","now","a","sessionId","message","displayServiceUnavailable","generateQR","_x","apply","_generateCustomQR","_callee2","_args2","_t2","_context2","generateCustomQR","_x2","_x3","_generateAuthQR","_callee3","_args3","_context3","generateAuthQR","_x4","_generateKYCQR","_callee4","originalType","_args4","_context4","f","generateKYCQR","_x5","_checkQRStatus","_callee5","_t3","_context5","handleError","checkQRStatus","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_args6","_t4","_context6","refreshQR","_x7","_this2","setInterval","_callee7","_t5","_context7","_makeRequest","_callee8","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t6","_context8","endpoints","replace","fetch","method","headers","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x8","_x9","querySelector","destroy","clearInterval","disconnect","sunuidInstance","initSunuID"],"mappings":"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"}
|
package/dist/sunuid-sdk.js
CHANGED
|
@@ -259,6 +259,16 @@
|
|
|
259
259
|
value: function initWebSocket() {
|
|
260
260
|
var _this = this;
|
|
261
261
|
try {
|
|
262
|
+
// Vérifier si Socket.IO est disponible
|
|
263
|
+
if (typeof io === 'undefined') {
|
|
264
|
+
console.warn('⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard');
|
|
265
|
+
// Réessayer après un délai
|
|
266
|
+
setTimeout(function () {
|
|
267
|
+
return _this.initWebSocket();
|
|
268
|
+
}, 1000);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
|
|
262
272
|
// Obtenir l'IP du client (simulation)
|
|
263
273
|
var ip = this.getClientIP();
|
|
264
274
|
|
|
@@ -356,6 +366,8 @@
|
|
|
356
366
|
if (this.socket && this.socket.connected) {
|
|
357
367
|
this.socket.emit(event, data);
|
|
358
368
|
console.log("\uD83D\uDCE4 \xC9v\xE9nement WebSocket \xE9mis: ".concat(event), data);
|
|
369
|
+
} else if (typeof io === 'undefined') {
|
|
370
|
+
console.warn('⚠️ Socket.IO non disponible, impossible d\'émettre l\'événement:', event);
|
|
359
371
|
} else {
|
|
360
372
|
console.warn('⚠️ WebSocket non connecté, impossible d\'émettre l\'événement:', event);
|
|
361
373
|
}
|
|
@@ -373,6 +385,18 @@
|
|
|
373
385
|
return this.socket.connected ? 'connected' : 'disconnected';
|
|
374
386
|
}
|
|
375
387
|
|
|
388
|
+
/**
|
|
389
|
+
* Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)
|
|
390
|
+
*/
|
|
391
|
+
}, {
|
|
392
|
+
key: "forceWebSocketInit",
|
|
393
|
+
value: function forceWebSocketInit() {
|
|
394
|
+
if (typeof io !== 'undefined' && !this.socket) {
|
|
395
|
+
console.log('🔄 Forçage de l\'initialisation WebSocket...');
|
|
396
|
+
this.initWebSocket();
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
|
|
376
400
|
/**
|
|
377
401
|
* Générer un QR code avec le type configuré
|
|
378
402
|
*/
|
package/dist/sunuid-sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sunuid-sdk.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // 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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"}
|
|
1
|
+
{"version":3,"file":"sunuid-sdk.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // Vérifier si Socket.IO est disponible\n if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard');\n // Réessayer après un délai\n setTimeout(() => this.initWebSocket(), 1000);\n return;\n }\n \n // Obtenir l'IP du client (simulation)\n const ip = this.getClientIP();\n \n // Initialiser la connexion WebSocket si elle n'existe pas\n if (!this.socket) {\n this.socket = io('wss://samasocket.fayma.sn:9443', {\n query: {\n token: this.config.clientId,\n type: 'web',\n userId: this.config.clientId,\n username: ip\n }\n });\n\n // Gestion des événements WebSocket\n this.socket.on('connect', () => {\n console.log('🌐 WebSocket connecté avec succès');\n console.log('📊 Socket ID:', this.socket.id);\n });\n\n this.socket.on('disconnect', (reason) => {\n console.log('❌ WebSocket déconnecté:', reason);\n });\n\n this.socket.on('connect_error', (error) => {\n console.error('❌ Erreur connexion WebSocket:', error);\n });\n\n // Écouter les événements spécifiques\n this.socket.on('qr_status_update', (data) => {\n console.log('📱 Mise à jour statut QR reçue:', data);\n this.handleQRStatusUpdate(data);\n });\n\n this.socket.on('qr_scan_success', (data) => {\n console.log('✅ Scan QR réussi reçu:', data);\n this.handleQRScanSuccess(data);\n });\n\n this.socket.on('qr_expired', (data) => {\n console.log('⏰ QR expiré reçu:', data);\n this.handleQRExpired(data);\n });\n }\n } catch (error) {\n console.error('❌ Erreur initialisation WebSocket:', error);\n }\n }\n\n /**\n * Obtenir l'IP du client (simulation)\n */\n getClientIP() {\n // Simulation - en production, vous pourriez utiliser un service d'IP\n return '127.0.0.1';\n }\n\n /**\n * Gérer la mise à jour du statut QR\n */\n handleQRStatusUpdate(data) {\n if (this.config.onStatusUpdate) {\n this.config.onStatusUpdate(data);\n }\n }\n\n /**\n * Gérer le succès du scan QR\n */\n handleQRScanSuccess(data) {\n if (this.config.onSuccess) {\n this.config.onSuccess(data);\n }\n }\n\n /**\n * Gérer l'expiration du QR\n */\n handleQRExpired(data) {\n if (this.config.onExpired) {\n this.config.onExpired(data);\n }\n }\n\n /**\n * Émettre un événement WebSocket\n */\n emitWebSocketEvent(event, data) {\n if (this.socket && this.socket.connected) {\n this.socket.emit(event, data);\n console.log(`📤 Événement WebSocket émis: ${event}`, data);\n } else if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, impossible d\\'émettre l\\'événement:', event);\n } else {\n console.warn('⚠️ WebSocket non connecté, impossible d\\'émettre l\\'événement:', event);\n }\n }\n\n /**\n * Obtenir le statut de la connexion WebSocket\n */\n getWebSocketStatus() {\n if (!this.socket) {\n return 'not_initialized';\n }\n return this.socket.connected ? 'connected' : 'disconnected';\n }\n\n /**\n * Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)\n */\n forceWebSocketInit() {\n if (typeof io !== 'undefined' && !this.socket) {\n console.log('🔄 Forçage de l\\'initialisation WebSocket...');\n this.initWebSocket();\n }\n }\n\n /**\n * Générer un QR code avec le type configuré\n */\n async generateQR(containerId, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: this.config.type, // Utilise le type configuré\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n this.startAutoRefresh(containerId, this.config.type, options);\n \n // Émettre un événement WebSocket pour la génération du QR\n this.emitWebSocketEvent('qr_generated', {\n serviceId: response.data.service_id,\n type: this.config.type,\n qrCodeUrl: qrImageUrl,\n timestamp: Date.now()\n });\n \n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + this.config.type);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw new Error('Service non disponible');\n }\n }\n\n\n\n /**\n * Générer un QR code avec un type personnalisé\n */\n async generateCustomQR(containerId, type, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: type, // Type personnalisé (1, 2, 3, etc.)\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, type, options);\n this.startAutoRefresh(containerId, type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + type);\n this.displayServiceUnavailable(containerId, type);\n throw new Error('Service non disponible');\n }\n }\n\n // Alias pour maintenir la compatibilité\n async generateAuthQR(containerId, options = {}) {\n return this.generateQR(containerId, options);\n }\n\n async generateKYCQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour KYC\n this.config.type = 2;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(sessionId) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-status', {\n serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Authentification' : type === 2 ? 'Vérification KYC' : type === 3 ? 'Service Type 3' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\">\n <img src=\"${qrUrl}\" alt=\"QR Code SunuID\" style=\"max-width: 300px; height: auto;\">\n </div>\n <div class=\"sunuid-qr-instructions\">\n <p>Scannez ce QR code avec l'application SunuID pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${type.toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, options = {}) {\n try {\n const result = await this.generateQR(containerId, options);\n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw error;\n }\n }\n\n /**\n * Démarrer le rafraîchissement automatique\n */\n startAutoRefresh(containerId, type, options) {\n if (!this.config.autoRefresh) return;\n\n this.refreshTimer = setInterval(async () => {\n try {\n await this.refreshQR(containerId, type, options);\n } catch (error) {\n console.warn('Erreur lors du rafraîchissement automatique:', error);\n }\n }, this.config.refreshInterval);\n }\n\n /**\n * Démarrer le timer de compte à rebours\n */\n\n\n /**\n * Effectuer une requête API\n */\n async makeRequest(endpoint, data) {\n // Utiliser l'endpoint depuis la configuration si disponible\n const endpointPath = window.SunuIDConfig?.endpoints?.[endpoint.replace('/', '')] || endpoint;\n const url = `${this.config.apiUrl}${endpointPath}`;\n \n // Log pour déboguer l'envoi du type\n if (data.type !== undefined) {\n console.log(`🌐 Envoi requête API - Type: ${data.type}, Endpoint: ${endpoint}`);\n }\n \n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n // Fermer la connexion WebSocket\n if (this.socket) {\n this.socket.disconnect();\n this.socket = null;\n console.log('🌐 WebSocket déconnecté');\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","socket","init","_createClass","key","value","Error","console","log","initWebSocket","_this","io","warn","setTimeout","ip","getClientIP","query","token","userId","username","on","id","reason","error","data","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","emitWebSocketEvent","event","connected","emit","concat","getWebSocketStatus","forceWebSocketInit","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","imageBaseUrl","qrImageUrl","_args","_t","w","_context","p","n","makeRequest","v","success","qrcode","displayQRCode","startAutoRefresh","serviceId","service_id","qrCodeUrl","timestamp","Date","now","a","sessionId","message","displayServiceUnavailable","generateQR","_x","apply","_generateCustomQR","_callee2","_args2","_t2","_context2","generateCustomQR","_x2","_x3","_generateAuthQR","_callee3","_args3","_context3","generateAuthQR","_x4","_generateKYCQR","_callee4","originalType","_args4","_context4","f","generateKYCQR","_x5","_checkQRStatus","_callee5","_t3","_context5","handleError","checkQRStatus","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_args6","_t4","_context6","refreshQR","_x7","_this2","setInterval","_callee7","_t5","_context7","_makeRequest","_callee8","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t6","_context8","endpoints","replace","fetch","method","headers","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x8","_x9","querySelector","destroy","clearInterval","disconnect","sunuidInstance","initSunuID"],"mappings":"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"}
|
package/dist/sunuid-sdk.min.js
CHANGED
|
@@ -7,5 +7,5 @@ var e,n,t="function"==typeof Symbol?Symbol:{},r=t.iterator||"@@iterator",i=t.toS
|
|
|
7
7
|
* @version 1.0.0
|
|
8
8
|
* @author SunuID Team
|
|
9
9
|
* @license MIT
|
|
10
|
-
*/!function(e,r){var i={apiUrl:(null===(r=e.SunuIDConfig)||void 0===r?void 0:r.apiUrl)||"https://api.sunuid.fayma.sn",clientId:null,secretId:null,type:1,theme:"light",language:"fr",autoRefresh:!0,refreshInterval:3e4,onSuccess:null,onError:null,onStatusUpdate:null,onExpired:null},s=function(){return r=function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=o(o({},i),n),this.qrCode=null,this.refreshTimer=null,this.isInitialized=!1,this.socket=null,this.init()},s=[{key:"init",value:function(){if(!this.config.clientId||!this.config.secretId)throw new Error("SunuID: clientId et secretId sont requis");this.isInitialized=!0,console.log("SunuID SDK initialisé avec succès"),this.initWebSocket()}},{key:"initWebSocket",value:function(){var e=this;try{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)}();
|
|
10
|
+
*/!function(e,r){var i={apiUrl:(null===(r=e.SunuIDConfig)||void 0===r?void 0:r.apiUrl)||"https://api.sunuid.fayma.sn",clientId:null,secretId:null,type:1,theme:"light",language:"fr",autoRefresh:!0,refreshInterval:3e4,onSuccess:null,onError:null,onStatusUpdate:null,onExpired:null},s=function(){return r=function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=o(o({},i),n),this.qrCode=null,this.refreshTimer=null,this.isInitialized=!1,this.socket=null,this.init()},s=[{key:"init",value:function(){if(!this.config.clientId||!this.config.secretId)throw new Error("SunuID: clientId et secretId sont requis");this.isInitialized=!0,console.log("SunuID SDK initialisé avec succès"),this.initWebSocket()}},{key:"initWebSocket",value:function(){var e=this;try{if("undefined"==typeof io)return console.warn("⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard"),void setTimeout(function(){return e.initWebSocket()},1e3);var n=this.getClientIP();this.socket||(this.socket=io("wss://samasocket.fayma.sn:9443",{query:{token:this.config.clientId,type:"web",userId:this.config.clientId,username:n}}),this.socket.on("connect",function(){console.log("🌐 WebSocket connecté avec succès"),console.log("📊 Socket ID:",e.socket.id)}),this.socket.on("disconnect",function(e){console.log("❌ WebSocket déconnecté:",e)}),this.socket.on("connect_error",function(e){console.error("❌ Erreur connexion WebSocket:",e)}),this.socket.on("qr_status_update",function(n){console.log("📱 Mise à jour statut QR reçue:",n),e.handleQRStatusUpdate(n)}),this.socket.on("qr_scan_success",function(n){console.log("✅ Scan QR réussi reçu:",n),e.handleQRScanSuccess(n)}),this.socket.on("qr_expired",function(n){console.log("⏰ QR expiré reçu:",n),e.handleQRExpired(n)}))}catch(e){console.error("❌ Erreur initialisation WebSocket:",e)}}},{key:"getClientIP",value:function(){return"127.0.0.1"}},{key:"handleQRStatusUpdate",value:function(e){this.config.onStatusUpdate&&this.config.onStatusUpdate(e)}},{key:"handleQRScanSuccess",value:function(e){this.config.onSuccess&&this.config.onSuccess(e)}},{key:"handleQRExpired",value:function(e){this.config.onExpired&&this.config.onExpired(e)}},{key:"emitWebSocketEvent",value:function(e,n){this.socket&&this.socket.connected?(this.socket.emit(e,n),console.log("📤 Événement WebSocket émis: ".concat(e),n)):"undefined"==typeof io?console.warn("⚠️ Socket.IO non disponible, impossible d'émettre l'événement:",e):console.warn("⚠️ WebSocket non connecté, impossible d'émettre l'événement:",e)}},{key:"getWebSocketStatus",value:function(){return this.socket?this.socket.connected?"connected":"disconnected":"not_initialized"}},{key:"forceWebSocketInit",value:function(){"undefined"==typeof io||this.socket||(console.log("🔄 Forçage de l'initialisation WebSocket..."),this.initWebSocket())}},{key:"generateQR",value:(v=n(c().m(function e(n){var t,r,i,s,a=arguments;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t=a.length>1&&void 0!==a[1]?a[1]:{},this.isInitialized){e.n=1;break}throw new Error("SunuID: SDK non initialisé");case 1:return e.p=1,e.n=2,this.makeRequest("/qr-generate",o({type:this.config.type},t));case 2:if(!(r=e.v).success){e.n=3;break}return i="".concat("https://sunuid.fayma.sn").concat(r.data.qrcode),this.displayQRCode(n,i,this.config.type,t),this.startAutoRefresh(n,this.config.type,t),this.emitWebSocketEvent("qr_generated",{serviceId:r.data.service_id,type:this.config.type,qrCodeUrl:i,timestamp:Date.now()}),e.a(2,o(o({},r.data),{},{qrCodeUrl:i,sessionId:r.data.service_id}));case 3:throw new Error(r.message||"Erreur lors de la génération du QR code");case 4:e.n=6;break;case 5:throw e.p=5,s=e.v,console.error("Erreur API détectée:",s.message),console.log('Affichage du message "Service non disponible" pour type '+this.config.type),this.displayServiceUnavailable(n,this.config.type),new Error("Service non disponible");case 6:return e.a(2)}},e,this,[[1,5]])})),function(e){return v.apply(this,arguments)})},{key:"generateCustomQR",value:(p=n(c().m(function e(n,t){var r,i,s,a,u=arguments;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:if(r=u.length>2&&void 0!==u[2]?u[2]:{},this.isInitialized){e.n=1;break}throw new Error("SunuID: SDK non initialisé");case 1:return e.p=1,e.n=2,this.makeRequest("/qr-generate",o({type:t},r));case 2:if(!(i=e.v).success){e.n=3;break}return s="".concat("https://sunuid.fayma.sn").concat(i.data.qrcode),this.displayQRCode(n,s,t,r),this.startAutoRefresh(n,t,r),e.a(2,o(o({},i.data),{},{qrCodeUrl:s,sessionId:i.data.service_id}));case 3:throw new Error(i.message||"Erreur lors de la génération du QR code");case 4:e.n=6;break;case 5:throw e.p=5,a=e.v,console.error("Erreur API détectée:",a.message),console.log('Affichage du message "Service non disponible" pour type '+t),this.displayServiceUnavailable(n,t),new Error("Service non disponible");case 6:return e.a(2)}},e,this,[[1,5]])})),function(e,n){return p.apply(this,arguments)})},{key:"generateAuthQR",value:(h=n(c().m(function e(n){var t,r=arguments;return c().w(function(e){for(;;)if(0===e.n)return t=r.length>1&&void 0!==r[1]?r[1]:{},e.a(2,this.generateQR(n,t))},e,this)})),function(e){return h.apply(this,arguments)})},{key:"generateKYCQR",value:(d=n(c().m(function e(n){var t,r,i=arguments;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:return t=i.length>1&&void 0!==i[1]?i[1]:{},r=this.config.type,this.config.type=2,e.p=1,e.n=2,this.generateQR(n,t);case 2:return e.a(2,e.v);case 3:return e.p=3,this.config.type=r,e.f(3);case 4:return e.a(2)}},e,this,[[1,,3,4]])})),function(e){return d.apply(this,arguments)})},{key:"checkQRStatus",value:(f=n(c().m(function e(n){var t,r;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:if(this.isInitialized){e.n=1;break}throw new Error("SunuID: SDK non initialisé");case 1:return e.p=1,e.n=2,this.makeRequest("/qr-status",{serviceId:n});case 2:if(!(t=e.v).success){e.n=3;break}return e.a(2,t.data);case 3:throw new Error(t.message||"Erreur lors de la vérification du statut");case 4:e.n=6;break;case 5:throw e.p=5,r=e.v,this.handleError(r),r;case 6:return e.a(2)}},e,this,[[1,5]])})),function(e){return f.apply(this,arguments)})},{key:"displayQRCode",value:function(e,n,t){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=document.getElementById(e);if(!i)throw new Error("Conteneur avec l'ID \"".concat(e,'" non trouvé'));i.innerHTML="";var o=document.createElement("div");o.className="sunuid-qr-code",o.innerHTML='\n <div class="sunuid-qr-header">\n <h3>'.concat(1===t?"Authentification":2===t?"Vérification KYC":3===t?"Service Type 3":"Service Type "+t,'</h3>\n </div>\n <div class="sunuid-qr-image">\n <img src="').concat(n,'" alt="QR Code SunuID" style="max-width: 300px; height: auto;">\n </div>\n <div class="sunuid-qr-instructions">\n <p>Scannez ce QR code avec l\'application SunuID pour vous connecter</p>\n </div>\n <div class="sunuid-qr-status" id="sunuid-status">\n <p>En attente de scan...</p>\n </div>\n '),i.appendChild(o),this.applyTheme(r.theme||this.config.theme)}},{key:"displayServiceUnavailable",value:function(e,n){console.log("displayServiceUnavailable appelée pour ".concat(e,", type: ").concat(n));var t=document.getElementById(e);t?t.innerHTML='\n <div class="sunuid-service-unavailable" style="\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n ">\n <div style="font-size: 48px; margin-bottom: 20px;">⚠️</div>\n <h3 style="margin: 0 0 10px 0; color: #495057;">Service Non Disponible</h3>\n <p style="margin: 0; font-size: 14px;">\n Le service d\'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style="margin-top: 20px; font-size: 12px; color: #adb5bd;">\n Type: '.concat(n.toUpperCase(),"\n </div>\n </div>\n "):console.error("Container ".concat(e," non trouvé"))}},{key:"refreshQR",value:(l=n(c().m(function e(n){var t,r,i,o=arguments;return c().w(function(e){for(;;)switch(e.p=e.n){case 0:return t=o.length>1&&void 0!==o[1]?o[1]:{},e.p=1,e.n=2,this.generateQR(n,t);case 2:return r=e.v,e.a(2,r);case 3:throw e.p=3,i=e.v,console.error("Erreur lors du rafraîchissement:",i.message),this.displayServiceUnavailable(n,this.config.type),i;case 4:return e.a(2)}},e,this,[[1,3]])})),function(e){return l.apply(this,arguments)})},{key:"startAutoRefresh",value:function(e,t,r){var i=this;this.config.autoRefresh&&(this.refreshTimer=setInterval(n(c().m(function n(){var o;return c().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.p=0,n.n=1,i.refreshQR(e,t,r);case 1:n.n=3;break;case 2:n.p=2,o=n.v,console.warn("Erreur lors du rafraîchissement automatique:",o);case 3:return n.a(2)}},n,null,[[0,2]])})),this.config.refreshInterval))}},{key:"makeRequest",value:(u=n(c().m(function n(t,r){var i,s,a,u,l,f,d,h;return c().w(function(n){for(;;)switch(n.p=n.n){case 0:return s=(null===(i=e.SunuIDConfig)||void 0===i||null===(i=i.endpoints)||void 0===i?void 0:i[t.replace("/","")])||t,a="".concat(this.config.apiUrl).concat(s),void 0!==r.type&&console.log("🌐 Envoi requête API - Type: ".concat(r.type,", Endpoint: ").concat(t)),n.p=1,n.n=2,fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(this.config.clientId,":").concat(this.config.secretId),Accept:"application/json"},body:JSON.stringify(o(o({},r),{},{client_id:this.config.clientId,secret_id:this.config.secretId}))});case 2:if((u=n.v).ok){n.n=4;break}return n.n=3,u.text();case 3:l=n.v;try{f=JSON.parse(l)}catch(e){f={message:l}}throw new Error(f.message||"Erreur HTTP: ".concat(u.status));case 4:return n.n=5,u.json();case 5:return d=n.v,n.a(2,d);case 6:throw n.p=6,h=n.v,console.error("Erreur API SunuID:",h),h;case 7:return n.a(2)}},n,this,[[1,6]])})),function(e,n){return u.apply(this,arguments)})},{key:"applyTheme",value:function(e){var n=document.querySelector(".sunuid-qr-code");n&&(n.className="sunuid-qr-code sunuid-theme-".concat(e))}},{key:"handleError",value:function(e){console.error("SunuID SDK Error:",e),this.config.onError&&this.config.onError(e)}},{key:"destroy",value:function(){this.refreshTimer&&clearInterval(this.refreshTimer),this.socket&&(this.socket.disconnect(),this.socket=null,console.log("🌐 WebSocket déconnecté")),this.isInitialized=!1,console.log("SunuID SDK détruit")}}],s&&t(r.prototype,s),a&&t(r,a),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,s,a,u,l,f,d,h,p,v}();e.SunuID=s,e.sunuidInstance=null,e.initSunuID=function(n){try{return e.sunuidInstance=new s(n),e.sunuidInstance}catch(e){throw console.error("Erreur lors de l'initialisation de SunuID:",e),e}}}(window)}();
|
|
11
11
|
//# sourceMappingURL=sunuid-sdk.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sunuid-sdk.min.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // 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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"}
|
|
1
|
+
{"version":3,"file":"sunuid-sdk.min.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null,\n onStatusUpdate: null,\n onExpired: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n this.socket = null;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n }\n\n /**\n * Initialiser la connexion WebSocket\n */\n initWebSocket() {\n try {\n // Vérifier si Socket.IO est disponible\n if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, WebSocket sera initialisé plus tard');\n // Réessayer après un délai\n setTimeout(() => this.initWebSocket(), 1000);\n return;\n }\n \n // Obtenir l'IP du client (simulation)\n const ip = this.getClientIP();\n \n // Initialiser la connexion WebSocket si elle n'existe pas\n if (!this.socket) {\n this.socket = io('wss://samasocket.fayma.sn:9443', {\n query: {\n token: this.config.clientId,\n type: 'web',\n userId: this.config.clientId,\n username: ip\n }\n });\n\n // Gestion des événements WebSocket\n this.socket.on('connect', () => {\n console.log('🌐 WebSocket connecté avec succès');\n console.log('📊 Socket ID:', this.socket.id);\n });\n\n this.socket.on('disconnect', (reason) => {\n console.log('❌ WebSocket déconnecté:', reason);\n });\n\n this.socket.on('connect_error', (error) => {\n console.error('❌ Erreur connexion WebSocket:', error);\n });\n\n // Écouter les événements spécifiques\n this.socket.on('qr_status_update', (data) => {\n console.log('📱 Mise à jour statut QR reçue:', data);\n this.handleQRStatusUpdate(data);\n });\n\n this.socket.on('qr_scan_success', (data) => {\n console.log('✅ Scan QR réussi reçu:', data);\n this.handleQRScanSuccess(data);\n });\n\n this.socket.on('qr_expired', (data) => {\n console.log('⏰ QR expiré reçu:', data);\n this.handleQRExpired(data);\n });\n }\n } catch (error) {\n console.error('❌ Erreur initialisation WebSocket:', error);\n }\n }\n\n /**\n * Obtenir l'IP du client (simulation)\n */\n getClientIP() {\n // Simulation - en production, vous pourriez utiliser un service d'IP\n return '127.0.0.1';\n }\n\n /**\n * Gérer la mise à jour du statut QR\n */\n handleQRStatusUpdate(data) {\n if (this.config.onStatusUpdate) {\n this.config.onStatusUpdate(data);\n }\n }\n\n /**\n * Gérer le succès du scan QR\n */\n handleQRScanSuccess(data) {\n if (this.config.onSuccess) {\n this.config.onSuccess(data);\n }\n }\n\n /**\n * Gérer l'expiration du QR\n */\n handleQRExpired(data) {\n if (this.config.onExpired) {\n this.config.onExpired(data);\n }\n }\n\n /**\n * Émettre un événement WebSocket\n */\n emitWebSocketEvent(event, data) {\n if (this.socket && this.socket.connected) {\n this.socket.emit(event, data);\n console.log(`📤 Événement WebSocket émis: ${event}`, data);\n } else if (typeof io === 'undefined') {\n console.warn('⚠️ Socket.IO non disponible, impossible d\\'émettre l\\'événement:', event);\n } else {\n console.warn('⚠️ WebSocket non connecté, impossible d\\'émettre l\\'événement:', event);\n }\n }\n\n /**\n * Obtenir le statut de la connexion WebSocket\n */\n getWebSocketStatus() {\n if (!this.socket) {\n return 'not_initialized';\n }\n return this.socket.connected ? 'connected' : 'disconnected';\n }\n\n /**\n * Forcer l'initialisation WebSocket (si Socket.IO devient disponible plus tard)\n */\n forceWebSocketInit() {\n if (typeof io !== 'undefined' && !this.socket) {\n console.log('🔄 Forçage de l\\'initialisation WebSocket...');\n this.initWebSocket();\n }\n }\n\n /**\n * Générer un QR code avec le type configuré\n */\n async generateQR(containerId, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: this.config.type, // Utilise le type configuré\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n this.startAutoRefresh(containerId, this.config.type, options);\n \n // Émettre un événement WebSocket pour la génération du QR\n this.emitWebSocketEvent('qr_generated', {\n serviceId: response.data.service_id,\n type: this.config.type,\n qrCodeUrl: qrImageUrl,\n timestamp: Date.now()\n });\n \n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + this.config.type);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw new Error('Service non disponible');\n }\n }\n\n\n\n /**\n * Générer un QR code avec un type personnalisé\n */\n async generateCustomQR(containerId, type, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: type, // Type personnalisé (1, 2, 3, etc.)\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, type, options);\n this.startAutoRefresh(containerId, type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + type);\n this.displayServiceUnavailable(containerId, type);\n throw new Error('Service non disponible');\n }\n }\n\n // Alias pour maintenir la compatibilité\n async generateAuthQR(containerId, options = {}) {\n return this.generateQR(containerId, options);\n }\n\n async generateKYCQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour KYC\n this.config.type = 2;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(sessionId) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-status', {\n serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Authentification' : type === 2 ? 'Vérification KYC' : type === 3 ? 'Service Type 3' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\">\n <img src=\"${qrUrl}\" alt=\"QR Code SunuID\" style=\"max-width: 300px; height: auto;\">\n </div>\n <div class=\"sunuid-qr-instructions\">\n <p>Scannez ce QR code avec l'application SunuID pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${type.toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, options = {}) {\n try {\n const result = await this.generateQR(containerId, options);\n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw error;\n }\n }\n\n /**\n * Démarrer le rafraîchissement automatique\n */\n startAutoRefresh(containerId, type, options) {\n if (!this.config.autoRefresh) return;\n\n this.refreshTimer = setInterval(async () => {\n try {\n await this.refreshQR(containerId, type, options);\n } catch (error) {\n console.warn('Erreur lors du rafraîchissement automatique:', error);\n }\n }, this.config.refreshInterval);\n }\n\n /**\n * Démarrer le timer de compte à rebours\n */\n\n\n /**\n * Effectuer une requête API\n */\n async makeRequest(endpoint, data) {\n // Utiliser l'endpoint depuis la configuration si disponible\n const endpointPath = window.SunuIDConfig?.endpoints?.[endpoint.replace('/', '')] || endpoint;\n const url = `${this.config.apiUrl}${endpointPath}`;\n \n // Log pour déboguer l'envoi du type\n if (data.type !== undefined) {\n console.log(`🌐 Envoi requête API - Type: ${data.type}, Endpoint: ${endpoint}`);\n }\n \n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n // Fermer la connexion WebSocket\n if (this.socket) {\n this.socket.disconnect();\n this.socket = null;\n console.log('🌐 WebSocket déconnecté');\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","this","_objectSpread","qrCode","refreshTimer","isInitialized","socket","init","key","value","Error","console","log","initWebSocket","_this","io","warn","setTimeout","ip","getClientIP","query","token","userId","username","on","id","reason","error","data","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","event","connected","emit","concat","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","qrImageUrl","_t","_args","w","_context","p","n","makeRequest","v","success","qrcode","displayQRCode","startAutoRefresh","emitWebSocketEvent","serviceId","service_id","qrCodeUrl","timestamp","Date","now","a","sessionId","message","displayServiceUnavailable","_x","apply","_generateCustomQR","_callee2","_t2","_args2","_context2","_x2","_x3","_generateAuthQR","_callee3","_args3","_context3","generateQR","_x4","_generateKYCQR","_callee4","originalType","_args4","_context4","f","_x5","_checkQRStatus","_callee5","_t3","_context5","handleError","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_t4","_args6","_context6","_x7","_this2","setInterval","_callee7","_t5","_context7","refreshQR","_makeRequest","_callee8","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t6","_context8","endpoints","replace","fetch","method","headers","Authorization","Accept","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x8","_x9","querySelector","clearInterval","disconnect","sunuidInstance","initSunuID"],"mappings":"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"}
|