sunuid-sdk 1.0.10 → 1.0.11
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 +22 -61
- package/dist/sunuid-sdk.esm.js.map +1 -1
- package/dist/sunuid-sdk.js +22 -61
- package/dist/sunuid-sdk.js.map +1 -1
- package/dist/sunuid-sdk.min.js +3 -3
- package/dist/sunuid-sdk.min.js.map +1 -1
- package/package.json +1 -1
package/dist/sunuid-sdk.esm.js
CHANGED
|
@@ -250,9 +250,6 @@ function _toPropertyKey(t) {
|
|
|
250
250
|
var _generateAuthQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(containerId) {
|
|
251
251
|
var options,
|
|
252
252
|
response,
|
|
253
|
-
testData,
|
|
254
|
-
qrData,
|
|
255
|
-
qrUrl,
|
|
256
253
|
_args = arguments,
|
|
257
254
|
_t;
|
|
258
255
|
return _regenerator().w(function (_context) {
|
|
@@ -287,33 +284,9 @@ function _toPropertyKey(t) {
|
|
|
287
284
|
case 5:
|
|
288
285
|
_context.p = 5;
|
|
289
286
|
_t = _context.v;
|
|
290
|
-
console.
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
testData = _objectSpread2({
|
|
294
|
-
type: 'auth',
|
|
295
|
-
clientId: this.config.clientId,
|
|
296
|
-
timestamp: Date.now(),
|
|
297
|
-
sessionId: 'test_' + Math.random().toString(36).substr(2, 9),
|
|
298
|
-
apiUrl: this.config.apiUrl,
|
|
299
|
-
error: _t.message,
|
|
300
|
-
errorType: _t.name,
|
|
301
|
-
fallback: true
|
|
302
|
-
}, options);
|
|
303
|
-
qrData = JSON.stringify(testData);
|
|
304
|
-
qrUrl = "https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=".concat(encodeURIComponent(qrData));
|
|
305
|
-
this.displayQRCode(containerId, qrUrl, 'auth', options);
|
|
306
|
-
this.startAutoRefresh(containerId, 'auth', options);
|
|
307
|
-
return _context.a(2, {
|
|
308
|
-
success: true,
|
|
309
|
-
data: {
|
|
310
|
-
sessionId: testData.sessionId,
|
|
311
|
-
qrCodeUrl: qrUrl,
|
|
312
|
-
expires: Date.now() + 30000,
|
|
313
|
-
type: 'auth',
|
|
314
|
-
fallback: true
|
|
315
|
-
}
|
|
316
|
-
});
|
|
287
|
+
console.error('Erreur API détectée:', _t.message);
|
|
288
|
+
this.displayServiceUnavailable(containerId, 'auth');
|
|
289
|
+
throw new Error('Service non disponible');
|
|
317
290
|
case 6:
|
|
318
291
|
return _context.a(2);
|
|
319
292
|
}
|
|
@@ -334,9 +307,6 @@ function _toPropertyKey(t) {
|
|
|
334
307
|
var _generateKYCQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(containerId) {
|
|
335
308
|
var options,
|
|
336
309
|
response,
|
|
337
|
-
testData,
|
|
338
|
-
qrData,
|
|
339
|
-
qrUrl,
|
|
340
310
|
_args2 = arguments,
|
|
341
311
|
_t2;
|
|
342
312
|
return _regenerator().w(function (_context2) {
|
|
@@ -371,33 +341,9 @@ function _toPropertyKey(t) {
|
|
|
371
341
|
case 5:
|
|
372
342
|
_context2.p = 5;
|
|
373
343
|
_t2 = _context2.v;
|
|
374
|
-
console.
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
testData = _objectSpread2({
|
|
378
|
-
type: 'kyc',
|
|
379
|
-
clientId: this.config.clientId,
|
|
380
|
-
timestamp: Date.now(),
|
|
381
|
-
sessionId: 'test_' + Math.random().toString(36).substr(2, 9),
|
|
382
|
-
apiUrl: this.config.apiUrl,
|
|
383
|
-
error: _t2.message,
|
|
384
|
-
errorType: _t2.name,
|
|
385
|
-
fallback: true
|
|
386
|
-
}, options);
|
|
387
|
-
qrData = JSON.stringify(testData);
|
|
388
|
-
qrUrl = "https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=".concat(encodeURIComponent(qrData));
|
|
389
|
-
this.displayQRCode(containerId, qrUrl, 'kyc', options);
|
|
390
|
-
this.startAutoRefresh(containerId, 'kyc', options);
|
|
391
|
-
return _context2.a(2, {
|
|
392
|
-
success: true,
|
|
393
|
-
data: {
|
|
394
|
-
sessionId: testData.sessionId,
|
|
395
|
-
qrCodeUrl: qrUrl,
|
|
396
|
-
expires: Date.now() + 30000,
|
|
397
|
-
type: 'kyc',
|
|
398
|
-
fallback: true
|
|
399
|
-
}
|
|
400
|
-
});
|
|
344
|
+
console.error('Erreur API détectée:', _t2.message);
|
|
345
|
+
this.displayServiceUnavailable(containerId, 'kyc');
|
|
346
|
+
throw new Error('Service non disponible');
|
|
401
347
|
case 6:
|
|
402
348
|
return _context2.a(2);
|
|
403
349
|
}
|
|
@@ -487,6 +433,20 @@ function _toPropertyKey(t) {
|
|
|
487
433
|
this.applyTheme(options.theme || this.config.theme);
|
|
488
434
|
}
|
|
489
435
|
|
|
436
|
+
/**
|
|
437
|
+
* Afficher "Service non disponible"
|
|
438
|
+
*/
|
|
439
|
+
}, {
|
|
440
|
+
key: "displayServiceUnavailable",
|
|
441
|
+
value: function displayServiceUnavailable(containerId, type) {
|
|
442
|
+
var container = document.getElementById(containerId);
|
|
443
|
+
if (!container) {
|
|
444
|
+
console.error("Container ".concat(containerId, " non trouv\xE9"));
|
|
445
|
+
return;
|
|
446
|
+
}
|
|
447
|
+
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;\">\u26A0\uFE0F</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\xE9essayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ".concat(type.toUpperCase(), "\n </div>\n </div>\n ");
|
|
448
|
+
}
|
|
449
|
+
|
|
490
450
|
/**
|
|
491
451
|
* Rafraîchir un QR code
|
|
492
452
|
*/
|
|
@@ -525,7 +485,8 @@ function _toPropertyKey(t) {
|
|
|
525
485
|
case 6:
|
|
526
486
|
_context4.p = 6;
|
|
527
487
|
_t5 = _context4.v;
|
|
528
|
-
|
|
488
|
+
console.error('Erreur lors du rafraîchissement:', _t5.message);
|
|
489
|
+
this.displayServiceUnavailable(containerId, type);
|
|
529
490
|
throw _t5;
|
|
530
491
|
case 7:
|
|
531
492
|
return _context4.a(2);
|
|
@@ -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 theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: 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 \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n }\n\n /**\n * Générer un QR code d'authentification\n */\n async generateAuthQR(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: 'auth',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qrCodeUrl, 'auth', options);\n this.startAutoRefresh(containerId, 'auth', options);\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.warn('Erreur API détectée, génération d\\'un QR code de test:', error.message);\n \n // En cas d'échec de l'API (CORS, 500, ou autre), générer un QR code de test\n const testData = {\n type: 'auth',\n clientId: this.config.clientId,\n timestamp: Date.now(),\n sessionId: 'test_' + Math.random().toString(36).substr(2, 9),\n apiUrl: this.config.apiUrl,\n error: error.message,\n errorType: error.name,\n fallback: true,\n ...options\n };\n \n const qrData = JSON.stringify(testData);\n const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=${encodeURIComponent(qrData)}`;\n \n this.displayQRCode(containerId, qrUrl, 'auth', options);\n this.startAutoRefresh(containerId, 'auth', options);\n \n return {\n success: true,\n data: {\n sessionId: testData.sessionId,\n qrCodeUrl: qrUrl,\n expires: Date.now() + 30000,\n type: 'auth',\n fallback: true\n }\n };\n }\n }\n\n /**\n * Générer un QR code KYC\n */\n async generateKYCQR(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: 'kyc',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qrCodeUrl, 'kyc', options);\n this.startAutoRefresh(containerId, 'kyc', options);\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code KYC');\n }\n } catch (error) {\n console.warn('Erreur API détectée, génération d\\'un QR code KYC de test:', error.message);\n \n // En cas d'échec de l'API, générer un QR code de test\n const testData = {\n type: 'kyc',\n clientId: this.config.clientId,\n timestamp: Date.now(),\n sessionId: 'test_' + Math.random().toString(36).substr(2, 9),\n apiUrl: this.config.apiUrl,\n error: error.message,\n errorType: error.name,\n fallback: true,\n ...options\n };\n \n const qrData = JSON.stringify(testData);\n const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=${encodeURIComponent(qrData)}`;\n \n this.displayQRCode(containerId, qrUrl, 'kyc', options);\n this.startAutoRefresh(containerId, 'kyc', options);\n \n return {\n success: true,\n data: {\n sessionId: testData.sessionId,\n qrCodeUrl: qrUrl,\n expires: Date.now() + 30000,\n type: 'kyc',\n fallback: true\n }\n };\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 sessionId: 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 === 'auth' ? 'Authentification' : 'Vérification KYC'}</h3>\n <div class=\"sunuid-timer\">\n <span>Expire dans: </span>\n <span id=\"sunuid-timer\">30</span>\n <span> secondes</span>\n </div>\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 // Démarrer le timer\n this.startTimer();\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, type, options = {}) {\n try {\n const result = type === 'auth' \n ? await this.generateAuthQR(containerId, options)\n : await this.generateKYCQR(containerId, options);\n \n return result;\n } catch (error) {\n this.handleError(error);\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 startTimer() {\n let timeLeft = 30;\n const timerElement = document.getElementById('sunuid-timer');\n \n const timer = setInterval(() => {\n timeLeft--;\n if (timerElement) {\n timerElement.textContent = timeLeft;\n }\n \n if (timeLeft <= 0) {\n clearInterval(timer);\n if (this.config.onExpired) {\n this.config.onExpired();\n }\n }\n }, 1000);\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 try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","init","_createClass","key","value","Error","console","log","_generateAuthQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","testData","qrData","qrUrl","_args","_t","w","_context","p","n","makeRequest","type","v","success","displayQRCode","data","qrCodeUrl","startAutoRefresh","a","message","warn","timestamp","Date","now","sessionId","Math","random","toString","substr","error","errorType","name","fallback","JSON","stringify","concat","encodeURIComponent","expires","generateAuthQR","_x","apply","_generateKYCQR","_callee2","_args2","_t2","_context2","generateKYCQR","_x2","_checkQRStatus","_callee3","_t3","_context3","handleError","checkQRStatus","_x3","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","startTimer","applyTheme","_refreshQR","_callee4","result","_args4","_t4","_t5","_context4","refreshQR","_x4","_x5","_this","setInterval","_callee5","_t6","_context5","_this2","timeLeft","timerElement","timer","textContent","clearInterval","_makeRequest","_callee6","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t7","_context6","endpoints","replace","fetch","method","headers","body","client_id","secret_id","ok","text","parse","e","status","json","_x6","_x7","querySelector","destroy","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 theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: 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 \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n }\n\n /**\n * Générer un QR code d'authentification\n */\n async generateAuthQR(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: 'auth',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qrCodeUrl, 'auth', options);\n this.startAutoRefresh(containerId, 'auth', options);\n return response.data;\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 this.displayServiceUnavailable(containerId, 'auth');\n throw new Error('Service non disponible');\n }\n }\n\n /**\n * Générer un QR code KYC\n */\n async generateKYCQR(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: 'kyc',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qrCodeUrl, 'kyc', options);\n this.startAutoRefresh(containerId, 'kyc', options);\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code KYC');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n this.displayServiceUnavailable(containerId, 'kyc');\n throw new Error('Service non disponible');\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 sessionId: 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 === 'auth' ? 'Authentification' : 'Vérification KYC'}</h3>\n <div class=\"sunuid-timer\">\n <span>Expire dans: </span>\n <span id=\"sunuid-timer\">30</span>\n <span> secondes</span>\n </div>\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 // Démarrer le timer\n this.startTimer();\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 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, type, options = {}) {\n try {\n const result = type === 'auth' \n ? await this.generateAuthQR(containerId, options)\n : await this.generateKYCQR(containerId, options);\n \n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, 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 startTimer() {\n let timeLeft = 30;\n const timerElement = document.getElementById('sunuid-timer');\n \n const timer = setInterval(() => {\n timeLeft--;\n if (timerElement) {\n timerElement.textContent = timeLeft;\n }\n \n if (timeLeft <= 0) {\n clearInterval(timer);\n if (this.config.onExpired) {\n this.config.onExpired();\n }\n }\n }, 1000);\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 try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","init","_createClass","key","value","Error","console","log","_generateAuthQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","_args","_t","w","_context","p","n","makeRequest","type","v","success","displayQRCode","data","qrCodeUrl","startAutoRefresh","a","message","error","displayServiceUnavailable","generateAuthQR","_x","apply","_generateKYCQR","_callee2","_args2","_t2","_context2","generateKYCQR","_x2","_checkQRStatus","_callee3","sessionId","_t3","_context3","handleError","checkQRStatus","_x3","qrUrl","container","document","getElementById","concat","innerHTML","qrElement","createElement","className","appendChild","startTimer","applyTheme","toUpperCase","_refreshQR","_callee4","result","_args4","_t4","_t5","_context4","refreshQR","_x4","_x5","_this","setInterval","_callee5","_t6","_context5","warn","_this2","timeLeft","timerElement","timer","textContent","clearInterval","_makeRequest","_callee6","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t7","_context6","endpoints","replace","fetch","method","headers","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x6","_x7","querySelector","destroy","sunuidInstance","initSunuID"],"mappings":"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"}
|
package/dist/sunuid-sdk.js
CHANGED
|
@@ -253,9 +253,6 @@
|
|
|
253
253
|
var _generateAuthQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(containerId) {
|
|
254
254
|
var options,
|
|
255
255
|
response,
|
|
256
|
-
testData,
|
|
257
|
-
qrData,
|
|
258
|
-
qrUrl,
|
|
259
256
|
_args = arguments,
|
|
260
257
|
_t;
|
|
261
258
|
return _regenerator().w(function (_context) {
|
|
@@ -290,33 +287,9 @@
|
|
|
290
287
|
case 5:
|
|
291
288
|
_context.p = 5;
|
|
292
289
|
_t = _context.v;
|
|
293
|
-
console.
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
testData = _objectSpread2({
|
|
297
|
-
type: 'auth',
|
|
298
|
-
clientId: this.config.clientId,
|
|
299
|
-
timestamp: Date.now(),
|
|
300
|
-
sessionId: 'test_' + Math.random().toString(36).substr(2, 9),
|
|
301
|
-
apiUrl: this.config.apiUrl,
|
|
302
|
-
error: _t.message,
|
|
303
|
-
errorType: _t.name,
|
|
304
|
-
fallback: true
|
|
305
|
-
}, options);
|
|
306
|
-
qrData = JSON.stringify(testData);
|
|
307
|
-
qrUrl = "https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=".concat(encodeURIComponent(qrData));
|
|
308
|
-
this.displayQRCode(containerId, qrUrl, 'auth', options);
|
|
309
|
-
this.startAutoRefresh(containerId, 'auth', options);
|
|
310
|
-
return _context.a(2, {
|
|
311
|
-
success: true,
|
|
312
|
-
data: {
|
|
313
|
-
sessionId: testData.sessionId,
|
|
314
|
-
qrCodeUrl: qrUrl,
|
|
315
|
-
expires: Date.now() + 30000,
|
|
316
|
-
type: 'auth',
|
|
317
|
-
fallback: true
|
|
318
|
-
}
|
|
319
|
-
});
|
|
290
|
+
console.error('Erreur API détectée:', _t.message);
|
|
291
|
+
this.displayServiceUnavailable(containerId, 'auth');
|
|
292
|
+
throw new Error('Service non disponible');
|
|
320
293
|
case 6:
|
|
321
294
|
return _context.a(2);
|
|
322
295
|
}
|
|
@@ -337,9 +310,6 @@
|
|
|
337
310
|
var _generateKYCQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(containerId) {
|
|
338
311
|
var options,
|
|
339
312
|
response,
|
|
340
|
-
testData,
|
|
341
|
-
qrData,
|
|
342
|
-
qrUrl,
|
|
343
313
|
_args2 = arguments,
|
|
344
314
|
_t2;
|
|
345
315
|
return _regenerator().w(function (_context2) {
|
|
@@ -374,33 +344,9 @@
|
|
|
374
344
|
case 5:
|
|
375
345
|
_context2.p = 5;
|
|
376
346
|
_t2 = _context2.v;
|
|
377
|
-
console.
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
testData = _objectSpread2({
|
|
381
|
-
type: 'kyc',
|
|
382
|
-
clientId: this.config.clientId,
|
|
383
|
-
timestamp: Date.now(),
|
|
384
|
-
sessionId: 'test_' + Math.random().toString(36).substr(2, 9),
|
|
385
|
-
apiUrl: this.config.apiUrl,
|
|
386
|
-
error: _t2.message,
|
|
387
|
-
errorType: _t2.name,
|
|
388
|
-
fallback: true
|
|
389
|
-
}, options);
|
|
390
|
-
qrData = JSON.stringify(testData);
|
|
391
|
-
qrUrl = "https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=".concat(encodeURIComponent(qrData));
|
|
392
|
-
this.displayQRCode(containerId, qrUrl, 'kyc', options);
|
|
393
|
-
this.startAutoRefresh(containerId, 'kyc', options);
|
|
394
|
-
return _context2.a(2, {
|
|
395
|
-
success: true,
|
|
396
|
-
data: {
|
|
397
|
-
sessionId: testData.sessionId,
|
|
398
|
-
qrCodeUrl: qrUrl,
|
|
399
|
-
expires: Date.now() + 30000,
|
|
400
|
-
type: 'kyc',
|
|
401
|
-
fallback: true
|
|
402
|
-
}
|
|
403
|
-
});
|
|
347
|
+
console.error('Erreur API détectée:', _t2.message);
|
|
348
|
+
this.displayServiceUnavailable(containerId, 'kyc');
|
|
349
|
+
throw new Error('Service non disponible');
|
|
404
350
|
case 6:
|
|
405
351
|
return _context2.a(2);
|
|
406
352
|
}
|
|
@@ -490,6 +436,20 @@
|
|
|
490
436
|
this.applyTheme(options.theme || this.config.theme);
|
|
491
437
|
}
|
|
492
438
|
|
|
439
|
+
/**
|
|
440
|
+
* Afficher "Service non disponible"
|
|
441
|
+
*/
|
|
442
|
+
}, {
|
|
443
|
+
key: "displayServiceUnavailable",
|
|
444
|
+
value: function displayServiceUnavailable(containerId, type) {
|
|
445
|
+
var container = document.getElementById(containerId);
|
|
446
|
+
if (!container) {
|
|
447
|
+
console.error("Container ".concat(containerId, " non trouv\xE9"));
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
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;\">\u26A0\uFE0F</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\xE9essayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ".concat(type.toUpperCase(), "\n </div>\n </div>\n ");
|
|
451
|
+
}
|
|
452
|
+
|
|
493
453
|
/**
|
|
494
454
|
* Rafraîchir un QR code
|
|
495
455
|
*/
|
|
@@ -528,7 +488,8 @@
|
|
|
528
488
|
case 6:
|
|
529
489
|
_context4.p = 6;
|
|
530
490
|
_t5 = _context4.v;
|
|
531
|
-
|
|
491
|
+
console.error('Erreur lors du rafraîchissement:', _t5.message);
|
|
492
|
+
this.displayServiceUnavailable(containerId, type);
|
|
532
493
|
throw _t5;
|
|
533
494
|
case 7:
|
|
534
495
|
return _context4.a(2);
|
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 theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: 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 \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n }\n\n /**\n * Générer un QR code d'authentification\n */\n async generateAuthQR(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: 'auth',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qrCodeUrl, 'auth', options);\n this.startAutoRefresh(containerId, 'auth', options);\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.warn('Erreur API détectée, génération d\\'un QR code de test:', error.message);\n \n // En cas d'échec de l'API (CORS, 500, ou autre), générer un QR code de test\n const testData = {\n type: 'auth',\n clientId: this.config.clientId,\n timestamp: Date.now(),\n sessionId: 'test_' + Math.random().toString(36).substr(2, 9),\n apiUrl: this.config.apiUrl,\n error: error.message,\n errorType: error.name,\n fallback: true,\n ...options\n };\n \n const qrData = JSON.stringify(testData);\n const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=${encodeURIComponent(qrData)}`;\n \n this.displayQRCode(containerId, qrUrl, 'auth', options);\n this.startAutoRefresh(containerId, 'auth', options);\n \n return {\n success: true,\n data: {\n sessionId: testData.sessionId,\n qrCodeUrl: qrUrl,\n expires: Date.now() + 30000,\n type: 'auth',\n fallback: true\n }\n };\n }\n }\n\n /**\n * Générer un QR code KYC\n */\n async generateKYCQR(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: 'kyc',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qrCodeUrl, 'kyc', options);\n this.startAutoRefresh(containerId, 'kyc', options);\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code KYC');\n }\n } catch (error) {\n console.warn('Erreur API détectée, génération d\\'un QR code KYC de test:', error.message);\n \n // En cas d'échec de l'API, générer un QR code de test\n const testData = {\n type: 'kyc',\n clientId: this.config.clientId,\n timestamp: Date.now(),\n sessionId: 'test_' + Math.random().toString(36).substr(2, 9),\n apiUrl: this.config.apiUrl,\n error: error.message,\n errorType: error.name,\n fallback: true,\n ...options\n };\n \n const qrData = JSON.stringify(testData);\n const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=${encodeURIComponent(qrData)}`;\n \n this.displayQRCode(containerId, qrUrl, 'kyc', options);\n this.startAutoRefresh(containerId, 'kyc', options);\n \n return {\n success: true,\n data: {\n sessionId: testData.sessionId,\n qrCodeUrl: qrUrl,\n expires: Date.now() + 30000,\n type: 'kyc',\n fallback: true\n }\n };\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 sessionId: 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 === 'auth' ? 'Authentification' : 'Vérification KYC'}</h3>\n <div class=\"sunuid-timer\">\n <span>Expire dans: </span>\n <span id=\"sunuid-timer\">30</span>\n <span> secondes</span>\n </div>\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 // Démarrer le timer\n this.startTimer();\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, type, options = {}) {\n try {\n const result = type === 'auth' \n ? await this.generateAuthQR(containerId, options)\n : await this.generateKYCQR(containerId, options);\n \n return result;\n } catch (error) {\n this.handleError(error);\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 startTimer() {\n let timeLeft = 30;\n const timerElement = document.getElementById('sunuid-timer');\n \n const timer = setInterval(() => {\n timeLeft--;\n if (timerElement) {\n timerElement.textContent = timeLeft;\n }\n \n if (timeLeft <= 0) {\n clearInterval(timer);\n if (this.config.onExpired) {\n this.config.onExpired();\n }\n }\n }, 1000);\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 try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","init","_createClass","key","value","Error","console","log","_generateAuthQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","testData","qrData","qrUrl","_args","_t","w","_context","p","n","makeRequest","type","v","success","displayQRCode","data","qrCodeUrl","startAutoRefresh","a","message","warn","timestamp","Date","now","sessionId","Math","random","toString","substr","error","errorType","name","fallback","JSON","stringify","concat","encodeURIComponent","expires","generateAuthQR","_x","apply","_generateKYCQR","_callee2","_args2","_t2","_context2","generateKYCQR","_x2","_checkQRStatus","_callee3","_t3","_context3","handleError","checkQRStatus","_x3","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","startTimer","applyTheme","_refreshQR","_callee4","result","_args4","_t4","_t5","_context4","refreshQR","_x4","_x5","_this","setInterval","_callee5","_t6","_context5","_this2","timeLeft","timerElement","timer","textContent","clearInterval","_makeRequest","_callee6","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t7","_context6","endpoints","replace","fetch","method","headers","body","client_id","secret_id","ok","text","parse","e","status","json","_x6","_x7","querySelector","destroy","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 theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: 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 \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n }\n\n /**\n * Générer un QR code d'authentification\n */\n async generateAuthQR(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: 'auth',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qrCodeUrl, 'auth', options);\n this.startAutoRefresh(containerId, 'auth', options);\n return response.data;\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 this.displayServiceUnavailable(containerId, 'auth');\n throw new Error('Service non disponible');\n }\n }\n\n /**\n * Générer un QR code KYC\n */\n async generateKYCQR(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: 'kyc',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qrCodeUrl, 'kyc', options);\n this.startAutoRefresh(containerId, 'kyc', options);\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code KYC');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n this.displayServiceUnavailable(containerId, 'kyc');\n throw new Error('Service non disponible');\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 sessionId: 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 === 'auth' ? 'Authentification' : 'Vérification KYC'}</h3>\n <div class=\"sunuid-timer\">\n <span>Expire dans: </span>\n <span id=\"sunuid-timer\">30</span>\n <span> secondes</span>\n </div>\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 // Démarrer le timer\n this.startTimer();\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 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, type, options = {}) {\n try {\n const result = type === 'auth' \n ? await this.generateAuthQR(containerId, options)\n : await this.generateKYCQR(containerId, options);\n \n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, 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 startTimer() {\n let timeLeft = 30;\n const timerElement = document.getElementById('sunuid-timer');\n \n const timer = setInterval(() => {\n timeLeft--;\n if (timerElement) {\n timerElement.textContent = timeLeft;\n }\n \n if (timeLeft <= 0) {\n clearInterval(timer);\n if (this.config.onExpired) {\n this.config.onExpired();\n }\n }\n }, 1000);\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 try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","init","_createClass","key","value","Error","console","log","_generateAuthQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","_args","_t","w","_context","p","n","makeRequest","type","v","success","displayQRCode","data","qrCodeUrl","startAutoRefresh","a","message","error","displayServiceUnavailable","generateAuthQR","_x","apply","_generateKYCQR","_callee2","_args2","_t2","_context2","generateKYCQR","_x2","_checkQRStatus","_callee3","sessionId","_t3","_context3","handleError","checkQRStatus","_x3","qrUrl","container","document","getElementById","concat","innerHTML","qrElement","createElement","className","appendChild","startTimer","applyTheme","toUpperCase","_refreshQR","_callee4","result","_args4","_t4","_t5","_context4","refreshQR","_x4","_x5","_this","setInterval","_callee5","_t6","_context5","warn","_this2","timeLeft","timerElement","timer","textContent","clearInterval","_makeRequest","_callee6","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t7","_context6","endpoints","replace","fetch","method","headers","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x6","_x7","querySelector","destroy","sunuidInstance","initSunuID"],"mappings":"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"}
|
package/dist/sunuid-sdk.min.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
!function(){"use strict";function e(e,
|
|
1
|
+
!function(){"use strict";function e(e,n,r,t,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?n(c):Promise.resolve(c).then(t,i)}function n(n){return function(){var r=this,t=arguments;return new Promise(function(i,o){var a=n.apply(r,t);function s(n){e(a,i,o,s,c,"next",n)}function c(n){e(a,i,o,s,c,"throw",n)}s(void 0)})}}function r(e,n){for(var r=0;r<n.length;r++){var t=n[r];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,c(t.key),t)}}function t(e,n,r){return(n=c(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),r.push.apply(r,t)}return r}function o(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function a(){
|
|
2
2
|
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
3
|
-
var e,
|
|
3
|
+
var e,n,r="function"==typeof Symbol?Symbol:{},t=r.iterator||"@@iterator",i=r.toStringTag||"@@toStringTag";function o(r,t,i,o){var a=t&&t.prototype instanceof u?t:u,l=Object.create(a.prototype);return s(l,"_invoke",function(r,t,i){var o,a,s,u=0,l=i||[],f=!1,d={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,r){return o=n,a=0,s=e,d.n=r,c}};function h(r,t){for(a=r,s=t,n=0;!f&&u&&!i&&n<l.length;n++){var i,o=l[n],h=d.p,p=o[2];r>3?(i=p===t)&&(s=o[(a=o[4])?5:(a=3,3)],o[4]=o[5]=e):o[0]<=h&&((i=r<2&&h<o[1])?(a=0,d.v=t,d.n=o[1]):h<p&&(i=r<3||o[0]>t||t>p)&&(o[4]=r,o[5]=t,d.n=p,a=0))}if(i||r>1)return c;throw f=!0,t}return function(i,l,p){if(u>1)throw TypeError("Generator is already running");for(f&&1===l&&h(l,p),a=l,s=p;(n=a<2?e:s)||!f;){o||(a?a<3?(a>1&&(d.n=-1),h(a,s)):d.n=s:d.v=s);try{if(u=2,o){if(a||(i="next"),n=o[i]){if(!(n=n.call(o,s)))throw TypeError("iterator result is not an object");if(!n.done)return n;s=n.value,a<2&&(a=0)}else 1===a&&(n=o.return)&&n.call(o),a<2&&(s=TypeError("The iterator does not provide a '"+i+"' method"),a=1);o=e}else if((n=(f=d.n<0)?s:r.call(t,d))!==c)break}catch(n){o=e,a=1,s=n}finally{u=1}}return{value:n,done:f}}}(r,i,o),!0),l}var c={};function u(){}function l(){}function f(){}n=Object.getPrototypeOf;var d=[][t]?n(n([][t]())):(s(n={},t,function(){return this}),n),h=f.prototype=u.prototype=Object.create(d);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,s(e,i,"GeneratorFunction")),e.prototype=Object.create(h),e}return l.prototype=f,s(h,"constructor",f),s(f,"constructor",l),l.displayName="GeneratorFunction",s(f,i,"GeneratorFunction"),s(h),s(h,i,"Generator"),s(h,t,function(){return this}),s(h,"toString",function(){return"[object Generator]"}),(a=function(){return{w:o,m:p}})()}function s(e,n,r,t){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}s=function(e,n,r,t){function o(n,r){s(e,n,function(e){return this._invoke(n,r,e)})}n?i?i(e,n,{value:r,enumerable:!t,configurable:!t,writable:!t}):e[n]=r:(o("next",0),o("throw",1),o("return",2))},s(e,n,r,t)}function c(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,n||"default");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}
|
|
4
4
|
/**
|
|
5
5
|
* SunuID SDK - Package d'intégration pour partenaires
|
|
6
6
|
*
|
|
7
7
|
* @version 1.0.0
|
|
8
8
|
* @author SunuID Team
|
|
9
9
|
* @license MIT
|
|
10
|
-
*/!function(e,
|
|
10
|
+
*/!function(e,t){var i={apiUrl:(null===(t=e.SunuIDConfig)||void 0===t?void 0:t.apiUrl)||"https://api.sunuid.fayma.sn",clientId:null,secretId:null,theme:"light",language:"fr",autoRefresh:!0,refreshInterval:3e4,onSuccess:null,onError:null,onExpired:null},s=function(){return t=function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=o(o({},i),n),this.qrCode=null,this.refreshTimer=null,this.isInitialized=!1,this.init()},s=[{key:"init",value:function(){if(!this.config.clientId||!this.config.secretId)throw new Error("SunuID: clientId et secretId sont requis");this.isInitialized=!0,console.log("SunuID SDK initialisé avec succès")}},{key:"generateAuthQR",value:(h=n(a().m(function e(n){var r,t,i,s=arguments;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:if(r=s.length>1&&void 0!==s[1]?s[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:"auth"},r));case 2:if(!(t=e.v).success){e.n=3;break}return this.displayQRCode(n,t.data.qrCodeUrl,"auth",r),this.startAutoRefresh(n,"auth",r),e.a(2,t.data);case 3:throw new Error(t.message||"Erreur lors de la génération du QR code");case 4:e.n=6;break;case 5:throw e.p=5,i=e.v,console.error("Erreur API détectée:",i.message),this.displayServiceUnavailable(n,"auth"),new Error("Service non disponible");case 6:return e.a(2)}},e,this,[[1,5]])})),function(e){return h.apply(this,arguments)})},{key:"generateKYCQR",value:(d=n(a().m(function e(n){var r,t,i,s=arguments;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:if(r=s.length>1&&void 0!==s[1]?s[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:"kyc"},r));case 2:if(!(t=e.v).success){e.n=3;break}return this.displayQRCode(n,t.data.qrCodeUrl,"kyc",r),this.startAutoRefresh(n,"kyc",r),e.a(2,t.data);case 3:throw new Error(t.message||"Erreur lors de la génération du QR code KYC");case 4:e.n=6;break;case 5:throw e.p=5,i=e.v,console.error("Erreur API détectée:",i.message),this.displayServiceUnavailable(n,"kyc"),new Error("Service non disponible");case 6:return e.a(2)}},e,this,[[1,5]])})),function(e){return d.apply(this,arguments)})},{key:"checkQRStatus",value:(f=n(a().m(function e(n){var r,t;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:if(this.isInitialized){e.n=1;break}throw new Error("SunuID: SDK non initialisé");case 1:return e.p=1,e.n=2,this.makeRequest("/qr-status",{sessionId:n});case 2:if(!(r=e.v).success){e.n=3;break}return e.a(2,r.data);case 3:throw new Error(r.message||"Erreur lors de la vérification du statut");case 4:e.n=6;break;case 5:throw e.p=5,t=e.v,this.handleError(t),t;case 6:return e.a(2)}},e,this,[[1,5]])})),function(e){return f.apply(this,arguments)})},{key:"displayQRCode",value:function(e,n,r){var t=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("auth"===r?"Authentification":"Vérification KYC",'</h3>\n <div class="sunuid-timer">\n <span>Expire dans: </span>\n <span id="sunuid-timer">30</span>\n <span> secondes</span>\n </div>\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.startTimer(),this.applyTheme(t.theme||this.config.theme)}},{key:"displayServiceUnavailable",value:function(e,n){var r=document.getElementById(e);r?r.innerHTML='\n <div class="sunuid-service-unavailable" style="\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n ">\n <div style="font-size: 48px; margin-bottom: 20px;">⚠️</div>\n <h3 style="margin: 0 0 10px 0; color: #495057;">Service Non Disponible</h3>\n <p style="margin: 0; font-size: 14px;">\n Le service d\'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style="margin-top: 20px; font-size: 12px; color: #adb5bd;">\n Type: '.concat(n.toUpperCase(),"\n </div>\n </div>\n "):console.error("Container ".concat(e," non trouvé"))}},{key:"refreshQR",value:(l=n(a().m(function e(n,r){var t,i,o,s,c=arguments;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t=c.length>2&&void 0!==c[2]?c[2]:{},e.p=1,"auth"!==r){e.n=3;break}return e.n=2,this.generateAuthQR(n,t);case 2:o=e.v,e.n=5;break;case 3:return e.n=4,this.generateKYCQR(n,t);case 4:o=e.v;case 5:return i=o,e.a(2,i);case 6:throw e.p=6,s=e.v,console.error("Erreur lors du rafraîchissement:",s.message),this.displayServiceUnavailable(n,r),s;case 7:return e.a(2)}},e,this,[[1,6]])})),function(e,n){return l.apply(this,arguments)})},{key:"startAutoRefresh",value:function(e,r,t){var i=this;this.config.autoRefresh&&(this.refreshTimer=setInterval(n(a().m(function n(){var o;return a().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.p=0,n.n=1,i.refreshQR(e,r,t);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:"startTimer",value:function(){var e=this,n=30,r=document.getElementById("sunuid-timer"),t=setInterval(function(){n--,r&&(r.textContent=n),n<=0&&(clearInterval(t),e.config.onExpired&&e.config.onExpired())},1e3)}},{key:"makeRequest",value:(u=n(a().m(function n(r,t){var i,s,c,u,l,f,d,h;return a().w(function(n){for(;;)switch(n.p=n.n){case 0:return s=(null===(i=e.SunuIDConfig)||void 0===i||null===(i=i.endpoints)||void 0===i?void 0:i[r.replace("/","")])||r,c="".concat(this.config.apiUrl).concat(s),n.p=1,n.n=2,fetch(c,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(this.config.clientId,":").concat(this.config.secretId),Accept:"application/json"},body:JSON.stringify(o(o({},t),{},{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.isInitialized=!1,console.log("SunuID SDK détruit")}}],s&&r(t.prototype,s),c&&r(t,c),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,s,c,u,l,f,d,h}();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 theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: 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 \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n }\n\n /**\n * Générer un QR code d'authentification\n */\n async generateAuthQR(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: 'auth',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qrCodeUrl, 'auth', options);\n this.startAutoRefresh(containerId, 'auth', options);\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.warn('Erreur API détectée, génération d\\'un QR code de test:', error.message);\n \n // En cas d'échec de l'API (CORS, 500, ou autre), générer un QR code de test\n const testData = {\n type: 'auth',\n clientId: this.config.clientId,\n timestamp: Date.now(),\n sessionId: 'test_' + Math.random().toString(36).substr(2, 9),\n apiUrl: this.config.apiUrl,\n error: error.message,\n errorType: error.name,\n fallback: true,\n ...options\n };\n \n const qrData = JSON.stringify(testData);\n const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=${encodeURIComponent(qrData)}`;\n \n this.displayQRCode(containerId, qrUrl, 'auth', options);\n this.startAutoRefresh(containerId, 'auth', options);\n \n return {\n success: true,\n data: {\n sessionId: testData.sessionId,\n qrCodeUrl: qrUrl,\n expires: Date.now() + 30000,\n type: 'auth',\n fallback: true\n }\n };\n }\n }\n\n /**\n * Générer un QR code KYC\n */\n async generateKYCQR(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: 'kyc',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qrCodeUrl, 'kyc', options);\n this.startAutoRefresh(containerId, 'kyc', options);\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code KYC');\n }\n } catch (error) {\n console.warn('Erreur API détectée, génération d\\'un QR code KYC de test:', error.message);\n \n // En cas d'échec de l'API, générer un QR code de test\n const testData = {\n type: 'kyc',\n clientId: this.config.clientId,\n timestamp: Date.now(),\n sessionId: 'test_' + Math.random().toString(36).substr(2, 9),\n apiUrl: this.config.apiUrl,\n error: error.message,\n errorType: error.name,\n fallback: true,\n ...options\n };\n \n const qrData = JSON.stringify(testData);\n const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=${encodeURIComponent(qrData)}`;\n \n this.displayQRCode(containerId, qrUrl, 'kyc', options);\n this.startAutoRefresh(containerId, 'kyc', options);\n \n return {\n success: true,\n data: {\n sessionId: testData.sessionId,\n qrCodeUrl: qrUrl,\n expires: Date.now() + 30000,\n type: 'kyc',\n fallback: true\n }\n };\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 sessionId: 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 === 'auth' ? 'Authentification' : 'Vérification KYC'}</h3>\n <div class=\"sunuid-timer\">\n <span>Expire dans: </span>\n <span id=\"sunuid-timer\">30</span>\n <span> secondes</span>\n </div>\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 // Démarrer le timer\n this.startTimer();\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, type, options = {}) {\n try {\n const result = type === 'auth' \n ? await this.generateAuthQR(containerId, options)\n : await this.generateKYCQR(containerId, options);\n \n return result;\n } catch (error) {\n this.handleError(error);\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 startTimer() {\n let timeLeft = 30;\n const timerElement = document.getElementById('sunuid-timer');\n \n const timer = setInterval(() => {\n timeLeft--;\n if (timerElement) {\n timerElement.textContent = timeLeft;\n }\n \n if (timeLeft <= 0) {\n clearInterval(timer);\n if (this.config.onExpired) {\n this.config.onExpired();\n }\n }\n }, 1000);\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 try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","this","_objectSpread","qrCode","refreshTimer","isInitialized","init","key","value","Error","console","log","_generateAuthQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","testData","qrData","qrUrl","_t","_args","w","_context","p","n","makeRequest","type","v","success","displayQRCode","data","qrCodeUrl","startAutoRefresh","a","message","warn","timestamp","Date","now","sessionId","Math","random","toString","substr","error","errorType","name","fallback","JSON","stringify","concat","encodeURIComponent","expires","_x","apply","_generateKYCQR","_callee2","_t2","_args2","_context2","_x2","_checkQRStatus","_callee3","_t3","_context3","handleError","_x3","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","startTimer","applyTheme","_refreshQR","_callee4","result","_t4","_t5","_args4","_context4","generateAuthQR","generateKYCQR","_x4","_x5","_this","setInterval","_callee5","_t6","_context5","refreshQR","_this2","timeLeft","timerElement","timer","textContent","clearInterval","_makeRequest","_callee6","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t7","_context6","endpoints","replace","fetch","method","headers","Authorization","Accept","body","client_id","secret_id","ok","text","parse","e","status","json","_x6","_x7","querySelector","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 theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: 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 \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n }\n\n /**\n * Générer un QR code d'authentification\n */\n async generateAuthQR(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: 'auth',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qrCodeUrl, 'auth', options);\n this.startAutoRefresh(containerId, 'auth', options);\n return response.data;\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 this.displayServiceUnavailable(containerId, 'auth');\n throw new Error('Service non disponible');\n }\n }\n\n /**\n * Générer un QR code KYC\n */\n async generateKYCQR(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: 'kyc',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qrCodeUrl, 'kyc', options);\n this.startAutoRefresh(containerId, 'kyc', options);\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code KYC');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n this.displayServiceUnavailable(containerId, 'kyc');\n throw new Error('Service non disponible');\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 sessionId: 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 === 'auth' ? 'Authentification' : 'Vérification KYC'}</h3>\n <div class=\"sunuid-timer\">\n <span>Expire dans: </span>\n <span id=\"sunuid-timer\">30</span>\n <span> secondes</span>\n </div>\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 // Démarrer le timer\n this.startTimer();\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 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, type, options = {}) {\n try {\n const result = type === 'auth' \n ? await this.generateAuthQR(containerId, options)\n : await this.generateKYCQR(containerId, options);\n \n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, 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 startTimer() {\n let timeLeft = 30;\n const timerElement = document.getElementById('sunuid-timer');\n \n const timer = setInterval(() => {\n timeLeft--;\n if (timerElement) {\n timerElement.textContent = timeLeft;\n }\n \n if (timeLeft <= 0) {\n clearInterval(timer);\n if (this.config.onExpired) {\n this.config.onExpired();\n }\n }\n }, 1000);\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 try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","theme","language","autoRefresh","refreshInterval","onSuccess","onError","onExpired","SunuID","config","arguments","length","undefined","_classCallCheck","this","_objectSpread","qrCode","refreshTimer","isInitialized","init","key","value","Error","console","log","_generateAuthQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","_t","_args","w","_context","p","n","makeRequest","type","v","success","displayQRCode","data","qrCodeUrl","startAutoRefresh","a","message","error","displayServiceUnavailable","_x","apply","_generateKYCQR","_callee2","_t2","_args2","_context2","_x2","_checkQRStatus","_callee3","sessionId","_t3","_context3","handleError","_x3","qrUrl","container","document","getElementById","concat","innerHTML","qrElement","createElement","className","appendChild","startTimer","applyTheme","toUpperCase","_refreshQR","_callee4","result","_t4","_t5","_args4","_context4","generateAuthQR","generateKYCQR","_x4","_x5","_this","setInterval","_callee5","_t6","_context5","refreshQR","warn","_this2","timeLeft","timerElement","timer","textContent","clearInterval","_makeRequest","_callee6","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t7","_context6","endpoints","replace","fetch","method","headers","Authorization","Accept","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x6","_x7","querySelector","sunuidInstance","initSunuID"],"mappings":"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"}
|