@s4e/jsentinel
Version:
Script integrity and clipboard tamper detection for browsers.
2 lines (1 loc) • 1.1 kB
JavaScript
import{_ as e,R as i}from"./index-hwEiSUPx.js";import{emit as t}from"./events-ffa6G8za.js";function n(n,o={},a){var r,s;const d=null!==(r=o.intervalMs)&&void 0!==r?r:1500,l=null!==(s=o.maxMisses)&&void 0!==s?s:2;let c,v=0;function m(){return e(this,void 0,void 0,function*(){if("undefined"==typeof document||"hidden"!==document.visibilityState)try{const e=yield n(),o=crypto.getRandomValues(new Uint32Array(4)).join("-"),r=Date.now(),s=e.dispatch(2,JSON.stringify({license_token:a,host:location.hostname,nonce:o,t:r})),d=JSON.parse(s);(null==d?void 0:d.ok)&&d.mac?v=0:v++,v>l&&(t({type:"alert",data:{key:"wasm-ping",src:null,inline:!1,expected:void 0,got:"",severity:"error",reason:"wasm-verification-failed",description:i["wasm-verification-failed"],meta:{ts:Date.now()}}}),v=0)}catch(e){v++,v>l&&(t({type:"alert",data:{key:"wasm-ping",src:null,inline:!1,expected:void 0,got:"",severity:"error",reason:"wasm-verification-failed",description:i["wasm-verification-failed"],meta:{ts:Date.now()}}}),v=0)}})}return c=setInterval(m,d),m(),()=>{void 0!==c&&clearInterval(c)}}export{n as startWasmPing};