{"version":3,"file":"uhp-frontend.js","mappings":"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","sources":["webpack://universal-honey-pot/./src/js/uhp-frontend.js"],"sourcesContent":["( function() {\n\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty( {}, 'passive', {\n get : function() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener( 'testPassive', null, opts );\n window.removeEventListener( 'testPassive', null, opts );\n } catch ( e ) {}\n\n function init() {\n\n let input_begin = '';\n\n let keydowns = {};\n let lastKeyup = null;\n\t\tlet lastKeydown = null;\n let keypresses = [];\n\n\t\tlet modifierKeys = [];\n\t\tlet correctionKeys = [];\n\n let lastMouseup = null;\n\t\tlet lastMousedown = null;\n\t\tlet mouseclicks = [];\n\n let mousemoveTimer = null;\n\t\tlet lastMousemoveX = null;\n\t\tlet lastMousemoveY = null;\n\t\tlet mousemoveStart = null;\n\t\tlet mousemoves = [];\n\n let touchmoveCountTimer = null;\n\t\tlet touchmoveCount = 0;\n\n\t\tlet lastTouchEnd = null;\n\t\tlet lastTouchStart = null;\n\t\tlet touchEvents = [];\n\n let scrollCountTimer = null;\n\t\tlet scrollCount = 0;\n\n const correctionKeyCodes = [ 'Backspace', 'Delete', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End', 'PageUp', 'PageDown' ];\n\t\tconst modifierKeyCodes = [ 'Shift', 'CapsLock' ];\n\n\t\tconst forms = document.querySelectorAll( 'form[method=post]' );\n\n for ( let i = 0; i < forms.length; i++ ) {\n\n const form = forms[i];\n const formAction = form.getAttribute( 'action' );\n\n // Ignore forms that POST directly to other domains; these could be things like payment forms.\n if ( formAction ) {\n // Check that the form is posting to an external URL, not a path.\n if ( formAction.indexOf( 'http://' ) == 0 || formAction.indexOf( 'https://' ) == 0 ) {\n if ( formAction.indexOf( 'http://' + window.location.hostname + '/' ) != 0 && formAction.indexOf( 'https://' + window.location.hostname + '/' ) != 0 ) {\n continue;\n }\n }\n }\n\n form.addEventListener( 'submit', function () {\n\n let bkp = prepare_timestamp_array_for_request( keypresses );\n\t\t\t\tlet bmc = prepare_timestamp_array_for_request( mouseclicks );\n\t\t\t\tlet bte = prepare_timestamp_array_for_request( touchEvents );\n\t\t\t\tlet bmm = prepare_timestamp_array_for_request( mousemoves );\n\n let input_fields = {\n\t\t\t\t\t// When did the user begin entering any input?\n\t\t\t\t\t'bib': input_begin,\n\n\t\t\t\t\t// When was the form submitted?\n\t\t\t\t\t'bfs': Date.now(),\n\n\t\t\t\t\t// How many keypresses did they make?\n\t\t\t\t\t'bkpc': keypresses.length,\n\n // How many mouseclicks did they make?\n 'bmcc': mouseclicks.length,\n\n // How many times did they move the mouse?\n\t\t\t\t\t'bmmc': mousemoves.length,\n\n // How quickly did they move the mouse, and how long between moves?\n\t\t\t\t\t'bmm' : bmm,\n\n\t\t\t\t\t// How quickly did they press a sample of keys, and how long between them?\n\t\t\t\t\t'bkp': bkp,\n\n\t\t\t\t\t// How quickly did they click the mouse, and how long between clicks?\n\t\t\t\t\t'bmc': bmc,\n\n\t\t\t\t\t// When did they press modifier keys (like Shift or Capslock)?\n\t\t\t\t\t'bmk': modifierKeys.join( ';' ),\n\n\t\t\t\t\t// When did they correct themselves? e.g., press Backspace, or use the arrow keys to move the cursor back\n\t\t\t\t\t'bck': correctionKeys.join( ';' ),\n\n\t\t\t\t\t// How many times did they scroll?\n\t\t\t\t\t'bsc': scrollCount,\n\n // How many times did they move around using a touchscreen?\n\t\t\t\t\t'btmc': touchmoveCount,\n\n\t\t\t\t\t// How quickly did they perform touch events, and how long between them?\n\t\t\t\t\t'bte': bte,\n\n\t\t\t\t\t// How many touch events were there?\n\t\t\t\t\t'btec' : touchEvents.length,\n\t\t\t\t};\n\n for ( const field_name in input_fields ) {\n\n\t\t\t\t\t// check if the input field already exists\n\t\t\t\t\tlet existing_field = this.querySelector( 'input[name=\"uhp_' + field_name + '\"]' );\n\t\t\t\t\tif ( existing_field ) {\n\t\t\t\t\t\texisting_field.value = input_fields[ field_name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet field = document.createElement( 'input' );\n\t\t\t\t\t\tfield.setAttribute( 'type', 'hidden' );\n\t\t\t\t\t\tfield.setAttribute( 'name', 'uhp_' + field_name );\n\t\t\t\t\t\tfield.setAttribute( 'value', input_fields[ field_name ] );\n\t\t\t\t\t\tthis.appendChild( field );\n\t\t\t\t\t}\n\t\t\t\t}\n\n }, supportsPassive ? { passive: true } : false );\n\n form.addEventListener( 'keydown', function ( e ) {\n\t\t\t\t// If you hold a key down, some browsers send multiple keydown events in a row.\n\t\t\t\t// Ignore any keydown events for a key that hasn't come back up yet.\n\n\t\t\t\tif ( e.key in keydowns ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst keydownTime = ( new Date() ).getTime();\n\t\t\t\tkeydowns[ e.key ] = [ keydownTime ];\n\n\t\t\t\tif ( ! input_begin ) {\n\t\t\t\t\tinput_begin = keydownTime;\n\t\t\t\t}\n\n\t\t\t\t// In some situations, we don't want to record an interval since the last keypress -- for example,\n\t\t\t\t// on the first keypress, or on a keypress after focus has changed to another element. Normally,\n\t\t\t\t// we want to record the time between the last keyup and this keydown. But if they press a\n\t\t\t\t// key while already pressing a key, we want to record the time between the two keydowns.\n\n\t\t\t\tconst lastKeyEvent = Math.max( lastKeydown, lastKeyup );\n\n\t\t\t\tif ( lastKeyEvent ) {\n\t\t\t\t\tkeydowns[ e.key ].push( keydownTime - lastKeyEvent );\n\t\t\t\t}\n\n\t\t\t\tlastKeydown = keydownTime;\n\t\t\t}, supportsPassive ? { passive: true } : false );\n\n form.addEventListener( 'keyup', function ( e ) {\n\t\t\t\tif ( ! ( e.key in keydowns ) ) {\n\t\t\t\t\t// This key was pressed before this script was loaded, or a mouseclick happened during the keypress, or...\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst keyupTime = ( new Date() ).getTime();\n\n\t\t\t\tif ( 'TEXTAREA' === e.target.nodeName || 'INPUT' === e.target.nodeName ) {\n\t\t\t\t\tif ( -1 !== modifierKeyCodes.indexOf( e.key ) ) {\n\t\t\t\t\t\tmodifierKeys.push( keypresses.length - 1 );\n\t\t\t\t\t} else if ( -1 !== correctionKeyCodes.indexOf( e.key ) ) {\n\t\t\t\t\t\tcorrectionKeys.push( keypresses.length - 1 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// ^ Don't record timings for keys like Shift or backspace, since they\n\t\t\t\t\t\t// typically get held down for longer than regular typing.\n\n\t\t\t\t\t\tconst keydownTime = keydowns[ e.key ][0];\n\t\t\t\t\t\tconst keypress = [];\n\n\t\t\t\t\t\t// Keypress duration.\n\t\t\t\t\t\tkeypress.push( keyupTime - keydownTime );\n\n\t\t\t\t\t\t// Amount of time between this keypress and the previous keypress.\n\t\t\t\t\t\tif ( keydowns[ e.key ].length > 1 ) {\n\t\t\t\t\t\t\tkeypress.push( keydowns[ e.key ][1] );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tkeypresses.push( keypress );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdelete keydowns[ e.key ];\n\n\t\t\t\tlastKeyup = keyupTime;\n\t\t\t}, supportsPassive ? { passive: true } : false );\n\n form.addEventListener( \"focusin\", function ( e ) {\n\t\t\t\tlastKeydown = null;\n\t\t\t\tlastKeyup = null;\n\t\t\t\tkeydowns = {};\n\t\t\t}, supportsPassive ? { passive: true } : false );\n\n form.addEventListener( \"focusout\", function ( e ) {\n\t\t\t\tlastKeydown = null;\n\t\t\t\tlastKeyup = null;\n\t\t\t\tkeydowns = {};\n\t\t\t}, supportsPassive ? { passive: true } : false );\n }\n\n document.addEventListener( 'mousedown', function ( e ) {\n lastMousedown = ( new Date() ).getTime();\n }, supportsPassive ? { passive: true } : false );\n\n document.addEventListener( 'mouseup', function ( e ) {\n if ( ! lastMousedown ) {\n // If the mousedown happened before this script was loaded, but the mouseup happened after...\n return;\n }\n\n const now = ( new Date() ).getTime();\n const mouseclick = [];\n\n mouseclick.push( now - lastMousedown );\n\n if ( lastMouseup ) {\n mouseclick.push( lastMousedown - lastMouseup );\n }\n\n mouseclicks.push( mouseclick );\n\n lastMouseup = now;\n\n // If the mouse has been clicked, don't record this time as an interval between keypresses.\n lastKeydown = null;\n lastKeyup = null;\n keydowns = {};\n }, supportsPassive ? { passive: true } : false );\n\n document.addEventListener( 'mousemove', function ( e ) {\n\n if ( mousemoveTimer ) {\n clearTimeout( mousemoveTimer );\n mousemoveTimer = null;\n } else {\n mousemoveStart = ( new Date() ).getTime();\n lastMousemoveX = e.offsetX;\n lastMousemoveY = e.offsetY;\n }\n\n mousemoveTimer = setTimeout( function ( theEvent, originalMousemoveStart ) {\n\t\t\t\tconst now = ( new Date() ).getTime() - 500; // To account for the timer delay.\n\n\t\t\t\tlet mousemove = [];\n\t\t\t\tmousemove.push( now - originalMousemoveStart );\n\t\t\t\tmousemove.push(\n\t\t\t\t\tMath.round(\n\t\t\t\t\t\tMath.sqrt(\n\t\t\t\t\t\t\tMath.pow( theEvent.offsetX - lastMousemoveX, 2 ) +\n\t\t\t\t\t\t\tMath.pow( theEvent.offsetY - lastMousemoveY, 2 )\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\tif ( mousemove[1] > 0 ) {\n\t\t\t\t\t// If there was no measurable distance, then it wasn't really a move.\n\t\t\t\t\tmousemoves.push( mousemove );\n\t\t\t\t}\n\n\t\t\t\tmousemoveStart = null;\n\t\t\t\tmousemoveTimer = null;\n\t\t\t}, 500, e, mousemoveStart );\n\n }, supportsPassive ? { passive: true } : false );\n\n document.addEventListener( 'touchmove', function ( e ) {\n if ( touchmoveCountTimer ) {\n clearTimeout( touchmoveCountTimer );\n }\n\n touchmoveCountTimer = setTimeout( function () {\n touchmoveCount++;\n }, 500 );\n }, supportsPassive ? { passive: true } : false );\n\n document.addEventListener( 'touchstart', function ( e ) {\n lastTouchStart = ( new Date() ).getTime();\n }, supportsPassive ? { passive: true } : false );\n\n document.addEventListener( 'touchend', function ( e ) {\n if ( ! lastTouchStart ) {\n // If the touchstart happened before this script was loaded, but the touchend happened after...\n return;\n }\n\n const now = ( new Date() ).getTime();\n const touchEvent = [];\n\n touchEvent.push( now - lastTouchStart );\n\n if ( lastTouchEnd ) {\n touchEvent.push( lastTouchStart - lastTouchEnd );\n }\n\n touchEvents.push( touchEvent );\n\n lastTouchEnd = now;\n\n // Don't record this time as an interval between keypresses.\n lastKeydown = null;\n lastKeyup = null;\n keydowns = {};\n }, supportsPassive ? { passive: true } : false );\n\n document.addEventListener( 'scroll', function ( e ) {\n if ( scrollCountTimer ) {\n clearTimeout( scrollCountTimer );\n }\n\n scrollCountTimer = setTimeout( function () {\n scrollCount++;\n }, 500 );\n }, supportsPassive ? { passive: true } : false );\n };\n\n /**\n\t * For the timestamp data that is collected, don't send more than `limit` data points in the request.\n\t * Choose a random slice and send those.\n\t */\n\tfunction prepare_timestamp_array_for_request( a, limit ) {\n\t\tif ( ! limit ) {\n\t\t\tlimit = 100;\n\t\t}\n\n\t\tvar rv = '';\n\n\t\tif ( a.length > 0 ) {\n\t\t\tvar random_starting_point = Math.max( 0, Math.floor( Math.random() * a.length - limit ) );\n\n\t\t\tfor ( var i = 0; i < limit && i < a.length; i++ ) {\n\t\t\t\trv += a[ random_starting_point + i ][0];\n\n\t\t\t\tif ( a[ random_starting_point + i ].length >= 2 ) {\n\t\t\t\t\trv += \",\" + a[ random_starting_point + i ][1];\n\t\t\t\t}\n\n\t\t\t\trv += \";\";\n\t\t\t}\n\t\t}\n\n\t\treturn rv;\n\t}\n\n if ( document.readyState !== 'loading' ) {\n\t\tinit();\n\t} else {\n\t\tdocument.addEventListener( 'DOMContentLoaded', init );\n\t}\n})();\n"],"names":["supportsPassive","opts","Object","defineProperty","get","window","addEventListener","removeEventListener","e","init","input_begin","keydowns","lastKeyup","lastKeydown","keypresses","modifierKeys","correctionKeys","lastMouseup","lastMousedown","mouseclicks","mousemoveTimer","lastMousemoveX","lastMousemoveY","mousemoveStart","mousemoves","touchmoveCountTimer","touchmoveCount","lastTouchEnd","lastTouchStart","touchEvents","scrollCountTimer","scrollCount","correctionKeyCodes","modifierKeyCodes","forms","document","querySelectorAll","i","length","form","formAction","getAttribute","indexOf","location","hostname","bkp","prepare_timestamp_array_for_request","bmc","bte","bmm","input_fields","Date","now","join","field_name","existing_field","querySelector","value","field","createElement","setAttribute","appendChild","passive","key","keydownTime","getTime","lastKeyEvent","Math","max","push","keyupTime","target","nodeName","keypress","mouseclick","clearTimeout","offsetX","offsetY","setTimeout","theEvent","originalMousemoveStart","mousemove","round","sqrt","pow","touchEvent","a","limit","rv","random_starting_point","floor","random","readyState"],"sourceRoot":""}