@authme/id-recognition 2.4.8 → 2.7.0
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 +144 -39
- package/index.js +142 -40
- package/package.json +4 -4
- package/src/lib/data-access/api.d.ts +14 -3
- package/src/lib/enum/id-recognition.enum.d.ts +16 -2
- package/src/lib/interface/api-response.interface.d.ts +65 -0
- package/src/lib/interface/index.d.ts +1 -0
- package/src/lib/util.d.ts +1 -0
package/index.cjs
CHANGED
|
@@ -6,7 +6,6 @@ require('core-js/modules/es.object.assign.js');
|
|
|
6
6
|
var engine = require('@authme/engine');
|
|
7
7
|
require('core-js/modules/es.array.iterator.js');
|
|
8
8
|
require('core-js/modules/es.object.from-entries.js');
|
|
9
|
-
require('core-js/modules/es.regexp.to-string.js');
|
|
10
9
|
require('core-js/modules/web.dom-collections.iterator.js');
|
|
11
10
|
var core = require('@authme/core');
|
|
12
11
|
var util = require('@authme/util');
|
|
@@ -17,6 +16,7 @@ exports.ResourceImageType = void 0;
|
|
|
17
16
|
ResourceImageType["Recognition"] = "Recognition";
|
|
18
17
|
ResourceImageType["Fraud"] = "Fraud";
|
|
19
18
|
ResourceImageType["Manual"] = "Manual";
|
|
19
|
+
ResourceImageType["Attach"] = "AttachImage";
|
|
20
20
|
})(exports.ResourceImageType || (exports.ResourceImageType = {}));
|
|
21
21
|
exports.CountryCode = void 0;
|
|
22
22
|
(function (CountryCode) {
|
|
@@ -40,6 +40,12 @@ exports.CountryCode = void 0;
|
|
|
40
40
|
CountryCode["TUR"] = "TUR";
|
|
41
41
|
CountryCode["CAN"] = "CAN";
|
|
42
42
|
CountryCode["AUS"] = "AUS";
|
|
43
|
+
CountryCode["IDN"] = "IDN";
|
|
44
|
+
CountryCode["MYS"] = "MYS";
|
|
45
|
+
CountryCode["EGY"] = "EGY";
|
|
46
|
+
CountryCode["SAU"] = "SAU";
|
|
47
|
+
CountryCode["NLD"] = "NLD";
|
|
48
|
+
CountryCode["SGP"] = "SGP";
|
|
43
49
|
})(exports.CountryCode || (exports.CountryCode = {}));
|
|
44
50
|
exports.IdRecognitionCardType = void 0;
|
|
45
51
|
(function (IdRecognitionCardType) {
|
|
@@ -49,6 +55,14 @@ exports.IdRecognitionCardType = void 0;
|
|
|
49
55
|
IdRecognitionCardType["ResidentCard"] = "ResidentCard";
|
|
50
56
|
IdRecognitionCardType["Passport"] = "Passport";
|
|
51
57
|
})(exports.IdRecognitionCardType || (exports.IdRecognitionCardType = {}));
|
|
58
|
+
exports.IdRecognitionCardName = void 0;
|
|
59
|
+
(function (IdRecognitionCardName) {
|
|
60
|
+
IdRecognitionCardName["IDCard"] = "sdk.home.selectDocument.idCard";
|
|
61
|
+
IdRecognitionCardName["DriverLicense"] = "sdk.home.selectDocument.driverLicense";
|
|
62
|
+
IdRecognitionCardName["HealthCard"] = "sdk.home.selectDocument.healthCard";
|
|
63
|
+
IdRecognitionCardName["ResidentCard"] = "sdk.home.selectDocument.residentCard";
|
|
64
|
+
IdRecognitionCardName["Passport"] = "sdk.home.selectDocument.passport";
|
|
65
|
+
})(exports.IdRecognitionCardName || (exports.IdRecognitionCardName = {}));
|
|
52
66
|
exports.ServerSideEAuthMeCardClass = void 0;
|
|
53
67
|
(function (ServerSideEAuthMeCardClass) {
|
|
54
68
|
ServerSideEAuthMeCardClass["Invalid"] = "Invalid";
|
|
@@ -149,6 +163,41 @@ const IdTypeConfig = {
|
|
|
149
163
|
}
|
|
150
164
|
};
|
|
151
165
|
|
|
166
|
+
const thicknessDefaultConfig = {
|
|
167
|
+
mode: 'manual',
|
|
168
|
+
thicknessWelcomeSetting: {
|
|
169
|
+
welcome: true,
|
|
170
|
+
title: {
|
|
171
|
+
enable: true,
|
|
172
|
+
// text: translateService.translate(
|
|
173
|
+
// 'verify.ocr.welcome.title'
|
|
174
|
+
// ),
|
|
175
|
+
// text: '即將進行厚度檢測',
|
|
176
|
+
text: 'sdk.thickness.detection.guide.subtitle'
|
|
177
|
+
},
|
|
178
|
+
subtitle: {
|
|
179
|
+
enable: true,
|
|
180
|
+
// text: translateService.translate(
|
|
181
|
+
// 'verify.ocr.welcome.subtitle'
|
|
182
|
+
// ),
|
|
183
|
+
// text: '請將卡面傾斜45度角放入畫面框線進行拍攝',
|
|
184
|
+
text: 'sdk.thickness.detection.guide.subtitle.content'
|
|
185
|
+
},
|
|
186
|
+
imageShow: {
|
|
187
|
+
enable: true,
|
|
188
|
+
src: 'data:image/png;base64,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'
|
|
189
|
+
},
|
|
190
|
+
content: {
|
|
191
|
+
enable: true,
|
|
192
|
+
// text: translateService.translate(
|
|
193
|
+
// 'verify.ocr.welcome.content'
|
|
194
|
+
// ),
|
|
195
|
+
// text: '請在光線充足的環境進行拍攝\n請確保卡面資訊上沒有任何遮蔽物\n避免在白色背景進行拍攝,以確保卡片輪廓清晰',
|
|
196
|
+
text: 'sdk.thickness.detection.guide.content'
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
|
|
152
201
|
const CardTypeMapping = {
|
|
153
202
|
[exports.IdRecognitionCardType.IDCard]: [engine.EAuthMeCardClass.TWN_IDCard_Front, engine.EAuthMeCardClass.TWN_IDCard_Back],
|
|
154
203
|
[exports.IdRecognitionCardType.HealthCard]: [engine.EAuthMeCardClass.TWN_HealthCard_Front],
|
|
@@ -156,36 +205,57 @@ const CardTypeMapping = {
|
|
|
156
205
|
[exports.IdRecognitionCardType.ResidentCard]: [engine.EAuthMeCardClass.TWN_ResidentCard_Front, engine.EAuthMeCardClass.TWN_ResidentCard_Back],
|
|
157
206
|
[exports.IdRecognitionCardType.DriverLicense]: [engine.EAuthMeCardClass.TWN_DriverLicense_Front, engine.EAuthMeCardClass.TWN_DriverLicense_Back]
|
|
158
207
|
};
|
|
208
|
+
const CardTypeMap = {
|
|
209
|
+
[exports.IdRecognitionCardType.IDCard]: [exports.ServerSideEAuthMeCardClass.TWN_IDCard_Front, exports.ServerSideEAuthMeCardClass.TWN_IDCard_Back],
|
|
210
|
+
[exports.IdRecognitionCardType.HealthCard]: [exports.ServerSideEAuthMeCardClass.TWN_HealthCard_Front],
|
|
211
|
+
[exports.IdRecognitionCardType.Passport]: ['ALL_PASSPORT_CONTENT'],
|
|
212
|
+
[exports.IdRecognitionCardType.ResidentCard]: [exports.ServerSideEAuthMeCardClass.TWN_ResidentCard_Front, exports.ServerSideEAuthMeCardClass.TWN_ResidentCard_Back],
|
|
213
|
+
[exports.IdRecognitionCardType.DriverLicense]: [exports.ServerSideEAuthMeCardClass.TWN_DriverLicense_Front, exports.ServerSideEAuthMeCardClass.TWN_DriverLicense_Back]
|
|
214
|
+
};
|
|
159
215
|
const RECOGNITION_COLUMNS_ORDER = Object.fromEntries(['surname', 'givenName', 'name', 'gender', 'dateOfBirth', 'idNumber', 'dateOfIssue', 'issueCity', 'issueReason', 'father', 'mother', 'spouse', 'militaryService', 'placeOfBirth', 'serialNumber', 'expiry', 'controlNo', 'type', 'condition', 'address', 'country', 'documentNumber', 'documentType', 'nationality', 'expiryDate'].map((value, index) => [value, index]));
|
|
160
216
|
function getCardSubTypes(type, country) {
|
|
161
217
|
return CardTypeMapping[type];
|
|
162
218
|
}
|
|
219
|
+
function getCardTypes(type, country) {
|
|
220
|
+
return CardTypeMap[type];
|
|
221
|
+
}
|
|
163
222
|
function cardTypeTitle(cardType) {
|
|
223
|
+
var _a, _b;
|
|
164
224
|
if (cardType == null) {
|
|
165
225
|
return '';
|
|
166
226
|
}
|
|
167
227
|
const cardTypeLower = cardType.toLowerCase();
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
228
|
+
const cardTypeMap = {
|
|
229
|
+
idcard: {
|
|
230
|
+
front: 'sdk.ocr.verify.idCardFrontSide',
|
|
231
|
+
back: 'sdk.ocr.verify.idCardBackSide',
|
|
232
|
+
thickness: 'sdk.thickness.detection.guide.subtitle.content',
|
|
233
|
+
default: 'sdk.ocr.verify.idCardFrontSide'
|
|
234
|
+
},
|
|
235
|
+
driverlicense: {
|
|
236
|
+
front: 'sdk.ocr.verify.driverFrontSide',
|
|
237
|
+
back: 'sdk.ocr.verify.driverBackSide',
|
|
238
|
+
thickness: 'sdk.thickness.detection.guide.subtitle.content',
|
|
239
|
+
default: 'sdk.ocr.verify.driverFrontSide'
|
|
240
|
+
},
|
|
241
|
+
resident: {
|
|
242
|
+
front: 'sdk.ocr.verify.residentCardFrontSide',
|
|
243
|
+
back: 'sdk.ocr.verify.residentCardBackSide',
|
|
244
|
+
thickness: 'sdk.thickness.detection.guide.subtitle.content',
|
|
245
|
+
default: 'sdk.ocr.verify.residentCardFrontSide'
|
|
246
|
+
},
|
|
247
|
+
residentcard: {
|
|
248
|
+
front: 'sdk.ocr.verify.residentCardFrontSide',
|
|
249
|
+
back: 'sdk.ocr.verify.residentCardBackSide',
|
|
250
|
+
thickness: 'sdk.thickness.detection.guide.subtitle.content',
|
|
251
|
+
default: 'sdk.ocr.verify.residentCardFrontSide'
|
|
186
252
|
}
|
|
187
|
-
}
|
|
188
|
-
|
|
253
|
+
};
|
|
254
|
+
const typeSections = cardTypeLower.split('_');
|
|
255
|
+
const cardTypeName = typeSections[1];
|
|
256
|
+
const cardTypeSection = typeSections[2];
|
|
257
|
+
const titleKey = ((_a = cardTypeMap[cardTypeName]) === null || _a === void 0 ? void 0 : _a[cardTypeSection]) || ((_b = cardTypeMap[cardTypeName]) === null || _b === void 0 ? void 0 : _b.default);
|
|
258
|
+
return titleKey || '';
|
|
189
259
|
}
|
|
190
260
|
function cardTypeConfirmTitle(cardType) {
|
|
191
261
|
if (cardType == null) {
|
|
@@ -194,32 +264,52 @@ function cardTypeConfirmTitle(cardType) {
|
|
|
194
264
|
const cardTypeLower = cardType.toLowerCase();
|
|
195
265
|
let titleKey = null;
|
|
196
266
|
if (cardTypeLower.indexOf('idcard') != -1) {
|
|
197
|
-
if (cardTypeLower.indexOf('front')) {
|
|
198
|
-
titleKey = 'verify.confirmIdCardFront';
|
|
267
|
+
if (cardTypeLower.indexOf('front') !== -1) {
|
|
268
|
+
titleKey = 'sdk.ocr.verify.confirmIdCardFront';
|
|
269
|
+
} else if (cardTypeLower.indexOf('back') !== -1) {
|
|
270
|
+
titleKey = 'sdk.ocr.verify.confirmIdCardBack';
|
|
199
271
|
} else {
|
|
200
|
-
titleKey = 'verify.
|
|
272
|
+
titleKey = 'sdk.ocr.verify.confirmIdCardFront';
|
|
201
273
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
274
|
+
return titleKey;
|
|
275
|
+
}
|
|
276
|
+
if (cardTypeLower.indexOf('driverlicense') != -1) {
|
|
277
|
+
if (cardTypeLower.indexOf('front') !== -1) {
|
|
278
|
+
titleKey = 'sdk.ocr.verify.confirmDriverFront';
|
|
279
|
+
} else if (cardTypeLower.indexOf('back') !== -1) {
|
|
280
|
+
titleKey = 'sdk.ocr.verify.confirmDriverBack';
|
|
205
281
|
} else {
|
|
206
|
-
titleKey = 'verify.
|
|
282
|
+
titleKey = 'sdk.ocr.verify.confirmDriverFront';
|
|
207
283
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
284
|
+
return titleKey;
|
|
285
|
+
}
|
|
286
|
+
if (cardTypeLower.indexOf('resident') != -1) {
|
|
287
|
+
if (cardTypeLower.indexOf('front') !== -1) {
|
|
288
|
+
titleKey = 'sdk.ocr.verify.confirmResidentCardFront';
|
|
289
|
+
} else if (cardTypeLower.indexOf('back') !== -1) {
|
|
290
|
+
titleKey = 'sdk.ocr.verify.confirmResidentCardBack';
|
|
211
291
|
} else {
|
|
212
|
-
titleKey = 'verify.
|
|
292
|
+
titleKey = 'sdk.ocr.verify.confirmResidentCardFront';
|
|
213
293
|
}
|
|
294
|
+
return titleKey;
|
|
214
295
|
}
|
|
215
296
|
return titleKey;
|
|
216
297
|
}
|
|
217
298
|
function mapCardtypeToAuthmeClass(type) {
|
|
218
|
-
const known_type = Object.keys(
|
|
219
|
-
|
|
299
|
+
// const known_type = Object.keys(EAuthMeCardClass).filter(
|
|
300
|
+
// (key) =>
|
|
301
|
+
// (EAuthMeCardClass as any)[key].toString().toLowerCase() ==
|
|
302
|
+
// ('EAuthMeCardClass_' + type).toLowerCase()
|
|
303
|
+
// )[0];
|
|
304
|
+
// if (known_type == null) {
|
|
305
|
+
// return EAuthMeCardClass.Unknown;
|
|
306
|
+
// }
|
|
307
|
+
// return (EAuthMeCardClass as any)[known_type];
|
|
308
|
+
if (type in engine.EAuthMeCardClass) {
|
|
309
|
+
return engine.EAuthMeCardClass[type];
|
|
310
|
+
} else {
|
|
220
311
|
return engine.EAuthMeCardClass.Unknown;
|
|
221
312
|
}
|
|
222
|
-
return engine.EAuthMeCardClass[known_type];
|
|
223
313
|
}
|
|
224
314
|
function getRecognitionColumnOrder(column) {
|
|
225
315
|
var _a;
|
|
@@ -239,8 +329,8 @@ const twoWayAuthmeCardClassMap = (() => {
|
|
|
239
329
|
})();
|
|
240
330
|
|
|
241
331
|
var name = "authme/sdk";
|
|
242
|
-
var version$1 = "2.
|
|
243
|
-
var date = "
|
|
332
|
+
var version$1 = "2.7.0";
|
|
333
|
+
var date = "2024-05-30T14:54:23+0000";
|
|
244
334
|
var packageInfo = {
|
|
245
335
|
name: name,
|
|
246
336
|
version: version$1,
|
|
@@ -248,12 +338,15 @@ var packageInfo = {
|
|
|
248
338
|
};
|
|
249
339
|
|
|
250
340
|
function init(type, country, needConfirm, cardTypes, encrypt = true) {
|
|
251
|
-
let useCardTypes = getCardSubTypes(type).map(c =>
|
|
341
|
+
// let useCardTypes: any = getCardSubTypes(type, country).map((c) =>
|
|
342
|
+
// twoWayAuthmeCardClassMap.toServer(c)
|
|
343
|
+
// );
|
|
344
|
+
let useCardTypes = getCardTypes(type);
|
|
252
345
|
if (cardTypes.length) {
|
|
253
346
|
useCardTypes = cardTypes;
|
|
254
347
|
}
|
|
255
348
|
const body = {
|
|
256
|
-
scanType: type === exports.IdRecognitionCardType.Passport ?
|
|
349
|
+
scanType: type === exports.IdRecognitionCardType.Passport ? `ALL_Passport` : `${country}_${type}`,
|
|
257
350
|
cardTypes: useCardTypes,
|
|
258
351
|
needConfirm,
|
|
259
352
|
encrypt,
|
|
@@ -276,6 +369,15 @@ function initScanDocument(scanId, cardType) {
|
|
|
276
369
|
body: JSON.stringify(body)
|
|
277
370
|
});
|
|
278
371
|
}
|
|
372
|
+
function initScanDocumentResourceBase64(scanId, ResourceId) {
|
|
373
|
+
const body = {
|
|
374
|
+
scanId,
|
|
375
|
+
ResourceId
|
|
376
|
+
};
|
|
377
|
+
return core.sendRequest('/api/identity-verification/id-recognition/v3/init-scan-doc/resource/base64', 'POST', {
|
|
378
|
+
body: JSON.stringify(body)
|
|
379
|
+
});
|
|
380
|
+
}
|
|
279
381
|
function recognition(documentId, file) {
|
|
280
382
|
const formData = new FormData();
|
|
281
383
|
formData.append('scanDocumentId', documentId);
|
|
@@ -425,14 +527,17 @@ exports.cardTypeTitle = cardTypeTitle;
|
|
|
425
527
|
exports.confirmScan = confirmScan;
|
|
426
528
|
exports.finishScanDocument = finishScanDocument;
|
|
427
529
|
exports.getCardSubTypes = getCardSubTypes;
|
|
530
|
+
exports.getCardTypes = getCardTypes;
|
|
428
531
|
exports.getRecognitionColumnOrder = getRecognitionColumnOrder;
|
|
429
532
|
exports.init = init;
|
|
430
533
|
exports.initScanDocument = initScanDocument;
|
|
534
|
+
exports.initScanDocumentResourceBase64 = initScanDocumentResourceBase64;
|
|
431
535
|
exports.mapCardtypeToAuthmeClass = mapCardtypeToAuthmeClass;
|
|
432
536
|
exports.recognition = recognition;
|
|
433
537
|
exports.recognitionEncrypt = recognitionEncrypt;
|
|
434
538
|
exports.saveExtraDoc = saveExtraDoc;
|
|
435
539
|
exports.saveResourceImage = saveResourceImage;
|
|
540
|
+
exports.thicknessDefaultConfig = thicknessDefaultConfig;
|
|
436
541
|
exports.twoWayAuthmeCardClassMap = twoWayAuthmeCardClassMap;
|
|
437
542
|
exports.uploadFrameBase64 = uploadFrameBase64;
|
|
438
543
|
exports.version = version;
|
package/index.js
CHANGED
|
@@ -3,7 +3,6 @@ import { AuthmeEngineModuleBase, EAuthMeCardClass, EngineModule } from '@authme/
|
|
|
3
3
|
export { EAuthMeCardClass, EAuthMeCardMatchStatus, EAuthMeCardOCRStatus, EAuthMeIDCardAntiFraudStage, EAuthMeIDCardAntiFraudStatus, EAuthMeMRZRecogStatus, EAuthMeMRZServiceStatus } from '@authme/engine';
|
|
4
4
|
import 'core-js/modules/es.array.iterator.js';
|
|
5
5
|
import 'core-js/modules/es.object.from-entries.js';
|
|
6
|
-
import 'core-js/modules/es.regexp.to-string.js';
|
|
7
6
|
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
8
7
|
import { sendRequest, AuthmeError } from '@authme/core';
|
|
9
8
|
import { osVersion } from '@authme/util';
|
|
@@ -14,6 +13,7 @@ var ResourceImageType;
|
|
|
14
13
|
ResourceImageType["Recognition"] = "Recognition";
|
|
15
14
|
ResourceImageType["Fraud"] = "Fraud";
|
|
16
15
|
ResourceImageType["Manual"] = "Manual";
|
|
16
|
+
ResourceImageType["Attach"] = "AttachImage";
|
|
17
17
|
})(ResourceImageType || (ResourceImageType = {}));
|
|
18
18
|
var CountryCode;
|
|
19
19
|
(function (CountryCode) {
|
|
@@ -37,6 +37,12 @@ var CountryCode;
|
|
|
37
37
|
CountryCode["TUR"] = "TUR";
|
|
38
38
|
CountryCode["CAN"] = "CAN";
|
|
39
39
|
CountryCode["AUS"] = "AUS";
|
|
40
|
+
CountryCode["IDN"] = "IDN";
|
|
41
|
+
CountryCode["MYS"] = "MYS";
|
|
42
|
+
CountryCode["EGY"] = "EGY";
|
|
43
|
+
CountryCode["SAU"] = "SAU";
|
|
44
|
+
CountryCode["NLD"] = "NLD";
|
|
45
|
+
CountryCode["SGP"] = "SGP";
|
|
40
46
|
})(CountryCode || (CountryCode = {}));
|
|
41
47
|
var IdRecognitionCardType;
|
|
42
48
|
(function (IdRecognitionCardType) {
|
|
@@ -46,6 +52,14 @@ var IdRecognitionCardType;
|
|
|
46
52
|
IdRecognitionCardType["ResidentCard"] = "ResidentCard";
|
|
47
53
|
IdRecognitionCardType["Passport"] = "Passport";
|
|
48
54
|
})(IdRecognitionCardType || (IdRecognitionCardType = {}));
|
|
55
|
+
var IdRecognitionCardName;
|
|
56
|
+
(function (IdRecognitionCardName) {
|
|
57
|
+
IdRecognitionCardName["IDCard"] = "sdk.home.selectDocument.idCard";
|
|
58
|
+
IdRecognitionCardName["DriverLicense"] = "sdk.home.selectDocument.driverLicense";
|
|
59
|
+
IdRecognitionCardName["HealthCard"] = "sdk.home.selectDocument.healthCard";
|
|
60
|
+
IdRecognitionCardName["ResidentCard"] = "sdk.home.selectDocument.residentCard";
|
|
61
|
+
IdRecognitionCardName["Passport"] = "sdk.home.selectDocument.passport";
|
|
62
|
+
})(IdRecognitionCardName || (IdRecognitionCardName = {}));
|
|
49
63
|
var ServerSideEAuthMeCardClass;
|
|
50
64
|
(function (ServerSideEAuthMeCardClass) {
|
|
51
65
|
ServerSideEAuthMeCardClass["Invalid"] = "Invalid";
|
|
@@ -146,6 +160,41 @@ const IdTypeConfig = {
|
|
|
146
160
|
}
|
|
147
161
|
};
|
|
148
162
|
|
|
163
|
+
const thicknessDefaultConfig = {
|
|
164
|
+
mode: 'manual',
|
|
165
|
+
thicknessWelcomeSetting: {
|
|
166
|
+
welcome: true,
|
|
167
|
+
title: {
|
|
168
|
+
enable: true,
|
|
169
|
+
// text: translateService.translate(
|
|
170
|
+
// 'verify.ocr.welcome.title'
|
|
171
|
+
// ),
|
|
172
|
+
// text: '即將進行厚度檢測',
|
|
173
|
+
text: 'sdk.thickness.detection.guide.subtitle'
|
|
174
|
+
},
|
|
175
|
+
subtitle: {
|
|
176
|
+
enable: true,
|
|
177
|
+
// text: translateService.translate(
|
|
178
|
+
// 'verify.ocr.welcome.subtitle'
|
|
179
|
+
// ),
|
|
180
|
+
// text: '請將卡面傾斜45度角放入畫面框線進行拍攝',
|
|
181
|
+
text: 'sdk.thickness.detection.guide.subtitle.content'
|
|
182
|
+
},
|
|
183
|
+
imageShow: {
|
|
184
|
+
enable: true,
|
|
185
|
+
src: 'data:image/png;base64,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'
|
|
186
|
+
},
|
|
187
|
+
content: {
|
|
188
|
+
enable: true,
|
|
189
|
+
// text: translateService.translate(
|
|
190
|
+
// 'verify.ocr.welcome.content'
|
|
191
|
+
// ),
|
|
192
|
+
// text: '請在光線充足的環境進行拍攝\n請確保卡面資訊上沒有任何遮蔽物\n避免在白色背景進行拍攝,以確保卡片輪廓清晰',
|
|
193
|
+
text: 'sdk.thickness.detection.guide.content'
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
|
|
149
198
|
const CardTypeMapping = {
|
|
150
199
|
[IdRecognitionCardType.IDCard]: [EAuthMeCardClass.TWN_IDCard_Front, EAuthMeCardClass.TWN_IDCard_Back],
|
|
151
200
|
[IdRecognitionCardType.HealthCard]: [EAuthMeCardClass.TWN_HealthCard_Front],
|
|
@@ -153,36 +202,57 @@ const CardTypeMapping = {
|
|
|
153
202
|
[IdRecognitionCardType.ResidentCard]: [EAuthMeCardClass.TWN_ResidentCard_Front, EAuthMeCardClass.TWN_ResidentCard_Back],
|
|
154
203
|
[IdRecognitionCardType.DriverLicense]: [EAuthMeCardClass.TWN_DriverLicense_Front, EAuthMeCardClass.TWN_DriverLicense_Back]
|
|
155
204
|
};
|
|
205
|
+
const CardTypeMap = {
|
|
206
|
+
[IdRecognitionCardType.IDCard]: [ServerSideEAuthMeCardClass.TWN_IDCard_Front, ServerSideEAuthMeCardClass.TWN_IDCard_Back],
|
|
207
|
+
[IdRecognitionCardType.HealthCard]: [ServerSideEAuthMeCardClass.TWN_HealthCard_Front],
|
|
208
|
+
[IdRecognitionCardType.Passport]: ['ALL_PASSPORT_CONTENT'],
|
|
209
|
+
[IdRecognitionCardType.ResidentCard]: [ServerSideEAuthMeCardClass.TWN_ResidentCard_Front, ServerSideEAuthMeCardClass.TWN_ResidentCard_Back],
|
|
210
|
+
[IdRecognitionCardType.DriverLicense]: [ServerSideEAuthMeCardClass.TWN_DriverLicense_Front, ServerSideEAuthMeCardClass.TWN_DriverLicense_Back]
|
|
211
|
+
};
|
|
156
212
|
const RECOGNITION_COLUMNS_ORDER = Object.fromEntries(['surname', 'givenName', 'name', 'gender', 'dateOfBirth', 'idNumber', 'dateOfIssue', 'issueCity', 'issueReason', 'father', 'mother', 'spouse', 'militaryService', 'placeOfBirth', 'serialNumber', 'expiry', 'controlNo', 'type', 'condition', 'address', 'country', 'documentNumber', 'documentType', 'nationality', 'expiryDate'].map((value, index) => [value, index]));
|
|
157
213
|
function getCardSubTypes(type, country) {
|
|
158
214
|
return CardTypeMapping[type];
|
|
159
215
|
}
|
|
216
|
+
function getCardTypes(type, country) {
|
|
217
|
+
return CardTypeMap[type];
|
|
218
|
+
}
|
|
160
219
|
function cardTypeTitle(cardType) {
|
|
220
|
+
var _a, _b;
|
|
161
221
|
if (cardType == null) {
|
|
162
222
|
return '';
|
|
163
223
|
}
|
|
164
224
|
const cardTypeLower = cardType.toLowerCase();
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
225
|
+
const cardTypeMap = {
|
|
226
|
+
idcard: {
|
|
227
|
+
front: 'sdk.ocr.verify.idCardFrontSide',
|
|
228
|
+
back: 'sdk.ocr.verify.idCardBackSide',
|
|
229
|
+
thickness: 'sdk.thickness.detection.guide.subtitle.content',
|
|
230
|
+
default: 'sdk.ocr.verify.idCardFrontSide'
|
|
231
|
+
},
|
|
232
|
+
driverlicense: {
|
|
233
|
+
front: 'sdk.ocr.verify.driverFrontSide',
|
|
234
|
+
back: 'sdk.ocr.verify.driverBackSide',
|
|
235
|
+
thickness: 'sdk.thickness.detection.guide.subtitle.content',
|
|
236
|
+
default: 'sdk.ocr.verify.driverFrontSide'
|
|
237
|
+
},
|
|
238
|
+
resident: {
|
|
239
|
+
front: 'sdk.ocr.verify.residentCardFrontSide',
|
|
240
|
+
back: 'sdk.ocr.verify.residentCardBackSide',
|
|
241
|
+
thickness: 'sdk.thickness.detection.guide.subtitle.content',
|
|
242
|
+
default: 'sdk.ocr.verify.residentCardFrontSide'
|
|
243
|
+
},
|
|
244
|
+
residentcard: {
|
|
245
|
+
front: 'sdk.ocr.verify.residentCardFrontSide',
|
|
246
|
+
back: 'sdk.ocr.verify.residentCardBackSide',
|
|
247
|
+
thickness: 'sdk.thickness.detection.guide.subtitle.content',
|
|
248
|
+
default: 'sdk.ocr.verify.residentCardFrontSide'
|
|
183
249
|
}
|
|
184
|
-
}
|
|
185
|
-
|
|
250
|
+
};
|
|
251
|
+
const typeSections = cardTypeLower.split('_');
|
|
252
|
+
const cardTypeName = typeSections[1];
|
|
253
|
+
const cardTypeSection = typeSections[2];
|
|
254
|
+
const titleKey = ((_a = cardTypeMap[cardTypeName]) === null || _a === void 0 ? void 0 : _a[cardTypeSection]) || ((_b = cardTypeMap[cardTypeName]) === null || _b === void 0 ? void 0 : _b.default);
|
|
255
|
+
return titleKey || '';
|
|
186
256
|
}
|
|
187
257
|
function cardTypeConfirmTitle(cardType) {
|
|
188
258
|
if (cardType == null) {
|
|
@@ -191,32 +261,52 @@ function cardTypeConfirmTitle(cardType) {
|
|
|
191
261
|
const cardTypeLower = cardType.toLowerCase();
|
|
192
262
|
let titleKey = null;
|
|
193
263
|
if (cardTypeLower.indexOf('idcard') != -1) {
|
|
194
|
-
if (cardTypeLower.indexOf('front')) {
|
|
195
|
-
titleKey = 'verify.confirmIdCardFront';
|
|
264
|
+
if (cardTypeLower.indexOf('front') !== -1) {
|
|
265
|
+
titleKey = 'sdk.ocr.verify.confirmIdCardFront';
|
|
266
|
+
} else if (cardTypeLower.indexOf('back') !== -1) {
|
|
267
|
+
titleKey = 'sdk.ocr.verify.confirmIdCardBack';
|
|
196
268
|
} else {
|
|
197
|
-
titleKey = 'verify.
|
|
269
|
+
titleKey = 'sdk.ocr.verify.confirmIdCardFront';
|
|
198
270
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
271
|
+
return titleKey;
|
|
272
|
+
}
|
|
273
|
+
if (cardTypeLower.indexOf('driverlicense') != -1) {
|
|
274
|
+
if (cardTypeLower.indexOf('front') !== -1) {
|
|
275
|
+
titleKey = 'sdk.ocr.verify.confirmDriverFront';
|
|
276
|
+
} else if (cardTypeLower.indexOf('back') !== -1) {
|
|
277
|
+
titleKey = 'sdk.ocr.verify.confirmDriverBack';
|
|
202
278
|
} else {
|
|
203
|
-
titleKey = 'verify.
|
|
279
|
+
titleKey = 'sdk.ocr.verify.confirmDriverFront';
|
|
204
280
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
281
|
+
return titleKey;
|
|
282
|
+
}
|
|
283
|
+
if (cardTypeLower.indexOf('resident') != -1) {
|
|
284
|
+
if (cardTypeLower.indexOf('front') !== -1) {
|
|
285
|
+
titleKey = 'sdk.ocr.verify.confirmResidentCardFront';
|
|
286
|
+
} else if (cardTypeLower.indexOf('back') !== -1) {
|
|
287
|
+
titleKey = 'sdk.ocr.verify.confirmResidentCardBack';
|
|
208
288
|
} else {
|
|
209
|
-
titleKey = 'verify.
|
|
289
|
+
titleKey = 'sdk.ocr.verify.confirmResidentCardFront';
|
|
210
290
|
}
|
|
291
|
+
return titleKey;
|
|
211
292
|
}
|
|
212
293
|
return titleKey;
|
|
213
294
|
}
|
|
214
295
|
function mapCardtypeToAuthmeClass(type) {
|
|
215
|
-
const known_type = Object.keys(EAuthMeCardClass).filter(
|
|
216
|
-
|
|
296
|
+
// const known_type = Object.keys(EAuthMeCardClass).filter(
|
|
297
|
+
// (key) =>
|
|
298
|
+
// (EAuthMeCardClass as any)[key].toString().toLowerCase() ==
|
|
299
|
+
// ('EAuthMeCardClass_' + type).toLowerCase()
|
|
300
|
+
// )[0];
|
|
301
|
+
// if (known_type == null) {
|
|
302
|
+
// return EAuthMeCardClass.Unknown;
|
|
303
|
+
// }
|
|
304
|
+
// return (EAuthMeCardClass as any)[known_type];
|
|
305
|
+
if (type in EAuthMeCardClass) {
|
|
306
|
+
return EAuthMeCardClass[type];
|
|
307
|
+
} else {
|
|
217
308
|
return EAuthMeCardClass.Unknown;
|
|
218
309
|
}
|
|
219
|
-
return EAuthMeCardClass[known_type];
|
|
220
310
|
}
|
|
221
311
|
function getRecognitionColumnOrder(column) {
|
|
222
312
|
var _a;
|
|
@@ -236,8 +326,8 @@ const twoWayAuthmeCardClassMap = (() => {
|
|
|
236
326
|
})();
|
|
237
327
|
|
|
238
328
|
var name = "authme/sdk";
|
|
239
|
-
var version$1 = "2.
|
|
240
|
-
var date = "
|
|
329
|
+
var version$1 = "2.7.0";
|
|
330
|
+
var date = "2024-05-30T14:54:23+0000";
|
|
241
331
|
var packageInfo = {
|
|
242
332
|
name: name,
|
|
243
333
|
version: version$1,
|
|
@@ -245,12 +335,15 @@ var packageInfo = {
|
|
|
245
335
|
};
|
|
246
336
|
|
|
247
337
|
function init(type, country, needConfirm, cardTypes, encrypt = true) {
|
|
248
|
-
let useCardTypes = getCardSubTypes(type).map(c =>
|
|
338
|
+
// let useCardTypes: any = getCardSubTypes(type, country).map((c) =>
|
|
339
|
+
// twoWayAuthmeCardClassMap.toServer(c)
|
|
340
|
+
// );
|
|
341
|
+
let useCardTypes = getCardTypes(type);
|
|
249
342
|
if (cardTypes.length) {
|
|
250
343
|
useCardTypes = cardTypes;
|
|
251
344
|
}
|
|
252
345
|
const body = {
|
|
253
|
-
scanType: type === IdRecognitionCardType.Passport ?
|
|
346
|
+
scanType: type === IdRecognitionCardType.Passport ? `ALL_Passport` : `${country}_${type}`,
|
|
254
347
|
cardTypes: useCardTypes,
|
|
255
348
|
needConfirm,
|
|
256
349
|
encrypt,
|
|
@@ -273,6 +366,15 @@ function initScanDocument(scanId, cardType) {
|
|
|
273
366
|
body: JSON.stringify(body)
|
|
274
367
|
});
|
|
275
368
|
}
|
|
369
|
+
function initScanDocumentResourceBase64(scanId, ResourceId) {
|
|
370
|
+
const body = {
|
|
371
|
+
scanId,
|
|
372
|
+
ResourceId
|
|
373
|
+
};
|
|
374
|
+
return sendRequest('/api/identity-verification/id-recognition/v3/init-scan-doc/resource/base64', 'POST', {
|
|
375
|
+
body: JSON.stringify(body)
|
|
376
|
+
});
|
|
377
|
+
}
|
|
276
378
|
function recognition(documentId, file) {
|
|
277
379
|
const formData = new FormData();
|
|
278
380
|
formData.append('scanDocumentId', documentId);
|
|
@@ -385,4 +487,4 @@ const version = packageInfo.version;
|
|
|
385
487
|
(_a = (_b = window)[_c = Symbol.for('authme-sdk')]) !== null && _a !== void 0 ? _a : _b[_c] = {};
|
|
386
488
|
window[Symbol.for('authme-sdk')][packageInfo.name] = version;
|
|
387
489
|
|
|
388
|
-
export { CardOCR, CountryCode, IdCardAntiFraudService, IdRecognitionCardType, IdType, IdTypeConfig, MRZService, RecognitionFileType, ResourceImageType, ServerSideEAuthMeCardClass, cardTypeConfirmTitle, cardTypeTitle, confirmScan, finishScanDocument, getCardSubTypes, getRecognitionColumnOrder, init, initScanDocument, mapCardtypeToAuthmeClass, recognition, recognitionEncrypt, saveExtraDoc, saveResourceImage, twoWayAuthmeCardClassMap, uploadFrameBase64, version };
|
|
490
|
+
export { CardOCR, CountryCode, IdCardAntiFraudService, IdRecognitionCardName, IdRecognitionCardType, IdType, IdTypeConfig, MRZService, RecognitionFileType, ResourceImageType, ServerSideEAuthMeCardClass, cardTypeConfirmTitle, cardTypeTitle, confirmScan, finishScanDocument, getCardSubTypes, getCardTypes, getRecognitionColumnOrder, init, initScanDocument, initScanDocumentResourceBase64, mapCardtypeToAuthmeClass, recognition, recognitionEncrypt, saveExtraDoc, saveResourceImage, thicknessDefaultConfig, twoWayAuthmeCardClassMap, uploadFrameBase64, version };
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@authme/id-recognition",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"core-js": "^3.6.0",
|
|
6
|
-
"@authme/core": "2.
|
|
7
|
-
"@authme/util": "2.
|
|
8
|
-
"@authme/engine": "2.
|
|
6
|
+
"@authme/core": "2.7.0",
|
|
7
|
+
"@authme/util": "2.7.0",
|
|
8
|
+
"@authme/engine": "2.7.0"
|
|
9
9
|
},
|
|
10
10
|
"module": "./index.js",
|
|
11
11
|
"main": "./index.cjs",
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
import { CountryCode, IdRecognitionCardType, RecognitionFileType, ResourceImageType } from '../enum';
|
|
2
2
|
import { InitScanResponse } from '../model';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { ScanViewItem, WelcomePageConfig, ThicknessMode } from '../interface';
|
|
4
|
+
interface InitScanDocumentParams {
|
|
5
5
|
scanDocumentId: string;
|
|
6
|
-
|
|
6
|
+
scanView: ScanViewItem;
|
|
7
|
+
mode: ThicknessMode['mode'];
|
|
8
|
+
welcome: WelcomePageConfig;
|
|
9
|
+
}
|
|
10
|
+
interface InitScanDocumentResourceBase64Params {
|
|
11
|
+
fileId: string;
|
|
12
|
+
data: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function init(type: IdRecognitionCardType, country: CountryCode, needConfirm: boolean, cardTypes: string[], encrypt?: boolean): Promise<InitScanResponse>;
|
|
15
|
+
export declare function initScanDocument(scanId: string, cardType: string): Promise<InitScanDocumentParams>;
|
|
16
|
+
export declare function initScanDocumentResourceBase64(scanId: string, ResourceId: string): Promise<InitScanDocumentResourceBase64Params>;
|
|
7
17
|
export declare function recognition(documentId: string, file: Blob): Promise<{
|
|
8
18
|
retry?: boolean;
|
|
9
19
|
details: {
|
|
@@ -35,3 +45,4 @@ export declare function saveExtraDoc(params: {
|
|
|
35
45
|
[key: string]: string | null;
|
|
36
46
|
};
|
|
37
47
|
}): Promise<any>;
|
|
48
|
+
export {};
|
|
@@ -2,7 +2,8 @@ export { EAuthMeCardClass, EAuthMeCardMatchStatus, EAuthMeCardOCRStatus, EAuthMe
|
|
|
2
2
|
export declare enum ResourceImageType {
|
|
3
3
|
Recognition = "Recognition",
|
|
4
4
|
Fraud = "Fraud",
|
|
5
|
-
Manual = "Manual"
|
|
5
|
+
Manual = "Manual",
|
|
6
|
+
Attach = "AttachImage"
|
|
6
7
|
}
|
|
7
8
|
export declare enum CountryCode {
|
|
8
9
|
TWN = "TWN",
|
|
@@ -24,7 +25,13 @@ export declare enum CountryCode {
|
|
|
24
25
|
DEU = "DEU",
|
|
25
26
|
TUR = "TUR",
|
|
26
27
|
CAN = "CAN",
|
|
27
|
-
AUS = "AUS"
|
|
28
|
+
AUS = "AUS",
|
|
29
|
+
IDN = "IDN",
|
|
30
|
+
MYS = "MYS",
|
|
31
|
+
EGY = "EGY",
|
|
32
|
+
SAU = "SAU",
|
|
33
|
+
NLD = "NLD",
|
|
34
|
+
SGP = "SGP"
|
|
28
35
|
}
|
|
29
36
|
export declare enum IdRecognitionCardType {
|
|
30
37
|
IDCard = "IDCard",
|
|
@@ -33,6 +40,13 @@ export declare enum IdRecognitionCardType {
|
|
|
33
40
|
ResidentCard = "ResidentCard",
|
|
34
41
|
Passport = "Passport"
|
|
35
42
|
}
|
|
43
|
+
export declare enum IdRecognitionCardName {
|
|
44
|
+
IDCard = "sdk.home.selectDocument.idCard",
|
|
45
|
+
DriverLicense = "sdk.home.selectDocument.driverLicense",
|
|
46
|
+
HealthCard = "sdk.home.selectDocument.healthCard",
|
|
47
|
+
ResidentCard = "sdk.home.selectDocument.residentCard",
|
|
48
|
+
Passport = "sdk.home.selectDocument.passport"
|
|
49
|
+
}
|
|
36
50
|
export declare enum ServerSideEAuthMeCardClass {
|
|
37
51
|
Invalid = "Invalid",
|
|
38
52
|
Unknown = "UnknownCard",
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export interface ScanViewItem {
|
|
2
|
+
document_type: string;
|
|
3
|
+
content: ContentItem[];
|
|
4
|
+
success: ScanViewSuccess;
|
|
5
|
+
line: ScanViewLine;
|
|
6
|
+
border: ScanViewBorder;
|
|
7
|
+
}
|
|
8
|
+
interface ContentItem {
|
|
9
|
+
type: 'text' | 'svg';
|
|
10
|
+
content: string;
|
|
11
|
+
color: string | null;
|
|
12
|
+
opacity: number;
|
|
13
|
+
}
|
|
14
|
+
interface ScanViewSuccess {
|
|
15
|
+
enable: boolean;
|
|
16
|
+
color: string;
|
|
17
|
+
opacity: number;
|
|
18
|
+
}
|
|
19
|
+
interface ScanViewLine {
|
|
20
|
+
enable: boolean;
|
|
21
|
+
color: string;
|
|
22
|
+
gradient: ScanViewGradient;
|
|
23
|
+
}
|
|
24
|
+
interface ScanViewGradient {
|
|
25
|
+
enable: true;
|
|
26
|
+
color: string;
|
|
27
|
+
opacity: number;
|
|
28
|
+
}
|
|
29
|
+
interface ScanViewBorder {
|
|
30
|
+
enable: boolean;
|
|
31
|
+
type: 'cornered' | 'bordered';
|
|
32
|
+
color: string;
|
|
33
|
+
opacity: number;
|
|
34
|
+
}
|
|
35
|
+
export interface ThicknessMode {
|
|
36
|
+
mode: 'auto' | 'manual';
|
|
37
|
+
}
|
|
38
|
+
export interface WelcomePageConfig {
|
|
39
|
+
welcome: boolean;
|
|
40
|
+
title: WelcomePagTitle;
|
|
41
|
+
subtitle: WelcomePageSubtitle;
|
|
42
|
+
imageShow: WelcomePageImage;
|
|
43
|
+
content: WelcomePageContent;
|
|
44
|
+
}
|
|
45
|
+
interface WelcomePagTitle {
|
|
46
|
+
enable: boolean;
|
|
47
|
+
text: string;
|
|
48
|
+
}
|
|
49
|
+
interface WelcomePageSubtitle {
|
|
50
|
+
enable: boolean;
|
|
51
|
+
text: string;
|
|
52
|
+
}
|
|
53
|
+
interface WelcomePageImage {
|
|
54
|
+
enable: boolean;
|
|
55
|
+
src: string;
|
|
56
|
+
}
|
|
57
|
+
interface WelcomePageContent {
|
|
58
|
+
enable: boolean;
|
|
59
|
+
text: string;
|
|
60
|
+
}
|
|
61
|
+
export declare const thicknessDefaultConfig: {
|
|
62
|
+
mode: ThicknessMode['mode'];
|
|
63
|
+
thicknessWelcomeSetting: WelcomePageConfig;
|
|
64
|
+
};
|
|
65
|
+
export {};
|
package/src/lib/util.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CountryCode, EAuthMeCardClass, IdRecognitionCardType, ServerSideEAuthMeCardClass } from './enum';
|
|
2
2
|
export declare function getCardSubTypes(type: IdRecognitionCardType, country: CountryCode): EAuthMeCardClass[];
|
|
3
|
+
export declare function getCardTypes(type: IdRecognitionCardType, country: CountryCode): string[];
|
|
3
4
|
export declare function cardTypeTitle(cardType: string): any;
|
|
4
5
|
export declare function cardTypeConfirmTitle(cardType: string): any;
|
|
5
6
|
export declare function mapCardtypeToAuthmeClass(type: string): any;
|