@authme/identity-verification 2.8.13 → 2.8.15

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 +73 -15
  2. package/index.js +74 -16
  3. package/package.json +6 -6
package/index.cjs CHANGED
@@ -28361,7 +28361,7 @@ function startLiveness(config) {
28361
28361
  switch (result.eStatus) {
28362
28362
  case liveness.FasRecognitionResult.NoFace:
28363
28363
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.error.noFace');
28364
- setBorderStatus('error');
28364
+ setBorderStatus(null);
28365
28365
  break;
28366
28366
  case liveness.FasRecognitionResult.FaceNotAtCenter:
28367
28367
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.error.faceNotAtCenter');
@@ -28390,20 +28390,26 @@ function startLiveness(config) {
28390
28390
  break;
28391
28391
  case liveness.FasRecognitionResult.NeedOpenMouth:
28392
28392
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.error.needOpenMouth');
28393
- setBorderStatus(null);
28393
+ setBorderStatus('error');
28394
28394
  break;
28395
28395
  case liveness.FasRecognitionResult.NeedCloseMouth:
28396
28396
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.error.needCloseMouth');
28397
- setBorderStatus(null);
28397
+ setBorderStatus('error');
28398
28398
  break;
28399
28399
  case liveness.FasRecognitionResult.NeedSmile:
28400
28400
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.error.needSmile');
28401
- setBorderStatus(null);
28401
+ setBorderStatus('error');
28402
28402
  break;
28403
28403
  case liveness.FasRecognitionResult.NeedOpenEyes:
28404
28404
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.error.needOpenEyes');
28405
28405
  setBorderStatus('error');
28406
28406
  break;
28407
+ case liveness.FasRecognitionResult.DepthFake:
28408
+ // uiComponentLiveness.statusText.textContent = translateService.translate(
28409
+ // ''
28410
+ // );
28411
+ setBorderStatus('error');
28412
+ break;
28407
28413
  case liveness.FasRecognitionResult.NeedMoreFrame:
28408
28414
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.success');
28409
28415
  setBorderStatus('pass');
@@ -28416,10 +28422,27 @@ function startLiveness(config) {
28416
28422
  setBorderStatus('pass');
28417
28423
  }
28418
28424
  break;
28425
+ case liveness.FasRecognitionResult.Failed:
28426
+ // uiComponentLiveness.statusText.textContent = translateService.translate(
28427
+ // ''
28428
+ // );
28429
+ setBorderStatus('error');
28430
+ break;
28419
28431
  }
28420
28432
  };
28421
28433
  // Register Event
28422
- rxjs.fromEvent(window, 'offline').pipe(rxjs.switchMap(() => util.asyncOnLineShowErrorMessage(translateService.translate('sdk.general.error.alert.offline'), translateService.translate('sdk.general.error.retry'), false)), rxjs.takeUntil(unsubscribe$)).subscribe();
28434
+ // fromEvent(window, 'offline')
28435
+ // .pipe(
28436
+ // switchMap(() =>
28437
+ // asyncOnLineShowErrorMessage(
28438
+ // translateService.translate('sdk.general.error.alert.offline'),
28439
+ // translateService.translate('sdk.general.error.retry'),
28440
+ // false
28441
+ // )
28442
+ // ),
28443
+ // takeUntil(unsubscribe$)
28444
+ // )
28445
+ // .subscribe();
28423
28446
  rxjs.fromEvent(window, 'resize').pipe(rxjs.throttleTime(100), rxjs.switchMap(() => util.getCanvasSize(uiComponentBasic.video)), rxjs.tap(canvasSizeInfo => {
28424
28447
  config.setFrameSize(canvasSizeInfo.canvasWidth, canvasSizeInfo.canvasHeight);
28425
28448
  const maskHeight = window.outerHeight * 0.48;
@@ -28546,7 +28569,19 @@ function startLiveness(config) {
28546
28569
  isSuccess: true
28547
28570
  });
28548
28571
  }), rxjs.raceWith(timeout$) // 確保 timeout 之後一定會有失敗結果
28549
- )))), rxjs.switchMap(resp => window.navigator.onLine ? rxjs.of(resp) : rxjs.from(util.asyncOnLineShowErrorMessage(translateService.translate('sdk.general.error.alert.offline'), translateService.translate('sdk.general.error.retry'), false)).pipe(rxjs.map(() => resp))), rxjs.tap(res => {
28572
+ )))),
28573
+ // switchMap((resp) =>
28574
+ // window.navigator.onLine
28575
+ // ? of(resp)
28576
+ // : from(
28577
+ // asyncOnLineShowErrorMessage(
28578
+ // translateService.translate('sdk.general.error.alert.offline'),
28579
+ // translateService.translate('sdk.general.error.retry'),
28580
+ // false
28581
+ // )
28582
+ // ).pipe(map(() => resp))
28583
+ // ),
28584
+ rxjs.tap(res => {
28550
28585
  // console.log('res', res);
28551
28586
  if (res.isSuccess) {
28552
28587
  sendStatusDescription$2(core.StatusDescription.UploadingStart);
@@ -33042,16 +33077,39 @@ class LivenessModule {
33042
33077
  frameHeight = canvasSizeInfoCan.canvasHeight;
33043
33078
  const params = yield this.fasService.getParams();
33044
33079
  const oldROI = params.faceROI;
33045
- const actualHight = frameHeight * (oldROI.fBottom - oldROI.fTop);
33080
+ const actualHeight = frameHeight * (oldROI.fBottom - oldROI.fTop);
33046
33081
  const actualWidth = frameWidth * (oldROI.fRight - oldROI.fLeft);
33047
33082
  let targetWidth = actualWidth;
33048
- //we change the ROI when horizontal view for desktop camera.
33049
- if (actualWidth > actualHight) {
33050
- targetWidth = actualHight;
33083
+ // //we change the ROI when horizontal view for desktop camera.
33084
+ // if (actualWidth > actualHeight) {
33085
+ // targetWidth = actualHeight;
33086
+ // const widthPercent = targetWidth / frameWidth;
33087
+ // params.faceROI.fLeft = (1 - widthPercent) / 2;
33088
+ // params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
33089
+ // }
33090
+ // 如果是橫向模式 (寬度大於高度)
33091
+ if (actualWidth > actualHeight) {
33092
+ // 計算目標寬度,使得高度與寬度的比例為 9:16
33093
+ // 即 actualHeight : targetWidth = 9 : 16
33094
+ // 所以 targetWidth = (16 / 9) * actualHeight
33095
+ targetWidth = 3 / 4 * actualHeight;
33096
+ // 計算寬度比例
33051
33097
  const widthPercent = targetWidth / frameWidth;
33052
- params.faceROI.fLeft = (1 - widthPercent) / 2;
33053
- params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
33098
+ // 如果計算出的寬度比例小於1,表示需要在兩側留白
33099
+ if (widthPercent < 1) {
33100
+ // 調整左右邊界,使ROI在中間
33101
+ params.faceROI.fLeft = (1 - widthPercent) / 2;
33102
+ params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
33103
+ }
33104
+ // 如果計算出的寬度比例大於1,表示需要裁剪寬度
33105
+ else {
33106
+ // 維持完整的寬度,但可能需要調整其他參數以保持9:16的比例
33107
+ params.faceROI.fLeft = 0;
33108
+ params.faceROI.fRight = 1;
33109
+ // 這裡可能需要調整垂直方向的ROI,根據實際需求添加
33110
+ }
33054
33111
  }
33112
+
33055
33113
  yield this.fasService.setParams(params);
33056
33114
  yield this.fasService.setFrameSize(frameWidth, frameHeight);
33057
33115
  yield this.fasService.startSession();
@@ -33490,7 +33548,7 @@ class MRZModule {
33490
33548
  ocrConfig: config,
33491
33549
  getOptionConfig: () => __awaiter(this, void 0, void 0, function* () {
33492
33550
  const res = yield idRecognition.option();
33493
- console.log('themeId:', res.themeId);
33551
+ // console.log('themeId:', res.themeId);
33494
33552
  const themeId = res.themeId;
33495
33553
  if (!themeId) {
33496
33554
  return {};
@@ -35707,8 +35765,8 @@ class AuthmeIdentityVerification extends engine.AuthmeFunctionModule {
35707
35765
  }
35708
35766
 
35709
35767
  var name = "authme/sdk";
35710
- var version$1 = "2.8.13";
35711
- var date = "2025-05-02T03:27:38+0000";
35768
+ var version$1 = "2.8.15";
35769
+ var date = "2025-05-15T12:22:35+0000";
35712
35770
  var packageInfo = {
35713
35771
  name: name,
35714
35772
  version: version$1,
package/index.js CHANGED
@@ -8,7 +8,7 @@ import { getTranslateInstance, EventListenerService, TrackingEvent, generateStat
8
8
  import { EAuthMeFASServiceStatus, EAuthMeIDCardAntiFraudStage as EAuthMeIDCardAntiFraudStage$1, EAuthMeCardClass as EAuthMeCardClass$1, AuthmeFunctionModule, MlEngine, EngineModule, EAuthMeEngineReturnCode, AuthmeEngineModuleBase } from '@authme/engine';
9
9
  import { IdRecognitionCardType, CountryCode, EAuthMeCardClass, EAuthMeIDCardAntiFraudStatus, EAuthMeIDCardAntiFraudStage, thicknessDefaultConfig, mapCardtypeToAuthmeClass, getRecognitionColumnOrder, cardTypeTitle, cardTypeConfirmTitle, cardTypeHeader, EAuthMeCardOCRStatus, EAuthMeMRZServiceStatus, saveExtraDoc, initScanDocumentResourceBase64, MRZService, option, themeUI, initScan, initScanDocument, ResourceImageType, uploadFrameBase64, finishScanDocument, CardOCR, IdCardAntiFraudService, twoWayAuthmeCardClassMap, RecognitionFileType, recognizeBase64, getCardSubTypes, getCardTypes, confirmScan } from '@authme/id-recognition';
10
10
  import { getCssVariable, RGBToLottieColor, colorToRGB, Storage, useState, uiThemeText, uiThemeHint, clearCanvas, getImageData, isMobile, hidePopup, showPopup, waitTime, TIME_UNIT, AuthmeError as AuthmeError$1, ErrorCode as ErrorCode$1, uiThemeButton, uiThemeSmallButton, requestCamera, showElement, asyncOnLineShowErrorMessage, getCanvasSize, startSpinner, stopSpinner, themeConfigDefault, fontWeight, hideElement, dataURItoBlob, showErrorMessage, checkOnlineStatus, dropMenu, UintArrayToBlob, isIphone14proOrProMax, cropByRatio, switchCamera, asyncShowPopup, retryPromiseWithCondition, asyncShowErrorMessage, hideErrorMessage, uploadModal, backgroundRequest, debugTools, showErrorMessageEventName, RUN_FUNCTION_NAME, STORAGE_KEY, splitResult, DEVICE_TYPE, combineResult, startLoadingSDK, stopLoadingSDK } from '@authme/util';
11
- import { mergeMap, animationFrames, filter, tap, map, from, catchError, EMPTY, of, merge, fromEvent, concatAll, takeUntil, Subject, defer, switchMap, throttleTime, raceWith, concatMap, throwError, finalize, timer, Observable, take, interval, mapTo, firstValueFrom, shareReplay, switchMapTo, takeWhile as takeWhile$1, race } from 'rxjs';
11
+ import { mergeMap, animationFrames, filter, tap, map, from, catchError, EMPTY, of, merge, fromEvent, concatAll, takeUntil, Subject, defer, throttleTime, switchMap, raceWith, concatMap, throwError, finalize, timer, Observable, take, interval, mapTo, firstValueFrom, shareReplay, switchMapTo, takeWhile as takeWhile$1, race } from 'rxjs';
12
12
  import 'core-js/modules/es.regexp.to-string.js';
13
13
  import { FasRecognitionResult, EAuthMeFASServiceStage, FasService, LivenessAPI, EAuthMeMouthStatus, LivenessResultStatus } from '@authme/liveness';
14
14
  import 'core-js/modules/es.parse-float.js';
@@ -28353,7 +28353,7 @@ function startLiveness(config) {
28353
28353
  switch (result.eStatus) {
28354
28354
  case FasRecognitionResult.NoFace:
28355
28355
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.error.noFace');
28356
- setBorderStatus('error');
28356
+ setBorderStatus(null);
28357
28357
  break;
28358
28358
  case FasRecognitionResult.FaceNotAtCenter:
28359
28359
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.error.faceNotAtCenter');
@@ -28382,20 +28382,26 @@ function startLiveness(config) {
28382
28382
  break;
28383
28383
  case FasRecognitionResult.NeedOpenMouth:
28384
28384
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.error.needOpenMouth');
28385
- setBorderStatus(null);
28385
+ setBorderStatus('error');
28386
28386
  break;
28387
28387
  case FasRecognitionResult.NeedCloseMouth:
28388
28388
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.error.needCloseMouth');
28389
- setBorderStatus(null);
28389
+ setBorderStatus('error');
28390
28390
  break;
28391
28391
  case FasRecognitionResult.NeedSmile:
28392
28392
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.error.needSmile');
28393
- setBorderStatus(null);
28393
+ setBorderStatus('error');
28394
28394
  break;
28395
28395
  case FasRecognitionResult.NeedOpenEyes:
28396
28396
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.error.needOpenEyes');
28397
28397
  setBorderStatus('error');
28398
28398
  break;
28399
+ case FasRecognitionResult.DepthFake:
28400
+ // uiComponentLiveness.statusText.textContent = translateService.translate(
28401
+ // ''
28402
+ // );
28403
+ setBorderStatus('error');
28404
+ break;
28399
28405
  case FasRecognitionResult.NeedMoreFrame:
28400
28406
  uiComponentLiveness.statusText.textContent = translateService.translate('sdk.general.verify.success');
28401
28407
  setBorderStatus('pass');
@@ -28408,10 +28414,27 @@ function startLiveness(config) {
28408
28414
  setBorderStatus('pass');
28409
28415
  }
28410
28416
  break;
28417
+ case FasRecognitionResult.Failed:
28418
+ // uiComponentLiveness.statusText.textContent = translateService.translate(
28419
+ // ''
28420
+ // );
28421
+ setBorderStatus('error');
28422
+ break;
28411
28423
  }
28412
28424
  };
28413
28425
  // Register Event
28414
- fromEvent(window, 'offline').pipe(switchMap(() => asyncOnLineShowErrorMessage(translateService.translate('sdk.general.error.alert.offline'), translateService.translate('sdk.general.error.retry'), false)), takeUntil(unsubscribe$)).subscribe();
28426
+ // fromEvent(window, 'offline')
28427
+ // .pipe(
28428
+ // switchMap(() =>
28429
+ // asyncOnLineShowErrorMessage(
28430
+ // translateService.translate('sdk.general.error.alert.offline'),
28431
+ // translateService.translate('sdk.general.error.retry'),
28432
+ // false
28433
+ // )
28434
+ // ),
28435
+ // takeUntil(unsubscribe$)
28436
+ // )
28437
+ // .subscribe();
28415
28438
  fromEvent(window, 'resize').pipe(throttleTime(100), switchMap(() => getCanvasSize(uiComponentBasic.video)), tap(canvasSizeInfo => {
28416
28439
  config.setFrameSize(canvasSizeInfo.canvasWidth, canvasSizeInfo.canvasHeight);
28417
28440
  const maskHeight = window.outerHeight * 0.48;
@@ -28538,7 +28561,19 @@ function startLiveness(config) {
28538
28561
  isSuccess: true
28539
28562
  });
28540
28563
  }), raceWith(timeout$) // 確保 timeout 之後一定會有失敗結果
28541
- )))), switchMap(resp => window.navigator.onLine ? of(resp) : from(asyncOnLineShowErrorMessage(translateService.translate('sdk.general.error.alert.offline'), translateService.translate('sdk.general.error.retry'), false)).pipe(map(() => resp))), tap(res => {
28564
+ )))),
28565
+ // switchMap((resp) =>
28566
+ // window.navigator.onLine
28567
+ // ? of(resp)
28568
+ // : from(
28569
+ // asyncOnLineShowErrorMessage(
28570
+ // translateService.translate('sdk.general.error.alert.offline'),
28571
+ // translateService.translate('sdk.general.error.retry'),
28572
+ // false
28573
+ // )
28574
+ // ).pipe(map(() => resp))
28575
+ // ),
28576
+ tap(res => {
28542
28577
  // console.log('res', res);
28543
28578
  if (res.isSuccess) {
28544
28579
  sendStatusDescription$2(StatusDescription.UploadingStart);
@@ -33034,16 +33069,39 @@ class LivenessModule {
33034
33069
  frameHeight = canvasSizeInfoCan.canvasHeight;
33035
33070
  const params = yield this.fasService.getParams();
33036
33071
  const oldROI = params.faceROI;
33037
- const actualHight = frameHeight * (oldROI.fBottom - oldROI.fTop);
33072
+ const actualHeight = frameHeight * (oldROI.fBottom - oldROI.fTop);
33038
33073
  const actualWidth = frameWidth * (oldROI.fRight - oldROI.fLeft);
33039
33074
  let targetWidth = actualWidth;
33040
- //we change the ROI when horizontal view for desktop camera.
33041
- if (actualWidth > actualHight) {
33042
- targetWidth = actualHight;
33075
+ // //we change the ROI when horizontal view for desktop camera.
33076
+ // if (actualWidth > actualHeight) {
33077
+ // targetWidth = actualHeight;
33078
+ // const widthPercent = targetWidth / frameWidth;
33079
+ // params.faceROI.fLeft = (1 - widthPercent) / 2;
33080
+ // params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
33081
+ // }
33082
+ // 如果是橫向模式 (寬度大於高度)
33083
+ if (actualWidth > actualHeight) {
33084
+ // 計算目標寬度,使得高度與寬度的比例為 9:16
33085
+ // 即 actualHeight : targetWidth = 9 : 16
33086
+ // 所以 targetWidth = (16 / 9) * actualHeight
33087
+ targetWidth = 3 / 4 * actualHeight;
33088
+ // 計算寬度比例
33043
33089
  const widthPercent = targetWidth / frameWidth;
33044
- params.faceROI.fLeft = (1 - widthPercent) / 2;
33045
- params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
33090
+ // 如果計算出的寬度比例小於1,表示需要在兩側留白
33091
+ if (widthPercent < 1) {
33092
+ // 調整左右邊界,使ROI在中間
33093
+ params.faceROI.fLeft = (1 - widthPercent) / 2;
33094
+ params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
33095
+ }
33096
+ // 如果計算出的寬度比例大於1,表示需要裁剪寬度
33097
+ else {
33098
+ // 維持完整的寬度,但可能需要調整其他參數以保持9:16的比例
33099
+ params.faceROI.fLeft = 0;
33100
+ params.faceROI.fRight = 1;
33101
+ // 這裡可能需要調整垂直方向的ROI,根據實際需求添加
33102
+ }
33046
33103
  }
33104
+
33047
33105
  yield this.fasService.setParams(params);
33048
33106
  yield this.fasService.setFrameSize(frameWidth, frameHeight);
33049
33107
  yield this.fasService.startSession();
@@ -33482,7 +33540,7 @@ class MRZModule {
33482
33540
  ocrConfig: config,
33483
33541
  getOptionConfig: () => __awaiter(this, void 0, void 0, function* () {
33484
33542
  const res = yield option();
33485
- console.log('themeId:', res.themeId);
33543
+ // console.log('themeId:', res.themeId);
33486
33544
  const themeId = res.themeId;
33487
33545
  if (!themeId) {
33488
33546
  return {};
@@ -35699,8 +35757,8 @@ class AuthmeIdentityVerification extends AuthmeFunctionModule {
35699
35757
  }
35700
35758
 
35701
35759
  var name = "authme/sdk";
35702
- var version$1 = "2.8.13";
35703
- var date = "2025-05-02T03:27:38+0000";
35760
+ var version$1 = "2.8.15";
35761
+ var date = "2025-05-15T12:22:35+0000";
35704
35762
  var packageInfo = {
35705
35763
  name: name,
35706
35764
  version: version$1,
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@authme/identity-verification",
3
- "version": "2.8.13",
3
+ "version": "2.8.15",
4
4
  "peerDependencies": {
5
5
  "core-js": "^3.6.0",
6
6
  "lottie-web": "^5.9.2",
7
7
  "rxjs": "^7.4.0",
8
- "@authme/core": "2.8.13",
9
- "@authme/engine": "2.8.13",
10
- "@authme/id-recognition": "2.8.13",
11
- "@authme/liveness": "2.8.13",
12
- "@authme/util": "2.8.13"
8
+ "@authme/core": "2.8.15",
9
+ "@authme/engine": "2.8.15",
10
+ "@authme/id-recognition": "2.8.15",
11
+ "@authme/liveness": "2.8.15",
12
+ "@authme/util": "2.8.15"
13
13
  },
14
14
  "module": "./index.js",
15
15
  "main": "./index.cjs",