@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.
- package/index.cjs +73 -15
- package/index.js +74 -16
- 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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
)))),
|
|
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
|
|
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 >
|
|
33050
|
-
|
|
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
|
-
|
|
33053
|
-
|
|
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.
|
|
35711
|
-
var date = "2025-05-
|
|
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,
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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')
|
|
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
|
-
)))),
|
|
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
|
|
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 >
|
|
33042
|
-
|
|
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
|
-
|
|
33045
|
-
|
|
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.
|
|
35703
|
-
var date = "2025-05-
|
|
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.
|
|
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.
|
|
9
|
-
"@authme/engine": "2.8.
|
|
10
|
-
"@authme/id-recognition": "2.8.
|
|
11
|
-
"@authme/liveness": "2.8.
|
|
12
|
-
"@authme/util": "2.8.
|
|
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",
|