sunuid-sdk 1.0.1 → 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 +112 -125
- package/dist/sunuid-sdk.esm.js.map +1 -1
- package/dist/sunuid-sdk.js +112 -125
- 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 +2 -2
package/dist/sunuid-sdk.esm.js
CHANGED
|
@@ -202,6 +202,7 @@ function _toPropertyKey(t) {
|
|
|
202
202
|
// Configuration par défaut
|
|
203
203
|
var DEFAULT_CONFIG = {
|
|
204
204
|
apiUrl: 'https://sunuid.fayma.sn/api',
|
|
205
|
+
partnerId: null,
|
|
205
206
|
clientId: null,
|
|
206
207
|
secretId: null,
|
|
207
208
|
theme: 'light',
|
|
@@ -234,8 +235,8 @@ function _toPropertyKey(t) {
|
|
|
234
235
|
return _createClass(SunuID, [{
|
|
235
236
|
key: "init",
|
|
236
237
|
value: function init() {
|
|
237
|
-
if (!this.config.clientId || !this.config.secretId) {
|
|
238
|
-
throw new Error('SunuID: clientId et secretId sont requis');
|
|
238
|
+
if (!this.config.partnerId || !this.config.clientId || !this.config.secretId) {
|
|
239
|
+
throw new Error('SunuID: partnerId, clientId et secretId sont requis');
|
|
239
240
|
}
|
|
240
241
|
this.isInitialized = true;
|
|
241
242
|
console.log('SunuID SDK initialisé avec succès');
|
|
@@ -250,9 +251,6 @@ function _toPropertyKey(t) {
|
|
|
250
251
|
var _generateAuthQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(containerId) {
|
|
251
252
|
var options,
|
|
252
253
|
response,
|
|
253
|
-
testData,
|
|
254
|
-
qrData,
|
|
255
|
-
qrUrl,
|
|
256
254
|
_args = arguments,
|
|
257
255
|
_t;
|
|
258
256
|
return _regenerator().w(function (_context) {
|
|
@@ -267,7 +265,7 @@ function _toPropertyKey(t) {
|
|
|
267
265
|
case 1:
|
|
268
266
|
_context.p = 1;
|
|
269
267
|
_context.n = 2;
|
|
270
|
-
return this.makeRequest('/auth/qr-generate', _objectSpread2({
|
|
268
|
+
return this.makeRequest('/auth/qr-generate.php', _objectSpread2({
|
|
271
269
|
type: 'auth'
|
|
272
270
|
}, options));
|
|
273
271
|
case 2:
|
|
@@ -276,42 +274,19 @@ function _toPropertyKey(t) {
|
|
|
276
274
|
_context.n = 3;
|
|
277
275
|
break;
|
|
278
276
|
}
|
|
279
|
-
this.displayQRCode(containerId, response.data.
|
|
277
|
+
this.displayQRCode(containerId, response.data.qrCodeUrl, 'auth', options);
|
|
280
278
|
this.startAutoRefresh(containerId, 'auth', options);
|
|
281
279
|
return _context.a(2, response.data);
|
|
282
280
|
case 3:
|
|
283
|
-
throw new Error(response.message);
|
|
281
|
+
throw new Error(response.message || 'Erreur lors de la génération du QR code');
|
|
284
282
|
case 4:
|
|
285
283
|
_context.n = 6;
|
|
286
284
|
break;
|
|
287
285
|
case 5:
|
|
288
286
|
_context.p = 5;
|
|
289
287
|
_t = _context.v;
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
// En cas d'échec de l'API (CORS, 500, ou autre), générer un QR code de test
|
|
294
|
-
testData = _objectSpread2({
|
|
295
|
-
type: 'auth',
|
|
296
|
-
clientId: this.config.clientId,
|
|
297
|
-
timestamp: Date.now(),
|
|
298
|
-
sessionId: 'test_' + Math.random().toString(36).substr(2, 9),
|
|
299
|
-
apiUrl: this.config.apiUrl,
|
|
300
|
-
error: _t.message,
|
|
301
|
-
errorType: _t.name
|
|
302
|
-
}, options);
|
|
303
|
-
qrData = JSON.stringify(testData);
|
|
304
|
-
qrUrl = "https://api.qrserver.com/v1/create-qr-code/?size=200x200&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
|
-
qr_code_url: qrUrl,
|
|
311
|
-
qr_id: testData.sessionId,
|
|
312
|
-
expires_at: Date.now() + 30000
|
|
313
|
-
}
|
|
314
|
-
});
|
|
288
|
+
this.handleError(_t);
|
|
289
|
+
throw _t;
|
|
315
290
|
case 6:
|
|
316
291
|
return _context.a(2);
|
|
317
292
|
}
|
|
@@ -332,9 +307,6 @@ function _toPropertyKey(t) {
|
|
|
332
307
|
var _generateKYCQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(containerId) {
|
|
333
308
|
var options,
|
|
334
309
|
response,
|
|
335
|
-
testData,
|
|
336
|
-
qrData,
|
|
337
|
-
qrUrl,
|
|
338
310
|
_args2 = arguments,
|
|
339
311
|
_t2;
|
|
340
312
|
return _regenerator().w(function (_context2) {
|
|
@@ -349,7 +321,7 @@ function _toPropertyKey(t) {
|
|
|
349
321
|
case 1:
|
|
350
322
|
_context2.p = 1;
|
|
351
323
|
_context2.n = 2;
|
|
352
|
-
return this.makeRequest('/auth/qr-generate', _objectSpread2({
|
|
324
|
+
return this.makeRequest('/auth/qr-generate.php', _objectSpread2({
|
|
353
325
|
type: 'kyc'
|
|
354
326
|
}, options));
|
|
355
327
|
case 2:
|
|
@@ -358,44 +330,19 @@ function _toPropertyKey(t) {
|
|
|
358
330
|
_context2.n = 3;
|
|
359
331
|
break;
|
|
360
332
|
}
|
|
361
|
-
this.displayQRCode(containerId, response.data.
|
|
333
|
+
this.displayQRCode(containerId, response.data.qrCodeUrl, 'kyc', options);
|
|
362
334
|
this.startAutoRefresh(containerId, 'kyc', options);
|
|
363
335
|
return _context2.a(2, response.data);
|
|
364
336
|
case 3:
|
|
365
|
-
throw new Error(response.message);
|
|
337
|
+
throw new Error(response.message || 'Erreur lors de la génération du QR code KYC');
|
|
366
338
|
case 4:
|
|
367
339
|
_context2.n = 6;
|
|
368
340
|
break;
|
|
369
341
|
case 5:
|
|
370
342
|
_context2.p = 5;
|
|
371
343
|
_t2 = _context2.v;
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
// En cas d'échec de l'API (CORS, 500, ou autre), générer un QR code de test
|
|
376
|
-
testData = _objectSpread2({
|
|
377
|
-
type: 'kyc',
|
|
378
|
-
clientId: this.config.clientId,
|
|
379
|
-
timestamp: Date.now(),
|
|
380
|
-
sessionId: 'test_' + Math.random().toString(36).substr(2, 9),
|
|
381
|
-
kycType: options.kycType || 'full',
|
|
382
|
-
requiredFields: options.requiredFields || ['identity', 'address', 'phone'],
|
|
383
|
-
apiUrl: this.config.apiUrl,
|
|
384
|
-
error: _t2.message,
|
|
385
|
-
errorType: _t2.name
|
|
386
|
-
}, options);
|
|
387
|
-
qrData = JSON.stringify(testData);
|
|
388
|
-
qrUrl = "https://api.qrserver.com/v1/create-qr-code/?size=200x200&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
|
-
qr_code_url: qrUrl,
|
|
395
|
-
qr_id: testData.sessionId,
|
|
396
|
-
expires_at: Date.now() + 30000
|
|
397
|
-
}
|
|
398
|
-
});
|
|
344
|
+
this.handleError(_t2);
|
|
345
|
+
throw _t2;
|
|
399
346
|
case 6:
|
|
400
347
|
return _context2.a(2);
|
|
401
348
|
}
|
|
@@ -413,28 +360,43 @@ function _toPropertyKey(t) {
|
|
|
413
360
|
}, {
|
|
414
361
|
key: "checkQRStatus",
|
|
415
362
|
value: (function () {
|
|
416
|
-
var _checkQRStatus = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(
|
|
363
|
+
var _checkQRStatus = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(sessionId) {
|
|
417
364
|
var response, _t3;
|
|
418
365
|
return _regenerator().w(function (_context3) {
|
|
419
366
|
while (1) switch (_context3.p = _context3.n) {
|
|
420
367
|
case 0:
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
368
|
+
if (this.isInitialized) {
|
|
369
|
+
_context3.n = 1;
|
|
370
|
+
break;
|
|
371
|
+
}
|
|
372
|
+
throw new Error('SunuID: SDK non initialisé');
|
|
426
373
|
case 1:
|
|
374
|
+
_context3.p = 1;
|
|
375
|
+
_context3.n = 2;
|
|
376
|
+
return this.makeRequest('/auth/qr-status.php', {
|
|
377
|
+
sessionId: sessionId
|
|
378
|
+
});
|
|
379
|
+
case 2:
|
|
427
380
|
response = _context3.v;
|
|
381
|
+
if (!response.success) {
|
|
382
|
+
_context3.n = 3;
|
|
383
|
+
break;
|
|
384
|
+
}
|
|
428
385
|
return _context3.a(2, response.data);
|
|
429
|
-
case
|
|
430
|
-
|
|
386
|
+
case 3:
|
|
387
|
+
throw new Error(response.message || 'Erreur lors de la vérification du statut');
|
|
388
|
+
case 4:
|
|
389
|
+
_context3.n = 6;
|
|
390
|
+
break;
|
|
391
|
+
case 5:
|
|
392
|
+
_context3.p = 5;
|
|
431
393
|
_t3 = _context3.v;
|
|
432
394
|
this.handleError(_t3);
|
|
433
395
|
throw _t3;
|
|
434
|
-
case
|
|
396
|
+
case 6:
|
|
435
397
|
return _context3.a(2);
|
|
436
398
|
}
|
|
437
|
-
}, _callee3, this, [[
|
|
399
|
+
}, _callee3, this, [[1, 5]]);
|
|
438
400
|
}));
|
|
439
401
|
function checkQRStatus(_x3) {
|
|
440
402
|
return _checkQRStatus.apply(this, arguments);
|
|
@@ -442,7 +404,7 @@ function _toPropertyKey(t) {
|
|
|
442
404
|
return checkQRStatus;
|
|
443
405
|
}()
|
|
444
406
|
/**
|
|
445
|
-
* Afficher
|
|
407
|
+
* Afficher un QR code dans un conteneur
|
|
446
408
|
*/
|
|
447
409
|
)
|
|
448
410
|
}, {
|
|
@@ -453,28 +415,35 @@ function _toPropertyKey(t) {
|
|
|
453
415
|
if (!container) {
|
|
454
416
|
throw new Error("Conteneur avec l'ID \"".concat(containerId, "\" non trouv\xE9"));
|
|
455
417
|
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
container.innerHTML =
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
418
|
+
|
|
419
|
+
// Nettoyer le conteneur
|
|
420
|
+
container.innerHTML = '';
|
|
421
|
+
|
|
422
|
+
// Créer l'élément QR code
|
|
423
|
+
var qrElement = document.createElement('div');
|
|
424
|
+
qrElement.className = 'sunuid-qr-code';
|
|
425
|
+
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 ");
|
|
426
|
+
container.appendChild(qrElement);
|
|
427
|
+
|
|
428
|
+
// Démarrer le timer
|
|
465
429
|
this.startTimer();
|
|
430
|
+
|
|
431
|
+
// Appliquer le thème
|
|
432
|
+
this.applyTheme(options.theme || this.config.theme);
|
|
466
433
|
}
|
|
467
434
|
|
|
468
435
|
/**
|
|
469
|
-
*
|
|
436
|
+
* Rafraîchir un QR code
|
|
470
437
|
*/
|
|
471
438
|
}, {
|
|
472
439
|
key: "refreshQR",
|
|
473
440
|
value: (function () {
|
|
474
441
|
var _refreshQR = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(containerId, type) {
|
|
475
442
|
var options,
|
|
443
|
+
result,
|
|
476
444
|
_args4 = arguments,
|
|
477
|
-
_t4
|
|
445
|
+
_t4,
|
|
446
|
+
_t5;
|
|
478
447
|
return _regenerator().w(function (_context4) {
|
|
479
448
|
while (1) switch (_context4.p = _context4.n) {
|
|
480
449
|
case 0:
|
|
@@ -487,22 +456,26 @@ function _toPropertyKey(t) {
|
|
|
487
456
|
_context4.n = 2;
|
|
488
457
|
return this.generateAuthQR(containerId, options);
|
|
489
458
|
case 2:
|
|
490
|
-
|
|
459
|
+
_t4 = _context4.v;
|
|
460
|
+
_context4.n = 5;
|
|
491
461
|
break;
|
|
492
462
|
case 3:
|
|
493
463
|
_context4.n = 4;
|
|
494
464
|
return this.generateKYCQR(containerId, options);
|
|
495
465
|
case 4:
|
|
496
|
-
_context4.n = 6;
|
|
497
|
-
break;
|
|
498
|
-
case 5:
|
|
499
|
-
_context4.p = 5;
|
|
500
466
|
_t4 = _context4.v;
|
|
501
|
-
|
|
467
|
+
case 5:
|
|
468
|
+
result = _t4;
|
|
469
|
+
return _context4.a(2, result);
|
|
502
470
|
case 6:
|
|
471
|
+
_context4.p = 6;
|
|
472
|
+
_t5 = _context4.v;
|
|
473
|
+
this.handleError(_t5);
|
|
474
|
+
throw _t5;
|
|
475
|
+
case 7:
|
|
503
476
|
return _context4.a(2);
|
|
504
477
|
}
|
|
505
|
-
}, _callee4, this, [[1,
|
|
478
|
+
}, _callee4, this, [[1, 6]]);
|
|
506
479
|
}));
|
|
507
480
|
function refreshQR(_x4, _x5) {
|
|
508
481
|
return _refreshQR.apply(this, arguments);
|
|
@@ -510,7 +483,7 @@ function _toPropertyKey(t) {
|
|
|
510
483
|
return refreshQR;
|
|
511
484
|
}()
|
|
512
485
|
/**
|
|
513
|
-
* Démarrer le
|
|
486
|
+
* Démarrer le rafraîchissement automatique
|
|
514
487
|
*/
|
|
515
488
|
)
|
|
516
489
|
}, {
|
|
@@ -519,7 +492,7 @@ function _toPropertyKey(t) {
|
|
|
519
492
|
var _this = this;
|
|
520
493
|
if (!this.config.autoRefresh) return;
|
|
521
494
|
this.refreshTimer = setInterval(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {
|
|
522
|
-
var
|
|
495
|
+
var _t6;
|
|
523
496
|
return _regenerator().w(function (_context5) {
|
|
524
497
|
while (1) switch (_context5.p = _context5.n) {
|
|
525
498
|
case 0:
|
|
@@ -531,8 +504,8 @@ function _toPropertyKey(t) {
|
|
|
531
504
|
break;
|
|
532
505
|
case 2:
|
|
533
506
|
_context5.p = 2;
|
|
534
|
-
|
|
535
|
-
console.warn('Erreur lors du rafraîchissement automatique:',
|
|
507
|
+
_t6 = _context5.v;
|
|
508
|
+
console.warn('Erreur lors du rafraîchissement automatique:', _t6);
|
|
536
509
|
case 3:
|
|
537
510
|
return _context5.a(2);
|
|
538
511
|
}
|
|
@@ -570,55 +543,57 @@ function _toPropertyKey(t) {
|
|
|
570
543
|
key: "makeRequest",
|
|
571
544
|
value: (function () {
|
|
572
545
|
var _makeRequest = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(endpoint, data) {
|
|
573
|
-
var url,
|
|
546
|
+
var url, response, errorText, errorData, result, _t7;
|
|
574
547
|
return _regenerator().w(function (_context6) {
|
|
575
548
|
while (1) switch (_context6.p = _context6.n) {
|
|
576
549
|
case 0:
|
|
577
|
-
url = "".concat(this.config.apiUrl).concat(endpoint);
|
|
578
|
-
requestData = _objectSpread2(_objectSpread2({}, data), {}, {
|
|
579
|
-
client_id: this.config.clientId,
|
|
580
|
-
secret_id: this.config.secretId
|
|
581
|
-
});
|
|
550
|
+
url = "".concat(this.config.apiUrl).concat(endpoint);
|
|
582
551
|
_context6.p = 1;
|
|
583
552
|
_context6.n = 2;
|
|
584
553
|
return fetch(url, {
|
|
585
554
|
method: 'POST',
|
|
586
555
|
headers: {
|
|
587
556
|
'Content-Type': 'application/json',
|
|
557
|
+
'X-SunuID-Client-ID': this.config.clientId,
|
|
558
|
+
'X-SunuID-Secret-ID': this.config.secretId,
|
|
559
|
+
'X-SunuID-Partner-ID': this.config.partnerId,
|
|
588
560
|
'Accept': 'application/json'
|
|
589
561
|
},
|
|
590
|
-
body: JSON.stringify(
|
|
562
|
+
body: JSON.stringify(data)
|
|
591
563
|
});
|
|
592
564
|
case 2:
|
|
593
565
|
response = _context6.v;
|
|
594
566
|
if (response.ok) {
|
|
595
|
-
_context6.n =
|
|
567
|
+
_context6.n = 4;
|
|
596
568
|
break;
|
|
597
569
|
}
|
|
598
|
-
|
|
599
|
-
|
|
570
|
+
_context6.n = 3;
|
|
571
|
+
return response.text();
|
|
600
572
|
case 3:
|
|
601
|
-
|
|
602
|
-
|
|
573
|
+
errorText = _context6.v;
|
|
574
|
+
try {
|
|
575
|
+
errorData = JSON.parse(errorText);
|
|
576
|
+
} catch (e) {
|
|
577
|
+
errorData = {
|
|
578
|
+
message: errorText
|
|
579
|
+
};
|
|
580
|
+
}
|
|
581
|
+
throw new Error(errorData.message || "Erreur HTTP: ".concat(response.status));
|
|
603
582
|
case 4:
|
|
604
|
-
|
|
583
|
+
_context6.n = 5;
|
|
584
|
+
return response.json();
|
|
605
585
|
case 5:
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
if (!(_t6.name === 'TypeError' && _t6.message.includes('CORS'))) {
|
|
609
|
-
_context6.n = 6;
|
|
610
|
-
break;
|
|
611
|
-
}
|
|
612
|
-
console.warn('Erreur CORS détectée, utilisation de QR codes de test');
|
|
613
|
-
throw new Error('CORS_ERROR');
|
|
586
|
+
result = _context6.v;
|
|
587
|
+
return _context6.a(2, result);
|
|
614
588
|
case 6:
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
589
|
+
_context6.p = 6;
|
|
590
|
+
_t7 = _context6.v;
|
|
591
|
+
console.error('Erreur API SunuID:', _t7);
|
|
592
|
+
throw _t7;
|
|
618
593
|
case 7:
|
|
619
594
|
return _context6.a(2);
|
|
620
595
|
}
|
|
621
|
-
}, _callee6, this, [[1,
|
|
596
|
+
}, _callee6, this, [[1, 6]]);
|
|
622
597
|
}));
|
|
623
598
|
function makeRequest(_x6, _x7) {
|
|
624
599
|
return _makeRequest.apply(this, arguments);
|
|
@@ -626,9 +601,21 @@ function _toPropertyKey(t) {
|
|
|
626
601
|
return makeRequest;
|
|
627
602
|
}()
|
|
628
603
|
/**
|
|
629
|
-
*
|
|
604
|
+
* Appliquer le thème
|
|
630
605
|
*/
|
|
631
606
|
)
|
|
607
|
+
}, {
|
|
608
|
+
key: "applyTheme",
|
|
609
|
+
value: function applyTheme(theme) {
|
|
610
|
+
var container = document.querySelector('.sunuid-qr-code');
|
|
611
|
+
if (container) {
|
|
612
|
+
container.className = "sunuid-qr-code sunuid-theme-".concat(theme);
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
/**
|
|
617
|
+
* Gérer les erreurs
|
|
618
|
+
*/
|
|
632
619
|
}, {
|
|
633
620
|
key: "handleError",
|
|
634
621
|
value: function handleError(error) {
|
|
@@ -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: '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', {\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', {\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', {\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.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: '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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"}
|