UNPKG

@digitalpersona/fingerprint

Version:
1 lines 14.2 kB
"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();var Fingerprint;(function(Fingerprint){function b64UrlTo64(a){if(a.length%4==2){a=a+"=="}else{if(a.length%4==3){a=a+"="}}a=a.replace(/-/g,"+");a=a.replace(/_/g,"/");return a}Fingerprint.b64UrlTo64=b64UrlTo64;function b64To64Url(a){a=a.replace(/\=/g,"");a=a.replace(/\+/g,"-");a=a.replace(/\//g,"_");return a}Fingerprint.b64To64Url=b64To64Url;function b64UrlToUtf8(str){return window.atob(b64UrlTo64(str))}Fingerprint.b64UrlToUtf8=b64UrlToUtf8;function strToB64Url(str){return b64To64Url(window.btoa(str))}Fingerprint.strToB64Url=strToB64Url;var DeviceUidType;(function(DeviceUidType){DeviceUidType[DeviceUidType["Persistent"]=0]="Persistent";DeviceUidType[DeviceUidType["Volatile"]=1]="Volatile"})(DeviceUidType=Fingerprint.DeviceUidType||(Fingerprint.DeviceUidType={}));var DeviceModality;(function(DeviceModality){DeviceModality[DeviceModality["Unknown"]=0]="Unknown";DeviceModality[DeviceModality["Swipe"]=1]="Swipe";DeviceModality[DeviceModality["Area"]=2]="Area";DeviceModality[DeviceModality["AreaMultifinger"]=3]="AreaMultifinger"})(DeviceModality=Fingerprint.DeviceModality||(Fingerprint.DeviceModality={}));var DeviceTechnology;(function(DeviceTechnology){DeviceTechnology[DeviceTechnology["Unknown"]=0]="Unknown";DeviceTechnology[DeviceTechnology["Optical"]=1]="Optical";DeviceTechnology[DeviceTechnology["Capacitive"]=2]="Capacitive";DeviceTechnology[DeviceTechnology["Thermal"]=3]="Thermal";DeviceTechnology[DeviceTechnology["Pressure"]=4]="Pressure"})(DeviceTechnology=Fingerprint.DeviceTechnology||(Fingerprint.DeviceTechnology={}));var SampleFormat;(function(SampleFormat){SampleFormat[SampleFormat["Raw"]=1]="Raw";SampleFormat[SampleFormat["Intermediate"]=2]="Intermediate";SampleFormat[SampleFormat["Compressed"]=3]="Compressed";SampleFormat[SampleFormat["PngImage"]=5]="PngImage"})(SampleFormat=Fingerprint.SampleFormat||(Fingerprint.SampleFormat={}));var QualityCode;(function(QualityCode){QualityCode[QualityCode["Good"]=0]="Good";QualityCode[QualityCode["NoImage"]=1]="NoImage";QualityCode[QualityCode["TooLight"]=2]="TooLight";QualityCode[QualityCode["TooDark"]=3]="TooDark";QualityCode[QualityCode["TooNoisy"]=4]="TooNoisy";QualityCode[QualityCode["LowContrast"]=5]="LowContrast";QualityCode[QualityCode["NotEnoughFeatures"]=6]="NotEnoughFeatures";QualityCode[QualityCode["NotCentered"]=7]="NotCentered";QualityCode[QualityCode["NotAFinger"]=8]="NotAFinger";QualityCode[QualityCode["TooHigh"]=9]="TooHigh";QualityCode[QualityCode["TooLow"]=10]="TooLow";QualityCode[QualityCode["TooLeft"]=11]="TooLeft";QualityCode[QualityCode["TooRight"]=12]="TooRight";QualityCode[QualityCode["TooStrange"]=13]="TooStrange";QualityCode[QualityCode["TooFast"]=14]="TooFast";QualityCode[QualityCode["TooSkewed"]=15]="TooSkewed";QualityCode[QualityCode["TooShort"]=16]="TooShort";QualityCode[QualityCode["TooSlow"]=17]="TooSlow";QualityCode[QualityCode["ReverseMotion"]=18]="ReverseMotion";QualityCode[QualityCode["PressureTooHard"]=19]="PressureTooHard";QualityCode[QualityCode["PressureTooLight"]=20]="PressureTooLight";QualityCode[QualityCode["WetFinger"]=21]="WetFinger";QualityCode[QualityCode["FakeFinger"]=22]="FakeFinger";QualityCode[QualityCode["TooSmall"]=23]="TooSmall";QualityCode[QualityCode["RotatedTooMuch"]=24]="RotatedTooMuch"})(QualityCode=Fingerprint.QualityCode||(Fingerprint.QualityCode={}));var Event=function(){function Event(type){this.type=type}return Event}();Fingerprint.Event=Event;var CommunicationEvent=function(_super){__extends(CommunicationEvent,_super);function CommunicationEvent(type){return _super.call(this,type)||this}return CommunicationEvent}(Event);Fingerprint.CommunicationEvent=CommunicationEvent;var CommunicationFailed=function(_super){__extends(CommunicationFailed,_super);function CommunicationFailed(){return _super.call(this,"CommunicationFailed")||this}return CommunicationFailed}(CommunicationEvent);Fingerprint.CommunicationFailed=CommunicationFailed;var AcquisitionEvent=function(_super){__extends(AcquisitionEvent,_super);function AcquisitionEvent(type,deviceUid){var _this=_super.call(this,type)||this;_this.deviceUid=deviceUid;return _this}return AcquisitionEvent}(Event);Fingerprint.AcquisitionEvent=AcquisitionEvent;var DeviceConnected=function(_super){__extends(DeviceConnected,_super);function DeviceConnected(deviceUid){return _super.call(this,"DeviceConnected",deviceUid)||this}return DeviceConnected}(AcquisitionEvent);Fingerprint.DeviceConnected=DeviceConnected;var DeviceDisconnected=function(_super){__extends(DeviceDisconnected,_super);function DeviceDisconnected(deviceUid){return _super.call(this,"DeviceDisconnected",deviceUid)||this}return DeviceDisconnected}(AcquisitionEvent);Fingerprint.DeviceDisconnected=DeviceDisconnected;var SamplesAcquired=function(_super){__extends(SamplesAcquired,_super);function SamplesAcquired(deviceUid,sampleFormat,samples){var _this=_super.call(this,"SamplesAcquired",deviceUid)||this;_this.sampleFormat=sampleFormat;_this.samples=samples;return _this}return SamplesAcquired}(AcquisitionEvent);Fingerprint.SamplesAcquired=SamplesAcquired;var QualityReported=function(_super){__extends(QualityReported,_super);function QualityReported(deviceUid,quality){var _this=_super.call(this,"QualityReported",deviceUid)||this;_this.quality=quality;return _this}return QualityReported}(AcquisitionEvent);Fingerprint.QualityReported=QualityReported;var ErrorOccurred=function(_super){__extends(ErrorOccurred,_super);function ErrorOccurred(deviceUid,error){var _this=_super.call(this,"ErrorOccurred",deviceUid)||this;_this.error=error;return _this}return ErrorOccurred}(AcquisitionEvent);Fingerprint.ErrorOccurred=ErrorOccurred;var AcquisitionStarted=function(_super){__extends(AcquisitionStarted,_super);function AcquisitionStarted(deviceUid){return _super.call(this,"AcquisitionStarted",deviceUid)||this}return AcquisitionStarted}(AcquisitionEvent);Fingerprint.AcquisitionStarted=AcquisitionStarted;var AcquisitionStopped=function(_super){__extends(AcquisitionStopped,_super);function AcquisitionStopped(deviceUid){return _super.call(this,"AcquisitionStopped",deviceUid)||this}return AcquisitionStopped}(AcquisitionEvent);Fingerprint.AcquisitionStopped=AcquisitionStopped;var Method;(function(Method){Method[Method["EnumerateDevices"]=1]="EnumerateDevices";Method[Method["GetDeviceInfo"]=2]="GetDeviceInfo";Method[Method["StartAcquisition"]=3]="StartAcquisition";Method[Method["StopAcquisition"]=4]="StopAcquisition"})(Method||(Method={}));var NotificationType;(function(NotificationType){NotificationType[NotificationType["Completed"]=0]="Completed";NotificationType[NotificationType["Error"]=1]="Error";NotificationType[NotificationType["Disconnected"]=2]="Disconnected";NotificationType[NotificationType["Connected"]=3]="Connected";NotificationType[NotificationType["Quality"]=4]="Quality";NotificationType[NotificationType["Stopped"]=10]="Stopped";NotificationType[NotificationType["Started"]=11]="Started"})(NotificationType||(NotificationType={}));var MessageType;(function(MessageType){MessageType[MessageType["Response"]=0]="Response";MessageType[MessageType["Notification"]=1]="Notification"})(MessageType||(MessageType={}));var Command=function(){function Command(method,parameters){this.Method=method;if(parameters)this.Parameters=parameters}return Command}();var Request=function(){function Request(command,resolve,reject){this.command=command;this.resolve=resolve;this.reject=reject;this.sent=false}return Request}();var WebApi=function(){function WebApi(options){this.requests=[];this.handlers={};var _instance=this;this.webChannel=new WebSdk.WebChannelClient("fingerprints",options);this.webChannel.onConnectionSucceed=function(){_instance.onConnectionSucceed()};this.webChannel.onConnectionFailed=function(){_instance.onConnectionFailed()};this.webChannel.onDataReceivedTxt=function(data){_instance.onDataReceivedTxt(data)}}WebApi.prototype.enumerateDevices=function(){var _instance=this;return new Promise((function(resolve,reject){var command=new Command(Method.EnumerateDevices);var request=new Request(command,resolve,reject);_instance.requests.push(request);if(_instance.webChannel.isConnected())_instance.processQueue();else _instance.webChannel.connect()}))};WebApi.prototype.getDeviceInfo=function(deviceUid){var _instance=this;return new Promise((function(resolve,reject){var deviceParams={DeviceID:deviceUid};var command=new Command(Method.GetDeviceInfo,strToB64Url(JSON.stringify(deviceParams)));var request=new Request(command,resolve,reject);_instance.requests.push(request);if(_instance.webChannel.isConnected())_instance.processQueue();else _instance.webChannel.connect()}))};WebApi.prototype.startAcquisition=function(sampleFormat,deviceUid){var _instance=this;return new Promise((function(resolve,reject){var acquisitionParams={DeviceID:deviceUid?deviceUid:"00000000-0000-0000-0000-000000000000",SampleType:sampleFormat};var command=new Command(Method.StartAcquisition,strToB64Url(JSON.stringify(acquisitionParams)));var request=new Request(command,resolve,reject);_instance.requests.push(request);if(_instance.webChannel.isConnected())_instance.processQueue();else _instance.webChannel.connect()}))};WebApi.prototype.stopAcquisition=function(deviceUid){var _instance=this;return new Promise((function(resolve,reject){var acquisitionParams={DeviceID:deviceUid?deviceUid:"00000000-0000-0000-0000-000000000000"};var command=new Command(Method.StopAcquisition,strToB64Url(JSON.stringify(acquisitionParams)));var request=new Request(command,resolve,reject);_instance.requests.push(request);if(_instance.webChannel.isConnected())_instance.processQueue();else _instance.webChannel.connect()}))};WebApi.prototype.onConnectionSucceed=function(){this.processQueue()};WebApi.prototype.onConnectionFailed=function(){for(var i=0;i<this.requests.length;i++){this.requests[i].reject(new Error("Communication failure."))}this.requests=[];this.emit(new CommunicationFailed)};WebApi.prototype.onDataReceivedTxt=function(data){var message=JSON.parse(b64UrlToUtf8(data));if(message.Type===MessageType.Response){var response=JSON.parse(b64UrlToUtf8(message.Data));this.processResponse(response)}else if(message.Type===MessageType.Notification){var notification=JSON.parse(b64UrlToUtf8(message.Data));this.processNotification(notification)}};WebApi.prototype.processQueue=function(){for(var i=0;i<this.requests.length;i++){if(this.requests[i].sent)continue;this.webChannel.sendDataTxt(strToB64Url(JSON.stringify(this.requests[i].command)));this.requests[i].sent=true}};WebApi.prototype.processResponse=function(response){var request;for(var i=0;i<this.requests.length;i++){if(!this.requests[i].sent)continue;if(this.requests[i].command.Method===response.Method){request=this.requests[i];this.requests.splice(i,1);break}}if(request){if(response.Method===Method.EnumerateDevices){if(response.Result<0||response.Result>2147483647)request.reject(new Error("EnumerateDevices: "+(response.Result>>>0).toString(16)));else{var enumerateDevicesResponse=JSON.parse(b64UrlToUtf8(response.Data));request.resolve(JSON.parse(enumerateDevicesResponse.DeviceIDs))}}else if(response.Method===Method.GetDeviceInfo){if(response.Result<0||response.Result>2147483647)request.reject(new Error("GetDeviceInfo: "+(response.Result>>>0).toString(16)));else{var deviceInfo=JSON.parse(b64UrlToUtf8(response.Data));request.resolve(deviceInfo)}}else if(response.Method===Method.StartAcquisition){if(response.Result<0||response.Result>2147483647)request.reject(new Error("StartAcquisition: "+(response.Result>>>0).toString(16)));else request.resolve()}else if(response.Method===Method.StopAcquisition){if(response.Result<0||response.Result>2147483647)request.reject(new Error("StopAcquisition: "+(response.Result>>>0).toString(16)));else request.resolve()}}};WebApi.prototype.processNotification=function(notification){if(notification.Event===NotificationType.Completed){var completed=JSON.parse(b64UrlToUtf8(notification.Data));this.emit(new SamplesAcquired(notification.Device,completed.SampleFormat,completed.Samples))}else if(notification.Event===NotificationType.Connected){this.emit(new DeviceConnected(notification.Device))}else if(notification.Event===NotificationType.Disconnected){this.emit(new DeviceDisconnected(notification.Device))}else if(notification.Event===NotificationType.Error){var error=JSON.parse(b64UrlToUtf8(notification.Data));this.emit(new ErrorOccurred(notification.Device,error.uError))}else if(notification.Event===NotificationType.Quality){var quality=JSON.parse(b64UrlToUtf8(notification.Data));this.emit(new QualityReported(notification.Device,quality.Quality))}else if(notification.Event===NotificationType.Started){this.emit(new AcquisitionStarted(notification.Device))}else if(notification.Event===NotificationType.Stopped){this.emit(new AcquisitionStopped(notification.Device))}};WebApi.prototype.on=function(event,handler){if(!this.handlers[event])this.handlers[event]=[];this.handlers[event].push(handler);return this};WebApi.prototype.off=function(event,handler){if(event){var hh=this.handlers[event];if(hh){if(handler)this.handlers[event]=hh.filter((function(h){return h!==handler}));else delete this.handlers[event]}}else this.handlers={};return this};WebApi.prototype.emit=function(event){var _this=this;if(!event)return;var eventName=event.type;var unicast=this["on"+eventName];if(unicast)this.invoke(unicast,event);var multicast=this.handlers[eventName];if(multicast)multicast.forEach((function(h){return _this.invoke(h,event)}))};WebApi.prototype.invoke=function(handler,event){try{handler(event)}catch(e){console.error(e)}};return WebApi}();Fingerprint.WebApi=WebApi})(Fingerprint||(Fingerprint={}));