@@ -64,6 +64,7 @@ function TypingDNA(maxHistoryLength) {
6464 TypingDNA . prototype . isMobile = function ( args ) {
6565 return TypingDNA . isMobile . apply ( this , arguments ) ;
6666 }
67+ TypingDNA . initialized = true ;
6768 TypingDNA . prototype . maxHistoryLength = TypingDNA . maxHistoryLength ;
6869 TypingDNA . prototype . defaultHistoryLength = TypingDNA . defaultHistoryLength ;
6970 TypingDNA . prototype . maxSeekTime = TypingDNA . maxSeekTime ;
@@ -383,49 +384,52 @@ function TypingDNA(maxHistoryLength) {
383384 return historyStackObj ;
384385 }
385386 }
386- }
387387
388- /**
389- * Checks the quality of a typing pattern, how well it is revelated, how useful the
390- * information will be for matching applications. It returns a value between 0 and 1.
391- * Values over 0.3 are acceptable, however a value over 0.7 shows good pattern strength.
392- * @param {String } typingPattern The typing pattern string returned by the get() function.
393- * @return {Number } A real number between 0 and 1. A close to 1 value means a stronger pattern.
394- * @example var quality = tdna.getQuality(typingPattern);
395- */
396- TypingDNA . getQuality = function ( typingPattern ) {
397- var obj = typingPattern . split ( "," ) ;
398- for ( i = 0 ; i < obj . length ; i ++ ) {
399- obj [ i ] = Number ( obj [ i ] ) ;
400- }
401- var totalEvents = obj [ 0 ] ;
402- var acc = rec = avgAcc = 0 ;
403- var avg = TypingDNA . math . avg ( obj ) ;
404- var revs = obj . slice ( 11 , 55 ) ;
405- for ( var i in revs ) {
406- rec += Number ( revs [ i ] > 0 ) ;
407- acc += Number ( revs [ i ] > 4 ) ;
408- avgAcc += Number ( revs [ i ] > avg ) ;
388+ /**
389+ * Checks the quality of a typing pattern, how well it is revelated, how useful the
390+ * information will be for matching applications. It returns a value between 0 and 1.
391+ * Values over 0.3 are acceptable, however a value over 0.7 shows good pattern strength.
392+ * @param {String } typingPattern The typing pattern string returned by the get() function.
393+ * @return {Number } A real number between 0 and 1. A close to 1 value means a stronger pattern.
394+ * @example var quality = tdna.getQuality(typingPattern);
395+ */
396+ TypingDNA . getQuality = function ( typingPattern ) {
397+ var obj = typingPattern . split ( "," ) ;
398+ for ( i = 0 ; i < obj . length ; i ++ ) {
399+ obj [ i ] = Number ( obj [ i ] ) ;
400+ }
401+ var totalEvents = obj [ 0 ] ;
402+ var acc = rec = avgAcc = 0 ;
403+ var avg = TypingDNA . math . avg ( obj ) ;
404+ var revs = obj . slice ( 11 , 55 ) ;
405+ for ( var i in revs ) {
406+ rec += Number ( revs [ i ] > 0 ) ;
407+ acc += Number ( revs [ i ] > 4 ) ;
408+ avgAcc += Number ( revs [ i ] > avg ) ;
409+ }
410+ var tReturn = Math . sqrt ( rec * acc * avgAcc ) / 80 ;
411+ return tReturn > 1 ? 1 : tReturn ;
409412 }
410- var tReturn = Math . sqrt ( rec * acc * avgAcc ) / 80 ;
411- return tReturn > 1 ? 1 : tReturn ;
412- }
413413
414- TypingDNA . getLength = function ( typingPattern ) {
415- return Number ( typingPattern . split ( "," ) [ 1 ] ) ;
416- }
414+ TypingDNA . getLength = function ( typingPattern ) {
415+ return Number ( typingPattern . split ( "," ) [ 1 ] ) ;
416+ }
417417
418- TypingDNA . isMobile = function ( ) {
419- var check = 0 ;
420- ( function ( a ) {
421- if (
422- / ( a n d r o i d | b b \d + | m e e g o ) .+ m o b i l e | a v a n t g o | b a d a \/ | b l a c k b e r r y | b l a z e r | c o m p a l | e l a i n e | f e n n e c | h i p t o p | i e m o b i l e | i p ( h o n e | o d ) | i r i s | k i n d l e | l g e | m a e m o | m i d p | m m p | m o b i l e .+ f i r e f o x | n e t f r o n t | o p e r a m ( o b | i n ) i | p a l m ( o s ) ? | p h o n e | p ( i x i | r e ) \/ | p l u c k e r | p o c k e t | p s p | s e r i e s ( 4 | 6 ) 0 | s y m b i a n | t r e o | u p \. ( b r o w s e r | l i n k ) | v o d a f o n e | w a p | w i n d o w s c e | x d a | x i i n o | a n d r o i d | i p a d | p l a y b o o k | s i l k / i
423- . test ( a ) ||
424- / 1 2 0 7 | 6 3 1 0 | 6 5 9 0 | 3 g s o | 4 t h p | 5 0 [ 1 - 6 ] i | 7 7 0 s | 8 0 2 s | a w a | a b a c | a c ( e r | o o | s \- ) | a i ( k o | r n ) | a l ( a v | c a | c o ) | a m o i | a n ( e x | n y | y w ) | a p t u | a r ( c h | g o ) | a s ( t e | u s ) | a t t w | a u ( d i | \- m | r | s ) | a v a n | b e ( c k | l l | n q ) | b i ( l b | r d ) | b l ( a c | a z ) | b r ( e | v ) w | b u m b | b w \- ( n | u ) | c 5 5 \/ | c a p i | c c w a | c d m \- | c e l l | c h t m | c l d c | c m d \- | c o ( m p | n d ) | c r a w | d a ( i t | l l | n g ) | d b t e | d c \- s | d e v i | d i c a | d m o b | d o ( c | p ) o | d s ( 1 2 | \- d ) | e l ( 4 9 | a i ) | e m ( l 2 | u l ) | e r ( i c | k 0 ) | e s l 8 | e z ( [ 4 - 7 ] 0 | o s | w a | z e ) | f e t c | f l y ( \- | _ ) | g 1 u | g 5 6 0 | g e n e | g f \- 5 | g \- m o | g o ( \. w | o d ) | g r ( a d | u n ) | h a i e | h c i t | h d \- ( m | p | t ) | h e i \- | h i ( p t | t a ) | h p ( i | i p ) | h s \- c | h t ( c ( \- | | _ | a | g | p | s | t ) | t p ) | h u ( a w | t c ) | i \- ( 2 0 | g o | m a ) | i 2 3 0 | i a c ( | \- | \/ ) | i b r o | i d e a | i g 0 1 | i k o m | i m 1 k | i n n o | i p a q | i r i s | j a ( t | v ) a | j b r o | j e m u | j i g s | k d d i | k e j i | k g t ( | \/ ) | k l o n | k p t | k w c \- | k y o ( c | k ) | l e ( n o | x i ) | l g ( g | \/ ( k | l | u ) | 5 0 | 5 4 | \- [ a - w ] ) | l i b w | l y n x | m 1 \- w | m 3 g a | m 5 0 \/ | m a ( t e | u i | x o ) | m c ( 0 1 | 2 1 | c a ) | m \- c r | m e ( r c | r i ) | m i ( o 8 | o a | t s ) | m m e f | m o ( 0 1 | 0 2 | b i | d e | d o | t ( \- | | o | v ) | z z ) | m t ( 5 0 | p 1 | v ) | m w b p | m y w a | n 1 0 [ 0 - 2 ] | n 2 0 [ 2 - 3 ] | n 3 0 ( 0 | 2 ) | n 5 0 ( 0 | 2 | 5 ) | n 7 ( 0 ( 0 | 1 ) | 1 0 ) | n e ( ( c | m ) \- | o n | t f | w f | w g | w t ) | n o k ( 6 | i ) | n z p h | o 2 i m | o p ( t i | w v ) | o r a n | o w g 1 | p 8 0 0 | p a n ( a | d | t ) | p d x g | p g ( 1 3 | \- ( [ 1 - 8 ] | c ) ) | p h i l | p i r e | p l ( a y | u c ) | p n \- 2 | p o ( c k | r t | s e ) | p r o x | p s i o | p t \- g | q a \- a | q c ( 0 7 | 1 2 | 2 1 | 3 2 | 6 0 | \- [ 2 - 7 ] | i \- ) | q t e k | r 3 8 0 | r 6 0 0 | r a k s | r i m 9 | r o ( v e | z o ) | s 5 5 \/ | s a ( g e | m a | m m | m s | n y | v a ) | s c ( 0 1 | h \- | o o | p \- ) | s d k \/ | s e ( c ( \- | 0 | 1 ) | 4 7 | m c | n d | r i ) | s g h \- | s h a r | s i e ( \- | m ) | s k \- 0 | s l ( 4 5 | i d ) | s m ( a l | a r | b 3 | i t | t 5 ) | s o ( f t | n y ) | s p ( 0 1 | h \- | v \- | v ) | s y ( 0 1 | m b ) | t 2 ( 1 8 | 5 0 ) | t 6 ( 0 0 | 1 0 | 1 8 ) | t a ( g t | l k ) | t c l \- | t d g \- | t e l ( i | m ) | t i m \- | t \- m o | t o ( p l | s h ) | t s ( 7 0 | m \- | m 3 | m 5 ) | t x \- 9 | u p ( \. b | g 1 | s i ) | u t s t | v 4 0 0 | v 7 5 0 | v e r i | v i ( r g | t e ) | v k ( 4 0 | 5 [ 0 - 3 ] | \- v ) | v m 4 0 | v o d a | v u l c | v x ( 5 2 | 5 3 | 6 0 | 6 1 | 7 0 | 8 0 | 8 1 | 8 3 | 8 5 | 9 8 ) | w 3 c ( \- | ) | w e b c | w h i t | w i ( g | n c | n w ) | w m l b | w o n u | x 7 0 0 | y a s \- | y o u r | z e t o | z t e \- / i
425- . test ( a . substr ( 0 , 4 ) ) ) {
426- check = 1
427- }
428- } ) ( navigator . userAgent || navigator . vendor || window . opera ) ;
429- return check ;
418+ TypingDNA . isMobile = function ( ) {
419+ var check = 0 ;
420+ ( function ( a ) {
421+ if (
422+ / ( a n d r o i d | b b \d + | m e e g o ) .+ m o b i l e | a v a n t g o | b a d a \/ | b l a c k b e r r y | b l a z e r | c o m p a l | e l a i n e | f e n n e c | h i p t o p | i e m o b i l e | i p ( h o n e | o d ) | i r i s | k i n d l e | l g e | m a e m o | m i d p | m m p | m o b i l e .+ f i r e f o x | n e t f r o n t | o p e r a m ( o b | i n ) i | p a l m ( o s ) ? | p h o n e | p ( i x i | r e ) \/ | p l u c k e r | p o c k e t | p s p | s e r i e s ( 4 | 6 ) 0 | s y m b i a n | t r e o | u p \. ( b r o w s e r | l i n k ) | v o d a f o n e | w a p | w i n d o w s c e | x d a | x i i n o | a n d r o i d | i p a d | p l a y b o o k | s i l k / i
423+ . test ( a ) ||
424+ / 1 2 0 7 | 6 3 1 0 | 6 5 9 0 | 3 g s o | 4 t h p | 5 0 [ 1 - 6 ] i | 7 7 0 s | 8 0 2 s | a w a | a b a c | a c ( e r | o o | s \- ) | a i ( k o | r n ) | a l ( a v | c a | c o ) | a m o i | a n ( e x | n y | y w ) | a p t u | a r ( c h | g o ) | a s ( t e | u s ) | a t t w | a u ( d i | \- m | r | s ) | a v a n | b e ( c k | l l | n q ) | b i ( l b | r d ) | b l ( a c | a z ) | b r ( e | v ) w | b u m b | b w \- ( n | u ) | c 5 5 \/ | c a p i | c c w a | c d m \- | c e l l | c h t m | c l d c | c m d \- | c o ( m p | n d ) | c r a w | d a ( i t | l l | n g ) | d b t e | d c \- s | d e v i | d i c a | d m o b | d o ( c | p ) o | d s ( 1 2 | \- d ) | e l ( 4 9 | a i ) | e m ( l 2 | u l ) | e r ( i c | k 0 ) | e s l 8 | e z ( [ 4 - 7 ] 0 | o s | w a | z e ) | f e t c | f l y ( \- | _ ) | g 1 u | g 5 6 0 | g e n e | g f \- 5 | g \- m o | g o ( \. w | o d ) | g r ( a d | u n ) | h a i e | h c i t | h d \- ( m | p | t ) | h e i \- | h i ( p t | t a ) | h p ( i | i p ) | h s \- c | h t ( c ( \- | | _ | a | g | p | s | t ) | t p ) | h u ( a w | t c ) | i \- ( 2 0 | g o | m a ) | i 2 3 0 | i a c ( | \- | \/ ) | i b r o | i d e a | i g 0 1 | i k o m | i m 1 k | i n n o | i p a q | i r i s | j a ( t | v ) a | j b r o | j e m u | j i g s | k d d i | k e j i | k g t ( | \/ ) | k l o n | k p t | k w c \- | k y o ( c | k ) | l e ( n o | x i ) | l g ( g | \/ ( k | l | u ) | 5 0 | 5 4 | \- [ a - w ] ) | l i b w | l y n x | m 1 \- w | m 3 g a | m 5 0 \/ | m a ( t e | u i | x o ) | m c ( 0 1 | 2 1 | c a ) | m \- c r | m e ( r c | r i ) | m i ( o 8 | o a | t s ) | m m e f | m o ( 0 1 | 0 2 | b i | d e | d o | t ( \- | | o | v ) | z z ) | m t ( 5 0 | p 1 | v ) | m w b p | m y w a | n 1 0 [ 0 - 2 ] | n 2 0 [ 2 - 3 ] | n 3 0 ( 0 | 2 ) | n 5 0 ( 0 | 2 | 5 ) | n 7 ( 0 ( 0 | 1 ) | 1 0 ) | n e ( ( c | m ) \- | o n | t f | w f | w g | w t ) | n o k ( 6 | i ) | n z p h | o 2 i m | o p ( t i | w v ) | o r a n | o w g 1 | p 8 0 0 | p a n ( a | d | t ) | p d x g | p g ( 1 3 | \- ( [ 1 - 8 ] | c ) ) | p h i l | p i r e | p l ( a y | u c ) | p n \- 2 | p o ( c k | r t | s e ) | p r o x | p s i o | p t \- g | q a \- a | q c ( 0 7 | 1 2 | 2 1 | 3 2 | 6 0 | \- [ 2 - 7 ] | i \- ) | q t e k | r 3 8 0 | r 6 0 0 | r a k s | r i m 9 | r o ( v e | z o ) | s 5 5 \/ | s a ( g e | m a | m m | m s | n y | v a ) | s c ( 0 1 | h \- | o o | p \- ) | s d k \/ | s e ( c ( \- | 0 | 1 ) | 4 7 | m c | n d | r i ) | s g h \- | s h a r | s i e ( \- | m ) | s k \- 0 | s l ( 4 5 | i d ) | s m ( a l | a r | b 3 | i t | t 5 ) | s o ( f t | n y ) | s p ( 0 1 | h \- | v \- | v ) | s y ( 0 1 | m b ) | t 2 ( 1 8 | 5 0 ) | t 6 ( 0 0 | 1 0 | 1 8 ) | t a ( g t | l k ) | t c l \- | t d g \- | t e l ( i | m ) | t i m \- | t \- m o | t o ( p l | s h ) | t s ( 7 0 | m \- | m 3 | m 5 ) | t x \- 9 | u p ( \. b | g 1 | s i ) | u t s t | v 4 0 0 | v 7 5 0 | v e r i | v i ( r g | t e ) | v k ( 4 0 | 5 [ 0 - 3 ] | \- v ) | v m 4 0 | v o d a | v u l c | v x ( 5 2 | 5 3 | 6 0 | 6 1 | 7 0 | 8 0 | 8 1 | 8 3 | 8 5 | 9 8 ) | w 3 c ( \- | ) | w e b c | w h i t | w i ( g | n c | n w ) | w m l b | w o n u | x 7 0 0 | y a s \- | y o u r | z e t o | z t e \- / i
425+ . test ( a . substr ( 0 , 4 ) ) ) {
426+ check = 1
427+ }
428+ } ) ( navigator . userAgent || navigator . vendor || window . opera ) ;
429+ return check ;
430+ }
431+ } else {
432+ // TypingDNA is a static class, currently doesn't support actual multiple instances (Singleton implementation)
433+ return TypingDNA . instance ;
430434 }
431435}
0 commit comments