@devskin/browser-sdk 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devskin.cjs.js +26 -19
- package/dist/devskin.cjs.js.map +1 -1
- package/dist/devskin.esm.js +26 -19
- package/dist/devskin.esm.js.map +1 -1
- package/dist/devskin.umd.js +26 -19
- package/dist/devskin.umd.js.map +1 -1
- package/dist/devskin.umd.min.js +1 -1
- package/dist/devskin.umd.min.js.map +1 -1
- package/dist/recorder/rrweb.d.ts.map +1 -1
- package/dist/transport.d.ts +1 -1
- package/dist/transport.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/devskin.umd.min.js
CHANGED
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
13
13
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
14
|
PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
-
***************************************************************************** */function ht(e,t,n,o){return new(n||(n=Promise))(function(t,i){function r(e){try{a(o.next(e))}catch(e){i(e)}}function s(e){try{a(o.throw(e))}catch(e){i(e)}}function a(e){var o;e.done?t(e.value):(o=e.value,o instanceof n?o:new n(function(e){e(o)})).then(r,s)}a((o=o.apply(e,[])).next())})}for(var gt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",pt="undefined"==typeof Uint8Array?[]:new Uint8Array(256),mt=0;mt<64;mt++)pt[gt.charCodeAt(mt)]=mt;const ft=new Map;const It=(e,t,n)=>{if(!e||!Ct(e,t)&&"object"!=typeof e)return;const o=function(e,t){let n=ft.get(e);return n||(n=new Map,ft.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let i=o.indexOf(e);return-1===i&&(i=o.length,o.push(e)),i};function vt(e,t,n){if(e instanceof Array)return e.map(e=>vt(e,t,n));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){const t=e.constructor.name,n=function(e){var t,n=new Uint8Array(e),o=n.length,i="";for(t=0;t<o;t+=3)i+=gt[n[t]>>2],i+=gt[(3&n[t])<<4|n[t+1]>>4],i+=gt[(15&n[t+1])<<2|n[t+2]>>6],i+=gt[63&n[t+2]];return o%3==2?i=i.substring(0,i.length-1)+"=":o%3==1&&(i=i.substring(0,i.length-2)+"=="),i}(e);return{rr_type:t,base64:n}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[vt(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[vt(e.data,t,n),e.width,e.height]}}if(Ct(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:It(e,t,n)}}return e}const yt=(e,t,n)=>[...e].map(e=>vt(e,t,n)),Ct=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter(e=>"function"==typeof t[e]);return Boolean(n.find(n=>e instanceof t[n]))};function St(e,t,n){const o=[];try{const i=we(e.HTMLCanvasElement.prototype,"getContext",function(e){return function(o,...i){return Te(this,t,n,!0)||"__context"in this||(this.__context=o),e.apply(this,[o,...i])}});o.push(i)}catch(e){console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{o.forEach(e=>e())}}function bt(e,t,n,o,i,r,s){const a=[],c=Object.getOwnPropertyNames(e);for(const r of c)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(r))try{if("function"!=typeof e[r])continue;const c=we(e,r,function(e){return function(...a){const c=e.apply(this,a);if(It(c,s,this),!Te(this.canvas,o,i,!0)){const e=yt([...a],s,this),o={type:t,property:r,args:e};n(this.canvas,o)}return c}});a.push(c)}catch(o){const i=be(e,r,{set(e){n(this.canvas,{type:t,property:r,args:[e],setter:!0})}});a.push(i)}return a}var wt=null;try{var kt="undefined"!=typeof module&&"function"==typeof module.require&&module.require("worker_threads")||"function"==typeof __non_webpack_require__&&__non_webpack_require__("worker_threads")||"function"==typeof require&&require("worker_threads");wt=kt.Worker}catch(i){}function At(e,t,n){var o=function(e){return Buffer.from(e,"base64").toString("utf8")}(e),i=o.indexOf("\n",10)+1,r=o.substring(i)+"";return function(e){return new wt(r,Object.assign({},e,{eval:!0}))}}function Tt(e,t,n){var o=function(e){return atob(e)}(e),i=o.indexOf("\n",10)+1,r=o.substring(i)+"",s=new Blob([r],{type:"application/javascript"});return URL.createObjectURL(s)}var Mt="[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0);var Et,Rt=(Et="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=",Mt?At(Et):function(e){var t;return function(n){return t=t||Tt(e),new Worker(t,n)}}(Et));class Ot{constructor(e){this.pendingCanvasMutations=new Map,this.rafStamps={latestId:0,invokeId:null},this.frozen=!1,this.locked=!1,this.processMutation=(e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)};const{sampling:t="all",win:n,blockClass:o,blockSelector:i,recordCanvas:r,dataURLOptions:s}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,r&&"all"===t&&this.initCanvasMutationObserver(n,o,i),r&&"number"==typeof t&&this.initCanvasFPSObserver(t,n,o,i,{dataURLOptions:s})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,n,o,i){const r=St(t,n,o),s=new Map,a=new Rt;a.onmessage=e=>{const{id:t}=e.data;if(s.set(t,!1),!("base64"in e.data))return;const{base64:n,type:o,width:i,height:r}=e.data;this.mutationCb({id:t,type:We["2D"],commands:[{property:"clearRect",args:[0,0,i,r]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:n}],type:o}]},0,0]}]})};const c=1e3/e;let l,d=0;const u=e=>{d&&e-d<c||(d=e,(()=>{const e=[];return t.document.querySelectorAll("canvas").forEach(t=>{Te(t,n,o,!0)||e.push(t)}),e})().forEach(e=>ht(this,0,void 0,function*(){var t;const n=this.mirror.getId(e);if(s.get(n))return;if(s.set(n,!0),["webgl","webgl2"].includes(e.__context)){const n=e.getContext(e.__context);!1===(null===(t=null==n?void 0:n.getContextAttributes())||void 0===t?void 0:t.preserveDrawingBuffer)&&(null==n||n.clear(n.COLOR_BUFFER_BIT))}const o=yield createImageBitmap(e);a.postMessage({id:n,bitmap:o,width:e.width,height:e.height,dataURLOptions:i.dataURLOptions},[o])}))),l=requestAnimationFrame(u)};l=requestAnimationFrame(u),this.resetObservers=()=>{r(),cancelAnimationFrame(l)}}initCanvasMutationObserver(e,t,n){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=St(e,t,n),i=function(e,t,n,o){const i=[],r=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const s of r)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[s])continue;const r=we(t.CanvasRenderingContext2D.prototype,s,function(i){return function(...r){return Te(this.canvas,n,o,!0)||setTimeout(()=>{const n=yt([...r],t,this);e(this.canvas,{type:We["2D"],property:s,args:n})},0),i.apply(this,r)}});i.push(r)}catch(n){const o=be(t.CanvasRenderingContext2D.prototype,s,{set(t){e(this.canvas,{type:We["2D"],property:s,args:[t],setter:!0})}});i.push(o)}return()=>{i.forEach(e=>e())}}(this.processMutation.bind(this),e,t,n),r=function(e,t,n,o){const i=[];return i.push(...bt(t.WebGLRenderingContext.prototype,We.WebGL,e,n,o,0,t)),void 0!==t.WebGL2RenderingContext&&i.push(...bt(t.WebGL2RenderingContext.prototype,We.WebGL2,e,n,o,0,t)),()=>{i.forEach(e=>e())}}(this.processMutation.bind(this),e,t,n,this.mirror);this.resetObservers=()=>{o(),i(),r()}}startPendingCanvasMutationFlusher(){requestAnimationFrame(()=>this.flushPendingCanvasMutations())}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)}),requestAnimationFrame(()=>this.flushPendingCanvasMutations())}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const o=n.map(e=>{const t=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(o=Object.getOwnPropertySymbols(e);i<o.length;i++)t.indexOf(o[i])<0&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(n[o[i]]=e[o[i]])}return n}(e,["type"]);return t}),{type:i}=n[0];this.mutationCb({id:t,type:i,commands:o}),this.pendingCanvasMutations.delete(e)}}class Dt{constructor(e){this.trackedLinkElements=new WeakSet,this.styleMirror=new Fe,this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},o=[];for(const t of e){let e;if(this.styleMirror.has(t))e=this.styleMirror.getId(t);else{e=this.styleMirror.add(t);const n=Array.from(t.rules||CSSRule);o.push({styleId:e,rules:n.map((e,t)=>({rule:q(e),index:t}))})}n.styleIds.push(e)}o.length>0&&(n.styles=o),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}function Nt(e){return Object.assign(Object.assign({},e),{timestamp:Date.now()})}let Ft,Lt,xt,Bt=!1;const Wt=new P;function Vt(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:o,blockClass:i="rr-block",blockSelector:r=null,ignoreClass:s="rr-ignore",maskTextClass:a="rr-mask",maskTextSelector:c=null,inlineStylesheet:l=!0,maskAllInputs:d,maskInputOptions:u,slimDOMOptions:h,maskInputFn:g,maskTextFn:p,hooks:m,packFn:f,sampling:I={},dataURLOptions:v={},mousemoveWait:y,recordCanvas:C=!1,recordCrossOriginIframes:S=!1,userTriggeredOnInput:b=!1,collectFonts:w=!1,inlineImages:k=!1,plugins:A,keepIframeSrcFn:T=()=>!1,ignoreCSSAttributes:M=new Set([])}=e,E=!S||window.parent===window;let R=!1;if(!E)try{window.parent.document,R=!1}catch(e){R=!0}if(E&&!t)throw new Error("emit function is required");void 0!==y&&void 0===I.mousemove&&(I.mousemove=y),Wt.reset();const O=!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:void 0!==u?u:{password:!0},D=!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===h,headMetaDescKeywords:"all"===h}:h||{};let N;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach),Node.prototype.contains||(Node.prototype.contains=(...e)=>{let t=e[0];if(!(0 in e))throw new TypeError("1 argument is required");do{if(this===t)return!0}while(t=t&&t.parentNode);return!1})}();let F=0;const L=e=>{for(const t of A||[])t.eventProcessor&&(e=t.eventProcessor(e));return f&&(e=f(e)),e};Ft=(e,i)=>{var r;if(!(null===(r=je[0])||void 0===r?void 0:r.isFrozen())||e.type===Le.FullSnapshot||e.type===Le.IncrementalSnapshot&&e.data.source===xe.Mutation||je.forEach(e=>e.unfreeze()),E)null==t||t(L(e),i);else if(R){const t={type:"rrweb",event:L(e),isCheckout:i};window.parent.postMessage(t,"*")}if(e.type===Le.FullSnapshot)N=e,F=0;else if(e.type===Le.IncrementalSnapshot){if(e.data.source===xe.Mutation&&e.data.isAttachIframe)return;F++;const t=o&&F>=o,i=n&&e.timestamp-N.timestamp>n;(t||i)&&Lt(!0)}};const x=e=>{Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.Mutation},e)}))},B=e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.Scroll},e)})),W=e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.CanvasMutation},e)})),V=new Dt({mutationCb:x,adoptedStyleSheetCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.AdoptedStyleSheet},e)}))}),G=new dt({mirror:Wt,mutationCb:x,stylesheetManager:V,recordCrossOriginIframes:S,wrappedEmit:Ft});for(const e of A||[])e.getMirror&&e.getMirror({nodeMirror:Wt,crossOriginIframeMirror:G.crossOriginIframeMirror,crossOriginIframeStyleMirror:G.crossOriginIframeStyleMirror});xt=new Ot({recordCanvas:C,mutationCb:W,win:window,blockClass:i,blockSelector:r,mirror:Wt,sampling:I.canvas,dataURLOptions:v});const Z=new ut({mutationCb:x,scrollCb:B,bypassOptions:{blockClass:i,blockSelector:r,maskTextClass:a,maskTextSelector:c,inlineStylesheet:l,maskInputOptions:O,dataURLOptions:v,maskTextFn:p,maskInputFn:g,recordCanvas:C,inlineImages:k,sampling:I,slimDOMOptions:D,iframeManager:G,stylesheetManager:V,canvasManager:xt,keepIframeSrcFn:T},mirror:Wt});Lt=(e=!1)=>{var t,n,o,s,d,u;Ft(Nt({type:Le.Meta,data:{href:window.location.href,width:Ae(),height:ke()}}),e),V.reset(),je.forEach(e=>e.lock());const h=function(e,t){var n=t||{},o=n.mirror,i=void 0===o?new P:o,r=n.blockClass,s=void 0===r?"rr-block":r,a=n.blockSelector,c=void 0===a?null:a,l=n.maskTextClass,d=void 0===l?"rr-mask":l,u=n.maskTextSelector,h=void 0===u?null:u,g=n.inlineStylesheet,p=void 0===g||g,m=n.inlineImages,f=void 0!==m&&m,I=n.recordCanvas,v=void 0!==I&&I,y=n.maskAllInputs,C=void 0!==y&&y,S=n.maskTextFn,b=n.maskInputFn,w=n.slimDOM,k=void 0!==w&&w,A=n.dataURLOptions,T=n.preserveWhiteSpace,M=n.onSerialize,E=n.onIframeLoad,R=n.iframeLoadTimeout,O=n.onStylesheetLoad,D=n.stylesheetLoadTimeout,N=n.keepIframeSrcFn;return Ie(e,{doc:e,mirror:i,blockClass:s,blockSelector:c,maskTextClass:d,maskTextSelector:h,skipChild:!1,inlineStylesheet:p,maskInputOptions:!0===C?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:!1===C?{password:!0}:C,maskTextFn:S,maskInputFn:b,slimDOMOptions:!0===k||"all"===k?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===k,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===k?{}:k,dataURLOptions:A,inlineImages:f,recordCanvas:v,preserveWhiteSpace:T,onSerialize:M,onIframeLoad:E,iframeLoadTimeout:R,onStylesheetLoad:O,stylesheetLoadTimeout:D,keepIframeSrcFn:void 0===N?function(){return!1}:N,newlyAddedElement:!1})}(document,{mirror:Wt,blockClass:i,blockSelector:r,maskTextClass:a,maskTextSelector:c,inlineStylesheet:l,maskAllInputs:O,maskTextFn:p,slimDOM:D,dataURLOptions:v,recordCanvas:C,inlineImages:k,onSerialize:e=>{Oe(e,Wt)&&G.addIframe(e),De(e,Wt)&&V.trackLinkElement(e),Ne(e)&&Z.addShadowRoot(e.shadowRoot,document)},onIframeLoad:(e,t)=>{G.attachIframe(e,t),Z.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{V.attachLinkElement(e,t)},keepIframeSrcFn:T});if(!h)return console.warn("Failed to snapshot the document");Ft(Nt({type:Le.FullSnapshot,data:{node:h,initialOffset:{left:void 0!==window.pageXOffset?window.pageXOffset:(null===document||void 0===document?void 0:document.documentElement.scrollLeft)||(null===(n=null===(t=null===document||void 0===document?void 0:document.body)||void 0===t?void 0:t.parentElement)||void 0===n?void 0:n.scrollLeft)||(null===(o=null===document||void 0===document?void 0:document.body)||void 0===o?void 0:o.scrollLeft)||0,top:void 0!==window.pageYOffset?window.pageYOffset:(null===document||void 0===document?void 0:document.documentElement.scrollTop)||(null===(d=null===(s=null===document||void 0===document?void 0:document.body)||void 0===s?void 0:s.parentElement)||void 0===d?void 0:d.scrollTop)||(null===(u=null===document||void 0===document?void 0:document.body)||void 0===u?void 0:u.scrollTop)||0}}})),je.forEach(e=>e.unlock()),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&V.adoptStyleSheets(document.adoptedStyleSheets,Wt.getId(document))};try{const e=[];e.push(ve("DOMContentLoaded",()=>{Ft(Nt({type:Le.DomContentLoaded,data:{}}))}));const t=e=>{var t;return ct({mutationCb:x,mousemoveCb:(e,t)=>Ft(Nt({type:Le.IncrementalSnapshot,data:{source:t,positions:e}})),mouseInteractionCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.MouseInteraction},e)})),scrollCb:B,viewportResizeCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.ViewportResize},e)})),inputCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.Input},e)})),mediaInteractionCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.MediaInteraction},e)})),styleSheetRuleCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.StyleSheetRule},e)})),styleDeclarationCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.StyleDeclaration},e)})),canvasMutationCb:W,fontCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.Font},e)})),selectionCb:e=>{Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.Selection},e)}))},blockClass:i,ignoreClass:s,maskTextClass:a,maskTextSelector:c,maskInputOptions:O,inlineStylesheet:l,sampling:I,recordCanvas:C,inlineImages:k,userTriggeredOnInput:b,collectFonts:w,doc:e,maskInputFn:g,maskTextFn:p,keepIframeSrcFn:T,blockSelector:r,slimDOMOptions:D,dataURLOptions:v,mirror:Wt,iframeManager:G,stylesheetManager:V,shadowDomManager:Z,canvasManager:xt,ignoreCSSAttributes:M,plugins:(null===(t=null==A?void 0:A.filter(e=>e.observer))||void 0===t?void 0:t.map(e=>({observer:e.observer,options:e.options,callback:t=>Ft(Nt({type:Le.Plugin,data:{plugin:e.name,payload:t}}))})))||[]},m)};G.addLoadListener(n=>{e.push(t(n.contentDocument))});const n=()=>{Lt(),e.push(t(document)),Bt=!0};return"interactive"===document.readyState||"complete"===document.readyState?n():e.push(ve("load",()=>{Ft(Nt({type:Le.Load,data:{}})),n()},window)),()=>{e.forEach(e=>e()),Bt=!1}}catch(e){console.warn(e)}}Vt.addCustomEvent=(e,t)=>{if(!Bt)throw new Error("please add custom event after start recording");Ft(Nt({type:Le.Custom,data:{tag:e,payload:t}}))},Vt.freezePage=()=>{je.forEach(e=>e.freeze())},Vt.takeFullSnapshot=e=>{if(!Bt)throw new Error("please take full snapshot after start recording");Lt(e)},Vt.mirror=Wt;class Gt{constructor(e,t,n){this.stopFn=null,this.events=[],this.onEventsReady=null,this.flushInterval=null,this.hasFullSnapshot=!1,this.sessionId=e,this.config=t,this.onEventsReady=n}start(){if(this.config.enabled)if(this.stopFn)console.warn("[RRWeb] Recording already started");else try{console.log("[RRWeb] Starting session recording:",this.sessionId),console.log("[RRWeb] SDK Version: 1.0.7"),this.stopFn=Vt({emit:e=>{console.log("[RRWeb] Event emitted:",{type:e.type,timestamp:e.timestamp}),this.events.push(e),2===e.type?(this.hasFullSnapshot=!0,console.log("[RRWeb] ✅ FullSnapshot captured! Sending immediately..."),this.flush()):this.hasFullSnapshot&&this.events.length>=50&&this.flush()},sampling:{mousemove:void 0===this.config.sampleRate||Math.floor(100/this.config.sampleRate),mouseInteraction:!0,scroll:150,media:800,input:"last"},checkoutEveryNms:this.config.checkoutEveryNms||3e5,checkoutEveryNth:this.config.checkoutEveryNth||200,blockClass:this.config.blockClass||"rr-block",ignoreClass:this.config.ignoreClass||"rr-ignore",maskAllInputs:void 0===this.config.maskAllInputs||this.config.maskAllInputs,maskInputOptions:this.config.maskInputOptions||{password:!0,email:!0,tel:!0},maskTextClass:"rr-mask",inlineStylesheet:void 0===this.config.inlineStylesheet||this.config.inlineStylesheet,recordCanvas:this.config.recordCanvas||!1,collectFonts:void 0===this.config.collectFonts||this.config.collectFonts,recordCrossOriginIframes:!1}),this.flushInterval=window.setInterval(()=>{this.hasFullSnapshot&&this.events.length>0&&this.flush()},1e4),console.log("[RRWeb] Recording started successfully")}catch(e){console.error("[RRWeb] Failed to start recording:",e)}else console.log("[RRWeb] Recording disabled in config")}stop(){this.stopFn&&(this.stopFn(),this.stopFn=null,console.log("[RRWeb] Recording stopped")),this.flushInterval&&(clearInterval(this.flushInterval),this.flushInterval=null),this.events.length>0&&(this.hasFullSnapshot||console.warn("[RRWeb] Flushing events without FullSnapshot - recording may not replay correctly"),this.flush())}flush(){if(0===this.events.length)return;const e=[...this.events];this.events=[];const t={};e.forEach(e=>{t[e.type]=(t[e.type]||0)+1}),console.log("[RRWeb] Flushing events:",t),this.onEventsReady&&this.onEventsReady(e)}getEventCount(){return this.events.length}isRecording(){return null!==this.stopFn}}class Zt{constructor(e){this.config=e,this.queue=[],this.flushInterval=null,this.maxQueueSize=50,this.flushIntervalMs=5e3,this.apiUrl=e.apiUrl||"https://api.devskin.com",this.startPeriodicFlush(),"undefined"!=typeof window&&(window.addEventListener("beforeunload",()=>{this.flush()}),window.addEventListener("visibilitychange",()=>{document.hidden&&this.flush(!0)}))}sendEvent(e){this.enqueue("event",e)}identifyUser(e){this.sendToBackend("/v1/analytics/identify",e)}startSession(e){this.sendToBackend("/v1/analytics/session",e)}sendError(e){this.enqueue("error",e)}sendNetworkRequest(e){this.enqueue("network",e)}sendPerformanceMetric(e){this.enqueue("performance",e)}sendRecordingEvents(e,t){const n=t.reduce((e,t)=>(e[t.type]=(e[t.type]||0)+1,e),{});console.log(`[DevSkin SDK] Sending ${t.length} recording events:`,n),console.log("[DevSkin SDK] First 3 events:",t.slice(0,3).map(e=>({type:e.type,timestamp:e.timestamp}))),this.sendToBackend("/v1/rum/recordings",{session_id:e,events:t,timestamp:(new Date).toISOString()})}sendHeatmapData(e){this.enqueue("heatmap",e)}flush(e=!1){if(0===this.queue.length)return;const t=[...this.queue];this.queue=[];const n={};t.forEach(e=>{n[e.type]||(n[e.type]=[]),n[e.type].push(e.data)}),Object.entries(n).forEach(([t,n])=>{const o=this.getEndpointForType(t);this.sendToBackend(o,{[t+"s"]:n},e)}),this.config.debug&&console.log(`[DevSkin] Flushed ${t.length} items to backend`)}enqueue(e,t){this.queue.push({type:e,data:t,timestamp:Date.now()}),this.queue.length>=this.maxQueueSize&&this.flush()}startPeriodicFlush(){this.flushInterval=setInterval(()=>{this.flush()},this.flushIntervalMs)}getEndpointForType(e){switch(e){case"event":default:return"/v1/analytics/events";case"error":return"/v1/analytics/errors";case"network":return"/v1/analytics/network";case"performance":return"/v1/analytics/performance";case"heatmap":return"/v1/analytics/heatmap"}}sendToBackend(e,n){return t(this,arguments,void 0,function*(e,t,n=!1){const o=`${this.apiUrl}${e}`,i=Object.assign(Object.assign({},t),{apiKey:this.config.apiKey,appId:this.config.appId,environment:this.config.environment,release:this.config.release});if(this.config.beforeSend){if(!this.config.beforeSend(i))return}if(n&&navigator.sendBeacon){const e=new Blob([JSON.stringify(i)],{type:"application/json"});return void navigator.sendBeacon(o,e)}try{const t=yield fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`},body:JSON.stringify(i),keepalive:!0});if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);this.config.debug&&console.log("[DevSkin] Data sent successfully:",e)}catch(e){this.config.debug&&console.error("[DevSkin] Failed to send data:",e)}})}destroy(){this.flushInterval&&(clearInterval(this.flushInterval),this.flushInterval=null),this.flush()}}return new class{constructor(){this.config=null,this.transport=null,this.sessionId=null,this.userId=null,this.anonymousId=null,this.sessionStartTime=0,this.initialized=!1,this.deviceCollector=null,this.locationCollector=null,this.browserCollector=null,this.performanceCollector=null,this.errorCollector=null,this.networkCollector=null,this.heatmapCollector=null,this.rrwebRecorder=null}init(t){var i,r;this.initialized?console.warn("[DevSkin] SDK already initialized"):(this.config=Object.assign({debug:!1,captureWebVitals:!0,captureNetworkRequests:!0,captureErrors:!0,captureUserAgent:!0,captureLocation:!0,captureDevice:!0},t),this.config.debug&&console.log("[DevSkin] Initializing SDK with config:",this.config),this.transport=new Zt(this.config),this.anonymousId=this.getOrCreateAnonymousId(),this.deviceCollector=new e(this.config),this.locationCollector=new n(this.config),this.browserCollector=new o(this.config),this.startSession(),this.config.captureWebVitals&&(this.performanceCollector=new U(this.config,this.transport),this.performanceCollector.start()),this.config.captureErrors&&(this.errorCollector=new K(this.config,this.transport),this.errorCollector.start()),this.config.captureNetworkRequests&&(this.networkCollector=new _(this.config,this.transport),this.networkCollector.start()),(null===(i=this.config.heatmapOptions)||void 0===i?void 0:i.enabled)&&(this.heatmapCollector=new z(this.config,this.transport),this.heatmapCollector.start()),(null===(r=this.config.sessionRecording)||void 0===r?void 0:r.enabled)&&(this.rrwebRecorder=new Gt(this.sessionId,{enabled:!0,sampleRate:this.config.sessionRecording.sampling||.5,blockClass:"rr-block",ignoreClass:this.config.sessionRecording.ignoreClass||"rr-ignore",maskAllInputs:void 0===this.config.sessionRecording.maskAllInputs||this.config.sessionRecording.maskAllInputs,maskInputOptions:{password:!0,email:!0,tel:!0},recordCanvas:this.config.sessionRecording.recordCanvas||!1,collectFonts:!0,inlineStylesheet:!0,checkoutEveryNms:3e5,checkoutEveryNth:200},e=>{var t;null===(t=this.transport)||void 0===t||t.sendRecordingEvents(this.sessionId,e)}),this.rrwebRecorder.start(),this.config.debug&&console.log("[DevSkin] RRWeb recording started for session:",this.sessionId)),this.trackPageView(),this.setupVisibilityTracking(),this.setupUnloadTracking(),this.initialized=!0,this.config.debug&&console.log("[DevSkin] SDK initialized successfully"))}track(e,t){var n,o;if(!this.initialized)return void console.warn("[DevSkin] SDK not initialized. Call init() first.");const i={event_name:e,event_type:"track",timestamp:(new Date).toISOString(),session_id:this.sessionId,user_id:this.userId||void 0,anonymous_id:this.anonymousId||void 0,properties:Object.assign(Object.assign({},t),this.getContextData()),page_url:window.location.href,page_title:document.title};null===(n=this.transport)||void 0===n||n.sendEvent(i),(null===(o=this.config)||void 0===o?void 0:o.debug)&&console.log("[DevSkin] Event tracked:",i)}trackPageView(e){this.track("page_view",Object.assign({path:window.location.pathname,search:window.location.search,hash:window.location.hash,referrer:document.referrer},e))}identify(e,t){var n,o;if(!this.initialized)return void console.warn("[DevSkin] SDK not initialized. Call init() first.");this.userId=e;const i={user_id:e,anonymous_id:this.anonymousId||void 0,traits:Object.assign(Object.assign({},t),this.getContextData()),session_id:this.sessionId,timestamp:(new Date).toISOString()};null===(n=this.transport)||void 0===n||n.identifyUser(i),(null===(o=this.config)||void 0===o?void 0:o.debug)&&console.log("[DevSkin] User identified:",i)}captureError(e,t){var n;this.initialized?null===(n=this.errorCollector)||void 0===n||n.captureError(e,Object.assign(Object.assign({},t),{session_id:this.sessionId,user_id:this.userId||void 0})):console.warn("[DevSkin] SDK not initialized. Call init() first.")}addBreadcrumb(e){var t;this.initialized&&(null===(t=this.errorCollector)||void 0===t||t.addBreadcrumb(e))}startRecording(){var e;null===(e=this.rrwebRecorder)||void 0===e||e.start()}stopRecording(){var e;null===(e=this.rrwebRecorder)||void 0===e||e.stop()}optOut(){localStorage.setItem("devskin_opt_out","true"),this.initialized=!1}optIn(){localStorage.removeItem("devskin_opt_out")}startSession(){var e;this.sessionId=this.generateId(),this.sessionStartTime=Date.now();const t=Object.assign({session_id:this.sessionId,user_id:this.userId||void 0,anonymous_id:this.anonymousId,started_at:(new Date).toISOString()},this.getContextData());null===(e=this.transport)||void 0===e||e.startSession(t)}getContextData(){const e={};return this.deviceCollector&&(e.device=this.deviceCollector.collect()),this.browserCollector&&(e.browser=this.browserCollector.collect()),this.locationCollector&&(e.location=this.locationCollector.collect()),e}getOrCreateAnonymousId(){let e=localStorage.getItem("devskin_anonymous_id");return e||(e=this.generateId(),localStorage.setItem("devskin_anonymous_id",e)),e}generateId(){return`${Date.now()}-${Math.random().toString(36).substr(2,9)}`}setupVisibilityTracking(){document.addEventListener("visibilitychange",()=>{document.hidden?this.track("page_hidden"):this.track("page_visible")})}setupUnloadTracking(){window.addEventListener("beforeunload",()=>{var e,t;if(this.track("page_unload"),this.sessionId&&this.sessionStartTime){const t=new Date,n=Date.now()-this.sessionStartTime;null===(e=this.transport)||void 0===e||e.startSession(Object.assign({session_id:this.sessionId,user_id:this.userId||void 0,anonymous_id:this.anonymousId,ended_at:t.toISOString(),duration_ms:n},this.getContextData()))}null===(t=this.transport)||void 0===t||t.flush(!0)})}}});
|
|
15
|
+
***************************************************************************** */function ht(e,t,n,o){return new(n||(n=Promise))(function(t,i){function r(e){try{a(o.next(e))}catch(e){i(e)}}function s(e){try{a(o.throw(e))}catch(e){i(e)}}function a(e){var o;e.done?t(e.value):(o=e.value,o instanceof n?o:new n(function(e){e(o)})).then(r,s)}a((o=o.apply(e,[])).next())})}for(var gt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",pt="undefined"==typeof Uint8Array?[]:new Uint8Array(256),mt=0;mt<64;mt++)pt[gt.charCodeAt(mt)]=mt;const ft=new Map;const It=(e,t,n)=>{if(!e||!Ct(e,t)&&"object"!=typeof e)return;const o=function(e,t){let n=ft.get(e);return n||(n=new Map,ft.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let i=o.indexOf(e);return-1===i&&(i=o.length,o.push(e)),i};function vt(e,t,n){if(e instanceof Array)return e.map(e=>vt(e,t,n));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){const t=e.constructor.name,n=function(e){var t,n=new Uint8Array(e),o=n.length,i="";for(t=0;t<o;t+=3)i+=gt[n[t]>>2],i+=gt[(3&n[t])<<4|n[t+1]>>4],i+=gt[(15&n[t+1])<<2|n[t+2]>>6],i+=gt[63&n[t+2]];return o%3==2?i=i.substring(0,i.length-1)+"=":o%3==1&&(i=i.substring(0,i.length-2)+"=="),i}(e);return{rr_type:t,base64:n}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[vt(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[vt(e.data,t,n),e.width,e.height]}}if(Ct(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:It(e,t,n)}}return e}const yt=(e,t,n)=>[...e].map(e=>vt(e,t,n)),Ct=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter(e=>"function"==typeof t[e]);return Boolean(n.find(n=>e instanceof t[n]))};function St(e,t,n){const o=[];try{const i=we(e.HTMLCanvasElement.prototype,"getContext",function(e){return function(o,...i){return Te(this,t,n,!0)||"__context"in this||(this.__context=o),e.apply(this,[o,...i])}});o.push(i)}catch(e){console.error("failed to patch HTMLCanvasElement.prototype.getContext")}return()=>{o.forEach(e=>e())}}function bt(e,t,n,o,i,r,s){const a=[],c=Object.getOwnPropertyNames(e);for(const r of c)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(r))try{if("function"!=typeof e[r])continue;const c=we(e,r,function(e){return function(...a){const c=e.apply(this,a);if(It(c,s,this),!Te(this.canvas,o,i,!0)){const e=yt([...a],s,this),o={type:t,property:r,args:e};n(this.canvas,o)}return c}});a.push(c)}catch(o){const i=be(e,r,{set(e){n(this.canvas,{type:t,property:r,args:[e],setter:!0})}});a.push(i)}return a}var wt=null;try{var kt="undefined"!=typeof module&&"function"==typeof module.require&&module.require("worker_threads")||"function"==typeof __non_webpack_require__&&__non_webpack_require__("worker_threads")||"function"==typeof require&&require("worker_threads");wt=kt.Worker}catch(i){}function At(e,t,n){var o=function(e){return Buffer.from(e,"base64").toString("utf8")}(e),i=o.indexOf("\n",10)+1,r=o.substring(i)+"";return function(e){return new wt(r,Object.assign({},e,{eval:!0}))}}function Tt(e,t,n){var o=function(e){return atob(e)}(e),i=o.indexOf("\n",10)+1,r=o.substring(i)+"",s=new Blob([r],{type:"application/javascript"});return URL.createObjectURL(s)}var Mt="[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0);var Et,Rt=(Et="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=",Mt?At(Et):function(e){var t;return function(n){return t=t||Tt(e),new Worker(t,n)}}(Et));class Ot{constructor(e){this.pendingCanvasMutations=new Map,this.rafStamps={latestId:0,invokeId:null},this.frozen=!1,this.locked=!1,this.processMutation=(e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)};const{sampling:t="all",win:n,blockClass:o,blockSelector:i,recordCanvas:r,dataURLOptions:s}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,r&&"all"===t&&this.initCanvasMutationObserver(n,o,i),r&&"number"==typeof t&&this.initCanvasFPSObserver(t,n,o,i,{dataURLOptions:s})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,n,o,i){const r=St(t,n,o),s=new Map,a=new Rt;a.onmessage=e=>{const{id:t}=e.data;if(s.set(t,!1),!("base64"in e.data))return;const{base64:n,type:o,width:i,height:r}=e.data;this.mutationCb({id:t,type:We["2D"],commands:[{property:"clearRect",args:[0,0,i,r]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:n}],type:o}]},0,0]}]})};const c=1e3/e;let l,d=0;const u=e=>{d&&e-d<c||(d=e,(()=>{const e=[];return t.document.querySelectorAll("canvas").forEach(t=>{Te(t,n,o,!0)||e.push(t)}),e})().forEach(e=>ht(this,0,void 0,function*(){var t;const n=this.mirror.getId(e);if(s.get(n))return;if(s.set(n,!0),["webgl","webgl2"].includes(e.__context)){const n=e.getContext(e.__context);!1===(null===(t=null==n?void 0:n.getContextAttributes())||void 0===t?void 0:t.preserveDrawingBuffer)&&(null==n||n.clear(n.COLOR_BUFFER_BIT))}const o=yield createImageBitmap(e);a.postMessage({id:n,bitmap:o,width:e.width,height:e.height,dataURLOptions:i.dataURLOptions},[o])}))),l=requestAnimationFrame(u)};l=requestAnimationFrame(u),this.resetObservers=()=>{r(),cancelAnimationFrame(l)}}initCanvasMutationObserver(e,t,n){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=St(e,t,n),i=function(e,t,n,o){const i=[],r=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const s of r)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[s])continue;const r=we(t.CanvasRenderingContext2D.prototype,s,function(i){return function(...r){return Te(this.canvas,n,o,!0)||setTimeout(()=>{const n=yt([...r],t,this);e(this.canvas,{type:We["2D"],property:s,args:n})},0),i.apply(this,r)}});i.push(r)}catch(n){const o=be(t.CanvasRenderingContext2D.prototype,s,{set(t){e(this.canvas,{type:We["2D"],property:s,args:[t],setter:!0})}});i.push(o)}return()=>{i.forEach(e=>e())}}(this.processMutation.bind(this),e,t,n),r=function(e,t,n,o){const i=[];return i.push(...bt(t.WebGLRenderingContext.prototype,We.WebGL,e,n,o,0,t)),void 0!==t.WebGL2RenderingContext&&i.push(...bt(t.WebGL2RenderingContext.prototype,We.WebGL2,e,n,o,0,t)),()=>{i.forEach(e=>e())}}(this.processMutation.bind(this),e,t,n,this.mirror);this.resetObservers=()=>{o(),i(),r()}}startPendingCanvasMutationFlusher(){requestAnimationFrame(()=>this.flushPendingCanvasMutations())}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)}),requestAnimationFrame(()=>this.flushPendingCanvasMutations())}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const o=n.map(e=>{const t=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(o=Object.getOwnPropertySymbols(e);i<o.length;i++)t.indexOf(o[i])<0&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(n[o[i]]=e[o[i]])}return n}(e,["type"]);return t}),{type:i}=n[0];this.mutationCb({id:t,type:i,commands:o}),this.pendingCanvasMutations.delete(e)}}class Dt{constructor(e){this.trackedLinkElements=new WeakSet,this.styleMirror=new Fe,this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},o=[];for(const t of e){let e;if(this.styleMirror.has(t))e=this.styleMirror.getId(t);else{e=this.styleMirror.add(t);const n=Array.from(t.rules||CSSRule);o.push({styleId:e,rules:n.map((e,t)=>({rule:q(e),index:t}))})}n.styleIds.push(e)}o.length>0&&(n.styles=o),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}function Nt(e){return Object.assign(Object.assign({},e),{timestamp:Date.now()})}let Ft,Lt,xt,Bt=!1;const Wt=new P;function Vt(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:o,blockClass:i="rr-block",blockSelector:r=null,ignoreClass:s="rr-ignore",maskTextClass:a="rr-mask",maskTextSelector:c=null,inlineStylesheet:l=!0,maskAllInputs:d,maskInputOptions:u,slimDOMOptions:h,maskInputFn:g,maskTextFn:p,hooks:m,packFn:f,sampling:I={},dataURLOptions:v={},mousemoveWait:y,recordCanvas:C=!1,recordCrossOriginIframes:S=!1,userTriggeredOnInput:b=!1,collectFonts:w=!1,inlineImages:k=!1,plugins:A,keepIframeSrcFn:T=()=>!1,ignoreCSSAttributes:M=new Set([])}=e,E=!S||window.parent===window;let R=!1;if(!E)try{window.parent.document,R=!1}catch(e){R=!0}if(E&&!t)throw new Error("emit function is required");void 0!==y&&void 0===I.mousemove&&(I.mousemove=y),Wt.reset();const O=!0===d?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:void 0!==u?u:{password:!0},D=!0===h||"all"===h?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===h,headMetaDescKeywords:"all"===h}:h||{};let N;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach),Node.prototype.contains||(Node.prototype.contains=(...e)=>{let t=e[0];if(!(0 in e))throw new TypeError("1 argument is required");do{if(this===t)return!0}while(t=t&&t.parentNode);return!1})}();let F=0;const L=e=>{for(const t of A||[])t.eventProcessor&&(e=t.eventProcessor(e));return f&&(e=f(e)),e};Ft=(e,i)=>{var r;if(!(null===(r=je[0])||void 0===r?void 0:r.isFrozen())||e.type===Le.FullSnapshot||e.type===Le.IncrementalSnapshot&&e.data.source===xe.Mutation||je.forEach(e=>e.unfreeze()),E)null==t||t(L(e),i);else if(R){const t={type:"rrweb",event:L(e),isCheckout:i};window.parent.postMessage(t,"*")}if(e.type===Le.FullSnapshot)N=e,F=0;else if(e.type===Le.IncrementalSnapshot){if(e.data.source===xe.Mutation&&e.data.isAttachIframe)return;F++;const t=o&&F>=o,i=n&&e.timestamp-N.timestamp>n;(t||i)&&Lt(!0)}};const x=e=>{Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.Mutation},e)}))},B=e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.Scroll},e)})),W=e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.CanvasMutation},e)})),V=new Dt({mutationCb:x,adoptedStyleSheetCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.AdoptedStyleSheet},e)}))}),G=new dt({mirror:Wt,mutationCb:x,stylesheetManager:V,recordCrossOriginIframes:S,wrappedEmit:Ft});for(const e of A||[])e.getMirror&&e.getMirror({nodeMirror:Wt,crossOriginIframeMirror:G.crossOriginIframeMirror,crossOriginIframeStyleMirror:G.crossOriginIframeStyleMirror});xt=new Ot({recordCanvas:C,mutationCb:W,win:window,blockClass:i,blockSelector:r,mirror:Wt,sampling:I.canvas,dataURLOptions:v});const Z=new ut({mutationCb:x,scrollCb:B,bypassOptions:{blockClass:i,blockSelector:r,maskTextClass:a,maskTextSelector:c,inlineStylesheet:l,maskInputOptions:O,dataURLOptions:v,maskTextFn:p,maskInputFn:g,recordCanvas:C,inlineImages:k,sampling:I,slimDOMOptions:D,iframeManager:G,stylesheetManager:V,canvasManager:xt,keepIframeSrcFn:T},mirror:Wt});Lt=(e=!1)=>{var t,n,o,s,d,u;Ft(Nt({type:Le.Meta,data:{href:window.location.href,width:Ae(),height:ke()}}),e),V.reset(),je.forEach(e=>e.lock());const h=function(e,t){var n=t||{},o=n.mirror,i=void 0===o?new P:o,r=n.blockClass,s=void 0===r?"rr-block":r,a=n.blockSelector,c=void 0===a?null:a,l=n.maskTextClass,d=void 0===l?"rr-mask":l,u=n.maskTextSelector,h=void 0===u?null:u,g=n.inlineStylesheet,p=void 0===g||g,m=n.inlineImages,f=void 0!==m&&m,I=n.recordCanvas,v=void 0!==I&&I,y=n.maskAllInputs,C=void 0!==y&&y,S=n.maskTextFn,b=n.maskInputFn,w=n.slimDOM,k=void 0!==w&&w,A=n.dataURLOptions,T=n.preserveWhiteSpace,M=n.onSerialize,E=n.onIframeLoad,R=n.iframeLoadTimeout,O=n.onStylesheetLoad,D=n.stylesheetLoadTimeout,N=n.keepIframeSrcFn;return Ie(e,{doc:e,mirror:i,blockClass:s,blockSelector:c,maskTextClass:d,maskTextSelector:h,skipChild:!1,inlineStylesheet:p,maskInputOptions:!0===C?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:!1===C?{password:!0}:C,maskTextFn:S,maskInputFn:b,slimDOMOptions:!0===k||"all"===k?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===k,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===k?{}:k,dataURLOptions:A,inlineImages:f,recordCanvas:v,preserveWhiteSpace:T,onSerialize:M,onIframeLoad:E,iframeLoadTimeout:R,onStylesheetLoad:O,stylesheetLoadTimeout:D,keepIframeSrcFn:void 0===N?function(){return!1}:N,newlyAddedElement:!1})}(document,{mirror:Wt,blockClass:i,blockSelector:r,maskTextClass:a,maskTextSelector:c,inlineStylesheet:l,maskAllInputs:O,maskTextFn:p,slimDOM:D,dataURLOptions:v,recordCanvas:C,inlineImages:k,onSerialize:e=>{Oe(e,Wt)&&G.addIframe(e),De(e,Wt)&&V.trackLinkElement(e),Ne(e)&&Z.addShadowRoot(e.shadowRoot,document)},onIframeLoad:(e,t)=>{G.attachIframe(e,t),Z.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{V.attachLinkElement(e,t)},keepIframeSrcFn:T});if(!h)return console.warn("Failed to snapshot the document");Ft(Nt({type:Le.FullSnapshot,data:{node:h,initialOffset:{left:void 0!==window.pageXOffset?window.pageXOffset:(null===document||void 0===document?void 0:document.documentElement.scrollLeft)||(null===(n=null===(t=null===document||void 0===document?void 0:document.body)||void 0===t?void 0:t.parentElement)||void 0===n?void 0:n.scrollLeft)||(null===(o=null===document||void 0===document?void 0:document.body)||void 0===o?void 0:o.scrollLeft)||0,top:void 0!==window.pageYOffset?window.pageYOffset:(null===document||void 0===document?void 0:document.documentElement.scrollTop)||(null===(d=null===(s=null===document||void 0===document?void 0:document.body)||void 0===s?void 0:s.parentElement)||void 0===d?void 0:d.scrollTop)||(null===(u=null===document||void 0===document?void 0:document.body)||void 0===u?void 0:u.scrollTop)||0}}})),je.forEach(e=>e.unlock()),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&V.adoptStyleSheets(document.adoptedStyleSheets,Wt.getId(document))};try{const e=[];e.push(ve("DOMContentLoaded",()=>{Ft(Nt({type:Le.DomContentLoaded,data:{}}))}));const t=e=>{var t;return ct({mutationCb:x,mousemoveCb:(e,t)=>Ft(Nt({type:Le.IncrementalSnapshot,data:{source:t,positions:e}})),mouseInteractionCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.MouseInteraction},e)})),scrollCb:B,viewportResizeCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.ViewportResize},e)})),inputCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.Input},e)})),mediaInteractionCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.MediaInteraction},e)})),styleSheetRuleCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.StyleSheetRule},e)})),styleDeclarationCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.StyleDeclaration},e)})),canvasMutationCb:W,fontCb:e=>Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.Font},e)})),selectionCb:e=>{Ft(Nt({type:Le.IncrementalSnapshot,data:Object.assign({source:xe.Selection},e)}))},blockClass:i,ignoreClass:s,maskTextClass:a,maskTextSelector:c,maskInputOptions:O,inlineStylesheet:l,sampling:I,recordCanvas:C,inlineImages:k,userTriggeredOnInput:b,collectFonts:w,doc:e,maskInputFn:g,maskTextFn:p,keepIframeSrcFn:T,blockSelector:r,slimDOMOptions:D,dataURLOptions:v,mirror:Wt,iframeManager:G,stylesheetManager:V,shadowDomManager:Z,canvasManager:xt,ignoreCSSAttributes:M,plugins:(null===(t=null==A?void 0:A.filter(e=>e.observer))||void 0===t?void 0:t.map(e=>({observer:e.observer,options:e.options,callback:t=>Ft(Nt({type:Le.Plugin,data:{plugin:e.name,payload:t}}))})))||[]},m)};G.addLoadListener(n=>{e.push(t(n.contentDocument))});const n=()=>{Lt(),e.push(t(document)),Bt=!0};return"interactive"===document.readyState||"complete"===document.readyState?n():e.push(ve("load",()=>{Ft(Nt({type:Le.Load,data:{}})),n()},window)),()=>{e.forEach(e=>e()),Bt=!1}}catch(e){console.warn(e)}}Vt.addCustomEvent=(e,t)=>{if(!Bt)throw new Error("please add custom event after start recording");Ft(Nt({type:Le.Custom,data:{tag:e,payload:t}}))},Vt.freezePage=()=>{je.forEach(e=>e.freeze())},Vt.takeFullSnapshot=e=>{if(!Bt)throw new Error("please take full snapshot after start recording");Lt(e)},Vt.mirror=Wt;class Gt{constructor(e,t,n){this.stopFn=null,this.events=[],this.onEventsReady=null,this.flushInterval=null,this.hasFullSnapshot=!1,this.sessionId=e,this.config=t,this.onEventsReady=n}start(){if(this.config.enabled)if(this.stopFn)console.warn("[RRWeb] Recording already started");else try{console.log("[RRWeb] Starting session recording:",this.sessionId),console.log("[RRWeb] SDK Version: 1.0.9"),this.stopFn=Vt({emit:e=>{this.events.push(e),2===e.type?(this.hasFullSnapshot=!0,console.log("[RRWeb] ✅ FullSnapshot captured! Sending immediately..."),this.flush()):this.hasFullSnapshot&&this.events.length>=50&&this.flush()},sampling:{mousemove:void 0===this.config.sampleRate||Math.floor(100/this.config.sampleRate),mouseInteraction:!0,scroll:150,media:800,input:"last"},checkoutEveryNms:this.config.checkoutEveryNms||3e5,checkoutEveryNth:this.config.checkoutEveryNth||200,blockClass:this.config.blockClass||"rr-block",ignoreClass:this.config.ignoreClass||"rr-ignore",maskAllInputs:void 0===this.config.maskAllInputs||this.config.maskAllInputs,maskInputOptions:this.config.maskInputOptions||{password:!0,email:!0,tel:!0},maskTextClass:"rr-mask",inlineStylesheet:void 0===this.config.inlineStylesheet||this.config.inlineStylesheet,recordCanvas:this.config.recordCanvas||!1,collectFonts:void 0===this.config.collectFonts||this.config.collectFonts,recordCrossOriginIframes:!1}),this.flushInterval=window.setInterval(()=>{this.hasFullSnapshot&&this.events.length>0&&this.flush()},1e4),console.log("[RRWeb] Recording started successfully")}catch(e){console.error("[RRWeb] Failed to start recording:",e)}else console.log("[RRWeb] Recording disabled in config")}stop(){this.stopFn&&(this.stopFn(),this.stopFn=null,console.log("[RRWeb] Recording stopped")),this.flushInterval&&(clearInterval(this.flushInterval),this.flushInterval=null),this.events.length>0&&(this.hasFullSnapshot||console.warn("[RRWeb] Flushing events without FullSnapshot - recording may not replay correctly"),this.flush())}flush(){if(0===this.events.length)return;const e=[...this.events];this.events=[];const t={};e.forEach(e=>{t[e.type]=(t[e.type]||0)+1}),console.log("[RRWeb] Flushing events:",t),this.onEventsReady&&this.onEventsReady(e)}getEventCount(){return this.events.length}isRecording(){return null!==this.stopFn}}class Zt{constructor(e){this.config=e,this.queue=[],this.flushInterval=null,this.maxQueueSize=50,this.flushIntervalMs=5e3,this.apiUrl=e.apiUrl||"https://api.devskin.com",this.startPeriodicFlush(),"undefined"!=typeof window&&(window.addEventListener("beforeunload",()=>{this.flush()}),window.addEventListener("visibilitychange",()=>{document.hidden&&this.flush(!0)}))}sendEvent(e){this.enqueue("event",e)}identifyUser(e){this.sendToBackend("/v1/analytics/identify",e)}startSession(e){this.sendToBackend("/v1/analytics/session",e)}sendError(e){this.enqueue("error",e)}sendNetworkRequest(e){this.enqueue("network",e)}sendPerformanceMetric(e){this.enqueue("performance",e)}sendRecordingEvents(e,n){return t(this,void 0,void 0,function*(){const t=n.reduce((e,t)=>(e[t.type]=(e[t.type]||0)+1,e),{});console.log(`[DevSkin SDK] Sending ${n.length} recording events:`,t),console.log("[DevSkin SDK] First 3 events:",n.slice(0,3).map(e=>({type:e.type,timestamp:e.timestamp})));try{yield this.sendToBackend("/v1/rum/recordings",{session_id:e,events:n,timestamp:(new Date).toISOString()}),console.log("[DevSkin SDK] ✅ Recording events sent successfully")}catch(e){console.error("[DevSkin SDK] ❌ Failed to send recording events:",e)}})}sendHeatmapData(e){this.enqueue("heatmap",e)}flush(e=!1){if(0===this.queue.length)return;const t=[...this.queue];this.queue=[];const n={};t.forEach(e=>{n[e.type]||(n[e.type]=[]),n[e.type].push(e.data)}),Object.entries(n).forEach(([t,n])=>{const o=this.getEndpointForType(t);this.sendToBackend(o,{[t+"s"]:n},e)}),this.config.debug&&console.log(`[DevSkin] Flushed ${t.length} items to backend`)}enqueue(e,t){this.queue.push({type:e,data:t,timestamp:Date.now()}),this.queue.length>=this.maxQueueSize&&this.flush()}startPeriodicFlush(){this.flushInterval=setInterval(()=>{this.flush()},this.flushIntervalMs)}getEndpointForType(e){switch(e){case"event":default:return"/v1/analytics/events";case"error":return"/v1/analytics/errors";case"network":return"/v1/analytics/network";case"performance":return"/v1/analytics/performance";case"heatmap":return"/v1/analytics/heatmap"}}sendToBackend(e,n){return t(this,arguments,void 0,function*(e,t,n=!1){const o=`${this.apiUrl}${e}`,i=Object.assign(Object.assign({},t),{apiKey:this.config.apiKey,appId:this.config.appId,environment:this.config.environment,release:this.config.release});if(this.config.beforeSend){if(!this.config.beforeSend(i))return}if(n&&navigator.sendBeacon){const e=new Blob([JSON.stringify(i)],{type:"application/json"});return void navigator.sendBeacon(o,e)}try{const t=yield fetch(o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`},body:JSON.stringify(i),keepalive:!0});if(!t.ok){const e=yield t.text();throw console.error("[DevSkin] HTTP Error:",t.status,e),new Error(`HTTP ${t.status}: ${t.statusText}`)}this.config.debug&&console.log("[DevSkin] Data sent successfully:",e)}catch(t){throw console.error("[DevSkin] Failed to send data to",e,":",t),t}})}destroy(){this.flushInterval&&(clearInterval(this.flushInterval),this.flushInterval=null),this.flush()}}return new class{constructor(){this.config=null,this.transport=null,this.sessionId=null,this.userId=null,this.anonymousId=null,this.sessionStartTime=0,this.initialized=!1,this.deviceCollector=null,this.locationCollector=null,this.browserCollector=null,this.performanceCollector=null,this.errorCollector=null,this.networkCollector=null,this.heatmapCollector=null,this.rrwebRecorder=null}init(t){var i,r;this.initialized?console.warn("[DevSkin] SDK already initialized"):(this.config=Object.assign({debug:!1,captureWebVitals:!0,captureNetworkRequests:!0,captureErrors:!0,captureUserAgent:!0,captureLocation:!0,captureDevice:!0},t),this.config.debug&&console.log("[DevSkin] Initializing SDK with config:",this.config),this.transport=new Zt(this.config),this.anonymousId=this.getOrCreateAnonymousId(),this.deviceCollector=new e(this.config),this.locationCollector=new n(this.config),this.browserCollector=new o(this.config),this.startSession(),this.config.captureWebVitals&&(this.performanceCollector=new U(this.config,this.transport),this.performanceCollector.start()),this.config.captureErrors&&(this.errorCollector=new K(this.config,this.transport),this.errorCollector.start()),this.config.captureNetworkRequests&&(this.networkCollector=new _(this.config,this.transport),this.networkCollector.start()),(null===(i=this.config.heatmapOptions)||void 0===i?void 0:i.enabled)&&(this.heatmapCollector=new z(this.config,this.transport),this.heatmapCollector.start()),(null===(r=this.config.sessionRecording)||void 0===r?void 0:r.enabled)&&(this.rrwebRecorder=new Gt(this.sessionId,{enabled:!0,sampleRate:this.config.sessionRecording.sampling||.5,blockClass:"rr-block",ignoreClass:this.config.sessionRecording.ignoreClass||"rr-ignore",maskAllInputs:void 0===this.config.sessionRecording.maskAllInputs||this.config.sessionRecording.maskAllInputs,maskInputOptions:{password:!0,email:!0,tel:!0},recordCanvas:this.config.sessionRecording.recordCanvas||!1,collectFonts:!0,inlineStylesheet:!0,checkoutEveryNms:3e5,checkoutEveryNth:200},e=>{var t;null===(t=this.transport)||void 0===t||t.sendRecordingEvents(this.sessionId,e)}),this.rrwebRecorder.start(),this.config.debug&&console.log("[DevSkin] RRWeb recording started for session:",this.sessionId)),this.trackPageView(),this.setupVisibilityTracking(),this.setupUnloadTracking(),this.initialized=!0,this.config.debug&&console.log("[DevSkin] SDK initialized successfully"))}track(e,t){var n,o;if(!this.initialized)return void console.warn("[DevSkin] SDK not initialized. Call init() first.");const i={event_name:e,event_type:"track",timestamp:(new Date).toISOString(),session_id:this.sessionId,user_id:this.userId||void 0,anonymous_id:this.anonymousId||void 0,properties:Object.assign(Object.assign({},t),this.getContextData()),page_url:window.location.href,page_title:document.title};null===(n=this.transport)||void 0===n||n.sendEvent(i),(null===(o=this.config)||void 0===o?void 0:o.debug)&&console.log("[DevSkin] Event tracked:",i)}trackPageView(e){this.track("page_view",Object.assign({path:window.location.pathname,search:window.location.search,hash:window.location.hash,referrer:document.referrer},e))}identify(e,t){var n,o;if(!this.initialized)return void console.warn("[DevSkin] SDK not initialized. Call init() first.");this.userId=e;const i={user_id:e,anonymous_id:this.anonymousId||void 0,traits:Object.assign(Object.assign({},t),this.getContextData()),session_id:this.sessionId,timestamp:(new Date).toISOString()};null===(n=this.transport)||void 0===n||n.identifyUser(i),(null===(o=this.config)||void 0===o?void 0:o.debug)&&console.log("[DevSkin] User identified:",i)}captureError(e,t){var n;this.initialized?null===(n=this.errorCollector)||void 0===n||n.captureError(e,Object.assign(Object.assign({},t),{session_id:this.sessionId,user_id:this.userId||void 0})):console.warn("[DevSkin] SDK not initialized. Call init() first.")}addBreadcrumb(e){var t;this.initialized&&(null===(t=this.errorCollector)||void 0===t||t.addBreadcrumb(e))}startRecording(){var e;null===(e=this.rrwebRecorder)||void 0===e||e.start()}stopRecording(){var e;null===(e=this.rrwebRecorder)||void 0===e||e.stop()}optOut(){localStorage.setItem("devskin_opt_out","true"),this.initialized=!1}optIn(){localStorage.removeItem("devskin_opt_out")}startSession(){var e;this.sessionId=this.generateId(),this.sessionStartTime=Date.now();const t=Object.assign({session_id:this.sessionId,user_id:this.userId||void 0,anonymous_id:this.anonymousId,started_at:(new Date).toISOString()},this.getContextData());null===(e=this.transport)||void 0===e||e.startSession(t)}getContextData(){const e={};return this.deviceCollector&&(e.device=this.deviceCollector.collect()),this.browserCollector&&(e.browser=this.browserCollector.collect()),this.locationCollector&&(e.location=this.locationCollector.collect()),e}getOrCreateAnonymousId(){let e=localStorage.getItem("devskin_anonymous_id");return e||(e=this.generateId(),localStorage.setItem("devskin_anonymous_id",e)),e}generateId(){return`${Date.now()}-${Math.random().toString(36).substr(2,9)}`}setupVisibilityTracking(){document.addEventListener("visibilitychange",()=>{document.hidden?this.track("page_hidden"):this.track("page_visible")})}setupUnloadTracking(){window.addEventListener("beforeunload",()=>{var e,t;if(this.track("page_unload"),this.sessionId&&this.sessionStartTime){const t=new Date,n=Date.now()-this.sessionStartTime;null===(e=this.transport)||void 0===e||e.startSession(Object.assign({session_id:this.sessionId,user_id:this.userId||void 0,anonymous_id:this.anonymousId,ended_at:t.toISOString(),duration_ms:n},this.getContextData()))}null===(t=this.transport)||void 0===t||t.flush(!0)})}}});
|
|
16
16
|
//# sourceMappingURL=devskin.umd.min.js.map
|