sunuid-sdk 1.0.17 → 1.0.19
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 +145 -104
- package/dist/sunuid-sdk.esm.js.map +1 -1
- package/dist/sunuid-sdk.js +145 -104
- 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
|
@@ -207,6 +207,8 @@
|
|
|
207
207
|
apiUrl: ((_window$SunuIDConfig = window.SunuIDConfig) === null || _window$SunuIDConfig === void 0 ? void 0 : _window$SunuIDConfig.apiUrl) || 'https://api.sunuid.fayma.sn',
|
|
208
208
|
clientId: null,
|
|
209
209
|
secretId: null,
|
|
210
|
+
type: 1,
|
|
211
|
+
// Type par défaut (1 = authentification)
|
|
210
212
|
theme: 'light',
|
|
211
213
|
language: 'fr',
|
|
212
214
|
autoRefresh: true,
|
|
@@ -244,12 +246,12 @@
|
|
|
244
246
|
}
|
|
245
247
|
|
|
246
248
|
/**
|
|
247
|
-
* Générer un QR code
|
|
249
|
+
* Générer un QR code avec le type configuré
|
|
248
250
|
*/
|
|
249
251
|
}, {
|
|
250
|
-
key: "
|
|
252
|
+
key: "generateQR",
|
|
251
253
|
value: (function () {
|
|
252
|
-
var
|
|
254
|
+
var _generateQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(containerId) {
|
|
253
255
|
var options,
|
|
254
256
|
response,
|
|
255
257
|
imageBaseUrl,
|
|
@@ -269,7 +271,7 @@
|
|
|
269
271
|
_context.p = 1;
|
|
270
272
|
_context.n = 2;
|
|
271
273
|
return this.makeRequest('/qr-generate', _objectSpread2({
|
|
272
|
-
type:
|
|
274
|
+
type: this.config.type
|
|
273
275
|
}, options));
|
|
274
276
|
case 2:
|
|
275
277
|
response = _context.v;
|
|
@@ -280,8 +282,8 @@
|
|
|
280
282
|
// Construire l'URL complète de l'image QR avec la base URL pour les images
|
|
281
283
|
imageBaseUrl = 'https://sunuid.fayma.sn';
|
|
282
284
|
qrImageUrl = "".concat(imageBaseUrl).concat(response.data.qrcode);
|
|
283
|
-
this.displayQRCode(containerId, qrImageUrl,
|
|
284
|
-
this.startAutoRefresh(containerId,
|
|
285
|
+
this.displayQRCode(containerId, qrImageUrl, this.config.type, options);
|
|
286
|
+
this.startAutoRefresh(containerId, this.config.type, options);
|
|
285
287
|
return _context.a(2, _objectSpread2(_objectSpread2({}, response.data), {}, {
|
|
286
288
|
qrCodeUrl: qrImageUrl,
|
|
287
289
|
sessionId: response.data.service_id
|
|
@@ -295,27 +297,27 @@
|
|
|
295
297
|
_context.p = 5;
|
|
296
298
|
_t = _context.v;
|
|
297
299
|
console.error('Erreur API détectée:', _t.message);
|
|
298
|
-
console.log('Affichage du message "Service non disponible" pour
|
|
299
|
-
this.displayServiceUnavailable(containerId,
|
|
300
|
+
console.log('Affichage du message "Service non disponible" pour type ' + this.config.type);
|
|
301
|
+
this.displayServiceUnavailable(containerId, this.config.type);
|
|
300
302
|
throw new Error('Service non disponible');
|
|
301
303
|
case 6:
|
|
302
304
|
return _context.a(2);
|
|
303
305
|
}
|
|
304
306
|
}, _callee, this, [[1, 5]]);
|
|
305
307
|
}));
|
|
306
|
-
function
|
|
307
|
-
return
|
|
308
|
+
function generateQR(_x) {
|
|
309
|
+
return _generateQR.apply(this, arguments);
|
|
308
310
|
}
|
|
309
|
-
return
|
|
311
|
+
return generateQR;
|
|
310
312
|
}()
|
|
311
313
|
/**
|
|
312
|
-
* Générer un QR code
|
|
314
|
+
* Générer un QR code avec un type personnalisé
|
|
313
315
|
*/
|
|
314
316
|
)
|
|
315
317
|
}, {
|
|
316
|
-
key: "
|
|
318
|
+
key: "generateCustomQR",
|
|
317
319
|
value: (function () {
|
|
318
|
-
var
|
|
320
|
+
var _generateCustomQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(containerId, type) {
|
|
319
321
|
var options,
|
|
320
322
|
response,
|
|
321
323
|
imageBaseUrl,
|
|
@@ -325,7 +327,7 @@
|
|
|
325
327
|
return _regenerator().w(function (_context2) {
|
|
326
328
|
while (1) switch (_context2.p = _context2.n) {
|
|
327
329
|
case 0:
|
|
328
|
-
options = _args2.length >
|
|
330
|
+
options = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {};
|
|
329
331
|
if (this.isInitialized) {
|
|
330
332
|
_context2.n = 1;
|
|
331
333
|
break;
|
|
@@ -335,7 +337,7 @@
|
|
|
335
337
|
_context2.p = 1;
|
|
336
338
|
_context2.n = 2;
|
|
337
339
|
return this.makeRequest('/qr-generate', _objectSpread2({
|
|
338
|
-
type:
|
|
340
|
+
type: type
|
|
339
341
|
}, options));
|
|
340
342
|
case 2:
|
|
341
343
|
response = _context2.v;
|
|
@@ -346,14 +348,14 @@
|
|
|
346
348
|
// Construire l'URL complète de l'image QR avec la base URL pour les images
|
|
347
349
|
imageBaseUrl = 'https://sunuid.fayma.sn';
|
|
348
350
|
qrImageUrl = "".concat(imageBaseUrl).concat(response.data.qrcode);
|
|
349
|
-
this.displayQRCode(containerId, qrImageUrl,
|
|
350
|
-
this.startAutoRefresh(containerId,
|
|
351
|
+
this.displayQRCode(containerId, qrImageUrl, type, options);
|
|
352
|
+
this.startAutoRefresh(containerId, type, options);
|
|
351
353
|
return _context2.a(2, _objectSpread2(_objectSpread2({}, response.data), {}, {
|
|
352
354
|
qrCodeUrl: qrImageUrl,
|
|
353
355
|
sessionId: response.data.service_id
|
|
354
356
|
}));
|
|
355
357
|
case 3:
|
|
356
|
-
throw new Error(response.message || 'Erreur lors de la génération du QR code
|
|
358
|
+
throw new Error(response.message || 'Erreur lors de la génération du QR code');
|
|
357
359
|
case 4:
|
|
358
360
|
_context2.n = 6;
|
|
359
361
|
break;
|
|
@@ -361,15 +363,69 @@
|
|
|
361
363
|
_context2.p = 5;
|
|
362
364
|
_t2 = _context2.v;
|
|
363
365
|
console.error('Erreur API détectée:', _t2.message);
|
|
364
|
-
console.log('Affichage du message "Service non disponible" pour
|
|
365
|
-
this.displayServiceUnavailable(containerId,
|
|
366
|
+
console.log('Affichage du message "Service non disponible" pour type ' + type);
|
|
367
|
+
this.displayServiceUnavailable(containerId, type);
|
|
366
368
|
throw new Error('Service non disponible');
|
|
367
369
|
case 6:
|
|
368
370
|
return _context2.a(2);
|
|
369
371
|
}
|
|
370
372
|
}, _callee2, this, [[1, 5]]);
|
|
371
373
|
}));
|
|
372
|
-
function
|
|
374
|
+
function generateCustomQR(_x2, _x3) {
|
|
375
|
+
return _generateCustomQR.apply(this, arguments);
|
|
376
|
+
}
|
|
377
|
+
return generateCustomQR;
|
|
378
|
+
}() // Alias pour maintenir la compatibilité
|
|
379
|
+
)
|
|
380
|
+
}, {
|
|
381
|
+
key: "generateAuthQR",
|
|
382
|
+
value: function () {
|
|
383
|
+
var _generateAuthQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(containerId) {
|
|
384
|
+
var options,
|
|
385
|
+
_args3 = arguments;
|
|
386
|
+
return _regenerator().w(function (_context3) {
|
|
387
|
+
while (1) switch (_context3.n) {
|
|
388
|
+
case 0:
|
|
389
|
+
options = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
|
|
390
|
+
return _context3.a(2, this.generateQR(containerId, options));
|
|
391
|
+
}
|
|
392
|
+
}, _callee3, this);
|
|
393
|
+
}));
|
|
394
|
+
function generateAuthQR(_x4) {
|
|
395
|
+
return _generateAuthQR.apply(this, arguments);
|
|
396
|
+
}
|
|
397
|
+
return generateAuthQR;
|
|
398
|
+
}()
|
|
399
|
+
}, {
|
|
400
|
+
key: "generateKYCQR",
|
|
401
|
+
value: function () {
|
|
402
|
+
var _generateKYCQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(containerId) {
|
|
403
|
+
var options,
|
|
404
|
+
originalType,
|
|
405
|
+
_args4 = arguments;
|
|
406
|
+
return _regenerator().w(function (_context4) {
|
|
407
|
+
while (1) switch (_context4.p = _context4.n) {
|
|
408
|
+
case 0:
|
|
409
|
+
options = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {};
|
|
410
|
+
// Sauvegarder le type actuel
|
|
411
|
+
originalType = this.config.type; // Changer temporairement le type pour KYC
|
|
412
|
+
this.config.type = 2;
|
|
413
|
+
_context4.p = 1;
|
|
414
|
+
_context4.n = 2;
|
|
415
|
+
return this.generateQR(containerId, options);
|
|
416
|
+
case 2:
|
|
417
|
+
return _context4.a(2, _context4.v);
|
|
418
|
+
case 3:
|
|
419
|
+
_context4.p = 3;
|
|
420
|
+
// Restaurer le type original
|
|
421
|
+
this.config.type = originalType;
|
|
422
|
+
return _context4.f(3);
|
|
423
|
+
case 4:
|
|
424
|
+
return _context4.a(2);
|
|
425
|
+
}
|
|
426
|
+
}, _callee4, this, [[1,, 3, 4]]);
|
|
427
|
+
}));
|
|
428
|
+
function generateKYCQR(_x5) {
|
|
373
429
|
return _generateKYCQR.apply(this, arguments);
|
|
374
430
|
}
|
|
375
431
|
return generateKYCQR;
|
|
@@ -377,49 +433,48 @@
|
|
|
377
433
|
/**
|
|
378
434
|
* Vérifier le statut d'un QR code
|
|
379
435
|
*/
|
|
380
|
-
)
|
|
381
436
|
}, {
|
|
382
437
|
key: "checkQRStatus",
|
|
383
438
|
value: (function () {
|
|
384
|
-
var _checkQRStatus = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
439
|
+
var _checkQRStatus = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(sessionId) {
|
|
385
440
|
var response, _t3;
|
|
386
|
-
return _regenerator().w(function (
|
|
387
|
-
while (1) switch (
|
|
441
|
+
return _regenerator().w(function (_context5) {
|
|
442
|
+
while (1) switch (_context5.p = _context5.n) {
|
|
388
443
|
case 0:
|
|
389
444
|
if (this.isInitialized) {
|
|
390
|
-
|
|
445
|
+
_context5.n = 1;
|
|
391
446
|
break;
|
|
392
447
|
}
|
|
393
448
|
throw new Error('SunuID: SDK non initialisé');
|
|
394
449
|
case 1:
|
|
395
|
-
|
|
396
|
-
|
|
450
|
+
_context5.p = 1;
|
|
451
|
+
_context5.n = 2;
|
|
397
452
|
return this.makeRequest('/qr-status', {
|
|
398
453
|
serviceId: sessionId
|
|
399
454
|
});
|
|
400
455
|
case 2:
|
|
401
|
-
response =
|
|
456
|
+
response = _context5.v;
|
|
402
457
|
if (!response.success) {
|
|
403
|
-
|
|
458
|
+
_context5.n = 3;
|
|
404
459
|
break;
|
|
405
460
|
}
|
|
406
|
-
return
|
|
461
|
+
return _context5.a(2, response.data);
|
|
407
462
|
case 3:
|
|
408
463
|
throw new Error(response.message || 'Erreur lors de la vérification du statut');
|
|
409
464
|
case 4:
|
|
410
|
-
|
|
465
|
+
_context5.n = 6;
|
|
411
466
|
break;
|
|
412
467
|
case 5:
|
|
413
|
-
|
|
414
|
-
_t3 =
|
|
468
|
+
_context5.p = 5;
|
|
469
|
+
_t3 = _context5.v;
|
|
415
470
|
this.handleError(_t3);
|
|
416
471
|
throw _t3;
|
|
417
472
|
case 6:
|
|
418
|
-
return
|
|
473
|
+
return _context5.a(2);
|
|
419
474
|
}
|
|
420
|
-
},
|
|
475
|
+
}, _callee5, this, [[1, 5]]);
|
|
421
476
|
}));
|
|
422
|
-
function checkQRStatus(
|
|
477
|
+
function checkQRStatus(_x6) {
|
|
423
478
|
return _checkQRStatus.apply(this, arguments);
|
|
424
479
|
}
|
|
425
480
|
return checkQRStatus;
|
|
@@ -443,7 +498,7 @@
|
|
|
443
498
|
// Créer l'élément QR code
|
|
444
499
|
var qrElement = document.createElement('div');
|
|
445
500
|
qrElement.className = 'sunuid-qr-code';
|
|
446
|
-
qrElement.innerHTML = "\n <div class=\"sunuid-qr-header\">\n <h3>".concat(type ===
|
|
501
|
+
qrElement.innerHTML = "\n <div class=\"sunuid-qr-header\">\n <h3>".concat(type === 1 ? 'Authentification' : type === 2 ? 'Vérification KYC' : type === 3 ? 'Service Type 3' : 'Service Type ' + type, "</h3>\n </div>\n <div class=\"sunuid-qr-image\">\n <img src=\"").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 ");
|
|
447
502
|
container.appendChild(qrElement);
|
|
448
503
|
|
|
449
504
|
// Appliquer le thème
|
|
@@ -471,47 +526,33 @@
|
|
|
471
526
|
}, {
|
|
472
527
|
key: "refreshQR",
|
|
473
528
|
value: (function () {
|
|
474
|
-
var _refreshQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
529
|
+
var _refreshQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(containerId) {
|
|
475
530
|
var options,
|
|
476
531
|
result,
|
|
477
|
-
|
|
478
|
-
_t4
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
while (1) switch (_context4.p = _context4.n) {
|
|
532
|
+
_args6 = arguments,
|
|
533
|
+
_t4;
|
|
534
|
+
return _regenerator().w(function (_context6) {
|
|
535
|
+
while (1) switch (_context6.p = _context6.n) {
|
|
482
536
|
case 0:
|
|
483
|
-
options =
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
break;
|
|
488
|
-
}
|
|
489
|
-
_context4.n = 2;
|
|
490
|
-
return this.generateAuthQR(containerId, options);
|
|
537
|
+
options = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};
|
|
538
|
+
_context6.p = 1;
|
|
539
|
+
_context6.n = 2;
|
|
540
|
+
return this.generateQR(containerId, options);
|
|
491
541
|
case 2:
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
break;
|
|
542
|
+
result = _context6.v;
|
|
543
|
+
return _context6.a(2, result);
|
|
495
544
|
case 3:
|
|
496
|
-
|
|
497
|
-
|
|
545
|
+
_context6.p = 3;
|
|
546
|
+
_t4 = _context6.v;
|
|
547
|
+
console.error('Erreur lors du rafraîchissement:', _t4.message);
|
|
548
|
+
this.displayServiceUnavailable(containerId, this.config.type);
|
|
549
|
+
throw _t4;
|
|
498
550
|
case 4:
|
|
499
|
-
|
|
500
|
-
case 5:
|
|
501
|
-
result = _t4;
|
|
502
|
-
return _context4.a(2, result);
|
|
503
|
-
case 6:
|
|
504
|
-
_context4.p = 6;
|
|
505
|
-
_t5 = _context4.v;
|
|
506
|
-
console.error('Erreur lors du rafraîchissement:', _t5.message);
|
|
507
|
-
this.displayServiceUnavailable(containerId, type);
|
|
508
|
-
throw _t5;
|
|
509
|
-
case 7:
|
|
510
|
-
return _context4.a(2);
|
|
551
|
+
return _context6.a(2);
|
|
511
552
|
}
|
|
512
|
-
},
|
|
553
|
+
}, _callee6, this, [[1, 3]]);
|
|
513
554
|
}));
|
|
514
|
-
function refreshQR(
|
|
555
|
+
function refreshQR(_x7) {
|
|
515
556
|
return _refreshQR.apply(this, arguments);
|
|
516
557
|
}
|
|
517
558
|
return refreshQR;
|
|
@@ -525,25 +566,25 @@
|
|
|
525
566
|
value: function startAutoRefresh(containerId, type, options) {
|
|
526
567
|
var _this = this;
|
|
527
568
|
if (!this.config.autoRefresh) return;
|
|
528
|
-
this.refreshTimer = setInterval(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
529
|
-
var
|
|
530
|
-
return _regenerator().w(function (
|
|
531
|
-
while (1) switch (
|
|
569
|
+
this.refreshTimer = setInterval(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7() {
|
|
570
|
+
var _t5;
|
|
571
|
+
return _regenerator().w(function (_context7) {
|
|
572
|
+
while (1) switch (_context7.p = _context7.n) {
|
|
532
573
|
case 0:
|
|
533
|
-
|
|
534
|
-
|
|
574
|
+
_context7.p = 0;
|
|
575
|
+
_context7.n = 1;
|
|
535
576
|
return _this.refreshQR(containerId, type, options);
|
|
536
577
|
case 1:
|
|
537
|
-
|
|
578
|
+
_context7.n = 3;
|
|
538
579
|
break;
|
|
539
580
|
case 2:
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
console.warn('Erreur lors du rafraîchissement automatique:',
|
|
581
|
+
_context7.p = 2;
|
|
582
|
+
_t5 = _context7.v;
|
|
583
|
+
console.warn('Erreur lors du rafraîchissement automatique:', _t5);
|
|
543
584
|
case 3:
|
|
544
|
-
return
|
|
585
|
+
return _context7.a(2);
|
|
545
586
|
}
|
|
546
|
-
},
|
|
587
|
+
}, _callee7, null, [[0, 2]]);
|
|
547
588
|
})), this.config.refreshInterval);
|
|
548
589
|
}
|
|
549
590
|
|
|
@@ -557,17 +598,17 @@
|
|
|
557
598
|
}, {
|
|
558
599
|
key: "makeRequest",
|
|
559
600
|
value: (function () {
|
|
560
|
-
var _makeRequest = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
601
|
+
var _makeRequest = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8(endpoint, data) {
|
|
561
602
|
var _window$SunuIDConfig2;
|
|
562
|
-
var endpointPath, url, response, errorText, errorData, result,
|
|
563
|
-
return _regenerator().w(function (
|
|
564
|
-
while (1) switch (
|
|
603
|
+
var endpointPath, url, response, errorText, errorData, result, _t6;
|
|
604
|
+
return _regenerator().w(function (_context8) {
|
|
605
|
+
while (1) switch (_context8.p = _context8.n) {
|
|
565
606
|
case 0:
|
|
566
607
|
// Utiliser l'endpoint depuis la configuration si disponible
|
|
567
608
|
endpointPath = ((_window$SunuIDConfig2 = window.SunuIDConfig) === null || _window$SunuIDConfig2 === void 0 || (_window$SunuIDConfig2 = _window$SunuIDConfig2.endpoints) === null || _window$SunuIDConfig2 === void 0 ? void 0 : _window$SunuIDConfig2[endpoint.replace('/', '')]) || endpoint;
|
|
568
609
|
url = "".concat(this.config.apiUrl).concat(endpointPath);
|
|
569
|
-
|
|
570
|
-
|
|
610
|
+
_context8.p = 1;
|
|
611
|
+
_context8.n = 2;
|
|
571
612
|
return fetch(url, {
|
|
572
613
|
method: 'POST',
|
|
573
614
|
headers: {
|
|
@@ -581,15 +622,15 @@
|
|
|
581
622
|
}))
|
|
582
623
|
});
|
|
583
624
|
case 2:
|
|
584
|
-
response =
|
|
625
|
+
response = _context8.v;
|
|
585
626
|
if (response.ok) {
|
|
586
|
-
|
|
627
|
+
_context8.n = 4;
|
|
587
628
|
break;
|
|
588
629
|
}
|
|
589
|
-
|
|
630
|
+
_context8.n = 3;
|
|
590
631
|
return response.text();
|
|
591
632
|
case 3:
|
|
592
|
-
errorText =
|
|
633
|
+
errorText = _context8.v;
|
|
593
634
|
try {
|
|
594
635
|
errorData = JSON.parse(errorText);
|
|
595
636
|
} catch (e) {
|
|
@@ -599,22 +640,22 @@
|
|
|
599
640
|
}
|
|
600
641
|
throw new Error(errorData.message || "Erreur HTTP: ".concat(response.status));
|
|
601
642
|
case 4:
|
|
602
|
-
|
|
643
|
+
_context8.n = 5;
|
|
603
644
|
return response.json();
|
|
604
645
|
case 5:
|
|
605
|
-
result =
|
|
606
|
-
return
|
|
646
|
+
result = _context8.v;
|
|
647
|
+
return _context8.a(2, result);
|
|
607
648
|
case 6:
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
console.error('Erreur API SunuID:',
|
|
611
|
-
throw
|
|
649
|
+
_context8.p = 6;
|
|
650
|
+
_t6 = _context8.v;
|
|
651
|
+
console.error('Erreur API SunuID:', _t6);
|
|
652
|
+
throw _t6;
|
|
612
653
|
case 7:
|
|
613
|
-
return
|
|
654
|
+
return _context8.a(2);
|
|
614
655
|
}
|
|
615
|
-
},
|
|
656
|
+
}, _callee8, this, [[1, 6]]);
|
|
616
657
|
}));
|
|
617
|
-
function makeRequest(
|
|
658
|
+
function makeRequest(_x8, _x9) {
|
|
618
659
|
return _makeRequest.apply(this, arguments);
|
|
619
660
|
}
|
|
620
661
|
return makeRequest;
|
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 };\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 // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, 'auth', options);\n this.startAutoRefresh(containerId, 'auth', options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour auth');\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 // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, 'kyc', options);\n this.startAutoRefresh(containerId, 'kyc', options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code KYC');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour kyc');\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 serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 'auth' ? 'Authentification' : 'Vérification KYC'}</h3>\n </div>\n <div class=\"sunuid-qr-image\">\n <img src=\"${qrUrl}\" alt=\"QR Code SunuID\" style=\"max-width: 300px; height: auto;\">\n </div>\n <div class=\"sunuid-qr-instructions\">\n <p>Scannez ce QR code avec l'application SunuID pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${type.toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, 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\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","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","imageBaseUrl","qrImageUrl","_args","_t","w","_context","p","n","makeRequest","type","v","success","concat","data","qrcode","displayQRCode","startAutoRefresh","a","qrCodeUrl","sessionId","service_id","message","error","displayServiceUnavailable","generateAuthQR","_x","apply","_generateKYCQR","_callee2","_args2","_t2","_context2","generateKYCQR","_x2","_checkQRStatus","_callee3","_t3","_context3","serviceId","handleError","checkQRStatus","_x3","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee4","result","_args4","_t4","_t5","_context4","refreshQR","_x4","_x5","_this","setInterval","_callee5","_t6","_context5","warn","_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","clearInterval","sunuidInstance","initSunuID"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sunuid-sdk.js","sources":["../src/sunuid-sdk.js"],"sourcesContent":["/**\n * SunuID SDK - Package d'intégration pour partenaires\n * \n * @version 1.0.0\n * @author SunuID Team\n * @license MIT\n */\n\n(function(window) {\n 'use strict';\n\n // Configuration par défaut\n const DEFAULT_CONFIG = {\n apiUrl: window.SunuIDConfig?.apiUrl || 'https://api.sunuid.fayma.sn',\n clientId: null,\n secretId: null,\n type: 1, // Type par défaut (1 = authentification)\n theme: 'light',\n language: 'fr',\n autoRefresh: true,\n refreshInterval: 30000, // 30 secondes\n onSuccess: null,\n onError: null\n };\n\n /**\n * Classe principale SunuID\n */\n class SunuID {\n constructor(config = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.qrCode = null;\n this.refreshTimer = null;\n this.isInitialized = false;\n \n this.init();\n }\n\n /**\n * Initialisation du SDK\n */\n init() {\n if (!this.config.clientId || !this.config.secretId) {\n throw new Error('SunuID: clientId et secretId sont requis');\n }\n\n this.isInitialized = true;\n console.log('SunuID SDK initialisé avec succès');\n }\n\n /**\n * Générer un QR code avec le type configuré\n */\n async generateQR(containerId, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: this.config.type, // Utilise le type configuré\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, this.config.type, options);\n this.startAutoRefresh(containerId, this.config.type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + this.config.type);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw new Error('Service non disponible');\n }\n }\n\n\n\n /**\n * Générer un QR code avec un type personnalisé\n */\n async generateCustomQR(containerId, type, options = {}) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-generate', {\n type: type, // Type personnalisé (1, 2, 3, etc.)\n ...options\n });\n\n if (response.success) {\n // Construire l'URL complète de l'image QR avec la base URL pour les images\n const imageBaseUrl = 'https://sunuid.fayma.sn';\n const qrImageUrl = `${imageBaseUrl}${response.data.qrcode}`;\n this.displayQRCode(containerId, qrImageUrl, type, options);\n this.startAutoRefresh(containerId, type, options);\n return {\n ...response.data,\n qrCodeUrl: qrImageUrl,\n sessionId: response.data.service_id\n };\n } else {\n throw new Error(response.message || 'Erreur lors de la génération du QR code');\n }\n } catch (error) {\n console.error('Erreur API détectée:', error.message);\n console.log('Affichage du message \"Service non disponible\" pour type ' + type);\n this.displayServiceUnavailable(containerId, type);\n throw new Error('Service non disponible');\n }\n }\n\n // Alias pour maintenir la compatibilité\n async generateAuthQR(containerId, options = {}) {\n return this.generateQR(containerId, options);\n }\n\n async generateKYCQR(containerId, options = {}) {\n // Sauvegarder le type actuel\n const originalType = this.config.type;\n // Changer temporairement le type pour KYC\n this.config.type = 2;\n try {\n return await this.generateQR(containerId, options);\n } finally {\n // Restaurer le type original\n this.config.type = originalType;\n }\n }\n\n /**\n * Vérifier le statut d'un QR code\n */\n async checkQRStatus(sessionId) {\n if (!this.isInitialized) {\n throw new Error('SunuID: SDK non initialisé');\n }\n\n try {\n const response = await this.makeRequest('/qr-status', {\n serviceId: sessionId\n });\n\n if (response.success) {\n return response.data;\n } else {\n throw new Error(response.message || 'Erreur lors de la vérification du statut');\n }\n } catch (error) {\n this.handleError(error);\n throw error;\n }\n }\n\n /**\n * Afficher un QR code dans un conteneur\n */\n displayQRCode(containerId, qrUrl, type, options = {}) {\n const container = document.getElementById(containerId);\n if (!container) {\n throw new Error(`Conteneur avec l'ID \"${containerId}\" non trouvé`);\n }\n\n // Nettoyer le conteneur\n container.innerHTML = '';\n\n // Créer l'élément QR code\n const qrElement = document.createElement('div');\n qrElement.className = 'sunuid-qr-code';\n qrElement.innerHTML = `\n <div class=\"sunuid-qr-header\">\n <h3>${type === 1 ? 'Authentification' : type === 2 ? 'Vérification KYC' : type === 3 ? 'Service Type 3' : 'Service Type ' + type}</h3>\n </div>\n <div class=\"sunuid-qr-image\">\n <img src=\"${qrUrl}\" alt=\"QR Code SunuID\" style=\"max-width: 300px; height: auto;\">\n </div>\n <div class=\"sunuid-qr-instructions\">\n <p>Scannez ce QR code avec l'application SunuID pour vous connecter</p>\n </div>\n <div class=\"sunuid-qr-status\" id=\"sunuid-status\">\n <p>En attente de scan...</p>\n </div>\n `;\n\n container.appendChild(qrElement);\n\n // Appliquer le thème\n this.applyTheme(options.theme || this.config.theme);\n }\n\n /**\n * Afficher \"Service non disponible\"\n */\n displayServiceUnavailable(containerId, type) {\n console.log(`displayServiceUnavailable appelée pour ${containerId}, type: ${type}`);\n const container = document.getElementById(containerId);\n if (!container) {\n console.error(`Container ${containerId} non trouvé`);\n return;\n }\n\n container.innerHTML = `\n <div class=\"sunuid-service-unavailable\" style=\"\n text-align: center;\n padding: 40px 20px;\n background: #f8f9fa;\n border: 2px dashed #dee2e6;\n border-radius: 10px;\n color: #6c757d;\n font-family: Arial, sans-serif;\n \">\n <div style=\"font-size: 48px; margin-bottom: 20px;\">⚠️</div>\n <h3 style=\"margin: 0 0 10px 0; color: #495057;\">Service Non Disponible</h3>\n <p style=\"margin: 0; font-size: 14px;\">\n Le service d'authentification est temporairement indisponible.<br>\n Veuillez réessayer plus tard.\n </p>\n <div style=\"margin-top: 20px; font-size: 12px; color: #adb5bd;\">\n Type: ${type.toUpperCase()}\n </div>\n </div>\n `;\n }\n\n /**\n * Rafraîchir un QR code\n */\n async refreshQR(containerId, options = {}) {\n try {\n const result = await this.generateQR(containerId, options);\n return result;\n } catch (error) {\n console.error('Erreur lors du rafraîchissement:', error.message);\n this.displayServiceUnavailable(containerId, this.config.type);\n throw error;\n }\n }\n\n /**\n * Démarrer le rafraîchissement automatique\n */\n startAutoRefresh(containerId, type, options) {\n if (!this.config.autoRefresh) return;\n\n this.refreshTimer = setInterval(async () => {\n try {\n await this.refreshQR(containerId, type, options);\n } catch (error) {\n console.warn('Erreur lors du rafraîchissement automatique:', error);\n }\n }, this.config.refreshInterval);\n }\n\n /**\n * Démarrer le timer de compte à rebours\n */\n\n\n /**\n * Effectuer une requête API\n */\n async makeRequest(endpoint, data) {\n // Utiliser l'endpoint depuis la configuration si disponible\n const endpointPath = window.SunuIDConfig?.endpoints?.[endpoint.replace('/', '')] || endpoint;\n const url = `${this.config.apiUrl}${endpointPath}`;\n \n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.clientId}:${this.config.secretId}`,\n 'Accept': 'application/json'\n },\n body: JSON.stringify({\n ...data,\n client_id: this.config.clientId,\n secret_id: this.config.secretId\n })\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n let errorData;\n try {\n errorData = JSON.parse(errorText);\n } catch (e) {\n errorData = { message: errorText };\n }\n \n throw new Error(errorData.message || `Erreur HTTP: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Erreur API SunuID:', error);\n throw error;\n }\n }\n\n /**\n * Appliquer le thème\n */\n applyTheme(theme) {\n const container = document.querySelector('.sunuid-qr-code');\n if (container) {\n container.className = `sunuid-qr-code sunuid-theme-${theme}`;\n }\n }\n\n /**\n * Gérer les erreurs\n */\n handleError(error) {\n console.error('SunuID SDK Error:', error);\n \n if (this.config.onError) {\n this.config.onError(error);\n }\n }\n\n /**\n * Nettoyer les ressources\n */\n destroy() {\n if (this.refreshTimer) {\n clearInterval(this.refreshTimer);\n }\n \n this.isInitialized = false;\n console.log('SunuID SDK détruit');\n }\n }\n\n // Exposer la classe globalement\n window.SunuID = SunuID;\n window.sunuidInstance = null;\n\n // Fonction d'initialisation globale\n window.initSunuID = function(config) {\n try {\n window.sunuidInstance = new SunuID(config);\n return window.sunuidInstance;\n } catch (error) {\n console.error('Erreur lors de l\\'initialisation de SunuID:', error);\n throw error;\n }\n };\n\n})(window); "],"names":["window","_window$SunuIDConfig","DEFAULT_CONFIG","apiUrl","SunuIDConfig","clientId","secretId","type","theme","language","autoRefresh","refreshInterval","onSuccess","onError","SunuID","config","arguments","length","undefined","_classCallCheck","_objectSpread","qrCode","refreshTimer","isInitialized","init","_createClass","key","value","Error","console","log","_generateQR","_asyncToGenerator","_regenerator","m","_callee","containerId","options","response","imageBaseUrl","qrImageUrl","_args","_t","w","_context","p","n","makeRequest","v","success","concat","data","qrcode","displayQRCode","startAutoRefresh","a","qrCodeUrl","sessionId","service_id","message","error","displayServiceUnavailable","generateQR","_x","apply","_generateCustomQR","_callee2","_args2","_t2","_context2","generateCustomQR","_x2","_x3","_generateAuthQR","_callee3","_args3","_context3","generateAuthQR","_x4","_generateKYCQR","_callee4","originalType","_args4","_context4","f","generateKYCQR","_x5","_checkQRStatus","_callee5","_t3","_context5","serviceId","handleError","checkQRStatus","_x6","qrUrl","container","document","getElementById","innerHTML","qrElement","createElement","className","appendChild","applyTheme","toUpperCase","_refreshQR","_callee6","result","_args6","_t4","_context6","refreshQR","_x7","_this","setInterval","_callee7","_t5","_context7","warn","_makeRequest","_callee8","endpoint","_window$SunuIDConfig2","endpointPath","url","errorText","errorData","_t6","_context8","endpoints","replace","fetch","method","headers","body","JSON","stringify","client_id","secret_id","ok","text","parse","e","status","json","_x8","_x9","querySelector","destroy","clearInterval","sunuidInstance","initSunuID"],"mappings":"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"}
|