@authme/util 2.8.41 → 2.8.42

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.
Files changed (3) hide show
  1. package/index.cjs +53 -9
  2. package/index.js +53 -9
  3. package/package.json +1 -1
package/index.cjs CHANGED
@@ -469,7 +469,7 @@ function retryPromiseWithCondition(promiseFactory, conditionFactory) {
469
469
  }
470
470
  });
471
471
  }
472
- function isMobileOrTablet() {
472
+ function isMobileOrTablet$1() {
473
473
  return function (a) {
474
474
  return !!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(a.substr(0, 4)) || /Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || navigator.maxTouchPoints && navigator.maxTouchPoints > 2);
475
475
  }(navigator.userAgent || navigator.vendor || window.opera);
@@ -928,6 +928,10 @@ exports.DEVICE_TYPE = void 0;
928
928
  })(exports.DEVICE_TYPE || (exports.DEVICE_TYPE = {}));
929
929
 
930
930
  function getImageData(canvas, ctx, video, sizeInfo, base64 = false, imageType = 'jpg') {
931
+ // 防止 canvas 尺寸為 0 導致 getImageData 錯誤
932
+ if (sizeInfo.canvasWidth <= 0 || sizeInfo.canvasHeight <= 0) {
933
+ return null;
934
+ }
931
935
  canvas.width = sizeInfo.canvasWidth;
932
936
  canvas.height = sizeInfo.canvasHeight;
933
937
  ctx.drawImage(video, sizeInfo.startX, sizeInfo.startY, sizeInfo.width, sizeInfo.height, 0, 0, sizeInfo.canvasWidth, sizeInfo.canvasHeight);
@@ -1424,6 +1428,23 @@ var BROWSER_CAMERA_ERRORS;
1424
1428
  BROWSER_CAMERA_ERRORS["LOW_RESOLUTION"] = "LowResolutionError";
1425
1429
  })(BROWSER_CAMERA_ERRORS || (BROWSER_CAMERA_ERRORS = {}));
1426
1430
  let stream;
1431
+ /**
1432
+ * 判斷當前裝置是否為行動裝置(手機或平板)
1433
+ * @returns boolean - true 表示是行動裝置,false 表示是桌機或筆電
1434
+ */
1435
+ function isMobileOrTablet() {
1436
+ const userAgent = navigator.userAgent.toLowerCase();
1437
+ // 檢查是否為手機或平板
1438
+ const mobilePatterns = [/android/i, /webos/i, /iphone/i, /ipad/i, /ipod/i, /blackberry/i, /windows phone/i, /mobile/i, /tablet/i];
1439
+ // 檢查觸控螢幕支援(額外的行動裝置判斷)
1440
+ const hasTouchScreen = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;
1441
+ // 檢查螢幕寬度(行動裝置通常較小)
1442
+ const isSmallScreen = window.innerWidth <= 1024;
1443
+ // 使用 userAgent 判斷
1444
+ const isMobileUA = mobilePatterns.some(pattern => pattern.test(userAgent));
1445
+ // 組合判斷:userAgent 符合行動裝置 或者 (有觸控螢幕且螢幕較小)
1446
+ return isMobileUA || hasTouchScreen && isSmallScreen;
1447
+ }
1427
1448
  const videoConstraintsFactory = (isPC, facingMode) => {
1428
1449
  return isPC ? {
1429
1450
  video: {
@@ -1516,10 +1537,27 @@ function upgradeResolution(videoTrack) {
1516
1537
  }
1517
1538
  };
1518
1539
  const minAcceptableWidth = 1280; // 最低可接受的解析度寬度
1519
- const maxAttempts = 15; // 最多嘗試10
1520
- const retryDelay = 2000; // 每次重試間隔1
1521
- console.log('🚀 開始提升解析度...');
1540
+ const maxAttempts = 15; // 最多嘗試15
1541
+ const retryDelay = 2000; // 每次重試間隔2
1542
+ // 行動裝置跳過最小解析度檢查,只嘗試一次提升解析度
1543
+ const isMobile = isMobileOrTablet();
1544
+ console.log('🚀 開始提升解析度...', {
1545
+ isMobile
1546
+ });
1522
1547
  const startTime = Date.now();
1548
+ // 行動裝置只嘗試一次,不做重試循環
1549
+ if (isMobile) {
1550
+ try {
1551
+ yield videoTrack.applyConstraints(targetConstraints);
1552
+ const settings = videoTrack.getSettings();
1553
+ console.log(`✅ [行動裝置] 解析度設定完成: ${settings.width}x${settings.height}`);
1554
+ } catch (e) {
1555
+ const settings = videoTrack.getSettings();
1556
+ console.log(`⚠️ [行動裝置] 使用當前解析度: ${settings.width}x${settings.height}`);
1557
+ }
1558
+ return;
1559
+ }
1560
+ // 電腦/筆電才執行解析度檢查和重試邏輯
1523
1561
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
1524
1562
  try {
1525
1563
  yield videoTrack.applyConstraints(targetConstraints);
@@ -1579,9 +1617,9 @@ function switchCamera(deviceId, video, translate) {
1579
1617
  initTime: `${initTime}ms`
1580
1618
  });
1581
1619
  }
1582
- // 檢查最終解析度是否達到最低要求
1620
+ // 檢查最終解析度是否達到最低要求(僅限電腦/筆電)
1583
1621
  const currentTrack = stream.getVideoTracks()[0];
1584
- if (currentTrack) {
1622
+ if (currentTrack && !isMobileOrTablet()) {
1585
1623
  const currentSettings = currentTrack.getSettings();
1586
1624
  const minRequiredWidth = 1280;
1587
1625
  if (currentSettings.width && currentSettings.width < minRequiredWidth) {
@@ -1598,6 +1636,12 @@ function switchCamera(deviceId, video, translate) {
1598
1636
  }
1599
1637
  throw BROWSER_CAMERA_ERRORS.LOW_RESOLUTION;
1600
1638
  }
1639
+ } else if (currentTrack && isMobileOrTablet()) {
1640
+ const currentSettings = currentTrack.getSettings();
1641
+ console.log('📱 [行動裝置] 跳過解析度檢查,當前解析度:', {
1642
+ current: `${currentSettings.width}x${currentSettings.height}`,
1643
+ deviceId
1644
+ });
1601
1645
  }
1602
1646
  // try {
1603
1647
  // stream = await navigator.mediaDevices.getUserMedia(constraints);
@@ -3368,8 +3412,8 @@ const themeConfigDefault = {
3368
3412
  };
3369
3413
 
3370
3414
  var name = "authme/sdk";
3371
- var version$1 = "2.8.41";
3372
- var date = "2026-01-30T10:27:23+0000";
3415
+ var version$1 = "2.8.42";
3416
+ var date = "2026-02-03T09:36:05+0000";
3373
3417
  var packageInfo = {
3374
3418
  name: name,
3375
3419
  version: version$1,
@@ -3413,7 +3457,7 @@ exports.hideErrorMessage = hideErrorMessage;
3413
3457
  exports.hidePopup = hidePopup;
3414
3458
  exports.isIphone14proOrProMax = isIphone14proOrProMax;
3415
3459
  exports.isMobile = isMobile;
3416
- exports.isMobileOrTablet = isMobileOrTablet;
3460
+ exports.isMobileOrTablet = isMobileOrTablet$1;
3417
3461
  exports.osVersion = osVersion;
3418
3462
  exports.requestCamera = requestCamera;
3419
3463
  exports.resize = resize;
package/index.js CHANGED
@@ -459,7 +459,7 @@ function retryPromiseWithCondition(promiseFactory, conditionFactory) {
459
459
  }
460
460
  });
461
461
  }
462
- function isMobileOrTablet() {
462
+ function isMobileOrTablet$1() {
463
463
  return function (a) {
464
464
  return !!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(a.substr(0, 4)) || /Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || navigator.maxTouchPoints && navigator.maxTouchPoints > 2);
465
465
  }(navigator.userAgent || navigator.vendor || window.opera);
@@ -918,6 +918,10 @@ var DEVICE_TYPE;
918
918
  })(DEVICE_TYPE || (DEVICE_TYPE = {}));
919
919
 
920
920
  function getImageData(canvas, ctx, video, sizeInfo, base64 = false, imageType = 'jpg') {
921
+ // 防止 canvas 尺寸為 0 導致 getImageData 錯誤
922
+ if (sizeInfo.canvasWidth <= 0 || sizeInfo.canvasHeight <= 0) {
923
+ return null;
924
+ }
921
925
  canvas.width = sizeInfo.canvasWidth;
922
926
  canvas.height = sizeInfo.canvasHeight;
923
927
  ctx.drawImage(video, sizeInfo.startX, sizeInfo.startY, sizeInfo.width, sizeInfo.height, 0, 0, sizeInfo.canvasWidth, sizeInfo.canvasHeight);
@@ -1414,6 +1418,23 @@ var BROWSER_CAMERA_ERRORS;
1414
1418
  BROWSER_CAMERA_ERRORS["LOW_RESOLUTION"] = "LowResolutionError";
1415
1419
  })(BROWSER_CAMERA_ERRORS || (BROWSER_CAMERA_ERRORS = {}));
1416
1420
  let stream;
1421
+ /**
1422
+ * 判斷當前裝置是否為行動裝置(手機或平板)
1423
+ * @returns boolean - true 表示是行動裝置,false 表示是桌機或筆電
1424
+ */
1425
+ function isMobileOrTablet() {
1426
+ const userAgent = navigator.userAgent.toLowerCase();
1427
+ // 檢查是否為手機或平板
1428
+ const mobilePatterns = [/android/i, /webos/i, /iphone/i, /ipad/i, /ipod/i, /blackberry/i, /windows phone/i, /mobile/i, /tablet/i];
1429
+ // 檢查觸控螢幕支援(額外的行動裝置判斷)
1430
+ const hasTouchScreen = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;
1431
+ // 檢查螢幕寬度(行動裝置通常較小)
1432
+ const isSmallScreen = window.innerWidth <= 1024;
1433
+ // 使用 userAgent 判斷
1434
+ const isMobileUA = mobilePatterns.some(pattern => pattern.test(userAgent));
1435
+ // 組合判斷:userAgent 符合行動裝置 或者 (有觸控螢幕且螢幕較小)
1436
+ return isMobileUA || hasTouchScreen && isSmallScreen;
1437
+ }
1417
1438
  const videoConstraintsFactory = (isPC, facingMode) => {
1418
1439
  return isPC ? {
1419
1440
  video: {
@@ -1506,10 +1527,27 @@ function upgradeResolution(videoTrack) {
1506
1527
  }
1507
1528
  };
1508
1529
  const minAcceptableWidth = 1280; // 最低可接受的解析度寬度
1509
- const maxAttempts = 15; // 最多嘗試10
1510
- const retryDelay = 2000; // 每次重試間隔1
1511
- console.log('🚀 開始提升解析度...');
1530
+ const maxAttempts = 15; // 最多嘗試15
1531
+ const retryDelay = 2000; // 每次重試間隔2
1532
+ // 行動裝置跳過最小解析度檢查,只嘗試一次提升解析度
1533
+ const isMobile = isMobileOrTablet();
1534
+ console.log('🚀 開始提升解析度...', {
1535
+ isMobile
1536
+ });
1512
1537
  const startTime = Date.now();
1538
+ // 行動裝置只嘗試一次,不做重試循環
1539
+ if (isMobile) {
1540
+ try {
1541
+ yield videoTrack.applyConstraints(targetConstraints);
1542
+ const settings = videoTrack.getSettings();
1543
+ console.log(`✅ [行動裝置] 解析度設定完成: ${settings.width}x${settings.height}`);
1544
+ } catch (e) {
1545
+ const settings = videoTrack.getSettings();
1546
+ console.log(`⚠️ [行動裝置] 使用當前解析度: ${settings.width}x${settings.height}`);
1547
+ }
1548
+ return;
1549
+ }
1550
+ // 電腦/筆電才執行解析度檢查和重試邏輯
1513
1551
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
1514
1552
  try {
1515
1553
  yield videoTrack.applyConstraints(targetConstraints);
@@ -1569,9 +1607,9 @@ function switchCamera(deviceId, video, translate) {
1569
1607
  initTime: `${initTime}ms`
1570
1608
  });
1571
1609
  }
1572
- // 檢查最終解析度是否達到最低要求
1610
+ // 檢查最終解析度是否達到最低要求(僅限電腦/筆電)
1573
1611
  const currentTrack = stream.getVideoTracks()[0];
1574
- if (currentTrack) {
1612
+ if (currentTrack && !isMobileOrTablet()) {
1575
1613
  const currentSettings = currentTrack.getSettings();
1576
1614
  const minRequiredWidth = 1280;
1577
1615
  if (currentSettings.width && currentSettings.width < minRequiredWidth) {
@@ -1588,6 +1626,12 @@ function switchCamera(deviceId, video, translate) {
1588
1626
  }
1589
1627
  throw BROWSER_CAMERA_ERRORS.LOW_RESOLUTION;
1590
1628
  }
1629
+ } else if (currentTrack && isMobileOrTablet()) {
1630
+ const currentSettings = currentTrack.getSettings();
1631
+ console.log('📱 [行動裝置] 跳過解析度檢查,當前解析度:', {
1632
+ current: `${currentSettings.width}x${currentSettings.height}`,
1633
+ deviceId
1634
+ });
1591
1635
  }
1592
1636
  // try {
1593
1637
  // stream = await navigator.mediaDevices.getUserMedia(constraints);
@@ -3358,8 +3402,8 @@ const themeConfigDefault = {
3358
3402
  };
3359
3403
 
3360
3404
  var name = "authme/sdk";
3361
- var version$1 = "2.8.41";
3362
- var date = "2026-01-30T10:27:23+0000";
3405
+ var version$1 = "2.8.42";
3406
+ var date = "2026-02-03T09:36:05+0000";
3363
3407
  var packageInfo = {
3364
3408
  name: name,
3365
3409
  version: version$1,
@@ -3372,4 +3416,4 @@ const version = packageInfo.version;
3372
3416
  (_a = (_b = window)[_c = Symbol.for('authme-sdk')]) !== null && _a !== void 0 ? _a : _b[_c] = {};
3373
3417
  window[Symbol.for('authme-sdk')][packageInfo.name] = version;
3374
3418
 
3375
- export { AuthmeError, DEVICE_TYPE, ErrorCode, Icon, RGBToLottieColor, RUN_FUNCTION_NAME, STORAGE_KEY, Storage, TIME_UNIT, UintArrayToBlob, asyncOnLineShowErrorMessage, asyncShowErrorMessage, asyncShowPopup, backgroundRequest, checkOnlineStatus, clearCanvas, colorStringToRGB, colorToRGB, combineResult, cropByRatio, dataURItoBlob, debugLog, debugTools, decodeToken, dropMenu, fontWeight, getCanvasSize, getCssVariable, getDeviceInfo, getImageData, getSystemInfo, hexToRGB, hideElement, hideErrorMessage, hidePopup, isIphone14proOrProMax, isMobile, isMobileOrTablet, osVersion, requestCamera, resize, retryPromiseWithCondition, showElement, showErrorMessage, showErrorMessageEventName, showPopup, splitResult, startLoadingSDK, startSpinner, stopLoadingSDK, stopSpinner, switchCamera, themeConfigDefault, uiThemeButton, uiThemeDirection, uiThemeHint, uiThemeSmallButton, uiThemeText, uploadModal, useState, verificationErrorMessages, version, videoConstraintsFactory, waitTime };
3419
+ export { AuthmeError, DEVICE_TYPE, ErrorCode, Icon, RGBToLottieColor, RUN_FUNCTION_NAME, STORAGE_KEY, Storage, TIME_UNIT, UintArrayToBlob, asyncOnLineShowErrorMessage, asyncShowErrorMessage, asyncShowPopup, backgroundRequest, checkOnlineStatus, clearCanvas, colorStringToRGB, colorToRGB, combineResult, cropByRatio, dataURItoBlob, debugLog, debugTools, decodeToken, dropMenu, fontWeight, getCanvasSize, getCssVariable, getDeviceInfo, getImageData, getSystemInfo, hexToRGB, hideElement, hideErrorMessage, hidePopup, isIphone14proOrProMax, isMobile, isMobileOrTablet$1 as isMobileOrTablet, osVersion, requestCamera, resize, retryPromiseWithCondition, showElement, showErrorMessage, showErrorMessageEventName, showPopup, splitResult, startLoadingSDK, startSpinner, stopLoadingSDK, stopSpinner, switchCamera, themeConfigDefault, uiThemeButton, uiThemeDirection, uiThemeHint, uiThemeSmallButton, uiThemeText, uploadModal, useState, verificationErrorMessages, version, videoConstraintsFactory, waitTime };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@authme/util",
3
- "version": "2.8.41",
3
+ "version": "2.8.42",
4
4
  "peerDependencies": {
5
5
  "core-js": "^3.6.0",
6
6
  "file-saver": "2.0.5",