interface turkInformation { /**
     * Is the experiment being loaded in preview mode on Mechanical Turk?
     */ previewMode : boolean ; /**
     * Is the experiment being loaded outside of the Mechanical Turk environment?
     */ outsideTurk : boolean ; /**
     * The HIT ID.
     */ hitId : string ; /**
     * The Assignment ID.
     */ assignmentId : string ; /**
     * The worker ID.
     */ workerId : string ; /**
     * URL for submission of the HIT.
     */ turkSubmitTo : string ; } returns export function turkInfo ( ) { const turk = { previewMode : false , outsideTurk : false , hitId : "INVALID_URL_PARAMETER" , assignmentId : "INVALID_URL_PARAMETER" , workerId : "INVALID_URL_PARAMETER" , turkSubmitTo : "INVALID_URL_PARAMETER" , } ; const param = function ( url , name ) { name = name . replace ( /[\[]/ , "\\[" ) . replace ( /[\]]/ , "\\]" ) ; const regexS = "[\\?&]" + name + "=([^&#]*)" ; const regex = new RegExp ( regexS ) ; const results = regex . exec ( url ) ; return results == null ? "" : results [ 1 ] ; } ; const src = param ( window . location . href , "assignmentId" ) ? window . location . href : document . referrer ; const keys = [ "assignmentId" , "hitId" , "workerId" , "turkSubmitTo" ] ; keys . map ( function ( key ) { turk [ key ] = unescape ( param ( src , key ) ) ; } ) ; turk . previewMode = turk . assignmentId == "ASSIGNMENT_ID_NOT_AVAILABLE" ; turk . outsideTurk = ! turk . previewMode && turk . hitId === "" && turk . assignmentId == "" && turk . workerId == "" ; return turk ; } param data returns export function submitToTurk ( data ) { const turk = turkInfo ( ) ; const assignmentId = turk . assignmentId ; const turkSubmitTo = turk . turkSubmitTo ; if ( ! assignmentId || ! turkSubmitTo ) return ; const form = document . createElement ( "form" ) ; form . method = "POST" ; form . action = turkSubmitTo + "/mturk/externalSubmit?assignmentId=" + assignmentId ; for ( const key in data ) { if ( data . hasOwnProperty ( key ) ) { const hiddenField = document . createElement ( "input" ) ; hiddenField . type = "hidden" ; hiddenField . name = key ; hiddenField . id = key ; hiddenField . value = data [ key ] ; form . appendChild ( hiddenField ) ; } } document . body . appendChild ( form ) ; form . submit ( ) ; }