sunuid-sdk 1.0.28 → 1.0.29

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.
@@ -271,7 +271,7 @@ function _unsupportedIterableToArray(r, a) {
271
271
  * @license MIT
272
272
  */
273
273
 
274
- (function (window, _window$SunuIDConfig, _window$SunuIDConfig2) {
274
+ (function (window, _window$SunuIDConfig) {
275
275
 
276
276
  // Configuration par défaut
277
277
  var DEFAULT_CONFIG = {
@@ -299,7 +299,12 @@ function _unsupportedIterableToArray(r, a) {
299
299
  // 10 secondes
300
300
  // Options d'initialisation sécurisée
301
301
  secureInit: false,
302
- secureInitUrl: ((_window$SunuIDConfig2 = window.SunuIDConfig) === null || _window$SunuIDConfig2 === void 0 || (_window$SunuIDConfig2 = _window$SunuIDConfig2.apiUrl) === null || _window$SunuIDConfig2 === void 0 ? void 0 : _window$SunuIDConfig2.replace('/api', '')) + '/secure-init.php' || 'https://sunuid.fayma.sn/secure-init.php',
302
+ secureInitUrl: function (_window$SunuIDConfig2, _window$SunuIDConfig3) {
303
+ if ((_window$SunuIDConfig2 = window.SunuIDConfig) !== null && _window$SunuIDConfig2 !== void 0 && (_window$SunuIDConfig2 = _window$SunuIDConfig2.apiUrl) !== null && _window$SunuIDConfig2 !== void 0 && _window$SunuIDConfig2.includes('api.sunuid.fayma.sn')) {
304
+ return 'https://sunuid.fayma.sn/secure-init.php';
305
+ }
306
+ return ((_window$SunuIDConfig3 = window.SunuIDConfig) === null || _window$SunuIDConfig3 === void 0 || (_window$SunuIDConfig3 = _window$SunuIDConfig3.apiUrl) === null || _window$SunuIDConfig3 === void 0 ? void 0 : _window$SunuIDConfig3.replace('/api', '')) + '/secure-init.php' || 'https://sunuid.fayma.sn/secure-init.php';
307
+ }(),
303
308
  token: null
304
309
  };
305
310
 
@@ -1214,7 +1219,14 @@ function _unsupportedIterableToArray(r, a) {
1214
1219
 
1215
1220
  // Appeler l'endpoint PHP
1216
1221
  console.log('🔄 Appel endpoint PHP...');
1217
- qrGeneratorUrl = this.config.apiUrl.replace('/api', '') + '/qr-generator.php';
1222
+ // Construire l'URL du QR generator de manière plus robuste
1223
+
1224
+ if (this.config.apiUrl.includes('api.sunuid.fayma.sn')) {
1225
+ qrGeneratorUrl = 'https://sunuid.fayma.sn/qr-generator.php';
1226
+ } else {
1227
+ qrGeneratorUrl = this.config.apiUrl.replace('/api', '') + '/qr-generator.php';
1228
+ }
1229
+ console.log('🔗 URL QR Generator:', qrGeneratorUrl);
1218
1230
  _context9.n = 3;
1219
1231
  return fetch(qrGeneratorUrl, {
1220
1232
  method: 'POST',
@@ -1425,8 +1437,8 @@ function _unsupportedIterableToArray(r, a) {
1425
1437
  key: "makeRequest",
1426
1438
  value: (function () {
1427
1439
  var _makeRequest = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee10(endpoint, data) {
1428
- var _window$SunuIDConfig3,
1429
- _window$SunuIDConfig4,
1440
+ var _window$SunuIDConfig4,
1441
+ _window$SunuIDConfig5,
1430
1442
  _this5 = this;
1431
1443
  var sanitizedData, endpointPath, url, retryCount, maxRetries, _loop, _ret;
1432
1444
  return _regenerator().w(function (_context11) {
@@ -1466,11 +1478,11 @@ function _unsupportedIterableToArray(r, a) {
1466
1478
  console.log('🔍 Debug makeRequest - isInitialized:', this.isInitialized);
1467
1479
 
1468
1480
  // Utiliser l'endpoint depuis la configuration si disponible
1469
- endpointPath = ((_window$SunuIDConfig3 = window.SunuIDConfig) === null || _window$SunuIDConfig3 === void 0 || (_window$SunuIDConfig3 = _window$SunuIDConfig3.endpoints) === null || _window$SunuIDConfig3 === void 0 ? void 0 : _window$SunuIDConfig3[endpoint.replace('/', '')]) || endpoint;
1481
+ endpointPath = ((_window$SunuIDConfig4 = window.SunuIDConfig) === null || _window$SunuIDConfig4 === void 0 || (_window$SunuIDConfig4 = _window$SunuIDConfig4.endpoints) === null || _window$SunuIDConfig4 === void 0 ? void 0 : _window$SunuIDConfig4[endpoint.replace('/', '')]) || endpoint;
1470
1482
  url = "".concat(this.config.apiUrl).concat(endpointPath); // Debug: Afficher l'URL finale
1471
1483
  console.log('🔍 URL finale construite:', url);
1472
1484
  console.log('🔍 EndpointPath:', endpointPath);
1473
- console.log('🔍 SunuIDConfig endpoints:', JSON.stringify((_window$SunuIDConfig4 = window.SunuIDConfig) === null || _window$SunuIDConfig4 === void 0 ? void 0 : _window$SunuIDConfig4.endpoints));
1485
+ console.log('🔍 SunuIDConfig endpoints:', JSON.stringify((_window$SunuIDConfig5 = window.SunuIDConfig) === null || _window$SunuIDConfig5 === void 0 ? void 0 : _window$SunuIDConfig5.endpoints));
1474
1486
 
1475
1487
  // Log de sécurité pour la requête
1476
1488
  this.logSecurityEvent('API_REQUEST_START', {
@@ -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: 2, // Type par défaut (2 = authentification)\n partnerName: 'SunuID', // Nom du partenaire par défaut\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 // Nouvelles options de sécurité\n enableSecurityLogs: true,\n validateInputs: true,\n maxRetries: 3,\n requestTimeout: 10000, // 10 secondes\n // Options d'initialisation sécurisée\n secureInit: false,\n secureInitUrl: window.SunuIDConfig?.apiUrl?.replace('/api', '') + '/secure-init.php' || 'https://sunuid.fayma.sn/secure-init.php',\n token: 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 // Initialisation asynchrone\n this.initPromise = this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n async init() {\n try {\n // Initialisation sécurisée si activée\n if (this.config.secureInit) {\n await this.secureInit();\n } else {\n // Validation sécurisée des paramètres\n if (this.config.validateInputs) {\n this.validateSecurityParams();\n }\n }\n\n // Log de sécurité pour l'initialisation\n this.logSecurityEvent('SDK_INIT_START', {\n apiUrl: this.config.apiUrl,\n type: this.config.type,\n partnerName: this.config.partnerName,\n secureInit: this.config.secureInit\n });\n\n // Obscurcir les credentials dans les logs\n this.obfuscateCredentials();\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n this.logSecurityEvent('SDK_INIT_SUCCESS');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n \n } catch (error) {\n this.logSecurityEvent('SDK_INIT_ERROR', { error: error.message });\n throw error;\n }\n }\n\n /**\n * Initialisation sécurisée via PHP\n */\n async secureInit() {\n try {\n this.logSecurityEvent('SECURE_INIT_START');\n \n const initData = {\n type: this.config.type,\n partnerName: this.config.partnerName,\n theme: this.config.theme\n };\n\n const response = await fetch(this.config.secureInitUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify(initData)\n });\n\n if (!response.ok) {\n throw new Error(`Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n \n if (!result.success) {\n throw new Error(result.error || 'Erreur lors de l\\'initialisation sécurisée');\n }\n\n // Stocker le token et les données sécurisées\n this.config.token = result.data.token;\n this.config.apiUrl = result.data.api_url;\n \n // Décoder le token pour récupérer les credentials\n const decodedToken = this.decodeSecureToken(result.data.token);\n if (decodedToken) {\n this.config.clientId = decodedToken.client_id;\n this.config.secretId = decodedToken.secret_id;\n } else {\n throw new Error('Impossible de décoder le token sécurisé');\n }\n \n this.config.expiresIn = result.data.expires_in;\n this.config.maxRequests = result.data.max_requests;\n this.config.requestCount = 0;\n\n this.logSecurityEvent('SECURE_INIT_SUCCESS', {\n expiresIn: result.data.expires_in,\n maxRequests: result.data.max_requests\n });\n\n console.log('✅ Initialisation sécurisée réussie');\n \n } catch (error) {\n this.logSecurityEvent('SECURE_INIT_ERROR', { error: error.message });\n throw new Error(`Échec de l'initialisation sécurisée: ${error.message}`);\n }\n }\n\n /**\n * Décoder le token sécurisé\n */\n decodeSecureToken(token) {\n try {\n const parts = token.split('.');\n if (parts.length !== 2) {\n console.error('❌ Format de token invalide');\n return null;\n }\n \n const [payload, signature] = parts;\n \n // Décoder le payload (base64)\n const decodedPayload = atob(payload);\n const tokenData = JSON.parse(decodedPayload);\n \n // Vérifier l'expiration\n if (tokenData.exp && tokenData.exp < Date.now() / 1000) {\n console.error('❌ Token expiré');\n return null;\n }\n \n console.log('✅ Token décodé avec succès');\n return tokenData;\n \n } catch (error) {\n console.error('❌ Erreur décodage token:', error);\n return null;\n }\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 * Obtenir le nom du type à partir du numéro\n */\n getTypeName(type) {\n switch(type) {\n case 1: return 'KYC';\n case 2: return 'AUTH';\n case 3: return 'SIGNATURE';\n default: return `TYPE-${type}`;\n }\n }\n\n /**\n * Validation sécurisée des paramètres\n */\n validateSecurityParams() {\n const errors = [];\n \n // Validation du clientId\n if (!this.config.clientId || typeof this.config.clientId !== 'string') {\n errors.push('clientId invalide ou manquant');\n } else if (this.config.clientId.length < 10) {\n errors.push('clientId trop court');\n }\n \n // Validation du secretId\n if (!this.config.secretId || typeof this.config.secretId !== 'string') {\n errors.push('secretId invalide ou manquant');\n } else if (this.config.secretId.length < 32) {\n errors.push('secretId trop court (minimum 32 caractères)');\n }\n \n // Validation de l'URL API\n if (!this.config.apiUrl || !this.isValidUrl(this.config.apiUrl)) {\n errors.push('apiUrl invalide');\n }\n \n // Validation du type\n if (![1, 2, 3].includes(this.config.type)) {\n errors.push('type invalide (doit être 1, 2 ou 3)');\n }\n \n if (errors.length > 0) {\n this.logSecurityEvent('VALIDATION_ERROR', { errors });\n throw new Error(`Paramètres de sécurité invalides: ${errors.join(', ')}`);\n }\n \n this.logSecurityEvent('VALIDATION_SUCCESS');\n }\n\n /**\n * Validation d'URL sécurisée\n */\n isValidUrl(string) {\n try {\n const url = new URL(string);\n return url.protocol === 'https:' || url.protocol === 'http:';\n } catch (_) {\n return false;\n }\n }\n\n /**\n * Logs de sécurité\n */\n logSecurityEvent(event, data = {}) {\n if (!this.config.enableSecurityLogs) return;\n \n const securityLog = {\n timestamp: new Date().toISOString(),\n event: event,\n data: data,\n userAgent: navigator.userAgent,\n url: window.location.href\n };\n \n console.warn('🔒 [SECURITY]', securityLog);\n \n // Stocker les logs de sécurité (optionnel)\n if (!window.SunuIDSecurityLogs) {\n window.SunuIDSecurityLogs = [];\n }\n window.SunuIDSecurityLogs.push(securityLog);\n }\n\n /**\n * Chiffrement simple des credentials (pour éviter l'exposition en clair)\n */\n obfuscateCredentials() {\n // Stocker les vraies valeurs pour les logs de sécurité\n this.config.originalClientId = this.config.clientId;\n this.config.originalSecretId = this.config.secretId;\n \n // Créer des versions obfusquées pour l'affichage uniquement\n if (this.config.clientId) {\n this.config.clientIdDisplay = this.config.clientId.replace(/(.{3}).*(.{3})/, '$1***$2');\n }\n if (this.config.secretId) {\n this.config.secretIdDisplay = this.config.secretId.replace(/(.{4}).*(.{4})/, '$1***$2');\n }\n }\n\n /**\n * Validation des entrées utilisateur\n */\n sanitizeInput(input) {\n if (typeof input !== 'string') return input;\n \n // Protection contre les injections XSS basiques\n return input\n .replace(/[<>]/g, '') // Supprimer les balises HTML\n .replace(/javascript:/gi, '') // Supprimer les protocoles dangereux\n .trim();\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 // Attendre l'initialisation si nécessaire\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n \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.currentQRUrl = qrImageUrl; // Stocker l'URL pour getQRCode()\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n \n // Générer le QR code personnalisé avec le type + code de l'API + socket ID\n if (this.pendingQRInfo && response.data.code) {\n // Attendre que le socket ID soit bien défini\n const waitForSocketId = () => {\n if (this.socket && this.socket.id && this.socket.id !== 'unknown') {\n const socketId = this.socket.id;\n const qrContent = `${this.config.type}-${response.data.code}-${socketId}`;\n \n // Utiliser le partnerName de la réponse API et le nom du type\n const partnerName = response.data.partnerName || this.config.partnerName || 'SunuID';\n const typeName = this.getTypeName(this.config.type);\n const qrLabel = `${typeName} - ${partnerName}`;\n \n this.generateCustomQRCode(qrContent, qrLabel, this.pendingQRInfo.options);\n this.pendingQRInfo = null; // Nettoyer\n } else {\n // Réessayer après un délai si le socket ID n'est pas encore disponible\n setTimeout(waitForSocketId, 100);\n }\n };\n \n waitForSocketId();\n }\n \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 code: response.data.code,\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.error('Stack trace complet:', error.stack);\n console.error('Configuration SDK:', {\n apiUrl: this.config.apiUrl,\n type: this.config.type,\n secureInit: this.config.secureInit,\n clientId: this.config.clientId ? '***' + this.config.clientId.slice(-4) : 'null',\n secretId: this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null'\n });\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 // Attendre l'initialisation si nécessaire\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n \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 \n // Générer le QR code personnalisé avec le type + code de l'API + socket ID\n if (this.pendingQRInfo && response.data.code) {\n // Attendre que le socket ID soit bien défini\n const waitForSocketId = () => {\n if (this.socket && this.socket.id && this.socket.id !== 'unknown') {\n const socketId = this.socket.id;\n const qrContent = `${type}-${response.data.code}-${socketId}`;\n \n // Utiliser le partnerName de la réponse API et le nom du type\n const partnerName = response.data.partnerName || this.config.partnerName || 'SunuID';\n const typeName = this.getTypeName(type);\n const qrLabel = `${typeName} - ${partnerName}`;\n \n this.generateCustomQRCode(qrContent, qrLabel, this.pendingQRInfo.options);\n this.pendingQRInfo = null; // Nettoyer\n } else {\n // Réessayer après un délai si le socket ID n'est pas encore disponible\n setTimeout(waitForSocketId, 100);\n }\n };\n \n waitForSocketId();\n }\n \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.error('Stack trace complet:', error.stack);\n console.error('Configuration SDK (Custom):', {\n apiUrl: this.config.apiUrl,\n type: type,\n secureInit: this.config.secureInit,\n clientId: this.config.clientId ? '***' + this.config.clientId.slice(-4) : 'null',\n secretId: this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null'\n });\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 = 1;\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 async generateSignatureQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour Signature\n this.config.type = 3;\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 \n // Afficher un loader en attendant la réponse API et la connexion socket\n const typeName = this.getTypeName(type);\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Vérification KYC' : type === 2 ? 'Authentification' : type === 3 ? 'Signature' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\" id=\"sunuid-qr-container\">\n <div style=\"text-align: center; padding: 40px;\">\n <div class=\"sunuid-loader\">\n <div class=\"sunuid-spinner\"></div>\n <p style=\"margin-top: 20px; color: #666;\">Initialisation en cours...</p>\n <p style=\"font-size: 12px; color: #999; margin-top: 10px;\">Connexion API et WebSocket</p>\n <p style=\"font-size: 11px; color: #ccc; margin-top: 5px;\">Attente du Socket ID...</p>\n </div>\n </div>\n </div>\n <div class=\"sunuid-qr-instructions\" style=\"display: none;\">\n <p>Scannez ce QR code avec l'application ${this.config.partnerName} pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\" style=\"display: none;\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Stocker les informations pour la génération ultérieure\n this.pendingQRInfo = {\n containerId,\n type,\n options\n };\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Générer un QR code personnalisé avec PHP Endroid\n */\n async generateCustomQRCode(content, label, options = {}) {\n try {\n console.log('🎨 Début génération QR personnalisé avec PHP...');\n console.log('📄 Contenu:', content);\n console.log('🏷️ Label:', label);\n \n const qrContainer = document.getElementById('sunuid-qr-container');\n if (!qrContainer) {\n console.error('❌ QR container not found');\n this.displayFallbackImage();\n return;\n }\n \n console.log('✅ QR container trouvé');\n\n // Nettoyer le conteneur\n qrContainer.innerHTML = '<div style=\"text-align: center; padding: 20px;\"><p>Génération QR code avec PHP...</p></div>';\n\n // Appeler l'endpoint PHP\n console.log('🔄 Appel endpoint PHP...');\n const qrGeneratorUrl = this.config.apiUrl.replace('/api', '') + '/qr-generator.php';\n const response = await fetch(qrGeneratorUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n content: content,\n label: label,\n size: 300,\n margin: 10\n })\n });\n \n console.log('📥 Réponse PHP reçue - Status:', response.status);\n \n if (!response.ok) {\n throw new Error(`Erreur HTTP: ${response.status}`);\n }\n \n const responseData = await response.json();\n \n if (!responseData.success) {\n throw new Error(`Erreur PHP: ${responseData.error}`);\n }\n \n console.log('✅ QR code généré par PHP avec succès');\n console.log('📊 Taille:', responseData.data.size + 'px');\n console.log('📊 Longueur base64:', responseData.data.length + ' caractères');\n\n // Stocker l'URL du QR code pour getQRCode()\n this.currentQRUrl = responseData.data.dataUrl;\n \n // Créer le conteneur avec le QR code PHP\n qrContainer.innerHTML = `\n <div class=\"sunuid-qr-ready\" style=\"text-align: center; padding: 20px;\">\n <img src=\"${responseData.data.dataUrl}\" alt=\"QR Code ${this.config.partnerName}\" style=\"max-width: 300px; border: 2px solid #ddd; border-radius: 10px;\">\n </div>\n `;\n \n // Afficher les instructions et le statut maintenant que le QR est prêt\n const instructionsElement = qrContainer.parentElement.querySelector('.sunuid-qr-instructions');\n const statusElement = qrContainer.parentElement.querySelector('.sunuid-qr-status');\n \n if (instructionsElement) {\n instructionsElement.style.display = 'block';\n instructionsElement.classList.add('sunuid-qr-ready');\n }\n if (statusElement) {\n statusElement.style.display = 'block';\n statusElement.classList.add('sunuid-qr-ready');\n }\n \n console.log('✅ QR code PHP affiché dans le conteneur');\n\n } catch (error) {\n console.error('❌ Erreur génération QR PHP:', error);\n console.error('Stack trace:', error.stack);\n this.displayFallbackImage();\n }\n }\n\n /**\n * Ajouter le logo au centre du QR code\n */\n addLogoToCenter(ctx, x, y, width, height) {\n try {\n // Créer une image pour le logo\n const logo = new Image();\n logo.onload = () => {\n const logoSize = 40;\n const logoX = x + (width - logoSize) / 2;\n const logoY = y + (width - logoSize) / 2;\n\n // Dessiner un fond blanc pour le logo\n ctx.fillStyle = 'white';\n ctx.fillRect(logoX - 2, logoY - 2, logoSize + 4, logoSize + 4);\n\n // Dessiner le logo\n ctx.drawImage(logo, logoX, logoY, logoSize, logoSize);\n };\n logo.src = 'src/logoqr.png';\n } catch (error) {\n console.warn('Logo non disponible:', error);\n }\n }\n\n /**\n * Afficher l'image de fallback\n */\n displayFallbackImage() {\n console.log('⚠️ Affichage de l\\'image de fallback');\n const qrContainer = document.getElementById('sunuid-qr-container');\n if (qrContainer) {\n qrContainer.innerHTML = `\n <div style=\"text-align: center; padding: 20px; color: #666;\">\n <p>⚠️ Génération QR personnalisé non disponible</p>\n <p>Utilisation de l'image par défaut</p>\n <p><strong>Debug:</strong> QRCode disponible: ${typeof QRCode !== 'undefined'}</p>\n <p><strong>Debug:</strong> Container trouvé: ${qrContainer !== null}</p>\n </div>\n `;\n } else {\n console.error('❌ Container QR non trouvé pour fallback');\n }\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: ${String(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 sécurisée\n */\n async makeRequest(endpoint, data) {\n // Validation de sécurité\n if (!this.isInitialized) {\n this.logSecurityEvent('REQUEST_BEFORE_INIT', { endpoint });\n throw new Error('SDK non initialisé');\n }\n\n // Vérifier les limites de requêtes pour l'initialisation sécurisée\n if (this.config.secureInit) {\n this.config.requestCount++;\n if (this.config.requestCount > this.config.maxRequests) {\n this.logSecurityEvent('API_REQUEST_LIMIT_EXCEEDED', { \n requestCount: this.config.requestCount,\n maxRequests: this.config.maxRequests \n });\n throw new Error('Limite de requêtes dépassée');\n }\n }\n\n // Sanitisation des données\n const sanitizedData = this.sanitizeRequestData(data);\n \n // Debug: Afficher les données envoyées\n console.log('🔍 Debug makeRequest - endpoint:', endpoint);\n console.log('🔍 Debug makeRequest - apiUrl:', this.config.apiUrl);\n console.log('🔍 Debug makeRequest - url:', `${this.config.apiUrl}${endpoint}`);\n console.log('🔍 Debug makeRequest - data:', JSON.stringify(sanitizedData, null, 2));\n console.log('🔍 Debug makeRequest - secureInit:', this.config.secureInit);\n console.log('🔍 Debug makeRequest - isInitialized:', this.isInitialized);\n \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 // Debug: Afficher l'URL finale\n console.log('🔍 URL finale construite:', url);\n console.log('🔍 EndpointPath:', endpointPath);\n console.log('🔍 SunuIDConfig endpoints:', JSON.stringify(window.SunuIDConfig?.endpoints));\n \n // Log de sécurité pour la requête\n this.logSecurityEvent('API_REQUEST_START', {\n endpoint: endpointPath,\n url: url,\n dataKeys: Object.keys(sanitizedData),\n secureInit: this.config.secureInit\n });\n \n let retryCount = 0;\n const maxRetries = this.config.maxRetries;\n \n while (retryCount <= maxRetries) {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.requestTimeout);\n \n // Headers minimaux (API SunuID n'accepte que les headers essentiels)\n const headers = {\n 'Content-Type': 'application/json'\n };\n\n // Note: En mode sécurisé, les credentials sont dans le body\n // Pas besoin d'ajouter de header spécial pour éviter les problèmes CORS\n // if (this.config.secureInit && this.config.token) {\n // headers['X-Secure-Token'] = this.config.token;\n // }\n \n const response = await fetch(url, {\n method: 'POST',\n headers: headers,\n body: JSON.stringify(sanitizedData),\n signal: controller.signal\n });\n\n clearTimeout(timeoutId);\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 this.logSecurityEvent('API_REQUEST_ERROR', {\n status: response.status,\n statusText: response.statusText,\n error: errorData.message\n });\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n \n this.logSecurityEvent('API_REQUEST_SUCCESS', {\n endpoint: endpointPath,\n responseKeys: Object.keys(result)\n });\n \n return result;\n \n } catch (error) {\n retryCount++;\n \n if (error.name === 'AbortError') {\n this.logSecurityEvent('API_REQUEST_TIMEOUT', { retryCount });\n if (retryCount > maxRetries) {\n throw new Error('Timeout de la requête API');\n }\n continue;\n }\n \n if (retryCount > maxRetries) {\n this.logSecurityEvent('API_REQUEST_MAX_RETRIES', { \n retryCount, \n error: error.message \n });\n throw error;\n }\n \n // Attendre avant de réessayer\n await new Promise(resolve => setTimeout(resolve, 1000 * retryCount));\n }\n }\n }\n\n /**\n * Sanitisation des données de requête\n */\n sanitizeRequestData(data) {\n const sanitized = {};\n \n for (const [key, value] of Object.entries(data)) {\n if (typeof value === 'string') {\n sanitized[key] = this.sanitizeInput(value);\n } else if (typeof value === 'object' && value !== null) {\n sanitized[key] = this.sanitizeRequestData(value);\n } else {\n sanitized[key] = value;\n }\n }\n \n // Ajouter les credentials dans le body (API SunuID les attend ici)\n // Utiliser les vraies valeurs (originales) si disponibles, sinon les valeurs directes\n sanitized.client_id = this.config.originalClientId || this.config.clientId;\n sanitized.secret_id = this.config.originalSecretId || this.config.secretId;\n \n // Debug: Vérifier les credentials\n console.log('🔍 Credentials dans sanitizeRequestData - clientId:', this.config.clientId);\n console.log('🔍 Credentials dans sanitizeRequestData - secretId:', this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedClientId:', sanitized.client_id);\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedSecretId:', sanitized.secret_id ? '***' + sanitized.secret_id.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - data complet:', JSON.stringify(sanitized, null, 2));\n \n // Debug: Vérifier les credentials\n console.log('🔍 Credentials dans sanitizeRequestData - clientId:', this.config.clientId);\n console.log('🔍 Credentials dans sanitizeRequestData - secretId:', this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedClientId:', sanitized.client_id);\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedSecretId:', sanitized.secret_id ? '***' + sanitized.secret_id.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - data complet:', JSON.stringify(sanitized, null, 2));\n \n return sanitized;\n }\n\n /**\n * Générer un ID de requête unique\n */\n generateRequestId() {\n return 'req_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\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 * Obtenir l'URL du QR code généré\n */\n getQRCode() {\n // Retourner l'URL du QR code si disponible\n if (this.currentQRUrl) {\n return this.currentQRUrl;\n }\n \n // Sinon, retourner une URL par défaut ou null\n return null;\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 this.logSecurityEvent('SDK_DESTROY');\n console.log('SunuID SDK détruit');\n }\n\n /**\n * Obtenir les logs de sécurité\n */\n getSecurityLogs() {\n return window.SunuIDSecurityLogs || [];\n }\n\n /**\n * Nettoyer les logs de sécurité\n */\n clearSecurityLogs() {\n window.SunuIDSecurityLogs = [];\n this.logSecurityEvent('SECURITY_LOGS_CLEARED');\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","_window$SunuIDConfig2","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","partnerName","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","enableSecurityLogs","validateInputs","maxRetries","requestTimeout","secureInit","secureInitUrl","replace","token","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","socket","initPromise","init","_createClass","key","value","_init","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","p","n","validateSecurityParams","logSecurityEvent","obfuscateCredentials","console","log","initWebSocket","v","error","message","a","apply","_secureInit","_callee2","initData","response","result","decodedToken","_t2","_context2","fetch","method","headers","body","JSON","stringify","ok","Error","concat","status","json","success","data","api_url","decodeSecureToken","client_id","secret_id","expiresIn","expires_in","maxRequests","max_requests","requestCount","parts","split","_parts","_slicedToArray","payload","signature","decodedPayload","atob","tokenData","parse","exp","Date","now","_this","io","warn","setTimeout","ip","getClientIP","query","userId","username","on","id","reason","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","getTypeName","errors","push","isValidUrl","includes","join","string","url","URL","protocol","_","event","securityLog","timestamp","toISOString","userAgent","navigator","location","href","SunuIDSecurityLogs","originalClientId","originalSecretId","clientIdDisplay","secretIdDisplay","sanitizeInput","input","trim","emitWebSocketEvent","connected","emit","getWebSocketStatus","forceWebSocketInit","_generateQR","_callee3","containerId","_this2","options","imageBaseUrl","qrImageUrl","_waitForSocketId","_args3","_t3","_context3","makeRequest","qrcode","currentQRUrl","displayQRCode","pendingQRInfo","code","waitForSocketId","socketId","qrContent","typeName","qrLabel","generateCustomQRCode","startAutoRefresh","serviceId","service_id","qrCodeUrl","sessionId","stack","slice","displayServiceUnavailable","generateQR","_x","_generateCustomQR","_callee4","_this3","_response","_waitForSocketId2","_args4","_t4","_context4","generateCustomQR","_x2","_x3","_generateAuthQR","_callee5","_args5","_context5","generateAuthQR","_x4","_generateKYCQR","_callee6","originalType","_args6","_context6","f","generateKYCQR","_x5","_generateSignatureQR","_callee7","_args7","_context7","generateSignatureQR","_x6","_checkQRStatus","_callee8","_response2","_t5","_context8","handleError","checkQRStatus","_x7","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","_generateCustomQRCode","_callee9","content","label","qrContainer","qrGeneratorUrl","_response3","responseData","instructionsElement","statusElement","_args9","_t6","_context9","displayFallbackImage","size","margin","dataUrl","parentElement","querySelector","style","display","classList","add","_x8","_x9","addLogoToCenter","ctx","x","y","width","height","logo","Image","onload","logoSize","logoX","logoY","fillStyle","fillRect","drawImage","src","QRCode","String","toUpperCase","_refreshQR","_callee0","_args0","_t7","_context0","refreshQR","_x0","_this4","setInterval","_callee1","_t8","_context1","_makeRequest","_callee10","endpoint","_window$SunuIDConfig3","_window$SunuIDConfig4","_this5","sanitizedData","endpointPath","retryCount","_loop","_ret","_context11","sanitizeRequestData","endpoints","dataKeys","Object","keys","controller","timeoutId","_response4","errorText","errorData","_t9","_context10","AbortController","abort","signal","clearTimeout","text","e","statusText","responseKeys","name","Promise","resolve","d","_regeneratorValues","_x1","_x10","sanitized","_i","_Object$entries","entries","_Object$entries$_i","_typeof","generateRequestId","Math","random","toString","substr","getQRCode","destroy","clearInterval","disconnect","getSecurityLogs","clearSecurityLogs","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: 2, // Type par défaut (2 = authentification)\n partnerName: 'SunuID', // Nom du partenaire par défaut\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 // Nouvelles options de sécurité\n enableSecurityLogs: true,\n validateInputs: true,\n maxRetries: 3,\n requestTimeout: 10000, // 10 secondes\n // Options d'initialisation sécurisée\n secureInit: false,\n secureInitUrl: (() => {\n if (window.SunuIDConfig?.apiUrl?.includes('api.sunuid.fayma.sn')) {\n return 'https://sunuid.fayma.sn/secure-init.php';\n }\n return window.SunuIDConfig?.apiUrl?.replace('/api', '') + '/secure-init.php' || 'https://sunuid.fayma.sn/secure-init.php';\n })(),\n token: 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 // Initialisation asynchrone\n this.initPromise = this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n async init() {\n try {\n // Initialisation sécurisée si activée\n if (this.config.secureInit) {\n await this.secureInit();\n } else {\n // Validation sécurisée des paramètres\n if (this.config.validateInputs) {\n this.validateSecurityParams();\n }\n }\n\n // Log de sécurité pour l'initialisation\n this.logSecurityEvent('SDK_INIT_START', {\n apiUrl: this.config.apiUrl,\n type: this.config.type,\n partnerName: this.config.partnerName,\n secureInit: this.config.secureInit\n });\n\n // Obscurcir les credentials dans les logs\n this.obfuscateCredentials();\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n \n this.logSecurityEvent('SDK_INIT_SUCCESS');\n \n // Initialiser la connexion WebSocket\n this.initWebSocket();\n \n } catch (error) {\n this.logSecurityEvent('SDK_INIT_ERROR', { error: error.message });\n throw error;\n }\n }\n\n /**\n * Initialisation sécurisée via PHP\n */\n async secureInit() {\n try {\n this.logSecurityEvent('SECURE_INIT_START');\n \n const initData = {\n type: this.config.type,\n partnerName: this.config.partnerName,\n theme: this.config.theme\n };\n\n const response = await fetch(this.config.secureInitUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify(initData)\n });\n\n if (!response.ok) {\n throw new Error(`Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n \n if (!result.success) {\n throw new Error(result.error || 'Erreur lors de l\\'initialisation sécurisée');\n }\n\n // Stocker le token et les données sécurisées\n this.config.token = result.data.token;\n this.config.apiUrl = result.data.api_url;\n \n // Décoder le token pour récupérer les credentials\n const decodedToken = this.decodeSecureToken(result.data.token);\n if (decodedToken) {\n this.config.clientId = decodedToken.client_id;\n this.config.secretId = decodedToken.secret_id;\n } else {\n throw new Error('Impossible de décoder le token sécurisé');\n }\n \n this.config.expiresIn = result.data.expires_in;\n this.config.maxRequests = result.data.max_requests;\n this.config.requestCount = 0;\n\n this.logSecurityEvent('SECURE_INIT_SUCCESS', {\n expiresIn: result.data.expires_in,\n maxRequests: result.data.max_requests\n });\n\n console.log('✅ Initialisation sécurisée réussie');\n \n } catch (error) {\n this.logSecurityEvent('SECURE_INIT_ERROR', { error: error.message });\n throw new Error(`Échec de l'initialisation sécurisée: ${error.message}`);\n }\n }\n\n /**\n * Décoder le token sécurisé\n */\n decodeSecureToken(token) {\n try {\n const parts = token.split('.');\n if (parts.length !== 2) {\n console.error('❌ Format de token invalide');\n return null;\n }\n \n const [payload, signature] = parts;\n \n // Décoder le payload (base64)\n const decodedPayload = atob(payload);\n const tokenData = JSON.parse(decodedPayload);\n \n // Vérifier l'expiration\n if (tokenData.exp && tokenData.exp < Date.now() / 1000) {\n console.error('❌ Token expiré');\n return null;\n }\n \n console.log('✅ Token décodé avec succès');\n return tokenData;\n \n } catch (error) {\n console.error('❌ Erreur décodage token:', error);\n return null;\n }\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 * Obtenir le nom du type à partir du numéro\n */\n getTypeName(type) {\n switch(type) {\n case 1: return 'KYC';\n case 2: return 'AUTH';\n case 3: return 'SIGNATURE';\n default: return `TYPE-${type}`;\n }\n }\n\n /**\n * Validation sécurisée des paramètres\n */\n validateSecurityParams() {\n const errors = [];\n \n // Validation du clientId\n if (!this.config.clientId || typeof this.config.clientId !== 'string') {\n errors.push('clientId invalide ou manquant');\n } else if (this.config.clientId.length < 10) {\n errors.push('clientId trop court');\n }\n \n // Validation du secretId\n if (!this.config.secretId || typeof this.config.secretId !== 'string') {\n errors.push('secretId invalide ou manquant');\n } else if (this.config.secretId.length < 32) {\n errors.push('secretId trop court (minimum 32 caractères)');\n }\n \n // Validation de l'URL API\n if (!this.config.apiUrl || !this.isValidUrl(this.config.apiUrl)) {\n errors.push('apiUrl invalide');\n }\n \n // Validation du type\n if (![1, 2, 3].includes(this.config.type)) {\n errors.push('type invalide (doit être 1, 2 ou 3)');\n }\n \n if (errors.length > 0) {\n this.logSecurityEvent('VALIDATION_ERROR', { errors });\n throw new Error(`Paramètres de sécurité invalides: ${errors.join(', ')}`);\n }\n \n this.logSecurityEvent('VALIDATION_SUCCESS');\n }\n\n /**\n * Validation d'URL sécurisée\n */\n isValidUrl(string) {\n try {\n const url = new URL(string);\n return url.protocol === 'https:' || url.protocol === 'http:';\n } catch (_) {\n return false;\n }\n }\n\n /**\n * Logs de sécurité\n */\n logSecurityEvent(event, data = {}) {\n if (!this.config.enableSecurityLogs) return;\n \n const securityLog = {\n timestamp: new Date().toISOString(),\n event: event,\n data: data,\n userAgent: navigator.userAgent,\n url: window.location.href\n };\n \n console.warn('🔒 [SECURITY]', securityLog);\n \n // Stocker les logs de sécurité (optionnel)\n if (!window.SunuIDSecurityLogs) {\n window.SunuIDSecurityLogs = [];\n }\n window.SunuIDSecurityLogs.push(securityLog);\n }\n\n /**\n * Chiffrement simple des credentials (pour éviter l'exposition en clair)\n */\n obfuscateCredentials() {\n // Stocker les vraies valeurs pour les logs de sécurité\n this.config.originalClientId = this.config.clientId;\n this.config.originalSecretId = this.config.secretId;\n \n // Créer des versions obfusquées pour l'affichage uniquement\n if (this.config.clientId) {\n this.config.clientIdDisplay = this.config.clientId.replace(/(.{3}).*(.{3})/, '$1***$2');\n }\n if (this.config.secretId) {\n this.config.secretIdDisplay = this.config.secretId.replace(/(.{4}).*(.{4})/, '$1***$2');\n }\n }\n\n /**\n * Validation des entrées utilisateur\n */\n sanitizeInput(input) {\n if (typeof input !== 'string') return input;\n \n // Protection contre les injections XSS basiques\n return input\n .replace(/[<>]/g, '') // Supprimer les balises HTML\n .replace(/javascript:/gi, '') // Supprimer les protocoles dangereux\n .trim();\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 // Attendre l'initialisation si nécessaire\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n \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.currentQRUrl = qrImageUrl; // Stocker l'URL pour getQRCode()\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n \n // Générer le QR code personnalisé avec le type + code de l'API + socket ID\n if (this.pendingQRInfo && response.data.code) {\n // Attendre que le socket ID soit bien défini\n const waitForSocketId = () => {\n if (this.socket && this.socket.id && this.socket.id !== 'unknown') {\n const socketId = this.socket.id;\n const qrContent = `${this.config.type}-${response.data.code}-${socketId}`;\n \n // Utiliser le partnerName de la réponse API et le nom du type\n const partnerName = response.data.partnerName || this.config.partnerName || 'SunuID';\n const typeName = this.getTypeName(this.config.type);\n const qrLabel = `${typeName} - ${partnerName}`;\n \n this.generateCustomQRCode(qrContent, qrLabel, this.pendingQRInfo.options);\n this.pendingQRInfo = null; // Nettoyer\n } else {\n // Réessayer après un délai si le socket ID n'est pas encore disponible\n setTimeout(waitForSocketId, 100);\n }\n };\n \n waitForSocketId();\n }\n \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 code: response.data.code,\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.error('Stack trace complet:', error.stack);\n console.error('Configuration SDK:', {\n apiUrl: this.config.apiUrl,\n type: this.config.type,\n secureInit: this.config.secureInit,\n clientId: this.config.clientId ? '***' + this.config.clientId.slice(-4) : 'null',\n secretId: this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null'\n });\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 // Attendre l'initialisation si nécessaire\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n \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 \n // Générer le QR code personnalisé avec le type + code de l'API + socket ID\n if (this.pendingQRInfo && response.data.code) {\n // Attendre que le socket ID soit bien défini\n const waitForSocketId = () => {\n if (this.socket && this.socket.id && this.socket.id !== 'unknown') {\n const socketId = this.socket.id;\n const qrContent = `${type}-${response.data.code}-${socketId}`;\n \n // Utiliser le partnerName de la réponse API et le nom du type\n const partnerName = response.data.partnerName || this.config.partnerName || 'SunuID';\n const typeName = this.getTypeName(type);\n const qrLabel = `${typeName} - ${partnerName}`;\n \n this.generateCustomQRCode(qrContent, qrLabel, this.pendingQRInfo.options);\n this.pendingQRInfo = null; // Nettoyer\n } else {\n // Réessayer après un délai si le socket ID n'est pas encore disponible\n setTimeout(waitForSocketId, 100);\n }\n };\n \n waitForSocketId();\n }\n \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.error('Stack trace complet:', error.stack);\n console.error('Configuration SDK (Custom):', {\n apiUrl: this.config.apiUrl,\n type: type,\n secureInit: this.config.secureInit,\n clientId: this.config.clientId ? '***' + this.config.clientId.slice(-4) : 'null',\n secretId: this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null'\n });\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 = 1;\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 async generateSignatureQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour Signature\n this.config.type = 3;\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 \n // Afficher un loader en attendant la réponse API et la connexion socket\n const typeName = this.getTypeName(type);\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Vérification KYC' : type === 2 ? 'Authentification' : type === 3 ? 'Signature' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\" id=\"sunuid-qr-container\">\n <div style=\"text-align: center; padding: 40px;\">\n <div class=\"sunuid-loader\">\n <div class=\"sunuid-spinner\"></div>\n <p style=\"margin-top: 20px; color: #666;\">Initialisation en cours...</p>\n <p style=\"font-size: 12px; color: #999; margin-top: 10px;\">Connexion API et WebSocket</p>\n <p style=\"font-size: 11px; color: #ccc; margin-top: 5px;\">Attente du Socket ID...</p>\n </div>\n </div>\n </div>\n <div class=\"sunuid-qr-instructions\" style=\"display: none;\">\n <p>Scannez ce QR code avec l'application ${this.config.partnerName} pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\" style=\"display: none;\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Stocker les informations pour la génération ultérieure\n this.pendingQRInfo = {\n containerId,\n type,\n options\n };\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Générer un QR code personnalisé avec PHP Endroid\n */\n async generateCustomQRCode(content, label, options = {}) {\n try {\n console.log('🎨 Début génération QR personnalisé avec PHP...');\n console.log('📄 Contenu:', content);\n console.log('🏷️ Label:', label);\n \n const qrContainer = document.getElementById('sunuid-qr-container');\n if (!qrContainer) {\n console.error('❌ QR container not found');\n this.displayFallbackImage();\n return;\n }\n \n console.log('✅ QR container trouvé');\n\n // Nettoyer le conteneur\n qrContainer.innerHTML = '<div style=\"text-align: center; padding: 20px;\"><p>Génération QR code avec PHP...</p></div>';\n\n // Appeler l'endpoint PHP\n console.log('🔄 Appel endpoint PHP...');\n // Construire l'URL du QR generator de manière plus robuste\n let qrGeneratorUrl;\n if (this.config.apiUrl.includes('api.sunuid.fayma.sn')) {\n qrGeneratorUrl = 'https://sunuid.fayma.sn/qr-generator.php';\n } else {\n qrGeneratorUrl = this.config.apiUrl.replace('/api', '') + '/qr-generator.php';\n }\n console.log('🔗 URL QR Generator:', qrGeneratorUrl);\n const response = await fetch(qrGeneratorUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n content: content,\n label: label,\n size: 300,\n margin: 10\n })\n });\n \n console.log('📥 Réponse PHP reçue - Status:', response.status);\n \n if (!response.ok) {\n throw new Error(`Erreur HTTP: ${response.status}`);\n }\n \n const responseData = await response.json();\n \n if (!responseData.success) {\n throw new Error(`Erreur PHP: ${responseData.error}`);\n }\n \n console.log('✅ QR code généré par PHP avec succès');\n console.log('📊 Taille:', responseData.data.size + 'px');\n console.log('📊 Longueur base64:', responseData.data.length + ' caractères');\n\n // Stocker l'URL du QR code pour getQRCode()\n this.currentQRUrl = responseData.data.dataUrl;\n \n // Créer le conteneur avec le QR code PHP\n qrContainer.innerHTML = `\n <div class=\"sunuid-qr-ready\" style=\"text-align: center; padding: 20px;\">\n <img src=\"${responseData.data.dataUrl}\" alt=\"QR Code ${this.config.partnerName}\" style=\"max-width: 300px; border: 2px solid #ddd; border-radius: 10px;\">\n </div>\n `;\n \n // Afficher les instructions et le statut maintenant que le QR est prêt\n const instructionsElement = qrContainer.parentElement.querySelector('.sunuid-qr-instructions');\n const statusElement = qrContainer.parentElement.querySelector('.sunuid-qr-status');\n \n if (instructionsElement) {\n instructionsElement.style.display = 'block';\n instructionsElement.classList.add('sunuid-qr-ready');\n }\n if (statusElement) {\n statusElement.style.display = 'block';\n statusElement.classList.add('sunuid-qr-ready');\n }\n \n console.log('✅ QR code PHP affiché dans le conteneur');\n\n } catch (error) {\n console.error('❌ Erreur génération QR PHP:', error);\n console.error('Stack trace:', error.stack);\n this.displayFallbackImage();\n }\n }\n\n /**\n * Ajouter le logo au centre du QR code\n */\n addLogoToCenter(ctx, x, y, width, height) {\n try {\n // Créer une image pour le logo\n const logo = new Image();\n logo.onload = () => {\n const logoSize = 40;\n const logoX = x + (width - logoSize) / 2;\n const logoY = y + (width - logoSize) / 2;\n\n // Dessiner un fond blanc pour le logo\n ctx.fillStyle = 'white';\n ctx.fillRect(logoX - 2, logoY - 2, logoSize + 4, logoSize + 4);\n\n // Dessiner le logo\n ctx.drawImage(logo, logoX, logoY, logoSize, logoSize);\n };\n logo.src = 'src/logoqr.png';\n } catch (error) {\n console.warn('Logo non disponible:', error);\n }\n }\n\n /**\n * Afficher l'image de fallback\n */\n displayFallbackImage() {\n console.log('⚠️ Affichage de l\\'image de fallback');\n const qrContainer = document.getElementById('sunuid-qr-container');\n if (qrContainer) {\n qrContainer.innerHTML = `\n <div style=\"text-align: center; padding: 20px; color: #666;\">\n <p>⚠️ Génération QR personnalisé non disponible</p>\n <p>Utilisation de l'image par défaut</p>\n <p><strong>Debug:</strong> QRCode disponible: ${typeof QRCode !== 'undefined'}</p>\n <p><strong>Debug:</strong> Container trouvé: ${qrContainer !== null}</p>\n </div>\n `;\n } else {\n console.error('❌ Container QR non trouvé pour fallback');\n }\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: ${String(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 sécurisée\n */\n async makeRequest(endpoint, data) {\n // Validation de sécurité\n if (!this.isInitialized) {\n this.logSecurityEvent('REQUEST_BEFORE_INIT', { endpoint });\n throw new Error('SDK non initialisé');\n }\n\n // Vérifier les limites de requêtes pour l'initialisation sécurisée\n if (this.config.secureInit) {\n this.config.requestCount++;\n if (this.config.requestCount > this.config.maxRequests) {\n this.logSecurityEvent('API_REQUEST_LIMIT_EXCEEDED', { \n requestCount: this.config.requestCount,\n maxRequests: this.config.maxRequests \n });\n throw new Error('Limite de requêtes dépassée');\n }\n }\n\n // Sanitisation des données\n const sanitizedData = this.sanitizeRequestData(data);\n \n // Debug: Afficher les données envoyées\n console.log('🔍 Debug makeRequest - endpoint:', endpoint);\n console.log('🔍 Debug makeRequest - apiUrl:', this.config.apiUrl);\n console.log('🔍 Debug makeRequest - url:', `${this.config.apiUrl}${endpoint}`);\n console.log('🔍 Debug makeRequest - data:', JSON.stringify(sanitizedData, null, 2));\n console.log('🔍 Debug makeRequest - secureInit:', this.config.secureInit);\n console.log('🔍 Debug makeRequest - isInitialized:', this.isInitialized);\n \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 // Debug: Afficher l'URL finale\n console.log('🔍 URL finale construite:', url);\n console.log('🔍 EndpointPath:', endpointPath);\n console.log('🔍 SunuIDConfig endpoints:', JSON.stringify(window.SunuIDConfig?.endpoints));\n \n // Log de sécurité pour la requête\n this.logSecurityEvent('API_REQUEST_START', {\n endpoint: endpointPath,\n url: url,\n dataKeys: Object.keys(sanitizedData),\n secureInit: this.config.secureInit\n });\n \n let retryCount = 0;\n const maxRetries = this.config.maxRetries;\n \n while (retryCount <= maxRetries) {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.requestTimeout);\n \n // Headers minimaux (API SunuID n'accepte que les headers essentiels)\n const headers = {\n 'Content-Type': 'application/json'\n };\n\n // Note: En mode sécurisé, les credentials sont dans le body\n // Pas besoin d'ajouter de header spécial pour éviter les problèmes CORS\n // if (this.config.secureInit && this.config.token) {\n // headers['X-Secure-Token'] = this.config.token;\n // }\n \n const response = await fetch(url, {\n method: 'POST',\n headers: headers,\n body: JSON.stringify(sanitizedData),\n signal: controller.signal\n });\n\n clearTimeout(timeoutId);\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 this.logSecurityEvent('API_REQUEST_ERROR', {\n status: response.status,\n statusText: response.statusText,\n error: errorData.message\n });\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n \n this.logSecurityEvent('API_REQUEST_SUCCESS', {\n endpoint: endpointPath,\n responseKeys: Object.keys(result)\n });\n \n return result;\n \n } catch (error) {\n retryCount++;\n \n if (error.name === 'AbortError') {\n this.logSecurityEvent('API_REQUEST_TIMEOUT', { retryCount });\n if (retryCount > maxRetries) {\n throw new Error('Timeout de la requête API');\n }\n continue;\n }\n \n if (retryCount > maxRetries) {\n this.logSecurityEvent('API_REQUEST_MAX_RETRIES', { \n retryCount, \n error: error.message \n });\n throw error;\n }\n \n // Attendre avant de réessayer\n await new Promise(resolve => setTimeout(resolve, 1000 * retryCount));\n }\n }\n }\n\n /**\n * Sanitisation des données de requête\n */\n sanitizeRequestData(data) {\n const sanitized = {};\n \n for (const [key, value] of Object.entries(data)) {\n if (typeof value === 'string') {\n sanitized[key] = this.sanitizeInput(value);\n } else if (typeof value === 'object' && value !== null) {\n sanitized[key] = this.sanitizeRequestData(value);\n } else {\n sanitized[key] = value;\n }\n }\n \n // Ajouter les credentials dans le body (API SunuID les attend ici)\n // Utiliser les vraies valeurs (originales) si disponibles, sinon les valeurs directes\n sanitized.client_id = this.config.originalClientId || this.config.clientId;\n sanitized.secret_id = this.config.originalSecretId || this.config.secretId;\n \n // Debug: Vérifier les credentials\n console.log('🔍 Credentials dans sanitizeRequestData - clientId:', this.config.clientId);\n console.log('🔍 Credentials dans sanitizeRequestData - secretId:', this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedClientId:', sanitized.client_id);\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedSecretId:', sanitized.secret_id ? '***' + sanitized.secret_id.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - data complet:', JSON.stringify(sanitized, null, 2));\n \n // Debug: Vérifier les credentials\n console.log('🔍 Credentials dans sanitizeRequestData - clientId:', this.config.clientId);\n console.log('🔍 Credentials dans sanitizeRequestData - secretId:', this.config.secretId ? '***' + this.config.secretId.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedClientId:', sanitized.client_id);\n console.log('🔍 Credentials dans sanitizeRequestData - sanitizedSecretId:', sanitized.secret_id ? '***' + sanitized.secret_id.slice(-4) : 'null');\n console.log('🔍 Credentials dans sanitizeRequestData - data complet:', JSON.stringify(sanitized, null, 2));\n \n return sanitized;\n }\n\n /**\n * Générer un ID de requête unique\n */\n generateRequestId() {\n return 'req_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\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 * Obtenir l'URL du QR code généré\n */\n getQRCode() {\n // Retourner l'URL du QR code si disponible\n if (this.currentQRUrl) {\n return this.currentQRUrl;\n }\n \n // Sinon, retourner une URL par défaut ou null\n return null;\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 this.logSecurityEvent('SDK_DESTROY');\n console.log('SunuID SDK détruit');\n }\n\n /**\n * Obtenir les logs de sécurité\n */\n getSecurityLogs() {\n return window.SunuIDSecurityLogs || [];\n }\n\n /**\n * Nettoyer les logs de sécurité\n */\n clearSecurityLogs() {\n window.SunuIDSecurityLogs = [];\n this.logSecurityEvent('SECURITY_LOGS_CLEARED');\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","partnerName","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onStatusUpdate","onExpired","enableSecurityLogs","validateInputs","maxRetries","requestTimeout","secureInit","secureInitUrl","_window$SunuIDConfig2","_window$SunuIDConfig3","includes","replace","token","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","socket","initPromise","init","_createClass","key","value","_init","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","p","n","validateSecurityParams","logSecurityEvent","obfuscateCredentials","console","log","initWebSocket","v","error","message","a","apply","_secureInit","_callee2","initData","response","result","decodedToken","_t2","_context2","fetch","method","headers","body","JSON","stringify","ok","Error","concat","status","json","success","data","api_url","decodeSecureToken","client_id","secret_id","expiresIn","expires_in","maxRequests","max_requests","requestCount","parts","split","_parts","_slicedToArray","payload","signature","decodedPayload","atob","tokenData","parse","exp","Date","now","_this","io","warn","setTimeout","ip","getClientIP","query","userId","username","on","id","reason","handleQRStatusUpdate","handleQRScanSuccess","handleQRExpired","getTypeName","errors","push","isValidUrl","join","string","url","URL","protocol","_","event","securityLog","timestamp","toISOString","userAgent","navigator","location","href","SunuIDSecurityLogs","originalClientId","originalSecretId","clientIdDisplay","secretIdDisplay","sanitizeInput","input","trim","emitWebSocketEvent","connected","emit","getWebSocketStatus","forceWebSocketInit","_generateQR","_callee3","containerId","_this2","options","imageBaseUrl","qrImageUrl","_waitForSocketId","_args3","_t3","_context3","makeRequest","qrcode","currentQRUrl","displayQRCode","pendingQRInfo","code","waitForSocketId","socketId","qrContent","typeName","qrLabel","generateCustomQRCode","startAutoRefresh","serviceId","service_id","qrCodeUrl","sessionId","stack","slice","displayServiceUnavailable","generateQR","_x","_generateCustomQR","_callee4","_this3","_response","_waitForSocketId2","_args4","_t4","_context4","generateCustomQR","_x2","_x3","_generateAuthQR","_callee5","_args5","_context5","generateAuthQR","_x4","_generateKYCQR","_callee6","originalType","_args6","_context6","f","generateKYCQR","_x5","_generateSignatureQR","_callee7","_args7","_context7","generateSignatureQR","_x6","_checkQRStatus","_callee8","_response2","_t5","_context8","handleError","checkQRStatus","_x7","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","_generateCustomQRCode","_callee9","content","label","qrContainer","qrGeneratorUrl","_response3","responseData","instructionsElement","statusElement","_args9","_t6","_context9","displayFallbackImage","size","margin","dataUrl","parentElement","querySelector","style","display","classList","add","_x8","_x9","addLogoToCenter","ctx","x","y","width","height","logo","Image","onload","logoSize","logoX","logoY","fillStyle","fillRect","drawImage","src","QRCode","String","toUpperCase","_refreshQR","_callee0","_args0","_t7","_context0","refreshQR","_x0","_this4","setInterval","_callee1","_t8","_context1","_makeRequest","_callee10","endpoint","_window$SunuIDConfig4","_window$SunuIDConfig5","_this5","sanitizedData","endpointPath","retryCount","_loop","_ret","_context11","sanitizeRequestData","endpoints","dataKeys","Object","keys","controller","timeoutId","_response4","errorText","errorData","_t9","_context10","AbortController","abort","signal","clearTimeout","text","e","statusText","responseKeys","name","Promise","resolve","d","_regeneratorValues","_x1","_x10","sanitized","_i","_Object$entries","entries","_Object$entries$_i","_typeof","generateRequestId","Math","random","toString","substr","getQRCode","destroy","clearInterval","disconnect","getSecurityLogs","clearSecurityLogs","sunuidInstance","initSunuID"],"mappings":"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"}