UNPKG

@regulaforensics/document-reader

Version:

This is an npm module for Regula Document Reader SDK. It allows you to read various kinds of identification documents using your phone's camera.

502 lines (418 loc) 20.3 kB
import { exec, _setDocumentReaderCompletion, _setRFIDCompletion, _setDocumentReaderPrepareCompletion, _setCustomButtonTappedCompletion, _setVideoEncoderCompletion, _setRFIDProgressCompletion, _setChipDetectedCompletion, _setRetryReadChipCompletion, _setPaCertificateCompletion, _setTaCertificateCompletion, _setTaSignatureCompletion } from './internal/bridge' import { OnlineProcessingConfig, ImageFormat, OnlineMode } from './config/OnlineProcessingConfig'; import { InitConfig } from './config/InitConfig'; import { RFIDConfig } from './config/RFIDConfig'; import { ScannerConfig } from './config/ScannerConfig'; import { RecognizeConfig, ImageInputData } from './config/RecognizeConfig'; export { OnlineProcessingConfig, ImageFormat, OnlineMode, InitConfig, RFIDConfig, ScannerConfig, RecognizeConfig, ImageInputData }; import { DocReaderVersion } from './info/DocReaderVersion'; import { PrepareProgress } from './info/PrepareProgress'; import { DocReaderException, ErrorCodes } from './info/DocReaderException'; import { DocumentsDatabase } from './info/DocumentsDatabase'; import { License } from './info/License'; import { DocReaderScenario, Scenario, DocReaderOrientation } from './info/DocReaderScenario'; import { RFIDException } from './info/RFIDException'; export { DocReaderVersion, PrepareProgress, DocReaderException, ErrorCodes, DocumentsDatabase, License, DocReaderScenario, Scenario, DocReaderOrientation, RFIDException }; import { LCID } from './results/visual_results/LCID'; import { GraphicFieldType } from './results/visual_results/GraphicFieldType'; import { Value } from './results/visual_results/Value'; import { Rect } from './results/visual_results/Rect'; import { Symbol } from './results/visual_results/Symbol'; import { Comparison } from './results/visual_results/Comparison'; import { TextField } from './results/visual_results/TextField'; import { Lights } from './results/visual_results/Lights'; import { Validity } from './results/visual_results/Validity'; import { FieldType } from './results/visual_results/FieldType'; import { GraphicField } from './results/visual_results/GraphicField'; import { RFIDOrigin } from './results/visual_results/RFIDOrigin'; import { TextResult } from './results/visual_results/TextResult'; import { TextSource } from './results/visual_results/TextSource'; import { GraphicResult } from './results/visual_results/GraphicResult'; export { LCID, GraphicFieldType, Value, Rect, Symbol, Comparison, TextField, Lights, Validity, FieldType, GraphicField, RFIDOrigin, TextResult, TextSource, GraphicResult }; import { DocumentType, DocFormat, DocType as DocumentTypeEnum } from './results/DocumentType'; import { Results, ResultType } from './results/Results'; import { TransactionInfo } from './results/TransactionInfo'; import { Position, Coordinate } from './results/Position'; export { DocumentType, DocFormat, DocumentTypeEnum, Results, ResultType, TransactionInfo, Position, Coordinate }; import { RFIDStatus } from './results/status/RFIDStatus'; import { ResultsStatus } from './results/status/ResultsStatus'; import { CheckResult } from './results/status/CheckResult'; import { OpticalStatus } from './results/status/OpticalStatus'; import { ProcessingFinishedStatus } from './results/Results'; export { RFIDStatus, ResultsStatus, CheckResult, OpticalStatus, ProcessingFinishedStatus }; import { CheckDiagnose } from './results/authenticity/CheckDiagnose'; import { AuthenticityElement } from './results/authenticity/AuthenticityElement'; import { AuthenticityResult } from './results/authenticity/AuthenticityResult'; import { AuthenticityCheck } from './results/authenticity/AuthenticityCheck'; import { SecurityFeatureType } from './results/authenticity/SecurityFeatureType'; import { Authenticity } from './results/authenticity/Authenticity'; export { CheckDiagnose, AuthenticityElement, AuthenticityResult, AuthenticityCheck, SecurityFeatureType, Authenticity }; import { PDF417Info } from './results/barcode/PDF417Info'; import { BarcodeStatus } from './results/barcode/BarcodeStatus'; import { BarcodeType } from './results/barcode/BarcodeType'; import { BarcodeResult } from './results/barcode/BarcodeResult'; import { BarcodeField } from './results/barcode/BarcodeField'; export { PDF417Info, BarcodeStatus, BarcodeType, BarcodeResult, BarcodeField }; import { ImageQuality } from './results/image_quality/ImageQuality'; import { ImageQualityGroup } from './results/image_quality/ImageQualityGroup'; import { ImageQualityCheckType } from './results/image_quality/ImageQualityCheckType'; export { ImageQuality, ImageQualityGroup, ImageQualityCheckType }; import { LDSParsingErrorCodes } from './results/visible_digital_seals/LDSParsingErrorCodes'; import { VDSNCData } from './results/visible_digital_seals/VDSNCData'; import { BytesData } from './results/visible_digital_seals/BytesData'; import { LDSParsingNotificationCodes } from './results/visible_digital_seals/LDSParsingNotificationCodes'; export { LDSParsingErrorCodes, VDSNCData, BytesData, LDSParsingNotificationCodes }; import { SecurityObject } from './results/rfid/SecurityObject'; import { CardProperties } from './results/rfid/CardProperties'; import { DataField } from './results/rfid/DataField'; import { Attribute } from './results/rfid/Attribute'; import { SignerInfo } from './results/rfid/SignerInfo'; import { SecurityObjectCertificates } from './results/rfid/SecurityObjectCertificates'; import { CertificateChain } from './results/rfid/CertificateChain'; import { Authority } from './results/rfid/Authority'; import { File } from './results/rfid/File'; import { RFIDValue } from './results/rfid/RFIDValue'; import { RFIDValidity } from './results/rfid/RFIDValidity'; import { RFIDDataFileType } from './results/rfid/RFIDDataFileType'; import { CertificateData } from './results/rfid/CertificateData'; import { FileData } from './results/rfid/FileData'; import { RFIDCertificateType } from './results/rfid/RFIDCertificateType'; import { RFIDSessionData } from './results/rfid/RFIDSessionData'; import { Application, RFIDApplicationType } from './results/rfid/Application'; import { RFIDAccessControlProcedureType } from './results/rfid/RFIDAccessControlProcedureType'; import { Extension } from './results/rfid/Extension'; import { AccessControlProcedureType } from './results/rfid/AccessControlProcedureType'; export { SecurityObject, CardProperties, DataField, Attribute, SignerInfo, SecurityObjectCertificates, CertificateChain, Authority, File, RFIDValue, RFIDValidity, RFIDDataFileType, CertificateData, FileData, RFIDCertificateType, RFIDSessionData, Application, RFIDApplicationType, RFIDAccessControlProcedureType, Extension, AccessControlProcedureType }; import { LivenessParams } from './params/process_params/LivenessParams'; import { ProcessParams, MeasureSystem, MRZFormat, LogLevel, MrzDetectionModes } from './params/process_params/ProcessParams'; import { GlaresCheckParams } from './params/process_params/GlaresCheckParams'; import { FaceApiParams } from './params/process_params/FaceApiParams'; import { RFIDParams } from './params/process_params/RFIDParams'; import { ImageQA } from './params/process_params/ImageQA'; import { AuthenticityParams } from './params/process_params/AuthenticityParams'; import { BackendProcessingConfig } from './params/process_params/BackendProcessingConfig'; import { FaceApiSearchParams } from './params/process_params/FaceApiSearchParams'; export { LivenessParams, ProcessParams, MeasureSystem, MRZFormat, LogLevel, MrzDetectionModes, GlaresCheckParams, FaceApiParams, RFIDParams, ImageQA, AuthenticityParams, BackendProcessingConfig, FaceApiSearchParams }; import { Functionality, CameraPosition, CaptureMode, CameraMode, CaptureSessionPreset, DocReaderFrame, CameraSize } from './params/Functionality'; export { Functionality, CameraPosition, CaptureMode, CameraMode, CaptureSessionPreset, DocReaderFrame, CameraSize }; import { CustomizationFonts } from './params/customization/CustomizationFonts'; import { CustomizationImages } from './params/customization/CustomizationImages'; import { Font, FontStyle } from './params/customization/Font'; import { Customization, Cap, FrameShapeType, ViewContentMode, CustomButtonTag } from './params/customization/Customization'; import { CustomizationColors } from './params/customization/CustomizationColors'; export { CustomizationFonts, CustomizationImages, Font, FontStyle, Customization, Cap, FrameShapeType, ViewContentMode, CustomButtonTag, CustomizationColors }; import { EPassportDataGroups } from './params/rfid_scenario/EPassportDataGroups'; import { EIDDataGroups } from './params/rfid_scenario/EIDDataGroups'; import { DTCDataGroup } from './params/rfid_scenario/DTCDataGroup'; import { RFIDScenario, RFIDAuthenticationProcedureType, RFIDPasswordType, RFIDSDKProfilerType, RFIDTerminalType, SignManagementAction, RFIDReadingBufferSize } from './params/rfid_scenario/RFIDScenario'; import { EDLDataGroups } from './params/rfid_scenario/EDLDataGroups'; export { EPassportDataGroups, EIDDataGroups, DTCDataGroup, RFIDScenario, RFIDAuthenticationProcedureType, RFIDPasswordType, RFIDSDKProfilerType, RFIDTerminalType, SignManagementAction, RFIDReadingBufferSize, EDLDataGroups }; import { PAResourcesIssuer } from './rfid/PAResourcesIssuer'; import { RFIDErrorCodes } from './rfid/RFIDErrorCodes'; import { TccParams } from './rfid/TccParams'; import { RFIDNotification, RFIDNotificationCodes } from './rfid/RFIDNotification'; import { PAAttribute } from './rfid/PAAttribute'; import { TAChallenge } from './rfid/TAChallenge'; import { PKDCertificate, PKDResourceType } from './rfid/PKDCertificate'; export { PAResourcesIssuer, RFIDErrorCodes, TccParams, RFIDNotification, RFIDNotificationCodes, PAAttribute, TAChallenge, PKDCertificate, PKDResourceType }; export class DocumentReader { static get instance() { return DocumentReader._instance } static _instance = new DocumentReader() get availableScenarios() { return this._availableScenarios } _availableScenarios = [] get version() { return this._version } _version = null get license() { return this._license } _license = new License() async isRFIDAvailableForUse() { return await exec("getIsRFIDAvailableForUse", []); } async isAuthenticatorRFIDAvailableForUse() { return await exec("isAuthenticatorRFIDAvailableForUse", []); } async isAuthenticatorAvailableForUse() { return await exec("isAuthenticatorAvailableForUse", []); } get rfidSessionStatus() { return this._rfidSessionStatus } _rfidSessionStatus = null set rfidSessionStatus(val) { this._rfidSessionStatus = val; this._setRfidSessionStatus(val); } get tag() { return this._tag } _tag = null set tag(val) { this._tag = val; this._setTag(val); } get tenant() { return this._tenant } _tenant = null set tenant(val) { this._tenant = val; this._setTenant(val); } get env() { return this._env } _env = null set env(val) { this._env = val; this._setEnv(val); } get locale() { return this._locale } _locale = null set locale(val) { this._locale = val; this._setLocale(val); } get localizationDictionary() { return this._localizationDictionary } _localizationDictionary = null set localizationDictionary(val) { var temp = Object.assign({}, val); Object.freeze(temp); this._localizationDictionary = temp this._setLocalizationDictionary(val) } get functionality() { return this._functionality } _functionality = new Functionality() set functionality(val) { this._functionality = val; this._functionality._apply(); } get processParams() { return this._processParams } _processParams = new ProcessParams() set processParams(val) { this._processParams = val; this._processParams._apply(); } get customization() { return this._customization } _customization = new Customization() set customization(val) { this._customization = val; this._customization._apply(); } get rfidScenario() { return this._rfidScenario } _rfidScenario = new RFIDScenario() set rfidScenario(val) { this._rfidScenario = val; this._rfidScenario._apply(); } async isReady() { return await exec("getDocumentReaderIsReady", []); } async status() { return await exec("getDocumentReaderStatus", []); } resetConfiguration() { exec("resetConfiguration", []); this._functionality = new Functionality(); this._processParams = new ProcessParams(); this._customization = new Customization(); this._rfidScenario = new RFIDScenario(); } set onCustomButtonTapped(completion) { _setCustomButtonTappedCompletion(completion); } set videoEncoderCompletion(completion) { _setVideoEncoderCompletion(completion); } async initialize(config) { var response = await exec("initialize", [config]) var [success, error] = this._successOrErrorFromJson(response) if (success) await this._onInit() return [success, error] } async connectBluetoothDevice(deviceName) { return await exec("connectBluetoothDevice", [deviceName]); } deinitializeReader() { exec("deinitializeReader", []); } async prepareDatabase(databaseID, prepareCompletion) { _setDocumentReaderPrepareCompletion(prepareCompletion); var response = await exec("prepareDatabase", [databaseID]); return this._successOrErrorFromJson(response); } async runAutoUpdate(databaseID, prepareCompletion) { _setDocumentReaderPrepareCompletion(prepareCompletion); var response = await exec("runAutoUpdate", [databaseID]); return this._successOrErrorFromJson(response); } async checkDatabaseUpdate(databaseID) { var response = await exec("checkDatabaseUpdate", [databaseID]); return DocumentsDatabase.fromJson(response ? JSON.parse(response) : null); } async cancelDBUpdate() { return await exec("cancelDBUpdate", []); } async removeDatabase() { return await exec("removeDatabase", []); } startNewPage() { exec("startNewPage", []); } startNewSession() { exec("startNewSession", []); } scan(config, completion) { _setDocumentReaderCompletion(completion); exec("scan", [config]); } startScanner(config, completion) { _setDocumentReaderCompletion(completion); exec("startScanner", [config]); } recognize(config, completion) { _setDocumentReaderCompletion(completion); exec("recognize", [config]); } rfid(config) { if (config._disableUI) { _setRFIDCompletion(config._rfidCompletion); } else { _setDocumentReaderCompletion(config._completion); } _setRFIDProgressCompletion(config.onProgress); _setChipDetectedCompletion(config.onChipDetected); _setRetryReadChipCompletion(config.onRetryReadChip); _setPaCertificateCompletion(config.onRequestPACertificates); _setTaCertificateCompletion(config.onRequestTACertificates); _setTaSignatureCompletion(config.onRequestTASignature); exec(config._disableUI ? "readRFID" : "startRFIDReader", [ config.onRequestPACertificates != null, config.onRequestTACertificates != null, config.onRequestTASignature != null, ]); } stopScanner() { exec("stopScanner", []); } stopRFIDReader() { exec("stopRFIDReader", []); } addPKDCertificates(certificates) { exec("addPKDCertificates", [certificates]); } clearPKDCertificates() { exec("clearPKDCertificates", []); } async setTCCParams(params) { var response = await exec("setTCCParams", [params]); return this._successOrErrorFromJson(response); } async finalizePackage() { var response = await exec("finalizePackage", []); var jsonObject = JSON.parse(response); var action = jsonObject["action"]; var info = TransactionInfo.fromJson(jsonObject["info"]); var error = DocReaderException.fromJson(jsonObject["error"]); return [action, info, error]; } endBackendTransaction() { exec("endBackendTransaction", []); } _successOrErrorFromJson(jsonString) { var jsonObject = JSON.parse(jsonString); var success = jsonObject["success"]; var error = DocReaderException.fromJson(jsonObject["error"]); return [success, error]; } async _onInit() { this._version = await this._getDocReaderVersion(); this._availableScenarios = await this._getAvailableScenarios(); this._license = await this._getLicense(); this._tag = await this._getTag(); this._tenant = await this._getTenant(); this._env = await this._getEnv(); this._locale = await this._getLocale(); this._rfidSessionStatus = await this._getRfidSessionStatus(); this._functionality = await this._getFunctionality(); this._processParams = await this._getProcessParams(); this._customization = await this._getCustomization(); this._rfidScenario = await this._getRfidScenario(); } async _getProcessParams() { const response = await exec("getProcessParams", []); return ProcessParams.fromJson(JSON.parse(response)); } async _getFunctionality() { const response = await exec("getFunctionality", []); return Functionality.fromJson(JSON.parse(response)); } async _getCustomization() { const response = await exec("getCustomization", []); return Customization.fromJson(JSON.parse(response)); } async _getRfidScenario() { const response = await exec("getRfidScenario", []); return RFIDScenario.fromJson(JSON.parse(response)); } async _getLicense() { const response = await exec("getLicense", []); return License.fromJson(response ? JSON.parse(response) : {}); } async _getAvailableScenarios() { const response = await exec("getAvailableScenarios", []); const scenarios = []; for (const s of JSON.parse(response)) { scenarios.push(DocReaderScenario.fromJson(s)); } return scenarios; } async _getDocReaderVersion() { const response = await exec("getDocReaderVersion", []); return DocReaderVersion.fromJson(response ? JSON.parse(response) : null); } async _getRfidSessionStatus() { return await exec("getRfidSessionStatus", []); } _setRfidSessionStatus(status) { exec("setRfidSessionStatus", [status]); } async _getTag() { return await exec("getTag", []); } _setTag(tag) { exec("setTag", [tag]); } async _getTenant() { return await exec("getTenant", []); } _setTenant(tenant) { exec("setTenant", [tenant]); } async _getEnv() { return await exec("getEnv", []); } _setEnv(env) { exec("setEnv", [env]); } async _getLocale() { return await exec("getLocale", []); } _setLocale(locale) { exec("setLocale", [locale]); } _setLocalizationDictionary(dictionary) { exec("setLocalizationDictionary", [dictionary]); } } export const DocReaderAction = { COMPLETE: 0, PROCESS: 1, MORE_PAGES_AVAILABLE: 2, CANCEL: 3, ERROR: 4, PROCESS_WHITE_FLASHLIGHT: 5, TIMEOUT: 6, PROCESSING_ON_SERVICE: 7, PROCESS_WHITE_UV_IMAGES: 102, PROCESS_IR_FRAME: 103 }; DocReaderAction.finished = function (value) { return value == DocReaderAction.COMPLETE || value == DocReaderAction.TIMEOUT } DocReaderAction.interrupted = function (value) { return value == DocReaderAction.CANCEL || value == DocReaderAction.ERROR } DocReaderAction.stopped = function (value) { return DocReaderAction.finished(value) || DocReaderAction.interrupted(value) }