sunuid-sdk 1.0.2 → 1.0.3
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 +109 -122
- package/dist/sunuid-sdk.esm.js.map +1 -1
- package/dist/sunuid-sdk.js +109 -122
- 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.js
CHANGED
|
@@ -205,6 +205,7 @@
|
|
|
205
205
|
// Configuration par défaut
|
|
206
206
|
var DEFAULT_CONFIG = {
|
|
207
207
|
apiUrl: 'https://sunuid.fayma.sn/api',
|
|
208
|
+
partnerId: null,
|
|
208
209
|
clientId: null,
|
|
209
210
|
secretId: null,
|
|
210
211
|
theme: 'light',
|
|
@@ -237,8 +238,8 @@
|
|
|
237
238
|
return _createClass(SunuID, [{
|
|
238
239
|
key: "init",
|
|
239
240
|
value: function init() {
|
|
240
|
-
if (!this.config.clientId || !this.config.secretId) {
|
|
241
|
-
throw new Error('SunuID: clientId et secretId sont requis');
|
|
241
|
+
if (!this.config.partnerId || !this.config.clientId || !this.config.secretId) {
|
|
242
|
+
throw new Error('SunuID: partnerId, clientId et secretId sont requis');
|
|
242
243
|
}
|
|
243
244
|
this.isInitialized = true;
|
|
244
245
|
console.log('SunuID SDK initialisé avec succès');
|
|
@@ -253,9 +254,6 @@
|
|
|
253
254
|
var _generateAuthQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(containerId) {
|
|
254
255
|
var options,
|
|
255
256
|
response,
|
|
256
|
-
testData,
|
|
257
|
-
qrData,
|
|
258
|
-
qrUrl,
|
|
259
257
|
_args = arguments,
|
|
260
258
|
_t;
|
|
261
259
|
return _regenerator().w(function (_context) {
|
|
@@ -279,42 +277,19 @@
|
|
|
279
277
|
_context.n = 3;
|
|
280
278
|
break;
|
|
281
279
|
}
|
|
282
|
-
this.displayQRCode(containerId, response.data.
|
|
280
|
+
this.displayQRCode(containerId, response.data.qrCodeUrl, 'auth', options);
|
|
283
281
|
this.startAutoRefresh(containerId, 'auth', options);
|
|
284
282
|
return _context.a(2, response.data);
|
|
285
283
|
case 3:
|
|
286
|
-
throw new Error(response.message);
|
|
284
|
+
throw new Error(response.message || 'Erreur lors de la génération du QR code');
|
|
287
285
|
case 4:
|
|
288
286
|
_context.n = 6;
|
|
289
287
|
break;
|
|
290
288
|
case 5:
|
|
291
289
|
_context.p = 5;
|
|
292
290
|
_t = _context.v;
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
// En cas d'échec de l'API (CORS, 500, ou autre), générer un QR code de test
|
|
297
|
-
testData = _objectSpread2({
|
|
298
|
-
type: 'auth',
|
|
299
|
-
clientId: this.config.clientId,
|
|
300
|
-
timestamp: Date.now(),
|
|
301
|
-
sessionId: 'test_' + Math.random().toString(36).substr(2, 9),
|
|
302
|
-
apiUrl: this.config.apiUrl,
|
|
303
|
-
error: _t.message,
|
|
304
|
-
errorType: _t.name
|
|
305
|
-
}, options);
|
|
306
|
-
qrData = JSON.stringify(testData);
|
|
307
|
-
qrUrl = "https://api.qrserver.com/v1/create-qr-code/?size=200x200&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
|
-
qr_code_url: qrUrl,
|
|
314
|
-
qr_id: testData.sessionId,
|
|
315
|
-
expires_at: Date.now() + 30000
|
|
316
|
-
}
|
|
317
|
-
});
|
|
291
|
+
this.handleError(_t);
|
|
292
|
+
throw _t;
|
|
318
293
|
case 6:
|
|
319
294
|
return _context.a(2);
|
|
320
295
|
}
|
|
@@ -335,9 +310,6 @@
|
|
|
335
310
|
var _generateKYCQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(containerId) {
|
|
336
311
|
var options,
|
|
337
312
|
response,
|
|
338
|
-
testData,
|
|
339
|
-
qrData,
|
|
340
|
-
qrUrl,
|
|
341
313
|
_args2 = arguments,
|
|
342
314
|
_t2;
|
|
343
315
|
return _regenerator().w(function (_context2) {
|
|
@@ -361,44 +333,19 @@
|
|
|
361
333
|
_context2.n = 3;
|
|
362
334
|
break;
|
|
363
335
|
}
|
|
364
|
-
this.displayQRCode(containerId, response.data.
|
|
336
|
+
this.displayQRCode(containerId, response.data.qrCodeUrl, 'kyc', options);
|
|
365
337
|
this.startAutoRefresh(containerId, 'kyc', options);
|
|
366
338
|
return _context2.a(2, response.data);
|
|
367
339
|
case 3:
|
|
368
|
-
throw new Error(response.message);
|
|
340
|
+
throw new Error(response.message || 'Erreur lors de la génération du QR code KYC');
|
|
369
341
|
case 4:
|
|
370
342
|
_context2.n = 6;
|
|
371
343
|
break;
|
|
372
344
|
case 5:
|
|
373
345
|
_context2.p = 5;
|
|
374
346
|
_t2 = _context2.v;
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
// En cas d'échec de l'API (CORS, 500, ou autre), générer un QR code de test
|
|
379
|
-
testData = _objectSpread2({
|
|
380
|
-
type: 'kyc',
|
|
381
|
-
clientId: this.config.clientId,
|
|
382
|
-
timestamp: Date.now(),
|
|
383
|
-
sessionId: 'test_' + Math.random().toString(36).substr(2, 9),
|
|
384
|
-
kycType: options.kycType || 'full',
|
|
385
|
-
requiredFields: options.requiredFields || ['identity', 'address', 'phone'],
|
|
386
|
-
apiUrl: this.config.apiUrl,
|
|
387
|
-
error: _t2.message,
|
|
388
|
-
errorType: _t2.name
|
|
389
|
-
}, options);
|
|
390
|
-
qrData = JSON.stringify(testData);
|
|
391
|
-
qrUrl = "https://api.qrserver.com/v1/create-qr-code/?size=200x200&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
|
-
qr_code_url: qrUrl,
|
|
398
|
-
qr_id: testData.sessionId,
|
|
399
|
-
expires_at: Date.now() + 30000
|
|
400
|
-
}
|
|
401
|
-
});
|
|
347
|
+
this.handleError(_t2);
|
|
348
|
+
throw _t2;
|
|
402
349
|
case 6:
|
|
403
350
|
return _context2.a(2);
|
|
404
351
|
}
|
|
@@ -416,28 +363,43 @@
|
|
|
416
363
|
}, {
|
|
417
364
|
key: "checkQRStatus",
|
|
418
365
|
value: (function () {
|
|
419
|
-
var _checkQRStatus = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(
|
|
366
|
+
var _checkQRStatus = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(sessionId) {
|
|
420
367
|
var response, _t3;
|
|
421
368
|
return _regenerator().w(function (_context3) {
|
|
422
369
|
while (1) switch (_context3.p = _context3.n) {
|
|
423
370
|
case 0:
|
|
424
|
-
|
|
425
|
-
|
|
371
|
+
if (this.isInitialized) {
|
|
372
|
+
_context3.n = 1;
|
|
373
|
+
break;
|
|
374
|
+
}
|
|
375
|
+
throw new Error('SunuID: SDK non initialisé');
|
|
376
|
+
case 1:
|
|
377
|
+
_context3.p = 1;
|
|
378
|
+
_context3.n = 2;
|
|
426
379
|
return this.makeRequest('/auth/qr-status.php', {
|
|
427
|
-
|
|
380
|
+
sessionId: sessionId
|
|
428
381
|
});
|
|
429
|
-
case
|
|
382
|
+
case 2:
|
|
430
383
|
response = _context3.v;
|
|
384
|
+
if (!response.success) {
|
|
385
|
+
_context3.n = 3;
|
|
386
|
+
break;
|
|
387
|
+
}
|
|
431
388
|
return _context3.a(2, response.data);
|
|
432
|
-
case
|
|
433
|
-
|
|
389
|
+
case 3:
|
|
390
|
+
throw new Error(response.message || 'Erreur lors de la vérification du statut');
|
|
391
|
+
case 4:
|
|
392
|
+
_context3.n = 6;
|
|
393
|
+
break;
|
|
394
|
+
case 5:
|
|
395
|
+
_context3.p = 5;
|
|
434
396
|
_t3 = _context3.v;
|
|
435
397
|
this.handleError(_t3);
|
|
436
398
|
throw _t3;
|
|
437
|
-
case
|
|
399
|
+
case 6:
|
|
438
400
|
return _context3.a(2);
|
|
439
401
|
}
|
|
440
|
-
}, _callee3, this, [[
|
|
402
|
+
}, _callee3, this, [[1, 5]]);
|
|
441
403
|
}));
|
|
442
404
|
function checkQRStatus(_x3) {
|
|
443
405
|
return _checkQRStatus.apply(this, arguments);
|
|
@@ -445,7 +407,7 @@
|
|
|
445
407
|
return checkQRStatus;
|
|
446
408
|
}()
|
|
447
409
|
/**
|
|
448
|
-
* Afficher
|
|
410
|
+
* Afficher un QR code dans un conteneur
|
|
449
411
|
*/
|
|
450
412
|
)
|
|
451
413
|
}, {
|
|
@@ -456,28 +418,35 @@
|
|
|
456
418
|
if (!container) {
|
|
457
419
|
throw new Error("Conteneur avec l'ID \"".concat(containerId, "\" non trouv\xE9"));
|
|
458
420
|
}
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
container.innerHTML =
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
421
|
+
|
|
422
|
+
// Nettoyer le conteneur
|
|
423
|
+
container.innerHTML = '';
|
|
424
|
+
|
|
425
|
+
// Créer l'élément QR code
|
|
426
|
+
var qrElement = document.createElement('div');
|
|
427
|
+
qrElement.className = 'sunuid-qr-code';
|
|
428
|
+
qrElement.innerHTML = "\n <div class=\"sunuid-qr-header\">\n <h3>".concat(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=\"").concat(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 ");
|
|
429
|
+
container.appendChild(qrElement);
|
|
430
|
+
|
|
431
|
+
// Démarrer le timer
|
|
468
432
|
this.startTimer();
|
|
433
|
+
|
|
434
|
+
// Appliquer le thème
|
|
435
|
+
this.applyTheme(options.theme || this.config.theme);
|
|
469
436
|
}
|
|
470
437
|
|
|
471
438
|
/**
|
|
472
|
-
*
|
|
439
|
+
* Rafraîchir un QR code
|
|
473
440
|
*/
|
|
474
441
|
}, {
|
|
475
442
|
key: "refreshQR",
|
|
476
443
|
value: (function () {
|
|
477
444
|
var _refreshQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(containerId, type) {
|
|
478
445
|
var options,
|
|
446
|
+
result,
|
|
479
447
|
_args4 = arguments,
|
|
480
|
-
_t4
|
|
448
|
+
_t4,
|
|
449
|
+
_t5;
|
|
481
450
|
return _regenerator().w(function (_context4) {
|
|
482
451
|
while (1) switch (_context4.p = _context4.n) {
|
|
483
452
|
case 0:
|
|
@@ -490,22 +459,26 @@
|
|
|
490
459
|
_context4.n = 2;
|
|
491
460
|
return this.generateAuthQR(containerId, options);
|
|
492
461
|
case 2:
|
|
493
|
-
|
|
462
|
+
_t4 = _context4.v;
|
|
463
|
+
_context4.n = 5;
|
|
494
464
|
break;
|
|
495
465
|
case 3:
|
|
496
466
|
_context4.n = 4;
|
|
497
467
|
return this.generateKYCQR(containerId, options);
|
|
498
468
|
case 4:
|
|
499
|
-
_context4.n = 6;
|
|
500
|
-
break;
|
|
501
|
-
case 5:
|
|
502
|
-
_context4.p = 5;
|
|
503
469
|
_t4 = _context4.v;
|
|
504
|
-
|
|
470
|
+
case 5:
|
|
471
|
+
result = _t4;
|
|
472
|
+
return _context4.a(2, result);
|
|
505
473
|
case 6:
|
|
474
|
+
_context4.p = 6;
|
|
475
|
+
_t5 = _context4.v;
|
|
476
|
+
this.handleError(_t5);
|
|
477
|
+
throw _t5;
|
|
478
|
+
case 7:
|
|
506
479
|
return _context4.a(2);
|
|
507
480
|
}
|
|
508
|
-
}, _callee4, this, [[1,
|
|
481
|
+
}, _callee4, this, [[1, 6]]);
|
|
509
482
|
}));
|
|
510
483
|
function refreshQR(_x4, _x5) {
|
|
511
484
|
return _refreshQR.apply(this, arguments);
|
|
@@ -513,7 +486,7 @@
|
|
|
513
486
|
return refreshQR;
|
|
514
487
|
}()
|
|
515
488
|
/**
|
|
516
|
-
* Démarrer le
|
|
489
|
+
* Démarrer le rafraîchissement automatique
|
|
517
490
|
*/
|
|
518
491
|
)
|
|
519
492
|
}, {
|
|
@@ -522,7 +495,7 @@
|
|
|
522
495
|
var _this = this;
|
|
523
496
|
if (!this.config.autoRefresh) return;
|
|
524
497
|
this.refreshTimer = setInterval(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {
|
|
525
|
-
var
|
|
498
|
+
var _t6;
|
|
526
499
|
return _regenerator().w(function (_context5) {
|
|
527
500
|
while (1) switch (_context5.p = _context5.n) {
|
|
528
501
|
case 0:
|
|
@@ -534,8 +507,8 @@
|
|
|
534
507
|
break;
|
|
535
508
|
case 2:
|
|
536
509
|
_context5.p = 2;
|
|
537
|
-
|
|
538
|
-
console.warn('Erreur lors du rafraîchissement automatique:',
|
|
510
|
+
_t6 = _context5.v;
|
|
511
|
+
console.warn('Erreur lors du rafraîchissement automatique:', _t6);
|
|
539
512
|
case 3:
|
|
540
513
|
return _context5.a(2);
|
|
541
514
|
}
|
|
@@ -573,55 +546,57 @@
|
|
|
573
546
|
key: "makeRequest",
|
|
574
547
|
value: (function () {
|
|
575
548
|
var _makeRequest = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(endpoint, data) {
|
|
576
|
-
var url,
|
|
549
|
+
var url, response, errorText, errorData, result, _t7;
|
|
577
550
|
return _regenerator().w(function (_context6) {
|
|
578
551
|
while (1) switch (_context6.p = _context6.n) {
|
|
579
552
|
case 0:
|
|
580
|
-
url = "".concat(this.config.apiUrl).concat(endpoint);
|
|
581
|
-
requestData = _objectSpread2(_objectSpread2({}, data), {}, {
|
|
582
|
-
client_id: this.config.clientId,
|
|
583
|
-
secret_id: this.config.secretId
|
|
584
|
-
});
|
|
553
|
+
url = "".concat(this.config.apiUrl).concat(endpoint);
|
|
585
554
|
_context6.p = 1;
|
|
586
555
|
_context6.n = 2;
|
|
587
556
|
return fetch(url, {
|
|
588
557
|
method: 'POST',
|
|
589
558
|
headers: {
|
|
590
559
|
'Content-Type': 'application/json',
|
|
560
|
+
'X-SunuID-Client-ID': this.config.clientId,
|
|
561
|
+
'X-SunuID-Secret-ID': this.config.secretId,
|
|
562
|
+
'X-SunuID-Partner-ID': this.config.partnerId,
|
|
591
563
|
'Accept': 'application/json'
|
|
592
564
|
},
|
|
593
|
-
body: JSON.stringify(
|
|
565
|
+
body: JSON.stringify(data)
|
|
594
566
|
});
|
|
595
567
|
case 2:
|
|
596
568
|
response = _context6.v;
|
|
597
569
|
if (response.ok) {
|
|
598
|
-
_context6.n =
|
|
570
|
+
_context6.n = 4;
|
|
599
571
|
break;
|
|
600
572
|
}
|
|
601
|
-
|
|
602
|
-
|
|
573
|
+
_context6.n = 3;
|
|
574
|
+
return response.text();
|
|
603
575
|
case 3:
|
|
604
|
-
|
|
605
|
-
|
|
576
|
+
errorText = _context6.v;
|
|
577
|
+
try {
|
|
578
|
+
errorData = JSON.parse(errorText);
|
|
579
|
+
} catch (e) {
|
|
580
|
+
errorData = {
|
|
581
|
+
message: errorText
|
|
582
|
+
};
|
|
583
|
+
}
|
|
584
|
+
throw new Error(errorData.message || "Erreur HTTP: ".concat(response.status));
|
|
606
585
|
case 4:
|
|
607
|
-
|
|
586
|
+
_context6.n = 5;
|
|
587
|
+
return response.json();
|
|
608
588
|
case 5:
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
if (!(_t6.name === 'TypeError' && _t6.message.includes('CORS'))) {
|
|
612
|
-
_context6.n = 6;
|
|
613
|
-
break;
|
|
614
|
-
}
|
|
615
|
-
console.warn('Erreur CORS détectée, utilisation de QR codes de test');
|
|
616
|
-
throw new Error('CORS_ERROR');
|
|
589
|
+
result = _context6.v;
|
|
590
|
+
return _context6.a(2, result);
|
|
617
591
|
case 6:
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
592
|
+
_context6.p = 6;
|
|
593
|
+
_t7 = _context6.v;
|
|
594
|
+
console.error('Erreur API SunuID:', _t7);
|
|
595
|
+
throw _t7;
|
|
621
596
|
case 7:
|
|
622
597
|
return _context6.a(2);
|
|
623
598
|
}
|
|
624
|
-
}, _callee6, this, [[1,
|
|
599
|
+
}, _callee6, this, [[1, 6]]);
|
|
625
600
|
}));
|
|
626
601
|
function makeRequest(_x6, _x7) {
|
|
627
602
|
return _makeRequest.apply(this, arguments);
|
|
@@ -629,9 +604,21 @@
|
|
|
629
604
|
return makeRequest;
|
|
630
605
|
}()
|
|
631
606
|
/**
|
|
632
|
-
*
|
|
607
|
+
* Appliquer le thème
|
|
633
608
|
*/
|
|
634
609
|
)
|
|
610
|
+
}, {
|
|
611
|
+
key: "applyTheme",
|
|
612
|
+
value: function applyTheme(theme) {
|
|
613
|
+
var container = document.querySelector('.sunuid-qr-code');
|
|
614
|
+
if (container) {
|
|
615
|
+
container.className = "sunuid-qr-code sunuid-theme-".concat(theme);
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
/**
|
|
620
|
+
* Gérer les erreurs
|
|
621
|
+
*/
|
|
635
622
|
}, {
|
|
636
623
|
key: "handleError",
|
|
637
624
|
value: function handleError(error) {
|
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: 'https://sunuid.fayma.sn/api',\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 // Essayer d'abord l'API réelle\n const response = await this.makeRequest('/auth/qr-generate.php', {\n type: 'auth',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qr_code_url, 'auth', options);\n this.startAutoRefresh(containerId, 'auth', options);\n return response.data;\n } else {\n throw new Error(response.message);\n }\n } catch (error) {\n console.warn('Erreur API détectée, génération d\\'un QR code de test:', error.message);\n console.log('Type d\\'erreur:', error.name, 'Message:', 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 ...options\n };\n \n const qrData = JSON.stringify(testData);\n const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?size=200x200&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 qr_code_url: qrUrl,\n qr_id: testData.sessionId,\n expires_at: Date.now() + 30000\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 // Essayer d'abord l'API réelle\n const response = await this.makeRequest('/auth/qr-generate.php', {\n type: 'kyc',\n ...options\n });\n\n if (response.success) {\n this.displayQRCode(containerId, response.data.qr_code_url, 'kyc', options);\n this.startAutoRefresh(containerId, 'kyc', options);\n return response.data;\n } else {\n throw new Error(response.message);\n }\n } catch (error) {\n console.warn('Erreur API détectée, génération d\\'un QR code de test:', error.message);\n console.log('Type d\\'erreur:', error.name, 'Message:', 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: 'kyc',\n clientId: this.config.clientId,\n timestamp: Date.now(),\n sessionId: 'test_' + Math.random().toString(36).substr(2, 9),\n kycType: options.kycType || 'full',\n requiredFields: options.requiredFields || ['identity', 'address', 'phone'],\n apiUrl: this.config.apiUrl,\n error: error.message,\n errorType: error.name,\n ...options\n };\n \n const qrData = JSON.stringify(testData);\n const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?size=200x200&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 qr_code_url: qrUrl,\n qr_id: testData.sessionId,\n expires_at: Date.now() + 30000\n }\n };\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(qrId) {\n try {\n const response = await this.makeRequest('/auth/qr-status.php', {\n qr_id: qrId\n });\n\n return response.data;\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher le QR code dans le 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 const theme = options.theme || this.config.theme;\n const language = options.language || this.config.language;\n\n container.innerHTML = `\n <div class=\"sunuid-qr-container sunuid-theme-${theme}\">\n <div class=\"sunuid-qr-header\">\n <h3 class=\"sunuid-qr-title\">\n ${type === 'auth' ? '🔐 Authentification' : '📋 Vérification KYC'}\n </h3>\n <p class=\"sunuid-qr-subtitle\">\n ${type === 'auth' ? \n 'Scannez ce QR code avec l\\'application SunuID pour vous connecter' :\n 'Scannez ce QR code avec l\\'application SunuID pour compléter votre profil'\n }\n </p>\n </div>\n <div class=\"sunuid-qr-code\">\n <img src=\"${qrUrl}\" alt=\"QR Code SunuID\" class=\"sunuid-qr-image\">\n <div class=\"sunuid-qr-overlay\">\n <div class=\"sunuid-qr-spinner\"></div>\n </div>\n </div>\n <div class=\"sunuid-qr-footer\">\n <p class=\"sunuid-qr-timer\">\n <i class=\"fa-solid fa-clock\"></i>\n <span id=\"sunuid-timer\">30</span> secondes\n </p>\n <button class=\"sunuid-qr-refresh\" onclick=\"sunuidInstance.refreshQR('${containerId}', '${type}', ${JSON.stringify(options)})\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n Actualiser\n </button>\n </div>\n </div>\n `;\n\n this.qrCode = {\n containerId,\n type,\n options,\n qrUrl\n };\n\n this.startTimer();\n }\n\n /**\n * Actualiser le QR code\n */\n async refreshQR(containerId, type, options = {}) {\n try {\n if (type === 'auth') {\n await this.generateAuthQR(containerId, options);\n } else {\n await this.generateKYCQR(containerId, options);\n }\n } catch (error) {\n this.handleError(error);\n }\n }\n\n /**\n * Démarrer le timer de 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 const url = `${this.config.apiUrl}${endpoint}`;\n \n // Préparer les données avec les identifiants\n const requestData = {\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n };\n \n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: JSON.stringify(requestData)\n });\n\n if (!response.ok) {\n console.warn(`Erreur HTTP ${response.status}: ${response.statusText}`);\n throw new Error(`Erreur HTTP: ${response.status} - ${response.statusText}`);\n }\n\n return await response.json();\n } catch (error) {\n // Si c'est une erreur CORS, on la gère spécifiquement\n if (error.name === 'TypeError' && error.message.includes('CORS')) {\n console.warn('Erreur CORS détectée, utilisation de QR codes de test');\n throw new Error('CORS_ERROR');\n }\n // Pour toutes les autres erreurs (500, 404, etc.)\n console.warn('Erreur API détectée:', error.message);\n throw error;\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","DEFAULT_CONFIG","apiUrl","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","qr_code_url","startAutoRefresh","a","message","warn","name","timestamp","Date","now","sessionId","Math","random","toString","substr","error","errorType","JSON","stringify","concat","encodeURIComponent","qr_id","expires_at","generateAuthQR","_x","apply","_generateKYCQR","_callee2","_args2","_t2","_context2","kycType","requiredFields","generateKYCQR","_x2","_checkQRStatus","_callee3","qrId","_t3","_context3","handleError","checkQRStatus","_x3","container","document","getElementById","innerHTML","startTimer","_refreshQR","_callee4","_args4","_t4","_context4","refreshQR","_x4","_x5","_this","setInterval","_callee5","_t5","_context5","_this2","timeLeft","timerElement","timer","textContent","clearInterval","_makeRequest","_callee6","endpoint","url","requestData","_t6","_context6","client_id","secret_id","fetch","method","headers","body","ok","status","statusText","json","includes","_x6","_x7","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: 'https://sunuid.fayma.sn/api',\n partnerId: null,\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.partnerId || !this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: partnerId, 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('/auth/qr-generate.php', {\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 this.handleError(error);\n throw error;\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('/auth/qr-generate.php', {\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 this.handleError(error);\n throw error;\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('/auth/qr-status.php', {\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 const url = `${this.config.apiUrl}${endpoint}`;\n \n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-SunuID-Client-ID': this.config.clientId,\n 'X-SunuID-Secret-ID': this.config.secretId,\n 'X-SunuID-Partner-ID': this.config.partnerId,\n 'Accept': 'application/json'\n },\n body: JSON.stringify(data)\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","DEFAULT_CONFIG","apiUrl","partnerId","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","handleError","generateAuthQR","_x","apply","_generateKYCQR","_callee2","_args2","_t2","_context2","generateKYCQR","_x2","_checkQRStatus","_callee3","sessionId","_t3","_context3","checkQRStatus","_x3","qrUrl","container","document","getElementById","concat","innerHTML","qrElement","createElement","className","appendChild","startTimer","applyTheme","_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","url","errorText","errorData","_t7","_context6","fetch","method","headers","body","JSON","stringify","ok","text","parse","e","status","json","error","_x6","_x7","querySelector","destroy","sunuidInstance","initSunuID"],"mappings":"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"}
|