@pydantic/logfire-session-replay 0.4.0 → 0.6.0
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/README.md +61 -5
- package/dist/index-BxzwrVOz.d.cts +220 -0
- package/dist/index-BxzwrVOz.d.ts +220 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/integration.d.cts +8 -10
- package/dist/integration.d.ts +8 -10
- package/package.json +2 -2
- package/dist/index-DARiwDKI.d.cts +0 -170
- package/dist/index-DARiwDKI.d.ts +0 -170
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@rrweb/record"),t=require("fflate");const n={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5,Plugin:6},r={Mutation:0,MouseMove:1,MouseInteraction:2,Scroll:3,ViewportResize:4,Input:5,TouchMove:6,MediaInteraction:7,Drag:12,Selection:14},i={MouseUp:0,MouseDown:1,Click:2,ContextMenu:3,DblClick:4},a={Error:`logfire.error`,Console:`logfire.console`,Network:`logfire.network`,Navigation:`logfire.navigation`},o={sessionSampleRate:1,onErrorSampleRate:1,maskAllText:!0,maskAllInputs:!0,maskTextSelector:``,blockSelector:``,flushIntervalMs:5e3,maxBufferBytes:1e6,minSessionDurationMs:1e4,sessionIdleTimeoutMs:18e5,maxSessionDurationMs:144e5,distinctId:``,captureConsole:!1,captureNetwork:!0,captureNavigation:!0,redactUrlPatterns:[/.+/u]},s=new Set([r.MouseMove,r.MouseInteraction,r.Scroll,r.ViewportResize,r.Input,r.TouchMove,r.MediaInteraction,r.Drag,r.Selection]);function c(e){return e.type!==n.IncrementalSnapshot||typeof e.data!=`object`||e.data===null||!(`source`in e.data)?!1:typeof e.data.source==`number`&&s.has(e.data.source)}function l(e,t){return t<3e4?e:t<3e5?Math.max(e,6e4):Math.max(e,3e5)}function u(e,t){return t.some(t=>new RegExp(t.source,t.flags).test(e))}function d(e,t,n){if(!u(e,t))return e;try{let t=new URL(e,n);return`${t.origin}${t.pathname}`}catch{let[t=e]=e.split(`?`),[n=t]=t.split(`#`);return n}}const f=[`log`,`info`,`warn`,`error`,`debug`],p=1024,m=()=>void 0;function h(e,t={}){let n=[],r=S(t.onError);try{for(let t of f)typeof console[t]==`function`&&n.push(C(console,t,(n,i)=>function(...o){return i()&&x(e,a.Console,{level:t,args:o.slice(0,10).map(ne)},r),n.apply(this,o)}));return w(n)}catch(e){throw T(n),e}}function ee(e,t){let n=y(t),r={...n,onError:S(n.onError)},i=_(e,r);try{return w([i,v(e,r)])}catch(e){throw i(),e}}function g(e,t={redactUrlPatterns:[]}){let n=S(t.onError),r=r=>{let i=d(window.location.href,t.redactUrlPatterns??[],window.location.href);x(e,a.Navigation,{url:i,kind:r},n)},i=[];try{i.push(C(history,`pushState`,(e,t)=>function(...n){let i=e.apply(this,n);return t()&&r(`push`),i})),i.push(C(history,`replaceState`,(e,t)=>function(...n){let i=e.apply(this,n);return t()&&r(`replace`),i}));let e=!0,t=()=>{e&&r(`pop`)};return window.addEventListener(`popstate`,t),i.push(()=>{e=!1,window.removeEventListener(`popstate`,t)}),w(i)}catch(e){throw T(i),e}}function _(e,t){return typeof window.fetch==`function`?C(window,`fetch`,(n,r)=>{let i=async function(i,o){let s=n;if(!r())return s.call(this,i,o);let c=t.now(),l=re(i,o),u=ie(i);if(j(u,t.ignoreUrlPatterns))return s.call(this,i,o);let f=d(u,t.redactUrlPatterns,window.location.href),p=A(o?.body);try{let n=await s.call(this,i,o);return r()&&x(e,a.Network,k({method:l,url:f,status:n.status,durationMs:Math.max(0,t.now()-c),reqBytes:p,resBytes:D(n.headers)}),t.onError),n}catch(n){throw r()&&x(e,a.Network,k({method:l,url:f,status:0,durationMs:Math.max(0,t.now()-c),failed:!0,reqBytes:p}),t.onError),n}},o=Reflect.get(n,`__original`);return Object.defineProperty(i,"__original",{configurable:!0,value:typeof o==`function`?o:n,writable:!0}),i}):m}function v(e,t){let n=window.XMLHttpRequest.prototype,r=new WeakMap,i=[];try{return i.push(C(n,`open`,(e,n)=>function(...i){let[a,o]=i;if(!n())return e.apply(this,i);let s=o.toString();return j(s,t.ignoreUrlPatterns)?(r.delete(this),e.apply(this,i)):(r.set(this,{method:a.toUpperCase(),url:d(s,t.redactUrlPatterns,window.location.href),startedAt:0,reqBytes:0,failed:!1,emitted:!1}),e.apply(this,i))})),i.push(C(n,`send`,(n,i)=>function(...o){let[s]=o,c=i()?r.get(this):void 0;if(c===void 0)return n.apply(this,o);c.startedAt=t.now(),c.reqBytes=A(s);let l=()=>{c.failed=!0},u=()=>{c.emitted||(c.emitted=!0,this.removeEventListener(`error`,l),this.removeEventListener(`abort`,l),this.removeEventListener(`timeout`,l),i()&&x(e,a.Network,k({method:c.method,url:c.url,status:this.status,durationMs:Math.max(0,t.now()-c.startedAt),failed:c.failed||this.status===0,reqBytes:c.reqBytes,resBytes:O(this)}),t.onError))};this.addEventListener(`error`,l),this.addEventListener(`abort`,l),this.addEventListener(`timeout`,l),this.addEventListener(`loadend`,u,{once:!0});try{return n.apply(this,o)}catch(n){throw this.removeEventListener(`error`,l),this.removeEventListener(`abort`,l),this.removeEventListener(`timeout`,l),this.removeEventListener(`loadend`,u),i()&&x(e,a.Network,k({method:c.method,url:c.url,status:0,durationMs:Math.max(0,t.now()-c.startedAt),failed:!0,reqBytes:c.reqBytes}),t.onError),n}})),w(i)}catch(e){throw T(i),e}}function y(e){return{...e,ignoreUrlPatterns:b(e.ignoreUrlPatterns),redactUrlPatterns:b(e.redactUrlPatterns)}}function b(e){return e.map(e=>{let t=e.flags.replace(/[gy]/gu,``);return t===e.flags?e:new RegExp(e.source,t)})}function x(e,t,n,r){try{e(t,n)}catch(e){r?.(e)}}function S(e){let t=!1;return n=>{if(!t){t=!0;try{let t=e?.(n);te(t)&&Promise.resolve(t).catch(()=>void 0)}catch{}finally{t=!1}}}}function te(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}function C(e,t,n){let r=e,i=r[t];if(typeof i!=`function`)return m;let a=!0,o=n(i,()=>a);return r[t]=o,()=>{a&&(a=!1,r[t]===o&&(r[t]=i))}}function w(e){let t=!1;return()=>{t||(t=!0,T(e))}}function T(e){for(let t=e.length-1;t>=0;--t)try{e[t]?.()}catch{}}function ne(e){if(e==null)return String(e);if(typeof e==`string`)return E(e);if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);if(e instanceof Error)return E(e.stack??`${e.name}: ${e.message}`);try{return E(JSON.stringify(e))}catch{return Object.prototype.toString.call(e)}}function E(e){if(e.length<=p)return e;let t=e.charCodeAt(p-1),n=t>=55296&&t<=56319?p-1:p;return`${e.slice(0,n)}...(+${String(e.length-n)} chars)`}function re(e,t){return(t?.method??(typeof e==`object`&&`method`in e?e.method:`GET`)).toUpperCase()}function ie(e){return typeof e==`string`||e instanceof URL?e.toString():e.url}function D(e){let t=e.get(`content-length`);if(t===null)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}function O(e){try{let t=e.getResponseHeader(`content-length`);if(t===null)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}catch{return}}function k(e){return{method:e.method,url:e.url,status:e.status,durationMs:e.durationMs,...e.failed===void 0?{}:{failed:e.failed},...e.reqBytes===void 0?{}:{reqBytes:e.reqBytes},...e.resBytes===void 0?{}:{resBytes:e.resBytes}}}function A(e){if(e==null)return 0;if(typeof e==`string`)return new TextEncoder().encode(e).byteLength;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e.byteLength;if(e instanceof Blob)return e.size}function j(e,t){return u(e,t)}const ae=new Set([`action`,`formaction`,`href`,`src`]);function oe(t){let n=()=>{t.beforeUserActivity?.()},r={emit:e=>{t.emit(se(e,t.redactUrlPatterns))},maskAllInputs:t.maskAllInputs,recordCanvas:!1,collectFonts:!1,inlineImages:!1,recordCrossOriginIframes:!1,slimDOMOptions:`all`,hooks:{input:n,mediaInteaction:n,mouseInteraction:n,mousemove:n,scroll:n,selection:n,viewportResize:n},sampling:{mousemove:100,mouseInteraction:!0,scroll:250,media:800,input:`last`}};t.maskAllText?r.maskTextSelector=`*`:t.maskTextSelector!==void 0&&t.maskTextSelector.length>0&&(r.maskTextSelector=t.maskTextSelector),t.blockSelector!==void 0&&t.blockSelector.length>0&&(r.blockSelector=t.blockSelector),t.checkoutEveryNms!==void 0&&t.checkoutEveryNms>0&&(r.checkoutEveryNms=t.checkoutEveryNms);let i=(0,e.record)(r);if(i===void 0)throw Error(`logfire session replay: rrweb failed to start recording`);return{stop:()=>{i()},addCustomEvent:(t,n)=>{e.record.addCustomEvent(t,n)},takeFullSnapshot:()=>{e.record.takeFullSnapshot(!0)}}}function se(e,t){if(typeof e.data!=`object`||e.data===null)return e;let i=e.data;if(e.type===n.Meta){if(typeof i.href!=`string`)return e;let n=d(i.href,t,window.location.href);return n===i.href?e:{...e,data:{...i,href:n}}}if(e.type!==n.FullSnapshot&&(e.type!==n.IncrementalSnapshot||i.source!==r.Mutation))return e;let a=M(i,t);return a===i?e:{...e,data:a}}function M(e,t){if(Array.isArray(e)){let n=!1,r=[];for(let i of e){let e=M(i,t);e!==i&&(n=!0),r.push(e)}return n?r:e}if(typeof e!=`object`||!e)return e;let n=e,r=!1,i={};for(let[e,a]of Object.entries(n)){let n=e===`attributes`&&!Array.isArray(a)?ce(a,t):M(a,t);n!==a&&(r=!0),i[e]=n}return r?i:e}function ce(e,t){if(typeof e!=`object`||!e||Array.isArray(e))return e;let n=e,r=!1,i={};for(let[e,a]of Object.entries(n)){if(!ae.has(e.toLowerCase())||typeof a!=`string`){i[e]=a;continue}let n=d(a,t,window.location.href);n!==a&&(r=!0),i[e]=n}return r?i:e}function N(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function le(e){let t=e.random??Math.random;return t()<N(e.sessionSampleRate)?`full`:t()<N(e.onErrorSampleRate)?`buffer`:`off`}const ue=/^[a-z][a-z0-9_]{0,63}$/u;function de(e,t){let n=0;for(let r of e)if(n+=+(r.length>0),n>t)return!1;return!0}function fe(e,t){if(e===void 0)return Object.freeze({});let n;try{n=e()}catch(e){return t(e),Object.freeze({})}if(typeof n!=`object`||!n||Array.isArray(n))return Object.freeze({});let r;try{r=Object.getPrototypeOf(n)}catch(e){return t(e),Object.freeze({})}if(r!==Object.prototype&&r!==null)return Object.freeze({});let i;try{i=Object.keys(n)}catch(e){return t(e),Object.freeze({})}let a={},o=0;for(let e of i){if(!ue.test(e))continue;let r;try{r=Reflect.get(n,e)}catch(e){t(e);continue}if((typeof r==`boolean`||typeof r==`number`&&Number.isFinite(r)||typeof r==`string`&&de(r,200))&&(Object.defineProperty(a,e,{configurable:!0,enumerable:!0,value:r,writable:!0}),o+=1,o===20))break}return Object.freeze(a)}function pe(e=Date.now){let t=e(),n=new Uint8Array(new ArrayBuffer(16));me(n),n[0]=Math.floor(t/2**40)&255,n[1]=Math.floor(t/2**32)&255,n[2]=Math.floor(t/2**24)&255,n[3]=Math.floor(t/2**16)&255,n[4]=Math.floor(t/2**8)&255,n[5]=t&255,n[6]=(n[6]??0)&15|112,n[8]=(n[8]??0)&63|128;let r=``;for(let e of n)r+=e.toString(16).padStart(2,`0`);return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}function me(e){let t=globalThis.crypto;if(typeof t?.getRandomValues==`function`){t.getRandomValues(e);return}for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256)}const P=`lf_session_replay`;var he=class{idleTimeoutMs;maxDurationMs;now;storage;memorySession;pendingSession;persistenceTimer;constructor(e){this.idleTimeoutMs=e.idleTimeoutMs,this.maxDurationMs=e.maxDurationMs,this.now=e.now??Date.now,this.storage=e.storage===void 0?F():e.storage}getSession(){let e=this.now();if(this.memorySession!==void 0&&!this.isExpired(this.memorySession,e))return this.memorySession;let t=this.read();return t!==void 0&&!this.isExpired(t,e)?t:this.createSession(e)}touch(){let e=this.now(),t={...this.getSession(),lastActivityAt:e};return this.memorySession=t,this.scheduleWrite(t),t}reset(){return this.createSession(this.now())}flushPendingStorage(){this.persistenceTimer!==void 0&&(clearTimeout(this.persistenceTimer),this.persistenceTimer=void 0);let e=this.pendingSession;this.pendingSession=void 0,e!==void 0&&this.writeNow(e)}isExpired(e,t){return t-e.lastActivityAt>this.idleTimeoutMs||t-e.startedAt>this.maxDurationMs}createSession(e){let t={id:pe(this.now),startedAt:e,lastActivityAt:e};return this.flushPendingStorage(),this.writeNow(t),t}read(){if(this.storage!==null)try{let e=this.storage.getItem(P);if(e!==null){let t=JSON.parse(e);if(I(t))return this.memorySession=t,t}}catch{return this.memorySession}return this.memorySession}write(e){if(this.memorySession=e,this.storage!==null)try{this.storage.setItem(P,JSON.stringify(e))}catch{}}scheduleWrite(e){this.pendingSession=e,this.persistenceTimer===void 0&&(this.persistenceTimer=setTimeout(()=>{this.persistenceTimer=void 0;let e=this.pendingSession;this.pendingSession=void 0,e!==void 0&&this.writeNow(e)},1e3))}writeNow(e){this.memorySession=e,this.write(e)}};function F(){try{return globalThis.sessionStorage??null}catch{return null}}function I(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.id==`string`&&t.id.length>0&&typeof t.startedAt==`number`&&Number.isFinite(t.startedAt)&&typeof t.lastActivityAt==`number`&&Number.isFinite(t.lastActivityAt)}function L(e){return typeof e==`object`&&e?e:void 0}function R(e){return typeof e==`string`&&e.length>0?e:void 0}function ge(e){let t=L(e),n=R(t?.id);if(t===void 0||n===void 0)return;let r=R(t.name),i=R(t.email);return{id:n,...r===void 0?{}:{name:r},...i===void 0?{}:{email:i}}}function _e(e,t,o,s={},c){let l=1/0,u=0,d=0,f=0,p=0,m=!1,h=new Set;for(let e of t){e.timestamp<l&&(l=e.timestamp),e.timestamp>u&&(u=e.timestamp);let t=L(e.data);if(e.type===n.FullSnapshot)m=!0;else if(e.type===n.Meta){let e=R(t?.href);e!==void 0&&h.add(e)}else if(e.type===n.IncrementalSnapshot&&t!==void 0){let e=t.source;if(e===r.MouseInteraction){let e=t.type;(e===i.Click||e===i.DblClick)&&d++}else e===r.Input&&f++}else if(e.type===n.Custom&&t!==void 0){let e=R(t.tag),n=L(t.payload);if(e===a.Error)p++;else if(e===a.Console)n?.level===`error`&&p++;else if(e===a.Navigation){let e=R(n?.url);e!==void 0&&h.add(e)}}}return{seq:e,firstTimestamp:l===1/0?0:l,lastTimestamp:u,eventCount:t.length,clickCount:d,keypressCount:f,errorCount:p,hasFullSnapshot:m,urls:[...h],...o!==void 0&&o.length>0?{distinctId:o}:{},...c===void 0?{}:{user:{...c}},...Object.keys(s).length===0?{}:{sessionAttributes:{...s}}}}const z=`lf_session_replay_seq`,ve={gzip:t.gzip,gzipSync:t.gzipSync};var ye=class{buffer=[];bufferHasFullSnapshot=!1;pendingBytes=0;seq=0;timer;nextFlushAt;lastUserActivityAt;startedAt;started=!1;held;heldBufferIncomplete=!1;minimumBufferIncomplete=!1;minimumDurationSatisfied=!1;firstObservedTimestamp;lastObservedTimestamp;refreshingMinimumSnapshot=!1;mode;flushing;reservedKeepaliveBytes=0;asyncCompressionAvailable=!0;config;compression;storage;sessionId;sessionAttributes;takeFullSnapshot;constructor(e,t,n,r=F(),i=ve,a={},o={}){this.config=e,this.sessionId=t,this.sessionAttributes=Object.freeze({...a}),this.mode=n,this.storage=r,this.compression=i,this.held=o.holdUntilActivity===!0&&n===`full`,this.takeFullSnapshot=o.takeFullSnapshot,this.minimumDurationSatisfied=e.minSessionDurationMs===0,this.seq=this.loadSeq(t),this.startedAt=this.config.now(),this.lastUserActivityAt=this.startedAt}start(){this.started||this.mode!==`full`||(this.started=!0,this.scheduleFlush())}add(e){this.minimumDurationSatisfied||(this.firstObservedTimestamp??=e.timestamp,this.lastObservedTimestamp=Math.max(this.lastObservedTimestamp??e.timestamp,e.timestamp)),c(e)&&(this.lastUserActivityAt=this.config.now());let t=H(e);if(this.refreshingMinimumSnapshot){this.buffer.push(e),this.pendingBytes+=t;return}let r=!this.minimumDurationSatisfied;if(this.mode===`buffer`||this.held||r){if(e.type===n.Meta){this.buffer=[e],this.bufferHasFullSnapshot=!1,this.minimumBufferIncomplete=!1,this.pendingBytes=t,r&&(this.mode===`full`&&(this.firstObservedTimestamp=e.timestamp),this.finishMinimumBufferingEvent());return}if(e.type===n.FullSnapshot){let i=!this.bufferHasFullSnapshot&&this.buffer.length===1&&this.buffer[0]?.type===n.Meta?this.buffer[0]:void 0;this.buffer=i===void 0?[e]:[i,e],this.bufferHasFullSnapshot=!0,this.pendingBytes=t+(i===void 0?0:H(i)),this.heldBufferIncomplete=!1,this.minimumBufferIncomplete=!1,r&&(this.mode===`full`&&(this.firstObservedTimestamp=i?.timestamp??e.timestamp),this.finishMinimumBufferingEvent());return}if(!this.bufferHasFullSnapshot||t>this.config.maxBufferBytes){this.heldBufferIncomplete||=this.held,this.minimumBufferIncomplete||=r,r&&this.finishMinimumBufferingEvent();return}if(this.pendingBytes+t>this.config.maxBufferBytes){this.heldBufferIncomplete||=this.held,this.minimumBufferIncomplete||=r,r&&this.finishMinimumBufferingEvent();return}}if(this.buffer.push(e),this.pendingBytes+=t,r&&this.minimumDurationReached()){this.flushAndReport();return}this.mode===`full`&&this.pendingBytes>=this.config.maxBufferBytes?this.flushAndReport():this.scheduleFlush()}async triggerFlush(){return this.mode===`buffer`&&(this.bufferHasFullSnapshot||(this.buffer=[],this.pendingBytes=0),this.mode=`full`,this.start()),this.flush()}async flush(e={}){return this.flushInternal(e)}async flushInternal(e={}){if(this.mode===`buffer`||this.held||this.buffer.length===0||!this.minimumDurationReached()||(this.clearScheduledFlush(),this.minimumBufferIncomplete&&!this.refreshMinimumBuffer()))return;this.minimumDurationSatisfied=!0;let t=this.buffer;this.buffer=[],this.bufferHasFullSnapshot=!1,this.minimumBufferIncomplete=!1,this.pendingBytes=0;let n=e.keepalive===!0?Ce(t):[t],r=this.seq;this.seq+=n.length;let i=this.sessionId;this.saveSeq(i,this.seq);let a=this.snapshotIdentity(),o=e.keepalive===!0?Promise.resolve():this.flushing??Promise.resolve(),s=e.keepalive===!0?this.deliverLifecycle(n,r,i,a):o.then(async()=>{for(let e=0;e<n.length;e++){let t=n[e];t!==void 0&&await this.deliverOrdinary(t,r+e,i,a)}}),c=this.flushing;this.flushing=e.keepalive===!0&&c!==void 0?Promise.all([c,s]).then(()=>void 0,()=>void 0):s.catch(()=>void 0),await s}async shutdown(e={}){if(this.started=!1,this.clearScheduledFlush(),this.held){this.discard(),await this.flushing;return}if(!this.minimumDurationReached()){this.discard(),await this.flushing;return}await this.flush(e),await this.flushing}discard(){this.started=!1,this.clearScheduledFlush(),this.buffer=[],this.bufferHasFullSnapshot=!1,this.minimumBufferIncomplete=!1,this.pendingBytes=0}getMode(){return this.mode}isHeld(){return this.held}releaseHeld(e){this.held&&((this.heldBufferIncomplete||!this.bufferHasFullSnapshot)&&(this.buffer=[],this.bufferHasFullSnapshot=!1,this.pendingBytes=0,e()),this.held=!1,this.pendingBytes>=this.config.maxBufferBytes?this.flushAndReport():this.scheduleFlush())}flushAndReport(){this.flushInternal().catch(e=>{B(this.config.onError,e)})}scheduleFlush(){let e=this.config.now(),t=Math.max(0,this.config.minSessionDurationMs-(e-this.startedAt)),n=Math.max(l(this.config.flushIntervalMs,e-this.lastUserActivityAt),t);this.scheduleFlushIn(e,n)}scheduleFlushIn(e,t){if(!this.started||this.mode!==`full`||this.held||this.buffer.length===0)return;let n=e+t;this.timer!==void 0&&this.nextFlushAt!==void 0&&this.nextFlushAt<=n||(this.clearScheduledFlush(),this.nextFlushAt=n,this.timer=setTimeout(()=>{this.timer=void 0,this.nextFlushAt=void 0,this.flushAndReport()},t))}clearScheduledFlush(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0),this.nextFlushAt=void 0}minimumDurationReached(){return this.minimumDurationSatisfied||this.config.minSessionDurationMs===0?!0:this.firstObservedTimestamp===void 0||this.lastObservedTimestamp===void 0?!1:this.lastObservedTimestamp-this.firstObservedTimestamp>=this.config.minSessionDurationMs}finishMinimumBufferingEvent(){this.minimumDurationReached()?this.flushAndReport():this.scheduleFlush()}refreshMinimumBuffer(){let e=this.buffer.length,t=this.pendingBytes;if(this.takeFullSnapshot!==void 0){this.refreshingMinimumSnapshot=!0;try{this.takeFullSnapshot()}catch(e){B(this.config.onError,e)}finally{this.refreshingMinimumSnapshot=!1}}return this.buffer.slice(e).some(e=>e.type===n.FullSnapshot)?(this.minimumBufferIncomplete=!1,!0):(this.buffer.length=e,this.pendingBytes=t,!1)}snapshotIdentity(){let e=this.snapshotUser(),t=this.config.distinctId;if(this.config.getDistinctId!==void 0)try{t=this.config.getDistinctId()??this.config.distinctId}catch(e){B(this.config.onError,e)}else e!==void 0&&(t=e.id);return{distinctId:t,user:e}}createEnvelope(e,t,n){return{version:1,meta:_e(t,e,n.distinctId,this.sessionAttributes,n.user),events:e}}snapshotUser(){if(this.config.getUser!==void 0)try{return ge(this.config.getUser())}catch(e){B(this.config.onError,e);return}}async deliverOrdinary(e,n,r,i){let a=this.createEnvelope(e,n,i);try{let e=(0,t.strToU8)(JSON.stringify(a)),i=await this.compressOrdinary(e);await this.sendWithRetry({body:i,lifecycle:!1,requestKeepalive:!1,reservedBytes:0,seq:n,sessionId:r})}catch(e){B(this.config.onError,e)}}async deliverLifecycle(e,n,r,i){let a=[];for(let o=0;o<e.length;o++){let s=e[o];if(s===void 0){a.push(void 0);continue}let c=this.createEnvelope(s,n+o,i);try{a.push({body:this.compression.gzipSync((0,t.strToU8)(JSON.stringify(c))),lifecycle:!0,requestKeepalive:!1,reservedBytes:0,seq:n+o,sessionId:r})}catch(e){B(this.config.onError,e),a.push(void 0)}}let o=!0,s=Math.max(0,48e3-this.reservedKeepaliveBytes);for(let e of a){if(e===void 0){o=!1;continue}o&&e.body.byteLength<=s?(e.requestKeepalive=!0,e.reservedBytes=e.body.byteLength,this.reservedKeepaliveBytes+=e.reservedBytes,s-=e.reservedBytes):o=!1}await Promise.all(a.map(async e=>{if(e!==void 0)try{await this.sendWithRetry(e)}catch(e){B(this.config.onError,e)}}))}async compressOrdinary(e){if(!this.asyncCompressionAvailable)return this.compression.gzipSync(e);try{return await we(this.compression,e)}catch{return this.asyncCompressionAvailable=!1,this.compression.gzipSync(e)}}async sendWithRetry(e){let t=e.lifecycle?1:3;for(let n=1;n<=t;n++)try{await this.send(e);return}catch(e){let r=Ee(e,n);if(r===void 0||n>=t)throw e;await Se(r)}}async send(e){let t,n,r,i=new AbortController,a=setTimeout(()=>{i.abort(Error(`replay upload timed out after 10000ms`))},1e4);try{let a=`${this.config.replayUrl.replace(/\/+$/u,``)}/${encodeURIComponent(e.sessionId)}?seq=${String(e.seq)}`,o=await this.getUploadHeaders(),s=this.config.fetchImpl(a,{method:`POST`,headers:o,body:e.body.slice(),keepalive:e.requestKeepalive,signal:i.signal});t=!0;let c=await s;if(n=!0,r=await Te(c),!c.ok){let e=c.status===429?De(c.headers.get(`retry-after`),Date.now()):void 0;throw new V(c.status,e)}}finally{clearTimeout(a),e.reservedBytes>0&&(t!==!0||n!==!0||r===!0)&&(this.reservedKeepaliveBytes=Math.max(0,this.reservedKeepaliveBytes-e.reservedBytes))}}async getUploadHeaders(){let e=this.config.headers===void 0?{}:await this.config.headers(),t=await xe(this.config.token);return{...t===void 0||t.length===0?e:{...Object.fromEntries(Object.entries(e).filter(([e])=>e.toLowerCase()!==`authorization`)),Authorization:`Bearer ${t}`},"Content-Type":`application/json`,"Content-Encoding":`gzip`}}loadSeq(e){if(this.storage===null)return 0;try{let t=this.storage.getItem(z);if(t===null)return 0;let n=JSON.parse(t);if(typeof n!=`object`||!n)return 0;let r=n;return r.id===e&&typeof r.seq==`number`&&Number.isFinite(r.seq)?r.seq:0}catch{return 0}}saveSeq(e,t){if(this.storage!==null)try{this.storage.setItem(z,JSON.stringify({id:e,seq:t}))}catch{}}};function B(e,t){try{let n=e?.(t);be(n)&&Promise.resolve(n).catch(()=>void 0)}catch{}}function be(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}var V=class extends Error{retryAfter;status;constructor(e,t){super(`replay ingest failed: ${String(e)}`),this.status=e,this.retryAfter=t,this.name=`ReplayIngestError`}};async function xe(e){return typeof e==`function`?e():e}async function Se(e){return new Promise(t=>{setTimeout(t,e)})}function H(e){try{return(0,t.strToU8)(JSON.stringify(e)).byteLength}catch{return 0}}function Ce(e){let t=[],n=[],r=0;for(let i of e){let e=H(i);n.length>0&&r+e>48e3&&(t.push(n),n=[],r=0),n.push(i),r+=e}return n.length>0&&t.push(n),t}async function we(e,t){return new Promise((n,r)=>{let i=[];typeof window<`u`&&i.push(window),typeof document<`u`&&i.push(document);let a=()=>{for(let e of i)e.removeEventListener(`securitypolicyviolation`,s)},o=(e,t)=>{if(a(),e!==null){r(e);return}n(t)},s=e=>{let t=e;(t.effectiveDirective.includes(`worker-src`)||t.violatedDirective.includes(`worker-src`))&&o(Error(`replay compression worker blocked by Content Security Policy`))};for(let e of i)e.addEventListener(`securitypolicyviolation`,s);try{e.gzip(t,{level:6},(e,t)=>{o(e,t)})}catch(e){a(),r(e instanceof Error?e:Error(String(e)))}})}async function Te(e){if(e.body===null)return!0;try{return await e.body.cancel(),!0}catch{return!1}}function Ee(e,t){return e instanceof V?e.status===429?e.retryAfter?.kind===`too-long`?void 0:e.retryAfter?.kind===`delay`?e.retryAfter.milliseconds:500*t:e.status<500?void 0:500*t:500*t}function De(e,t){if(e===null)return{kind:`fallback`};let n=e.trim();if(/^\d+$/u.test(n)){let e=Number(n);return Number.isSafeInteger(e)?U(e*1e3):{kind:`fallback`}}let r=je(n,t);return r===void 0?{kind:`fallback`}:U(Math.max(0,r-t))}function U(e){return e>1e4?{kind:`too-long`}:{kind:`delay`,milliseconds:e}}const Oe=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],ke=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],Ae=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function je(e,t){let n=/^(Sun|Mon|Tue|Wed|Thu|Fri|Sat), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{2}):(\d{2}):(\d{2}) GMT$/u.exec(e);if(n!==null)return W(n[1],n[2],n[3],n[4],n[5],n[6],n[7]);let r=/^(Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{2}):(\d{2}):(\d{2}) GMT$/u.exec(e);if(r!==null){let e=new Date(t).getUTCFullYear(),n=Number(r[4]),i=Math.floor(e/100)*100+n;return i>e+50&&(i-=100),W(r[1],r[2],r[3],String(i),r[5],r[6],r[7])}let i=/^(Sun|Mon|Tue|Wed|Thu|Fri|Sat) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{2}| \d) (\d{2}):(\d{2}):(\d{2}) (\d{4})$/u.exec(e);if(i!==null)return W(i[1],i[3]?.trim(),i[2],i[7],i[4],i[5],i[6])}function W(e,t,n,r,i,a,o){let s=Number(t),c=Oe.indexOf(n),l=Number(r),u=Number(i),d=Number(a),f=Number(o);if(c<0||s<1||s>31||u>23||d>59||f>59)return;let p=new Date(0);if(p.setUTCFullYear(l,c,s),p.setUTCHours(u,d,f,0),p.getUTCFullYear()!==l||p.getUTCMonth()!==c||p.getUTCDate()!==s||p.getUTCHours()!==u||p.getUTCMinutes()!==d||p.getUTCSeconds()!==f)return;let m=ke.indexOf(e),h=Ae.indexOf(e);return(m>=0?m:h)===p.getUTCDay()?p.getTime():void 0}const Me={mode:`off`,recording:!1,getSessionId:()=>``,flush:async()=>Promise.resolve(),stop:async()=>Promise.resolve()},G=`lf_session_replay_mode`,K=Symbol.for(`@pydantic/logfire-session-replay/controller`);function Ne(e){if(typeof window>`u`||typeof document>`u`)return Me;let t=Be();try{let n=Fe(e),r=new he({idleTimeoutMs:n.sessionIdleTimeoutMs,maxDurationMs:n.maxSessionDurationMs,now:n.now}),i=r.getSession().id,a=e=>{let t;try{t=n.getSessionId?.()}catch(e){return X(n.onError,e),i}if(t!==void 0&&t.length>0)return i=t,t;let a=e?r.touch().id:r.getSession().id;return i=a,a},o=F(),s=a(!1),c,l=!1,u=Promise.resolve(),d,f=(e,t,r=!t)=>{let i=Ie(n,e,o);if(!(i===`off`||l||e!==s))try{c=Pe({config:n,getSessionId:a,mode:i,onSessionChanged:p,samplingModeStorage:o,sessionId:e,holdUntilActivity:r})}catch(e){if(c=void 0,t)throw e;X(n.onError,e)}},p=(e,t=!0)=>{if(l||e===s)return;s=e;let r=c;c=void 0;let i=r?.deactivate()??Promise.resolve();u=u.then(async()=>{await Y(i,n.onError),!l&&s===e&&f(e,!1,t)})},m;try{f(s,!0),m=setInterval(()=>{p(a(!1))},1e3)}catch(e){throw c?.discard(),c=void 0,e}return{get mode(){try{return c?.transport.getMode()??`off`}catch(e){return X(n.onError,e),`off`}},get recording(){try{return c!==void 0}catch(e){return X(n.onError,e),!1}},getSessionId:()=>a(!1),flush:async()=>{try{await u,await c?.transport.flush()}catch(e){X(n.onError,e)}},stop:async()=>(d??=(async()=>{l=!0,clearInterval(m);let e=c;c=void 0,await Y(e?.deactivate()??Promise.resolve(),n.onError),await u,r.flushPendingStorage(),t()})(),d)}}catch(e){throw t(),e}}function Pe(e){let{config:t,getSessionId:n,holdUntilActivity:r,mode:i,onSessionChanged:o,samplingModeStorage:s,sessionId:l}=e,u=fe(t.getSessionAttributes,e=>{X(t.onError,e)}),d,f=new ye(t,l,i,void 0,void 0,u,{holdUntilActivity:r,takeFullSnapshot:()=>{d.takeFullSnapshot()}}),p=[],m=!0,_=()=>m,v;try{d=oe({beforeUserActivity:()=>{if(!(!m||!f.isHeld()))try{let e=n(!0);if(e!==l){o(e,!1);return}f.releaseHeld(()=>{d.takeFullSnapshot()})}catch(e){X(t.onError,e)}},emit:e=>{if(m)try{let t=n(c(e));if(t!==l){o(t,!1);return}f.add(e)}catch(e){X(t.onError,e)}},maskAllText:t.maskAllText,maskAllInputs:t.maskAllInputs,maskTextSelector:t.maskTextSelector,blockSelector:t.blockSelector,checkoutEveryNms:i===`buffer`?12e4:0,redactUrlPatterns:t.redactUrlPatterns}),p.push(()=>{d.stop()});let e=(e,n)=>{if(m)try{d.addCustomEvent(e,n)}catch(e){X(t.onError,e)}},r=n=>{_()&&(f.releaseHeld(()=>{d.takeFullSnapshot()}),e(a.Error,n),_()&&f.getMode()===`buffer`&&(q(s,l,`full`),J(f.triggerFlush(),t.onError)))},u=e=>{e instanceof ErrorEvent&&r($(e.message,e.filename,ze(e.error)))},y=e=>{let t=e.reason;r($(Ve(t?.message??e.reason),void 0,typeof t?.stack==`string`?t.stack:void 0))},b=()=>{document.visibilityState===`hidden`&&J(f.flush({keepalive:!0}),t.onError)},x=()=>{J(f.flush({keepalive:!0}),t.onError)};return window.addEventListener(`error`,u,!0),p.push(()=>{window.removeEventListener(`error`,u,!0)}),window.addEventListener(`unhandledrejection`,y,!0),p.push(()=>{window.removeEventListener(`unhandledrejection`,y,!0)}),document.addEventListener(`visibilitychange`,b),p.push(()=>{document.removeEventListener(`visibilitychange`,b)}),window.addEventListener(`pagehide`,x),p.push(()=>{window.removeEventListener(`pagehide`,x)}),t.captureConsole&&p.push(h(e,{onError:t.onError})),t.captureNetwork&&p.push(ee(e,{ignoreUrlPatterns:t.ignoreUrlPatterns,now:t.now,onError:t.onError,redactUrlPatterns:t.redactUrlPatterns})),t.captureNavigation&&p.push(g(e,{onError:t.onError,redactUrlPatterns:t.redactUrlPatterns})),f.start(),{sessionId:l,transport:f,deactivate:async()=>(v??=(async()=>{let e=f.flush({keepalive:!1});m=!1,Q(p),await e,await f.shutdown({keepalive:!1})})(),v),discard:()=>{m=!1,Q(p),f.discard()}}}catch(e){throw m=!1,Q(p),f.discard(),e}}function Fe(e){if(e.replayUrl.length===0)throw Error("logfire session replay: `replayUrl` is required");let t=new URL(e.replayUrl,`https://logfire.invalid/`);if(t.search!==``||t.hash!==``)throw Error("logfire session replay: `replayUrl` must not contain a query or fragment");let n=e.fetchImpl??(typeof fetch==`function`?fetch.bind(globalThis):void 0);if(n===void 0)throw Error("logfire session replay: no `fetch` available; pass `fetchImpl`");return{replayUrl:e.replayUrl,headers:e.headers,token:e.token,getSessionId:e.getSessionId,getSessionAttributes:e.getSessionAttributes,sessionSampleRate:e.sessionSampleRate??o.sessionSampleRate,onErrorSampleRate:e.onErrorSampleRate??o.onErrorSampleRate,maskAllText:e.maskAllText??o.maskAllText,maskAllInputs:e.maskAllInputs??o.maskAllInputs,maskTextSelector:e.maskTextSelector??o.maskTextSelector,blockSelector:e.blockSelector??o.blockSelector,flushIntervalMs:e.flushIntervalMs??o.flushIntervalMs,maxBufferBytes:e.maxBufferBytes??o.maxBufferBytes,minSessionDurationMs:e.minSessionDurationMs??o.minSessionDurationMs,sessionIdleTimeoutMs:e.sessionIdleTimeoutMs??o.sessionIdleTimeoutMs,maxSessionDurationMs:e.maxSessionDurationMs??o.maxSessionDurationMs,distinctId:e.distinctId??o.distinctId,getDistinctId:e.getDistinctId,getUser:e.getUser,captureConsole:e.captureConsole??o.captureConsole,captureNetwork:e.captureNetwork??o.captureNetwork,captureNavigation:e.captureNavigation??o.captureNavigation,ignoreUrlPatterns:e.ignoreUrlPatterns??[],redactUrlPatterns:e.redactUrlPatterns??[...o.redactUrlPatterns],onError:e.onError,fetchImpl:n,now:e.now??Date.now,random:e.random??Math.random}}function Ie(e,t,n){let r=Le(n,t);if(r!==void 0)return r;let i=le({sessionSampleRate:e.sessionSampleRate,onErrorSampleRate:e.onErrorSampleRate,random:e.random});return q(n,t,i),i}function Le(e,t){if(e!==null)try{let n=e.getItem(G);if(n===null)return;let r=JSON.parse(n);if(typeof r!=`object`||!r)return;let i=r;return i.id!==t||!Re(i.mode)?void 0:i.mode}catch{return}}function q(e,t,n){if(e!==null)try{e.setItem(G,JSON.stringify({id:t,mode:n}))}catch{}}function Re(e){return e===`full`||e===`buffer`||e===`off`}function ze(e){let t=typeof e==`object`&&e&&`stack`in e?e.stack:void 0;return typeof t==`string`?t:void 0}function J(e,t){e.catch(e=>{X(t,e)})}async function Y(e,t){try{await e}catch(e){X(t,e)}}function X(e,t){try{let n=e?.(t);Z(n)&&Promise.resolve(n).catch(()=>void 0)}catch{}}function Z(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}function Be(){let e=globalThis;if(e[K]!==void 0)throw Error(`logfire session replay: a replay controller is already active in this page`);let t={};Object.defineProperty(e,K,{configurable:!0,enumerable:!1,value:t,writable:!0});let n=!1;return()=>{n||(n=!0,e[K]===t&&Reflect.deleteProperty(e,K))}}function Q(e){for(let t=e.length-1;t>=0;--t)try{e[t]?.()}catch{}e.length=0}function $(e,t,n){return{message:e,...t===void 0||t.length===0?{}:{source:t},...n===void 0?{}:{stack:n}}}function Ve(e){if(e==null)return`unhandledrejection`;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`||typeof e==`symbol`)return String(e);try{let t=JSON.stringify(e);return typeof t==`string`?t:Object.prototype.toString.call(e)}catch{return Object.prototype.toString.call(e)}}exports.CHUNK_ENVELOPE_VERSION=1,exports.CustomTag=a,exports.EventType=n,exports.IncrementalSource=r,exports.MouseInteractions=i,exports.startSessionReplay=Ne;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@rrweb/record"),t=require("fflate");const n={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5,Plugin:6},r={Mutation:0,MouseMove:1,MouseInteraction:2,Scroll:3,ViewportResize:4,Input:5,TouchMove:6,MediaInteraction:7,Drag:12,Selection:14},i={MouseUp:0,MouseDown:1,Click:2,ContextMenu:3,DblClick:4},a={Error:`logfire.error`,Console:`logfire.console`,Network:`logfire.network`,Navigation:`logfire.navigation`},o={sessionSampleRate:1,onErrorSampleRate:1,maskAllText:!0,maskAllInputs:!0,maskTextSelector:``,blockSelector:``,flushIntervalMs:5e3,maxBufferBytes:1e6,minSessionDurationMs:1e4,sessionIdleTimeoutMs:18e5,maxSessionDurationMs:72e5,distinctId:``,captureConsole:!1,captureNetwork:!0,captureNavigation:!0,captureGlobalErrors:!0,redactUrlPatterns:[/.+/u]},s=/* @__PURE__ */ new Set([r.MouseMove,r.MouseInteraction,r.Scroll,r.ViewportResize,r.Input,r.TouchMove,r.MediaInteraction,r.Drag,r.Selection]);function c(e){return e.type!==n.IncrementalSnapshot||typeof e.data!=`object`||e.data===null||!(`source`in e.data)?!1:typeof e.data.source==`number`&&s.has(e.data.source)}function l(e,t){return t<3e4?e:t<3e5?Math.max(e,6e4):Math.max(e,3e5)}function u(e,t){return t.some(t=>new RegExp(t.source,t.flags).test(e))}function d(e,t,n){if(!u(e,t))return e;try{let t=new URL(e,n);return`${t.origin}${t.pathname}`}catch{let[t=e]=e.split(`?`),[n=t]=t.split(`#`);return n}}const f=[`log`,`info`,`warn`,`error`,`debug`],p=1024,m=()=>void 0;function h(e,t={}){let n=[],r=C(t.onError);try{for(let t of f)typeof console[t]==`function`&&n.push(T(console,t,(n,i)=>function(...o){return i()&&S(e,a.Console,{level:t,args:o.slice(0,10).map(ee)},r),n.apply(this,o)}));return E(n)}catch(e){throw D(n),e}}function g(e,t){let n=b(t),r={...n,onError:C(n.onError)},i=v(e,r);try{return E([i,y(e,r)])}catch(e){throw i(),e}}function _(e,t={redactUrlPatterns:[]}){let n=C(t.onError),r=r=>{let i=d(window.location.href,t.redactUrlPatterns??[],window.location.href);S(e,a.Navigation,{url:i,kind:r},n)},i=[];try{i.push(T(history,`pushState`,(e,t)=>function(...n){let i=e.apply(this,n);return t()&&r(`push`),i})),i.push(T(history,`replaceState`,(e,t)=>function(...n){let i=e.apply(this,n);return t()&&r(`replace`),i}));let e=!0,t=()=>{e&&r(`pop`)};return window.addEventListener(`popstate`,t),i.push(()=>{e=!1,window.removeEventListener(`popstate`,t)}),E(i)}catch(e){throw D(i),e}}function v(e,t){return typeof window.fetch==`function`?T(window,`fetch`,(n,r)=>{let i=async function(i,o){let s=n;if(!r())return s.call(this,i,o);let c=t.now(),l=te(i,o),u=ne(i);if(ae(u,t.ignoreUrlPatterns))return s.call(this,i,o);let f=d(u,t.redactUrlPatterns,window.location.href),p=A(o?.body);try{let n=await s.call(this,i,o);return r()&&S(e,a.Network,k({method:l,url:f,status:n.status,durationMs:Math.max(0,t.now()-c),reqBytes:p,resBytes:re(n.headers)}),t.onError),n}catch(n){throw r()&&S(e,a.Network,k({method:l,url:f,status:0,durationMs:Math.max(0,t.now()-c),failed:!0,reqBytes:p}),t.onError),n}},o=Reflect.get(n,`__original`);return Object.defineProperty(i,"__original",{configurable:!0,value:typeof o==`function`?o:n,writable:!0}),i}):m}function y(e,t){let n=window.XMLHttpRequest.prototype,r=/* @__PURE__ */ new WeakMap,i=[];try{return i.push(T(n,`open`,(e,n)=>function(...i){let[a,o]=i;if(!n())return e.apply(this,i);let s=o.toString();return ae(s,t.ignoreUrlPatterns)?(r.delete(this),e.apply(this,i)):(r.set(this,{method:a.toUpperCase(),url:d(s,t.redactUrlPatterns,window.location.href),startedAt:0,reqBytes:0,failed:!1,emitted:!1}),e.apply(this,i))})),i.push(T(n,`send`,(n,i)=>function(...o){let[s]=o,c=i()?r.get(this):void 0;if(c===void 0)return n.apply(this,o);c.startedAt=t.now(),c.reqBytes=A(s);let l=()=>{c.failed=!0},u=()=>{c.emitted||(c.emitted=!0,this.removeEventListener(`error`,l),this.removeEventListener(`abort`,l),this.removeEventListener(`timeout`,l),i()&&S(e,a.Network,k({method:c.method,url:c.url,status:this.status,durationMs:Math.max(0,t.now()-c.startedAt),failed:c.failed||this.status===0,reqBytes:c.reqBytes,resBytes:ie(this)}),t.onError))};this.addEventListener(`error`,l),this.addEventListener(`abort`,l),this.addEventListener(`timeout`,l),this.addEventListener(`loadend`,u,{once:!0});try{return n.apply(this,o)}catch(n){throw this.removeEventListener(`error`,l),this.removeEventListener(`abort`,l),this.removeEventListener(`timeout`,l),this.removeEventListener(`loadend`,u),i()&&S(e,a.Network,k({method:c.method,url:c.url,status:0,durationMs:Math.max(0,t.now()-c.startedAt),failed:!0,reqBytes:c.reqBytes}),t.onError),n}})),E(i)}catch(e){throw D(i),e}}function b(e){return{...e,ignoreUrlPatterns:x(e.ignoreUrlPatterns),redactUrlPatterns:x(e.redactUrlPatterns)}}function x(e){return e.map(e=>{let t=e.flags.replace(/[gy]/gu,``);return t===e.flags?e:new RegExp(e.source,t)})}function S(e,t,n,r){try{e(t,n)}catch(e){r?.(e)}}function C(e){let t=!1;return n=>{if(!t){t=!0;try{let t=e?.(n);w(t)&&Promise.resolve(t).catch(()=>void 0)}catch{}finally{t=!1}}}}function w(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}function T(e,t,n){let r=e,i=r[t];if(typeof i!=`function`)return m;let a=!0,o=n(i,()=>a);return r[t]=o,()=>{a&&(a=!1,r[t]===o&&(r[t]=i))}}function E(e){let t=!1;return()=>{t||(t=!0,D(e))}}function D(e){for(let t=e.length-1;t>=0;--t)try{e[t]?.()}catch{}}function ee(e){if(e==null)return String(e);if(typeof e==`string`)return O(e);if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);if(e instanceof Error)return O(e.stack??`${e.name}: ${e.message}`);try{return O(JSON.stringify(e))}catch{return Object.prototype.toString.call(e)}}function O(e){if(e.length<=p)return e;let t=e.charCodeAt(1023),n=t>=55296&&t<=56319?1023:p;return`${e.slice(0,n)}...(+${String(e.length-n)} chars)`}function te(e,t){return(t?.method??(typeof e==`object`&&`method`in e?e.method:`GET`)).toUpperCase()}function ne(e){return typeof e==`string`||e instanceof URL?e.toString():e.url}function re(e){let t=e.get(`content-length`);if(t===null)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}function ie(e){try{let t=e.getResponseHeader(`content-length`);if(t===null)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}catch{return}}function k(e){return{method:e.method,url:e.url,status:e.status,durationMs:e.durationMs,...e.failed===void 0?{}:{failed:e.failed},...e.reqBytes===void 0?{}:{reqBytes:e.reqBytes},...e.resBytes===void 0?{}:{resBytes:e.resBytes}}}function A(e){if(e==null)return 0;if(typeof e==`string`)return new TextEncoder().encode(e).byteLength;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e.byteLength;if(e instanceof Blob)return e.size}function ae(e,t){return u(e,t)}const oe=/* @__PURE__ */ new Set([`action`,`formaction`,`href`,`src`]);function se(t){let n=()=>{t.beforeUserActivity?.()},r={emit:e=>{t.emit(ce(e,t.redactUrlPatterns))},maskAllInputs:t.maskAllInputs,recordCanvas:!1,collectFonts:!1,inlineImages:!1,recordCrossOriginIframes:!1,slimDOMOptions:`all`,hooks:{input:n,mediaInteaction:n,mouseInteraction:n,mousemove:n,scroll:n,selection:n,viewportResize:n},sampling:{mousemove:100,mouseInteraction:!0,scroll:250,media:800,input:`last`}};t.maskAllText?r.maskTextSelector=`*`:t.maskTextSelector!==void 0&&t.maskTextSelector.length>0&&(r.maskTextSelector=t.maskTextSelector),t.blockSelector!==void 0&&t.blockSelector.length>0&&(r.blockSelector=t.blockSelector),t.checkoutEveryNms!==void 0&&t.checkoutEveryNms>0&&(r.checkoutEveryNms=t.checkoutEveryNms);let i=(0,e.record)(r);if(i===void 0)throw Error(`logfire session replay: rrweb failed to start recording`);return{stop:()=>{i()},addCustomEvent:(t,n)=>{e.record.addCustomEvent(t,n)},takeFullSnapshot:()=>{e.record.takeFullSnapshot(!0)}}}function ce(e,t){if(typeof e.data!=`object`||e.data===null)return e;let i=e.data;if(e.type===n.Meta){if(typeof i.href!=`string`)return e;let n=d(i.href,t,window.location.href);return n===i.href?e:{...e,data:{...i,href:n}}}if(e.type!==n.FullSnapshot&&(e.type!==n.IncrementalSnapshot||i.source!==r.Mutation))return e;let a=j(i,t);return a===i?e:{...e,data:a}}function j(e,t){if(Array.isArray(e)){let n=!1,r=[];for(let i of e){let e=j(i,t);e!==i&&(n=!0),r.push(e)}return n?r:e}if(typeof e!=`object`||!e)return e;let n=e,r=!1,i={};for(let[e,a]of Object.entries(n)){let n=e===`attributes`&&!Array.isArray(a)?le(a,t):j(a,t);n!==a&&(r=!0),i[e]=n}return r?i:e}function le(e,t){if(typeof e!=`object`||!e||Array.isArray(e))return e;let n=e,r=!1,i={};for(let[e,a]of Object.entries(n)){if(!oe.has(e.toLowerCase())||typeof a!=`string`){i[e]=a;continue}let n=d(a,t,window.location.href);n!==a&&(r=!0),i[e]=n}return r?i:e}function M(e){return typeof e==`object`&&e?e:void 0}function N(e){return typeof e==`string`&&e.length>0?e:void 0}function ue(e){let t=M(e),n=N(t?.id);if(t===void 0||n===void 0)return;let r=N(t.name),i=N(t.email);return{id:n,...r===void 0?{}:{name:r},...i===void 0?{}:{email:i}}}function de(e,t,o,s={},c){let l=1/0,u=0,d=0,f=0,p=0,m=!1,h=/* @__PURE__ */ new Set;for(let e of t){e.timestamp<l&&(l=e.timestamp),e.timestamp>u&&(u=e.timestamp);let t=M(e.data);if(e.type===n.FullSnapshot)m=!0;else if(e.type===n.Meta){let e=N(t?.href);e!==void 0&&h.add(e)}else if(e.type===n.IncrementalSnapshot&&t!==void 0){let e=t.source;if(e===r.MouseInteraction){let e=t.type;(e===i.Click||e===i.DblClick)&&d++}else e===r.Input&&f++}else if(e.type===n.Custom&&t!==void 0){let e=N(t.tag),n=M(t.payload);if(e===a.Error)p++;else if(e===a.Console)n?.level===`error`&&p++;else if(e===a.Navigation){let e=N(n?.url);e!==void 0&&h.add(e)}}}return{seq:e,firstTimestamp:l===1/0?0:l,lastTimestamp:u,eventCount:t.length,clickCount:d,keypressCount:f,errorCount:p,hasFullSnapshot:m,urls:[...h],...o!==void 0&&o.length>0?{distinctId:o}:{},...c===void 0?{}:{user:{...c}},...Object.keys(s).length===0?{}:{sessionAttributes:{...s}}}}function P(e=Date.now){let t=e(),n=new Uint8Array(/* @__PURE__ */ new ArrayBuffer(16));fe(n),n[0]=Math.floor(t/2**40)&255,n[1]=Math.floor(t/2**32)&255,n[2]=Math.floor(t/2**24)&255,n[3]=Math.floor(t/2**16)&255,n[4]=Math.floor(t/256)&255,n[5]=t&255,n[6]=(n[6]??0)&15|112,n[8]=(n[8]??0)&63|128;let r=``;for(let e of n)r+=e.toString(16).padStart(2,`0`);return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}function fe(e){let t=globalThis.crypto;if(typeof t?.getRandomValues==`function`){t.getRandomValues(e);return}for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256)}const pe=`lf_session_replay`;var me=class{idleTimeoutMs;maxDurationMs;now;storage;memorySession;pendingSession;persistenceTimer;constructor(e){this.idleTimeoutMs=e.idleTimeoutMs,this.maxDurationMs=e.maxDurationMs,this.now=e.now??Date.now,this.storage=e.storage===void 0?F():e.storage}getSession(){let e=this.now();if(this.memorySession!==void 0&&!this.isExpired(this.memorySession,e))return this.memorySession;let t=this.read();return t!==void 0&&!this.isExpired(t,e)?t:this.createSession(e)}touch(){let e=this.now(),t={...this.getSession(),lastActivityAt:e};return this.memorySession=t,this.scheduleWrite(t),t}reset(){return this.createSession(this.now())}flushPendingStorage(){this.persistenceTimer!==void 0&&(clearTimeout(this.persistenceTimer),this.persistenceTimer=void 0);let e=this.pendingSession;this.pendingSession=void 0,e!==void 0&&this.writeNow(e)}isExpired(e,t){return t-e.lastActivityAt>this.idleTimeoutMs||t-e.startedAt>this.maxDurationMs}createSession(e){let t={id:P(this.now),startedAt:e,lastActivityAt:e};return this.flushPendingStorage(),this.writeNow(t),t}read(){if(this.storage!==null)try{let e=this.storage.getItem(pe);if(e!==null){let t=JSON.parse(e);if(he(t))return this.memorySession=t,t}}catch{return this.memorySession}return this.memorySession}write(e){if(this.memorySession=e,this.storage!==null)try{this.storage.setItem(pe,JSON.stringify(e))}catch{}}scheduleWrite(e){this.pendingSession=e,this.persistenceTimer===void 0&&(this.persistenceTimer=setTimeout(()=>{this.persistenceTimer=void 0;let e=this.pendingSession;this.pendingSession=void 0,e!==void 0&&this.writeNow(e)},1e3))}writeNow(e){this.memorySession=e,this.write(e)}};function F(){try{return globalThis.sessionStorage??null}catch{return null}}function he(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.id==`string`&&t.id.length>0&&typeof t.startedAt==`number`&&Number.isFinite(t.startedAt)&&typeof t.lastActivityAt==`number`&&Number.isFinite(t.lastActivityAt)}var I=class extends Error{droppedSeqs;reason;seq;sessionId;status;constructor(e){super(ge(e),{cause:e.cause}),this.name=`ReplayUploadError`,this.droppedSeqs=Object.freeze([...e.droppedSeqs??[]]),this.reason=e.reason,this.seq=e.seq,this.sessionId=e.sessionId,this.status=e.status}};function ge(e){let t=e.seq===void 0?`replay chunk`:`replay chunk seq=${String(e.seq)}`,n=e.cause instanceof Error?`: ${e.cause.message}`:``;return`${t} ${e.reason}${n}`}const L=`lf_session_replay_seq`,R=1e4,z=3e4,_e={gzip:t.gzip,gzipSync:t.gzipSync};var ve=class{buffer=[];bufferHasFullSnapshot=!1;pendingBytes=0;seq=0;timer;nextFlushAt;lastUserActivityAt;startedAt;started=!1;held;heldBufferIncomplete=!1;minimumBufferIncomplete=!1;minimumDurationSatisfied=!1;firstObservedTimestamp;lastObservedTimestamp;refreshingMinimumSnapshot=!1;mode;queue=[];retainedBytes=0;activeUpload;drainPromise;draining=!1;lifecycleFlights=/* @__PURE__ */ new Set;closed=!1;shuttingDown=!1;retryAbort=new AbortController;deadlineAbort=new AbortController;resyncPending=!1;resyncTimer;lastResyncAt;reservedKeepaliveBytes=0;asyncCompressionAvailable=!0;config;compression;storage;sessionId;sessionAttributes;takeFullSnapshot;constructor(e,t,n,r=F(),i=_e,a={},o={}){this.config=e,this.sessionId=t,this.sessionAttributes=Object.freeze({...a}),this.mode=n,this.storage=r,this.compression=i,this.held=o.holdUntilActivity===!0&&n===`full`,this.takeFullSnapshot=o.takeFullSnapshot,this.minimumDurationSatisfied=e.minSessionDurationMs===0,this.seq=this.readPersistedSequence()??0,this.startedAt=this.config.now(),this.lastUserActivityAt=this.startedAt}start(){this.started||this.mode!==`full`||(this.started=!0,this.scheduleFlush())}add(e){this.minimumDurationSatisfied||(this.firstObservedTimestamp??=e.timestamp,this.lastObservedTimestamp=Math.max(this.lastObservedTimestamp??e.timestamp,e.timestamp)),c(e)&&(this.lastUserActivityAt=this.config.now());let t=H(e);if(this.resyncPending){this.addDuringResync(e,t);return}if(this.refreshingMinimumSnapshot){this.buffer.push(e),this.pendingBytes+=t;return}let r=!this.minimumDurationSatisfied;if(this.mode===`buffer`||this.held||r){if(e.type===n.Meta){this.buffer=[e],this.bufferHasFullSnapshot=!1,this.minimumBufferIncomplete=!1,this.pendingBytes=t,r&&(this.mode===`full`&&(this.firstObservedTimestamp=e.timestamp),this.finishMinimumBufferingEvent());return}if(e.type===n.FullSnapshot){let i=!this.bufferHasFullSnapshot&&this.buffer.length===1&&this.buffer[0]?.type===n.Meta?this.buffer[0]:void 0;this.buffer=i===void 0?[e]:[i,e],this.bufferHasFullSnapshot=!0,this.pendingBytes=t+(i===void 0?0:H(i)),this.heldBufferIncomplete=!1,this.minimumBufferIncomplete=!1,r&&(this.mode===`full`&&(this.firstObservedTimestamp=i?.timestamp??e.timestamp),this.finishMinimumBufferingEvent());return}if(!this.bufferHasFullSnapshot||t>this.config.maxBufferBytes){this.heldBufferIncomplete||=this.held,this.minimumBufferIncomplete||=r,r&&this.finishMinimumBufferingEvent();return}if(this.pendingBytes+t>this.config.maxBufferBytes){this.heldBufferIncomplete||=this.held,this.minimumBufferIncomplete||=r,r&&this.finishMinimumBufferingEvent();return}}if(e.type===n.Meta&&this.mode===`full`&&this.buffer.length>0&&this.flushAndReport(),this.buffer.push(e),this.pendingBytes+=t,r&&this.minimumDurationReached()){this.flushAndReport();return}this.mode===`full`&&this.pendingBytes>=this.config.maxBufferBytes&&e.type!==n.Meta?this.flushAndReport():this.scheduleFlush()}addDuringResync(e,t){if(e.type===n.Meta){this.buffer=[e],this.pendingBytes=t;return}if(e.type!==n.FullSnapshot)return;let r=this.buffer.length===1&&this.buffer[0]?.type===n.Meta?this.buffer[0]:void 0;this.buffer=r===void 0?[e]:[r,e],this.pendingBytes=t+(r===void 0?0:H(r)),this.resyncPending=!1,this.clearResyncTimer(),this.pendingBytes>=this.config.maxBufferBytes?this.flushAndReport():this.scheduleFlush()}async triggerFlush(){return this.mode===`buffer`&&(this.bufferHasFullSnapshot||(this.buffer=[],this.pendingBytes=0),this.mode=`full`,this.start()),this.flush()}async flush(e={}){return this.flushInternal(e)}async flushInternal(e={}){if(this.closed||this.mode===`buffer`||this.held||this.buffer.length===0||!this.minimumDurationReached()||(this.clearScheduledFlush(),this.minimumBufferIncomplete&&!this.refreshMinimumBuffer()))return;this.minimumDurationSatisfied=!0;let t=this.buffer,n=this.pendingBytes;this.buffer=[],this.bufferHasFullSnapshot=!1,this.minimumBufferIncomplete=!1,this.pendingBytes=0;let r=this.sessionId,i=this.snapshotIdentity();if(e.keepalive===!0){let e=Se(t),n=this.allocateSeq(e.length),a=this.deliverLifecycle(e,n,r,i);this.lifecycleFlights.add(a);let o=()=>{this.lifecycleFlights.delete(a)};a.then(o,o),await a;return}await this.enqueue(t,n,r,i)?.done}async shutdown(e={}){if(this.started=!1,this.clearScheduledFlush(),this.held||!this.minimumDurationReached()){this.discard(),await this.settleWithinDeadline([]);return}if(e.keepalive===!0){await this.flush(e),this.closed=!0,this.clearResyncTimer(),await this.settleWithinDeadline([]);return}let t=this.flushInternal();this.closed=!0,this.shuttingDown=!0,this.clearResyncTimer(),this.retryAbort.abort();let n=this.queue.filter(e=>e!==this.activeUpload).map(async e=>this.finalAttempt(e));await this.settleWithinDeadline([t,...n])}discard(){this.started=!1,this.closed=!0,this.clearScheduledFlush(),this.clearResyncTimer(),this.buffer=[],this.bufferHasFullSnapshot=!1,this.minimumBufferIncomplete=!1,this.pendingBytes=0}getMode(){return this.mode}isHeld(){return this.held}releaseHeld(e){this.held&&((this.heldBufferIncomplete||!this.bufferHasFullSnapshot)&&(this.buffer=[],this.bufferHasFullSnapshot=!1,this.pendingBytes=0,e()),this.held=!1,this.pendingBytes>=this.config.maxBufferBytes?this.flushAndReport():this.scheduleFlush())}flushAndReport(){this.flushInternal().catch(e=>{B(this.config.onError,e)})}scheduleFlush(){let e=this.config.now(),t=Math.max(0,this.config.minSessionDurationMs-(e-this.startedAt)),n=Math.max(l(this.config.flushIntervalMs,e-this.lastUserActivityAt),t);this.scheduleFlushIn(e,n)}scheduleFlushIn(e,t){if(!this.started||this.mode!==`full`||this.held||this.buffer.length===0)return;let n=e+t;this.timer!==void 0&&this.nextFlushAt!==void 0&&this.nextFlushAt<=n||(this.clearScheduledFlush(),this.nextFlushAt=n,this.timer=setTimeout(()=>{this.timer=void 0,this.nextFlushAt=void 0,this.flushAndReport()},t))}clearScheduledFlush(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0),this.nextFlushAt=void 0}minimumDurationReached(){return this.minimumDurationSatisfied||this.config.minSessionDurationMs===0?!0:this.firstObservedTimestamp===void 0||this.lastObservedTimestamp===void 0?!1:this.lastObservedTimestamp-this.firstObservedTimestamp>=this.config.minSessionDurationMs}finishMinimumBufferingEvent(){this.minimumDurationReached()?this.flushAndReport():this.scheduleFlush()}refreshMinimumBuffer(){let e=this.buffer.length,t=this.pendingBytes;if(this.takeFullSnapshot!==void 0){this.refreshingMinimumSnapshot=!0;try{this.takeFullSnapshot()}catch(e){B(this.config.onError,e)}finally{this.refreshingMinimumSnapshot=!1}}return this.buffer.slice(e).some(e=>e.type===n.FullSnapshot)?(this.minimumBufferIncomplete=!1,!0):(this.buffer.length=e,this.pendingBytes=t,!1)}snapshotIdentity(){let e=this.snapshotUser(),t=this.config.distinctId;if(this.config.getDistinctId!==void 0)try{t=this.config.getDistinctId()??this.config.distinctId}catch(e){B(this.config.onError,e)}else e!==void 0&&(t=e.id);return{distinctId:t,user:e}}createEnvelope(e,t,n){return{version:1,meta:de(t,e,n.distinctId,this.sessionAttributes,n.user),events:e}}snapshotUser(){if(this.config.getUser!==void 0)try{return ue(this.config.getUser())}catch(e){B(this.config.onError,e);return}}allocateSeq(e){let t=this.seq;return this.seq+=e,this.saveSeq(this.sessionId,this.seq),t}enqueue(e,t,r,i){let a=Math.max(2e6,2*this.config.maxBufferBytes);if(this.queue.length>0&&this.retainedBytes+t>a){B(this.config.onError,new I({cause:/* @__PURE__ */ Error(`replay upload queue is full`),reason:`not-sent`,seq:void 0,sessionId:r})),this.beginResync();return}let o=()=>void 0,s={body:void 0,done:new Promise(e=>{o=e}),events:e,hasFullSnapshot:e.some(e=>e.type===n.FullSnapshot),identity:i,reachedFetch:!1,resolve:o,retainedBytes:t,seq:this.allocateSeq(1),sessionId:r,settled:!1};return this.queue.push(s),this.retainedBytes+=t,this.draining||(this.draining=!0,this.drainPromise=this.drain()),s}async drain(){try{for(;!this.shuttingDown;){let e=this.queue[0];if(e===void 0)break;this.activeUpload=e;let t=await this.deliverQueued(e);this.activeUpload=void 0,this.settle(e,t)}}finally{this.activeUpload=void 0,this.draining=!1}}async deliverQueued(e){let t=await this.compressQueued(e);if(t!==void 0||e.settled)return t;let n=Date.now(),r;for(let t=1;;t++){let i=z-(Date.now()-n);if(t>1&&i<=0)return G(r,e.reachedFetch);let a=await this.attemptQueued(e,Math.min(R,i));if(a===void 0)return;r=a;let o=Ee(a,t,this.config.random);if(o===void 0||this.shuttingDown||Date.now()-n+o>=z)return G(a,e.reachedFetch);await this.backoff(o)}}async compressQueued(e){if(e.body!==void 0||e.events===void 0)return;let n=e.events;try{let r=(0,t.strToU8)(JSON.stringify(this.createEnvelope(n,e.seq,e.identity))),i=this.shuttingDown?this.compression.gzipSync(r):await this.compressOrdinary(r);if(e.events!==n)return await this.compressQueued(e);e.settled||(this.retainedBytes+=i.byteLength-e.retainedBytes,e.retainedBytes=i.byteLength,e.body=i,e.events=void 0);return}catch(e){return{cause:e,reason:`not-sent`}}}async attemptQueued(e,t=R){let n=e.body;if(n!==void 0)try{await this.send({body:n,requestKeepalive:!1,reservedBytes:0,seq:e.seq,sessionId:e.sessionId},()=>{e.reachedFetch=!0},t);return}catch(e){return e}}async finalAttempt(e){let t=await this.compressQueued(e);if(t!==void 0){this.settle(e,t);return}let n=await this.attemptQueued(e);this.settle(e,n===void 0?void 0:G(n,e.reachedFetch))}async settleWithinDeadline(e){let t=Promise.all([...e,this.drainPromise,...this.lifecycleFlights]).then(()=>void 0,()=>void 0),n,r=new Promise(e=>{n=setTimeout(e,R)});if(await Promise.race([t,r]),clearTimeout(n),this.shuttingDown){this.deadlineAbort.abort(/* @__PURE__ */ Error(`replay upload did not finish before shutdown`));for(let e of[...this.queue])this.settle(e,{cause:/* @__PURE__ */ Error(`replay upload did not finish before shutdown`),reason:e.reachedFetch?`unconfirmed`:`not-sent`})}}settle(e,t){if(e.settled)return;e.settled=!0,this.retainedBytes-=e.retainedBytes;let n=this.queue.indexOf(e);n>=0&&this.queue.splice(n,1),e.body=void 0,e.events=void 0,e.resolve(),t!==void 0&&this.handleSequencedLoss(e.seq,e.sessionId,t)}handleSequencedLoss(e,t,n){let r=[];if(!this.shuttingDown){let t=!1;for(let n of[...this.queue])if(!(n.seq<e)){if(n.events===void 0){if(n.hasFullSnapshot){t=!0;break}continue}if(n.hasFullSnapshot){let e=U(n.events),r=W(e);this.retainedBytes+=r-n.retainedBytes,n.retainedBytes=r,n.events=e,t=!0;break}r.push(n.seq),this.settle(n,void 0)}!t&&!this.trimBufferToAnchor()&&this.beginResync()}B(this.config.onError,new I({cause:n.cause,droppedSeqs:r,reason:n.reason,seq:e,sessionId:t,status:n.status}))}trimBufferToAnchor(){return this.buffer.some(e=>e.type===n.FullSnapshot)?(this.buffer=U(this.buffer),this.pendingBytes=W(this.buffer),!0):!1}beginResync(){this.closed||(this.resyncPending=!0,this.buffer=[],this.bufferHasFullSnapshot=!1,this.pendingBytes=0,this.clearScheduledFlush(),this.scheduleResyncSnapshot())}scheduleResyncSnapshot(){if(this.resyncTimer!==void 0||this.closed)return;let e=this.lastResyncAt===void 0?0:Math.max(0,this.lastResyncAt+6e4-this.config.now());this.resyncTimer=setTimeout(()=>{this.resyncTimer=void 0,this.takeResyncSnapshot()},e)}takeResyncSnapshot(){if(this.resyncPending&&!this.closed&&this.takeFullSnapshot!==void 0){this.lastResyncAt=this.config.now();try{this.takeFullSnapshot()}catch(e){B(this.config.onError,e),this.scheduleResyncSnapshot();return}this.isResyncPending()&&(B(this.config.onError,/* @__PURE__ */ Error(`replay resync snapshot produced no full snapshot`)),this.scheduleResyncSnapshot())}}isResyncPending(){return this.resyncPending}clearResyncTimer(){this.resyncTimer!==void 0&&(clearTimeout(this.resyncTimer),this.resyncTimer=void 0)}async backoff(e){let t=this.retryAbort.signal;t.aborted||await new Promise(n=>{let r=()=>{clearTimeout(i),t.removeEventListener(`abort`,r),n()},i=setTimeout(r,e);t.addEventListener(`abort`,r)})}async deliverLifecycle(e,n,r,i){let a=[];for(let o=0;o<e.length;o++){let s=e[o];if(s===void 0){a.push(void 0);continue}let c=this.createEnvelope(s,n+o,i);try{a.push({body:this.compression.gzipSync((0,t.strToU8)(JSON.stringify(c))),requestKeepalive:!1,reservedBytes:0,seq:n+o,sessionId:r})}catch(e){this.handleSequencedLoss(n+o,r,{cause:e,reason:`not-sent`}),a.push(void 0)}}let o=!0,s=Math.max(0,48e3-this.reservedKeepaliveBytes);for(let e of a){if(e===void 0){o=!1;continue}o&&e.body.byteLength<=s?(e.requestKeepalive=!0,e.reservedBytes=e.body.byteLength,this.reservedKeepaliveBytes+=e.reservedBytes,s-=e.reservedBytes):o=!1}await Promise.all(a.map(async e=>{if(e===void 0)return;let t=!1;try{await this.send(e,()=>{t=!0})}catch(n){this.handleSequencedLoss(e.seq,e.sessionId,G(n,t))}}))}async compressOrdinary(e){if(!this.asyncCompressionAvailable)return this.compression.gzipSync(e);try{return await Ce(this.compression,e)}catch{return this.asyncCompressionAvailable=!1,this.compression.gzipSync(e)}}async send(e,t,n=R){let r,i,a,o=new AbortController,s=setTimeout(()=>{o.abort(/* @__PURE__ */ Error(`replay upload timed out after ${String(n)}ms`))},n),c=this.deadlineAbort.signal,l=()=>{o.abort(c.reason)};c.addEventListener(`abort`,l);try{let n=`${this.config.replayUrl.replace(/\/+$/u,``)}/${encodeURIComponent(e.sessionId)}?seq=${String(e.seq)}`,s=await xe(this.getUploadHeaders(),o.signal);t();let c=this.config.fetchImpl(n,{method:`POST`,headers:s,body:e.body.slice(),keepalive:e.requestKeepalive,signal:o.signal});r=!0;let l=await c;if(i=!0,a=await we(l),!l.ok){let e=l.status===429||l.status===503?De(l.headers.get(`retry-after`),Date.now()):void 0;throw new V(l.status,e)}}finally{clearTimeout(s),c.removeEventListener(`abort`,l),e.reservedBytes>0&&(r!==!0||i!==!0||a===!0)&&(this.reservedKeepaliveBytes=Math.max(0,this.reservedKeepaliveBytes-e.reservedBytes))}}async getUploadHeaders(){let e=this.config.headers===void 0?{}:await this.config.headers(),t=await be(this.config.token);return{...t===void 0||t.length===0?e:{...Object.fromEntries(Object.entries(e).filter(([e])=>e.toLowerCase()!==`authorization`)),Authorization:`Bearer ${t}`},"Content-Type":`application/json`,"Content-Encoding":`gzip`}}canResumeSequence(){return this.readPersistedSequence()===this.seq}readPersistedSequence(){if(this.storage!==null)try{let e=this.storage.getItem(L);if(e===null)return;let t=JSON.parse(e);if(typeof t!=`object`||!t)return;let n=t;return n.id===this.sessionId&&typeof n.seq==`number`&&Number.isSafeInteger(n.seq)&&n.seq>=0?n.seq:void 0}catch{return}}saveSeq(e,t){if(this.storage!==null)try{this.storage.setItem(L,JSON.stringify({id:e,seq:t}))}catch{}}};function B(e,t){try{let n=e?.(t);ye(n)&&Promise.resolve(n).catch(()=>void 0)}catch{}}function ye(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}var V=class extends Error{retryAfter;status;constructor(e,t){super(`replay ingest failed: ${String(e)}`),this.status=e,this.retryAfter=t,this.name=`ReplayIngestError`}};async function be(e){return typeof e==`function`?e():e}async function xe(e,t){if(t.aborted)throw t.reason;return new Promise((n,r)=>{let i=()=>{r(t.reason)};t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{t.removeEventListener(`abort`,i),n(e)},e=>{t.removeEventListener(`abort`,i),r(e instanceof Error?e:Error(String(e)))})})}function H(e){try{return(0,t.strToU8)(JSON.stringify(e)).byteLength}catch{return 0}}function U(e){let t=e.findIndex(e=>e.type===n.FullSnapshot);if(t<0)return e;let r=t>0&&e[t-1]?.type===n.Meta?t-1:t;return e.slice(r)}function W(e){return e.reduce((e,t)=>e+H(t),0)}function Se(e){let t=[],n=[],r=0;for(let i of e){let e=H(i);n.length>0&&r+e>48e3&&(t.push(n),n=[],r=0),n.push(i),r+=e}return n.length>0&&t.push(n),t}async function Ce(e,t){return new Promise((n,r)=>{let i=[];typeof window<`u`&&i.push(window),typeof document<`u`&&i.push(document);let a=()=>{for(let e of i)e.removeEventListener(`securitypolicyviolation`,s)},o=(e,t)=>{if(a(),e!==null){r(e);return}n(t)},s=e=>{let t=e;(t.effectiveDirective.includes(`worker-src`)||t.violatedDirective.includes(`worker-src`))&&o(/* @__PURE__ */ Error(`replay compression worker blocked by Content Security Policy`))};for(let e of i)e.addEventListener(`securitypolicyviolation`,s);try{e.gzip(t,{level:6},(e,t)=>{o(e,t)})}catch(e){a(),r(e instanceof Error?e:Error(String(e)))}})}async function we(e){if(e.body===null)return!0;try{return await e.body.cancel(),!0}catch{return!1}}function Te(e){return e===408||e===425||e===429||e>=500}function Ee(e,t,n){if(e instanceof V&&!Te(e.status))return;let r=Math.min(8e3,500*2**(t-1)),i=Math.round(r*(1-.5*n())),a=e instanceof V?e.retryAfter:void 0;return a===void 0?i:Math.max(a,i)}function G(e,t){let n=e instanceof V?e.status:void 0;return n!==void 0&&!Te(n)?{cause:e,reason:`rejected`,status:n}:{cause:e,reason:t?`unconfirmed`:`not-sent`,status:n}}function De(e,t){if(e===null)return;let n=e.trim();if(/^\d+$/u.test(n)){let e=Number(n);return Number.isSafeInteger(e)?e*1e3:void 0}let r=je(n,t);return r===void 0?void 0:Math.max(0,r-t)}const Oe=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],ke=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],Ae=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function je(e,t){let n=/^(Sun|Mon|Tue|Wed|Thu|Fri|Sat), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{2}):(\d{2}):(\d{2}) GMT$/u.exec(e);if(n!==null)return K(n[1],n[2],n[3],n[4],n[5],n[6],n[7]);let r=/^(Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{2}):(\d{2}):(\d{2}) GMT$/u.exec(e);if(r!==null){let e=new Date(t).getUTCFullYear(),n=Number(r[4]),i=Math.floor(e/100)*100+n;return i>e+50&&(i-=100),K(r[1],r[2],r[3],String(i),r[5],r[6],r[7])}let i=/^(Sun|Mon|Tue|Wed|Thu|Fri|Sat) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{2}| \d) (\d{2}):(\d{2}):(\d{2}) (\d{4})$/u.exec(e);if(i!==null)return K(i[1],i[3]?.trim(),i[2],i[7],i[4],i[5],i[6])}function K(e,t,n,r,i,a,o){let s=Number(t),c=Oe.indexOf(n),l=Number(r),u=Number(i),d=Number(a),f=Number(o);if(c<0||s<1||s>31||u>23||d>59||f>59)return;let p=/* @__PURE__ */ new Date(0);if(p.setUTCFullYear(l,c,s),p.setUTCHours(u,d,f,0),p.getUTCFullYear()!==l||p.getUTCMonth()!==c||p.getUTCDate()!==s||p.getUTCHours()!==u||p.getUTCMinutes()!==d||p.getUTCSeconds()!==f)return;let m=ke.indexOf(e),h=Ae.indexOf(e);return(m>=0?m:h)===p.getUTCDay()?p.getTime():void 0}const Me=`lf_session_replay_recording`,q=`lf_session_replay_recording_owner`;var Ne=class{state;storage;owner;now;maxDurationMs;readOpenerState;constructor(e,t,n,r=()=>null){this.storage=e,this.now=t,this.owner=P(t),this.maxDurationMs=Math.min(n,72e5),this.readOpenerState=r;try{e?.getItem(`lf_session_replay_recording_owner`)===null&&(this.state=this.readResumableState()),e?.setItem(q,this.owner),e?.getItem(`lf_session_replay_recording_owner`)!==this.owner&&(this.storage=null,this.state=void 0)}catch{this.storage=null,this.state=void 0}}get(e){if(this.state!==void 0&&this.isCurrent(this.state.id,e))return this.state.id;this.state={id:P(this.now),rumSessionId:e,startedAt:this.now()};try{this.storage?.setItem(Me,JSON.stringify(this.state))}catch{}return this.state.id}isCurrent(e,t){let n=this.state;if(n===void 0)return!1;let r=this.now();return n.id===e&&n.rumSessionId===t&&r>=n.startedAt&&r-n.startedAt<this.maxDurationMs}release(){try{this.storage?.getItem(`lf_session_replay_recording_owner`)===this.owner&&this.storage.removeItem(q)}catch{}}resume(){try{this.state=this.storage?.getItem(`lf_session_replay_recording_owner`)===null?this.readResumableState():void 0,this.storage?.setItem(q,this.owner),this.storage?.getItem(`lf_session_replay_recording_owner`)!==this.owner&&(this.state=void 0,this.storage=null)}catch{this.state=void 0,this.storage=null}}readResumableState(){let e=this.storage?.getItem(Me),t=this.storage?.getItem(L);if(e==null||t==null)return;let n=null;try{n=this.readOpenerState()}catch{}if(n!==e)return Pe(e,t)}};function Pe(e,t){let n=JSON.parse(e),r=JSON.parse(t);if(typeof n!=`object`||!n||typeof r!=`object`||!r)return;let i=n,a=r;if(!(typeof i.id!=`string`||i.id.length===0||typeof i.rumSessionId!=`string`||typeof i.startedAt!=`number`||!Number.isFinite(i.startedAt)||a.id!==i.id||typeof a.seq!=`number`||!Number.isSafeInteger(a.seq)||a.seq<0))return{id:i.id,rumSessionId:i.rumSessionId,startedAt:i.startedAt}}function Fe(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function Ie(e){let t=e.random??Math.random;return t()<Fe(e.sessionSampleRate)?`full`:t()<Fe(e.onErrorSampleRate)?`buffer`:`off`}const Le=/^[a-z][a-z0-9_]{0,63}$/u;function Re(e,t){let n=0;for(let r of e)if(n+=+(r.length>0),n>t)return!1;return!0}function ze(e,t){if(e===void 0)return Object.freeze({});let n;try{n=e()}catch(e){return t(e),Object.freeze({})}if(typeof n!=`object`||!n||Array.isArray(n))return Object.freeze({});let r;try{r=Object.getPrototypeOf(n)}catch(e){return t(e),Object.freeze({})}if(r!==Object.prototype&&r!==null)return Object.freeze({});let i;try{i=Object.keys(n)}catch(e){return t(e),Object.freeze({})}let a={},o=0;for(let e of i){if(!Le.test(e))continue;let r;try{r=Reflect.get(n,e)}catch(e){t(e);continue}if((typeof r==`boolean`||typeof r==`number`&&Number.isFinite(r)||typeof r==`string`&&Re(r,200))&&(Object.defineProperty(a,e,{configurable:!0,enumerable:!0,value:r,writable:!0}),o+=1,o===20))break}return Object.freeze(a)}const Be={mode:`off`,recording:!1,getSessionId:()=>``,captureError:()=>void 0,getRecordingId:()=>``,flush:async()=>Promise.resolve(),stop:async()=>Promise.resolve()},Ve=`lf_session_replay_mode`,J=Symbol.for(`@pydantic/logfire-session-replay/controller`);function He(e){if(typeof window>`u`||typeof document>`u`)return Be;let t=$e();try{let n=We(e),r=new me({idleTimeoutMs:n.sessionIdleTimeoutMs,maxDurationMs:n.maxSessionDurationMs,now:n.now}),i=r.getSession().id,a=e=>{let t;try{t=n.getSessionId?.()}catch(e){return Z(n.onError,e),i}if(t!==void 0&&t.length>0)return i=t,t;let a=e?r.touch().id:r.getSession().id;return i=a,a},o=F(),s=new Ne(o,n.now,n.maxSessionDurationMs,()=>window.opener?.sessionStorage.getItem(`lf_session_replay_recording`)??null),c=a(!1),l=s.get(c),u,d=!1,f=!1,p=0,m=!0,h=Promise.resolve(),g=Promise.resolve(),_,v=(e,t,r=!t)=>{let i=Ge(n,e,o);if(!(i===`off`||d||f||u!==void 0||e!==c))try{let t=l;u=Ue({config:n,getSessionId:a,mode:i,onSessionChanged:y,samplingModeStorage:o,sessionId:e,recordingId:t,isCurrentRecording:()=>s.isCurrent(t,a(!1)),holdUntilActivity:r})}catch(e){if(u=void 0,t)throw e;Z(n.onError,e)}},y=(e,t=!0)=>{if(d||f)return;let r=s.get(e);if(e===c&&r===l)return;c=e,l=r;let i=u;u=void 0;let a=i?.deactivate()??Promise.resolve(),o=p;h=h.then(async()=>{await X(a,n.onError),!d&&p===o&&c===e&&l===r&&v(e,!1,t)})},b;try{v(c,!0),b=setInterval(()=>{y(a(!1))},1e3)}catch(e){throw u?.discard(),u=void 0,s.release(),e}let x=()=>{f=!0,p+=1;let e=u;u=void 0;let t=e?.deactivate(!0)??Promise.resolve();g=Promise.all([g,h,X(t,n.onError)]).then(()=>void 0),h=Promise.resolve(),m=e?.transport.canResumeSequence()??m,m&&s.release()},S=e=>{if(!e.persisted||d)return;u?.discard(),u=void 0;let t=p;h=h.then(async()=>{await new Promise(e=>{setTimeout(e,0)}),!(d||p!==t)&&(f=!1,s.resume(),c=a(!1),l=s.get(c),m=!0,v(c,!1,!1))})};return window.addEventListener(`pagehide`,x),window.addEventListener(`pageshow`,S),{get mode(){try{return u?.transport.getMode()??`off`}catch(e){return Z(n.onError,e),`off`}},get recording(){try{return u!==void 0}catch(e){return Z(n.onError,e),!1}},getSessionId:()=>a(!1),captureError:(e,t)=>{try{u?.captureError(e,t)}catch(e){Z(n.onError,e)}},getRecordingId:()=>u!==void 0&&s.isCurrent(u.recordingId,a(!1))?u.recordingId:``,flush:async()=>{try{await h,await u?.transport.flush()}catch(e){Z(n.onError,e)}},stop:async()=>(_??=(async()=>{d=!0,p+=1,clearInterval(b),window.removeEventListener(`pagehide`,x),window.removeEventListener(`pageshow`,S);let e=u;u=void 0,await X(e?.deactivate()??Promise.resolve(),n.onError),await h,await g,r.flushPendingStorage(),m=e?.transport.canResumeSequence()??m,m&&s.release(),t()})(),_)}}catch(e){throw t(),e}}function Ue(e){let{config:t,getSessionId:n,holdUntilActivity:r,mode:i,onSessionChanged:o,samplingModeStorage:s,sessionId:l,recordingId:u,isCurrentRecording:d}=e,f=ze(t.getSessionAttributes,e=>{Z(t.onError,e)}),p,m=new ve(t,u,i,void 0,void 0,f,{holdUntilActivity:r,takeFullSnapshot:()=>{p.takeFullSnapshot()}}),v=[],y=!0,b=()=>y,x;try{p=se({beforeUserActivity:()=>{if(y&&m.isHeld())try{let e=n(!0);if(e!==l||!d()){o(e,!1);return}m.releaseHeld(()=>{p.takeFullSnapshot()})}catch(e){Z(t.onError,e)}},emit:e=>{if(y)try{let t=n(c(e));if(t!==l||!d()){o(t,!1);return}m.add(e)}catch(e){Z(t.onError,e)}},maskAllText:t.maskAllText,maskAllInputs:t.maskAllInputs,maskTextSelector:t.maskTextSelector,blockSelector:t.blockSelector,checkoutEveryNms:i===`buffer`?12e4:Math.max(3e5,t.minSessionDurationMs),redactUrlPatterns:t.redactUrlPatterns}),v.push(()=>{p.stop()});let e=(e,n)=>{if(y)try{p.addCustomEvent(e,n)}catch(e){Z(t.onError,e)}},r=n=>{b()&&(m.releaseHeld(()=>{p.takeFullSnapshot()}),e(a.Error,n),b()&&m.getMode()===`buffer`&&(qe(s,l,`full`),Y(m.triggerFlush(),t.onError)))},f=/* @__PURE__ */ new WeakSet,S=e=>typeof e!=`object`||!e||!f.has(e)&&(f.add(e),!0),C=(e,t)=>{if(S(e)){let n=$(Ye(e),void 0,Xe(e));r(typeof t?.timestamp==`number`?{...n,timestamp:t.timestamp}:n)}},w=e=>{e instanceof ErrorEvent&&S(e.error)&&r($(e.message,e.filename,Xe(e.error)))},T=e=>{C(e.reason)},E=()=>{document.visibilityState===`hidden`&&Y(m.flush({keepalive:!0}),t.onError)},D=()=>{Y(m.flush({keepalive:!0}),t.onError)};return t.captureGlobalErrors&&(window.addEventListener(`error`,w,!0),v.push(()=>{window.removeEventListener(`error`,w,!0)}),window.addEventListener(`unhandledrejection`,T,!0),v.push(()=>{window.removeEventListener(`unhandledrejection`,T,!0)})),document.addEventListener(`visibilitychange`,E),v.push(()=>{document.removeEventListener(`visibilitychange`,E)}),window.addEventListener(`pagehide`,D),v.push(()=>{window.removeEventListener(`pagehide`,D)}),t.captureConsole&&v.push(h(e,{onError:t.onError})),t.captureNetwork&&v.push(g(e,{ignoreUrlPatterns:t.ignoreUrlPatterns,now:t.now,onError:t.onError,redactUrlPatterns:t.redactUrlPatterns})),t.captureNavigation&&v.push(_(e,{onError:t.onError,redactUrlPatterns:t.redactUrlPatterns})),m.start(),{sessionId:l,recordingId:u,transport:m,captureError:C,deactivate:async(e=!1)=>(x??=(async()=>{let t=m.shutdown({keepalive:e});y=!1,Q(v),await t})(),x),discard:()=>{y=!1,Q(v),m.discard()}}}catch(e){throw y=!1,Q(v),m.discard(),e}}function We(e){if(e.replayUrl.length===0)throw Error("logfire session replay: `replayUrl` is required");let t=new URL(e.replayUrl,`https://logfire.invalid/`);if(t.search!==``||t.hash!==``)throw Error("logfire session replay: `replayUrl` must not contain a query or fragment");let n=e.fetchImpl??(typeof fetch==`function`?fetch.bind(globalThis):void 0);if(n===void 0)throw Error("logfire session replay: no `fetch` available; pass `fetchImpl`");return{replayUrl:e.replayUrl,headers:e.headers,token:e.token,getSessionId:e.getSessionId,getSessionAttributes:e.getSessionAttributes,sessionSampleRate:e.sessionSampleRate??o.sessionSampleRate,onErrorSampleRate:e.onErrorSampleRate??o.onErrorSampleRate,maskAllText:e.maskAllText??o.maskAllText,maskAllInputs:e.maskAllInputs??o.maskAllInputs,maskTextSelector:e.maskTextSelector??o.maskTextSelector,blockSelector:e.blockSelector??o.blockSelector,flushIntervalMs:e.flushIntervalMs??o.flushIntervalMs,maxBufferBytes:e.maxBufferBytes??o.maxBufferBytes,minSessionDurationMs:e.minSessionDurationMs??o.minSessionDurationMs,sessionIdleTimeoutMs:e.sessionIdleTimeoutMs??o.sessionIdleTimeoutMs,maxSessionDurationMs:e.maxSessionDurationMs??o.maxSessionDurationMs,distinctId:e.distinctId??o.distinctId,getDistinctId:e.getDistinctId,getUser:e.getUser,captureConsole:e.captureConsole??o.captureConsole,captureNetwork:e.captureNetwork??o.captureNetwork,captureNavigation:e.captureNavigation??o.captureNavigation,captureGlobalErrors:e.captureGlobalErrors??o.captureGlobalErrors,ignoreUrlPatterns:e.ignoreUrlPatterns??[],redactUrlPatterns:e.redactUrlPatterns??[...o.redactUrlPatterns],onError:e.onError,fetchImpl:n,now:e.now??Date.now,random:e.random??Math.random}}function Ge(e,t,n){let r=Ke(n,t);if(r!==void 0)return r;let i=Ie({sessionSampleRate:e.sessionSampleRate,onErrorSampleRate:e.onErrorSampleRate,random:e.random});return qe(n,t,i),i}function Ke(e,t){if(e!==null)try{let n=e.getItem(Ve);if(n===null)return;let r=JSON.parse(n);if(typeof r!=`object`||!r)return;let i=r;return i.id!==t||!Je(i.mode)?void 0:i.mode}catch{return}}function qe(e,t,n){if(e!==null)try{e.setItem(Ve,JSON.stringify({id:t,mode:n}))}catch{}}function Je(e){return e===`full`||e===`buffer`||e===`off`}function Ye(e){return et(Ze(e,`message`)??e)}function Xe(e){let t=Ze(e,`stack`);return typeof t==`string`?t:void 0}function Ze(e,t){try{return typeof e==`object`&&e&&t in e?e[t]:void 0}catch{return}}function Y(e,t){e.catch(e=>{Z(t,e)})}async function X(e,t){try{await e}catch(e){Z(t,e)}}function Z(e,t){try{let n=e?.(t);Qe(n)&&Promise.resolve(n).catch(()=>void 0)}catch{}}function Qe(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}function $e(){let e=globalThis;if(e[J]!==void 0)throw Error(`logfire session replay: a replay controller is already active in this page`);let t={};Object.defineProperty(e,J,{configurable:!0,enumerable:!1,value:t,writable:!0});let n=!1;return()=>{n||(n=!0,e[J]===t&&Reflect.deleteProperty(e,J))}}function Q(e){for(let t=e.length-1;t>=0;--t)try{e[t]?.()}catch{}e.length=0}function $(e,t,n){return{message:e,...t===void 0||t.length===0?{}:{source:t},...n===void 0?{}:{stack:n}}}function et(e){if(e==null)return`unhandledrejection`;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`||typeof e==`symbol`)return String(e);try{return Object.prototype.toString.call(e)}catch{return`[object Object]`}}exports.CHUNK_ENVELOPE_VERSION=1,exports.CustomTag=a,exports.EventType=n,exports.IncrementalSource=r,exports.MouseInteractions=i,exports.ReplayUploadError=I,exports.startSessionReplay=He;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as
|
|
2
|
-
export { CHUNK_ENVELOPE_VERSION, type ChunkEnvelope, type ChunkMeta, type ConsolePayload, CustomTag, EventType, IncrementalSource, MouseInteractions, type NavigationPayload, type NetworkPayload, type ReplayUser, type RrwebEvent, type SamplingMode, type SessionAttributeValue, type SessionAttributes, type SessionAttributesInput, SessionReplay, type SessionReplayConfig, startSessionReplay };
|
|
1
|
+
import { C as SessionReplayConfig, S as SessionAttributesInput, _ as ReplayUser, a as ReplayUploadErrorInit, b as SessionAttributeValue, c as ChunkEnvelope, d as CustomTag, f as EventType, g as NetworkPayload, h as NavigationPayload, i as ReplayUploadError, l as ChunkMeta, m as MouseInteractions, n as SessionReplay, o as ReplayUploadFailureReason, p as IncrementalSource, r as startSessionReplay, s as CHUNK_ENVELOPE_VERSION, t as CaptureErrorOptions, u as ConsolePayload, v as RrwebEvent, x as SessionAttributes, y as SamplingMode } from "./index-BxzwrVOz.js";
|
|
2
|
+
export { CHUNK_ENVELOPE_VERSION, CaptureErrorOptions, type ChunkEnvelope, type ChunkMeta, type ConsolePayload, CustomTag, EventType, IncrementalSource, MouseInteractions, type NavigationPayload, type NetworkPayload, ReplayUploadError, type ReplayUploadErrorInit, type ReplayUploadFailureReason, type ReplayUser, type RrwebEvent, type SamplingMode, type SessionAttributeValue, type SessionAttributes, type SessionAttributesInput, SessionReplay, type SessionReplayConfig, startSessionReplay };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as
|
|
2
|
-
export { CHUNK_ENVELOPE_VERSION, type ChunkEnvelope, type ChunkMeta, type ConsolePayload, CustomTag, EventType, IncrementalSource, MouseInteractions, type NavigationPayload, type NetworkPayload, type ReplayUser, type RrwebEvent, type SamplingMode, type SessionAttributeValue, type SessionAttributes, type SessionAttributesInput, SessionReplay, type SessionReplayConfig, startSessionReplay };
|
|
1
|
+
import { C as SessionReplayConfig, S as SessionAttributesInput, _ as ReplayUser, a as ReplayUploadErrorInit, b as SessionAttributeValue, c as ChunkEnvelope, d as CustomTag, f as EventType, g as NetworkPayload, h as NavigationPayload, i as ReplayUploadError, l as ChunkMeta, m as MouseInteractions, n as SessionReplay, o as ReplayUploadFailureReason, p as IncrementalSource, r as startSessionReplay, s as CHUNK_ENVELOPE_VERSION, t as CaptureErrorOptions, u as ConsolePayload, v as RrwebEvent, x as SessionAttributes, y as SamplingMode } from "./index-BxzwrVOz.js";
|
|
2
|
+
export { CHUNK_ENVELOPE_VERSION, CaptureErrorOptions, type ChunkEnvelope, type ChunkMeta, type ConsolePayload, CustomTag, EventType, IncrementalSource, MouseInteractions, type NavigationPayload, type NetworkPayload, ReplayUploadError, type ReplayUploadErrorInit, type ReplayUploadFailureReason, type ReplayUser, type RrwebEvent, type SamplingMode, type SessionAttributeValue, type SessionAttributes, type SessionAttributesInput, SessionReplay, type SessionReplayConfig, startSessionReplay };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{record as e}from"@rrweb/record";import{gzip as t,gzipSync as n,strToU8 as r}from"fflate";const i={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5,Plugin:6},a={Mutation:0,MouseMove:1,MouseInteraction:2,Scroll:3,ViewportResize:4,Input:5,TouchMove:6,MediaInteraction:7,Drag:12,Selection:14},o={MouseUp:0,MouseDown:1,Click:2,ContextMenu:3,DblClick:4},s={Error:`logfire.error`,Console:`logfire.console`,Network:`logfire.network`,Navigation:`logfire.navigation`},c=1,l={sessionSampleRate:1,onErrorSampleRate:1,maskAllText:!0,maskAllInputs:!0,maskTextSelector:``,blockSelector:``,flushIntervalMs:5e3,maxBufferBytes:1e6,minSessionDurationMs:1e4,sessionIdleTimeoutMs:18e5,maxSessionDurationMs:144e5,distinctId:``,captureConsole:!1,captureNetwork:!0,captureNavigation:!0,redactUrlPatterns:[/.+/u]},u=new Set([a.MouseMove,a.MouseInteraction,a.Scroll,a.ViewportResize,a.Input,a.TouchMove,a.MediaInteraction,a.Drag,a.Selection]);function d(e){return e.type!==i.IncrementalSnapshot||typeof e.data!=`object`||e.data===null||!(`source`in e.data)?!1:typeof e.data.source==`number`&&u.has(e.data.source)}function f(e,t){return t<3e4?e:t<3e5?Math.max(e,6e4):Math.max(e,3e5)}function p(e,t){return t.some(t=>new RegExp(t.source,t.flags).test(e))}function m(e,t,n){if(!p(e,t))return e;try{let t=new URL(e,n);return`${t.origin}${t.pathname}`}catch{let[t=e]=e.split(`?`),[n=t]=t.split(`#`);return n}}const h=[`log`,`info`,`warn`,`error`,`debug`],g=1024,_=()=>void 0;function ee(e,t={}){let n=[],r=C(t.onError);try{for(let t of h)typeof console[t]==`function`&&n.push(w(console,t,(n,i)=>function(...a){return i()&&S(e,s.Console,{level:t,args:a.slice(0,10).map(ie)},r),n.apply(this,a)}));return T(n)}catch(e){throw E(n),e}}function v(e,t){let n=ne(t),r={...n,onError:C(n.onError)},i=y(e,r);try{return T([i,b(e,r)])}catch(e){throw i(),e}}function te(e,t={redactUrlPatterns:[]}){let n=C(t.onError),r=r=>{let i=m(window.location.href,t.redactUrlPatterns??[],window.location.href);S(e,s.Navigation,{url:i,kind:r},n)},i=[];try{i.push(w(history,`pushState`,(e,t)=>function(...n){let i=e.apply(this,n);return t()&&r(`push`),i})),i.push(w(history,`replaceState`,(e,t)=>function(...n){let i=e.apply(this,n);return t()&&r(`replace`),i}));let e=!0,t=()=>{e&&r(`pop`)};return window.addEventListener(`popstate`,t),i.push(()=>{e=!1,window.removeEventListener(`popstate`,t)}),T(i)}catch(e){throw E(i),e}}function y(e,t){return typeof window.fetch==`function`?w(window,`fetch`,(n,r)=>{let i=async function(i,a){let o=n;if(!r())return o.call(this,i,a);let c=t.now(),l=ae(i,a),u=oe(i);if(j(u,t.ignoreUrlPatterns))return o.call(this,i,a);let d=m(u,t.redactUrlPatterns,window.location.href),f=A(a?.body);try{let n=await o.call(this,i,a);return r()&&S(e,s.Network,k({method:l,url:d,status:n.status,durationMs:Math.max(0,t.now()-c),reqBytes:f,resBytes:O(n.headers)}),t.onError),n}catch(n){throw r()&&S(e,s.Network,k({method:l,url:d,status:0,durationMs:Math.max(0,t.now()-c),failed:!0,reqBytes:f}),t.onError),n}},a=Reflect.get(n,`__original`);return Object.defineProperty(i,"__original",{configurable:!0,value:typeof a==`function`?a:n,writable:!0}),i}):_}function b(e,t){let n=window.XMLHttpRequest.prototype,r=new WeakMap,i=[];try{return i.push(w(n,`open`,(e,n)=>function(...i){let[a,o]=i;if(!n())return e.apply(this,i);let s=o.toString();return j(s,t.ignoreUrlPatterns)?(r.delete(this),e.apply(this,i)):(r.set(this,{method:a.toUpperCase(),url:m(s,t.redactUrlPatterns,window.location.href),startedAt:0,reqBytes:0,failed:!1,emitted:!1}),e.apply(this,i))})),i.push(w(n,`send`,(n,i)=>function(...a){let[o]=a,c=i()?r.get(this):void 0;if(c===void 0)return n.apply(this,a);c.startedAt=t.now(),c.reqBytes=A(o);let l=()=>{c.failed=!0},u=()=>{c.emitted||(c.emitted=!0,this.removeEventListener(`error`,l),this.removeEventListener(`abort`,l),this.removeEventListener(`timeout`,l),i()&&S(e,s.Network,k({method:c.method,url:c.url,status:this.status,durationMs:Math.max(0,t.now()-c.startedAt),failed:c.failed||this.status===0,reqBytes:c.reqBytes,resBytes:se(this)}),t.onError))};this.addEventListener(`error`,l),this.addEventListener(`abort`,l),this.addEventListener(`timeout`,l),this.addEventListener(`loadend`,u,{once:!0});try{return n.apply(this,a)}catch(n){throw this.removeEventListener(`error`,l),this.removeEventListener(`abort`,l),this.removeEventListener(`timeout`,l),this.removeEventListener(`loadend`,u),i()&&S(e,s.Network,k({method:c.method,url:c.url,status:0,durationMs:Math.max(0,t.now()-c.startedAt),failed:!0,reqBytes:c.reqBytes}),t.onError),n}})),T(i)}catch(e){throw E(i),e}}function ne(e){return{...e,ignoreUrlPatterns:x(e.ignoreUrlPatterns),redactUrlPatterns:x(e.redactUrlPatterns)}}function x(e){return e.map(e=>{let t=e.flags.replace(/[gy]/gu,``);return t===e.flags?e:new RegExp(e.source,t)})}function S(e,t,n,r){try{e(t,n)}catch(e){r?.(e)}}function C(e){let t=!1;return n=>{if(!t){t=!0;try{let t=e?.(n);re(t)&&Promise.resolve(t).catch(()=>void 0)}catch{}finally{t=!1}}}}function re(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}function w(e,t,n){let r=e,i=r[t];if(typeof i!=`function`)return _;let a=!0,o=n(i,()=>a);return r[t]=o,()=>{a&&(a=!1,r[t]===o&&(r[t]=i))}}function T(e){let t=!1;return()=>{t||(t=!0,E(e))}}function E(e){for(let t=e.length-1;t>=0;--t)try{e[t]?.()}catch{}}function ie(e){if(e==null)return String(e);if(typeof e==`string`)return D(e);if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);if(e instanceof Error)return D(e.stack??`${e.name}: ${e.message}`);try{return D(JSON.stringify(e))}catch{return Object.prototype.toString.call(e)}}function D(e){if(e.length<=g)return e;let t=e.charCodeAt(g-1),n=t>=55296&&t<=56319?g-1:g;return`${e.slice(0,n)}...(+${String(e.length-n)} chars)`}function ae(e,t){return(t?.method??(typeof e==`object`&&`method`in e?e.method:`GET`)).toUpperCase()}function oe(e){return typeof e==`string`||e instanceof URL?e.toString():e.url}function O(e){let t=e.get(`content-length`);if(t===null)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}function se(e){try{let t=e.getResponseHeader(`content-length`);if(t===null)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}catch{return}}function k(e){return{method:e.method,url:e.url,status:e.status,durationMs:e.durationMs,...e.failed===void 0?{}:{failed:e.failed},...e.reqBytes===void 0?{}:{reqBytes:e.reqBytes},...e.resBytes===void 0?{}:{resBytes:e.resBytes}}}function A(e){if(e==null)return 0;if(typeof e==`string`)return new TextEncoder().encode(e).byteLength;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e.byteLength;if(e instanceof Blob)return e.size}function j(e,t){return p(e,t)}const ce=new Set([`action`,`formaction`,`href`,`src`]);function le(t){let n=()=>{t.beforeUserActivity?.()},r={emit:e=>{t.emit(M(e,t.redactUrlPatterns))},maskAllInputs:t.maskAllInputs,recordCanvas:!1,collectFonts:!1,inlineImages:!1,recordCrossOriginIframes:!1,slimDOMOptions:`all`,hooks:{input:n,mediaInteaction:n,mouseInteraction:n,mousemove:n,scroll:n,selection:n,viewportResize:n},sampling:{mousemove:100,mouseInteraction:!0,scroll:250,media:800,input:`last`}};t.maskAllText?r.maskTextSelector=`*`:t.maskTextSelector!==void 0&&t.maskTextSelector.length>0&&(r.maskTextSelector=t.maskTextSelector),t.blockSelector!==void 0&&t.blockSelector.length>0&&(r.blockSelector=t.blockSelector),t.checkoutEveryNms!==void 0&&t.checkoutEveryNms>0&&(r.checkoutEveryNms=t.checkoutEveryNms);let i=e(r);if(i===void 0)throw Error(`logfire session replay: rrweb failed to start recording`);return{stop:()=>{i()},addCustomEvent:(t,n)=>{e.addCustomEvent(t,n)},takeFullSnapshot:()=>{e.takeFullSnapshot(!0)}}}function M(e,t){if(typeof e.data!=`object`||e.data===null)return e;let n=e.data;if(e.type===i.Meta){if(typeof n.href!=`string`)return e;let r=m(n.href,t,window.location.href);return r===n.href?e:{...e,data:{...n,href:r}}}if(e.type!==i.FullSnapshot&&(e.type!==i.IncrementalSnapshot||n.source!==a.Mutation))return e;let r=N(n,t);return r===n?e:{...e,data:r}}function N(e,t){if(Array.isArray(e)){let n=!1,r=[];for(let i of e){let e=N(i,t);e!==i&&(n=!0),r.push(e)}return n?r:e}if(typeof e!=`object`||!e)return e;let n=e,r=!1,i={};for(let[e,a]of Object.entries(n)){let n=e===`attributes`&&!Array.isArray(a)?ue(a,t):N(a,t);n!==a&&(r=!0),i[e]=n}return r?i:e}function ue(e,t){if(typeof e!=`object`||!e||Array.isArray(e))return e;let n=e,r=!1,i={};for(let[e,a]of Object.entries(n)){if(!ce.has(e.toLowerCase())||typeof a!=`string`){i[e]=a;continue}let n=m(a,t,window.location.href);n!==a&&(r=!0),i[e]=n}return r?i:e}function P(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function de(e){let t=e.random??Math.random;return t()<P(e.sessionSampleRate)?`full`:t()<P(e.onErrorSampleRate)?`buffer`:`off`}const fe=/^[a-z][a-z0-9_]{0,63}$/u;function pe(e,t){let n=0;for(let r of e)if(n+=+(r.length>0),n>t)return!1;return!0}function me(e,t){if(e===void 0)return Object.freeze({});let n;try{n=e()}catch(e){return t(e),Object.freeze({})}if(typeof n!=`object`||!n||Array.isArray(n))return Object.freeze({});let r;try{r=Object.getPrototypeOf(n)}catch(e){return t(e),Object.freeze({})}if(r!==Object.prototype&&r!==null)return Object.freeze({});let i;try{i=Object.keys(n)}catch(e){return t(e),Object.freeze({})}let a={},o=0;for(let e of i){if(!fe.test(e))continue;let r;try{r=Reflect.get(n,e)}catch(e){t(e);continue}if((typeof r==`boolean`||typeof r==`number`&&Number.isFinite(r)||typeof r==`string`&&pe(r,200))&&(Object.defineProperty(a,e,{configurable:!0,enumerable:!0,value:r,writable:!0}),o+=1,o===20))break}return Object.freeze(a)}function he(e=Date.now){let t=e(),n=new Uint8Array(new ArrayBuffer(16));ge(n),n[0]=Math.floor(t/2**40)&255,n[1]=Math.floor(t/2**32)&255,n[2]=Math.floor(t/2**24)&255,n[3]=Math.floor(t/2**16)&255,n[4]=Math.floor(t/2**8)&255,n[5]=t&255,n[6]=(n[6]??0)&15|112,n[8]=(n[8]??0)&63|128;let r=``;for(let e of n)r+=e.toString(16).padStart(2,`0`);return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}function ge(e){let t=globalThis.crypto;if(typeof t?.getRandomValues==`function`){t.getRandomValues(e);return}for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256)}const F=`lf_session_replay`;var I=class{idleTimeoutMs;maxDurationMs;now;storage;memorySession;pendingSession;persistenceTimer;constructor(e){this.idleTimeoutMs=e.idleTimeoutMs,this.maxDurationMs=e.maxDurationMs,this.now=e.now??Date.now,this.storage=e.storage===void 0?L():e.storage}getSession(){let e=this.now();if(this.memorySession!==void 0&&!this.isExpired(this.memorySession,e))return this.memorySession;let t=this.read();return t!==void 0&&!this.isExpired(t,e)?t:this.createSession(e)}touch(){let e=this.now(),t={...this.getSession(),lastActivityAt:e};return this.memorySession=t,this.scheduleWrite(t),t}reset(){return this.createSession(this.now())}flushPendingStorage(){this.persistenceTimer!==void 0&&(clearTimeout(this.persistenceTimer),this.persistenceTimer=void 0);let e=this.pendingSession;this.pendingSession=void 0,e!==void 0&&this.writeNow(e)}isExpired(e,t){return t-e.lastActivityAt>this.idleTimeoutMs||t-e.startedAt>this.maxDurationMs}createSession(e){let t={id:he(this.now),startedAt:e,lastActivityAt:e};return this.flushPendingStorage(),this.writeNow(t),t}read(){if(this.storage!==null)try{let e=this.storage.getItem(F);if(e!==null){let t=JSON.parse(e);if(_e(t))return this.memorySession=t,t}}catch{return this.memorySession}return this.memorySession}write(e){if(this.memorySession=e,this.storage!==null)try{this.storage.setItem(F,JSON.stringify(e))}catch{}}scheduleWrite(e){this.pendingSession=e,this.persistenceTimer===void 0&&(this.persistenceTimer=setTimeout(()=>{this.persistenceTimer=void 0;let e=this.pendingSession;this.pendingSession=void 0,e!==void 0&&this.writeNow(e)},1e3))}writeNow(e){this.memorySession=e,this.write(e)}};function L(){try{return globalThis.sessionStorage??null}catch{return null}}function _e(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.id==`string`&&t.id.length>0&&typeof t.startedAt==`number`&&Number.isFinite(t.startedAt)&&typeof t.lastActivityAt==`number`&&Number.isFinite(t.lastActivityAt)}function R(e){return typeof e==`object`&&e?e:void 0}function z(e){return typeof e==`string`&&e.length>0?e:void 0}function ve(e){let t=R(e),n=z(t?.id);if(t===void 0||n===void 0)return;let r=z(t.name),i=z(t.email);return{id:n,...r===void 0?{}:{name:r},...i===void 0?{}:{email:i}}}function ye(e,t,n,r={},c){let l=1/0,u=0,d=0,f=0,p=0,m=!1,h=new Set;for(let e of t){e.timestamp<l&&(l=e.timestamp),e.timestamp>u&&(u=e.timestamp);let t=R(e.data);if(e.type===i.FullSnapshot)m=!0;else if(e.type===i.Meta){let e=z(t?.href);e!==void 0&&h.add(e)}else if(e.type===i.IncrementalSnapshot&&t!==void 0){let e=t.source;if(e===a.MouseInteraction){let e=t.type;(e===o.Click||e===o.DblClick)&&d++}else e===a.Input&&f++}else if(e.type===i.Custom&&t!==void 0){let e=z(t.tag),n=R(t.payload);if(e===s.Error)p++;else if(e===s.Console)n?.level===`error`&&p++;else if(e===s.Navigation){let e=z(n?.url);e!==void 0&&h.add(e)}}}return{seq:e,firstTimestamp:l===1/0?0:l,lastTimestamp:u,eventCount:t.length,clickCount:d,keypressCount:f,errorCount:p,hasFullSnapshot:m,urls:[...h],...n!==void 0&&n.length>0?{distinctId:n}:{},...c===void 0?{}:{user:{...c}},...Object.keys(r).length===0?{}:{sessionAttributes:{...r}}}}const B=`lf_session_replay_seq`,be={gzip:t,gzipSync:n};var xe=class{buffer=[];bufferHasFullSnapshot=!1;pendingBytes=0;seq=0;timer;nextFlushAt;lastUserActivityAt;startedAt;started=!1;held;heldBufferIncomplete=!1;minimumBufferIncomplete=!1;minimumDurationSatisfied=!1;firstObservedTimestamp;lastObservedTimestamp;refreshingMinimumSnapshot=!1;mode;flushing;reservedKeepaliveBytes=0;asyncCompressionAvailable=!0;config;compression;storage;sessionId;sessionAttributes;takeFullSnapshot;constructor(e,t,n,r=L(),i=be,a={},o={}){this.config=e,this.sessionId=t,this.sessionAttributes=Object.freeze({...a}),this.mode=n,this.storage=r,this.compression=i,this.held=o.holdUntilActivity===!0&&n===`full`,this.takeFullSnapshot=o.takeFullSnapshot,this.minimumDurationSatisfied=e.minSessionDurationMs===0,this.seq=this.loadSeq(t),this.startedAt=this.config.now(),this.lastUserActivityAt=this.startedAt}start(){this.started||this.mode!==`full`||(this.started=!0,this.scheduleFlush())}add(e){this.minimumDurationSatisfied||(this.firstObservedTimestamp??=e.timestamp,this.lastObservedTimestamp=Math.max(this.lastObservedTimestamp??e.timestamp,e.timestamp)),d(e)&&(this.lastUserActivityAt=this.config.now());let t=U(e);if(this.refreshingMinimumSnapshot){this.buffer.push(e),this.pendingBytes+=t;return}let n=!this.minimumDurationSatisfied;if(this.mode===`buffer`||this.held||n){if(e.type===i.Meta){this.buffer=[e],this.bufferHasFullSnapshot=!1,this.minimumBufferIncomplete=!1,this.pendingBytes=t,n&&(this.mode===`full`&&(this.firstObservedTimestamp=e.timestamp),this.finishMinimumBufferingEvent());return}if(e.type===i.FullSnapshot){let r=!this.bufferHasFullSnapshot&&this.buffer.length===1&&this.buffer[0]?.type===i.Meta?this.buffer[0]:void 0;this.buffer=r===void 0?[e]:[r,e],this.bufferHasFullSnapshot=!0,this.pendingBytes=t+(r===void 0?0:U(r)),this.heldBufferIncomplete=!1,this.minimumBufferIncomplete=!1,n&&(this.mode===`full`&&(this.firstObservedTimestamp=r?.timestamp??e.timestamp),this.finishMinimumBufferingEvent());return}if(!this.bufferHasFullSnapshot||t>this.config.maxBufferBytes){this.heldBufferIncomplete||=this.held,this.minimumBufferIncomplete||=n,n&&this.finishMinimumBufferingEvent();return}if(this.pendingBytes+t>this.config.maxBufferBytes){this.heldBufferIncomplete||=this.held,this.minimumBufferIncomplete||=n,n&&this.finishMinimumBufferingEvent();return}}if(this.buffer.push(e),this.pendingBytes+=t,n&&this.minimumDurationReached()){this.flushAndReport();return}this.mode===`full`&&this.pendingBytes>=this.config.maxBufferBytes?this.flushAndReport():this.scheduleFlush()}async triggerFlush(){return this.mode===`buffer`&&(this.bufferHasFullSnapshot||(this.buffer=[],this.pendingBytes=0),this.mode=`full`,this.start()),this.flush()}async flush(e={}){return this.flushInternal(e)}async flushInternal(e={}){if(this.mode===`buffer`||this.held||this.buffer.length===0||!this.minimumDurationReached()||(this.clearScheduledFlush(),this.minimumBufferIncomplete&&!this.refreshMinimumBuffer()))return;this.minimumDurationSatisfied=!0;let t=this.buffer;this.buffer=[],this.bufferHasFullSnapshot=!1,this.minimumBufferIncomplete=!1,this.pendingBytes=0;let n=e.keepalive===!0?Te(t):[t],r=this.seq;this.seq+=n.length;let i=this.sessionId;this.saveSeq(i,this.seq);let a=this.snapshotIdentity(),o=e.keepalive===!0?Promise.resolve():this.flushing??Promise.resolve(),s=e.keepalive===!0?this.deliverLifecycle(n,r,i,a):o.then(async()=>{for(let e=0;e<n.length;e++){let t=n[e];t!==void 0&&await this.deliverOrdinary(t,r+e,i,a)}}),c=this.flushing;this.flushing=e.keepalive===!0&&c!==void 0?Promise.all([c,s]).then(()=>void 0,()=>void 0):s.catch(()=>void 0),await s}async shutdown(e={}){if(this.started=!1,this.clearScheduledFlush(),this.held){this.discard(),await this.flushing;return}if(!this.minimumDurationReached()){this.discard(),await this.flushing;return}await this.flush(e),await this.flushing}discard(){this.started=!1,this.clearScheduledFlush(),this.buffer=[],this.bufferHasFullSnapshot=!1,this.minimumBufferIncomplete=!1,this.pendingBytes=0}getMode(){return this.mode}isHeld(){return this.held}releaseHeld(e){this.held&&((this.heldBufferIncomplete||!this.bufferHasFullSnapshot)&&(this.buffer=[],this.bufferHasFullSnapshot=!1,this.pendingBytes=0,e()),this.held=!1,this.pendingBytes>=this.config.maxBufferBytes?this.flushAndReport():this.scheduleFlush())}flushAndReport(){this.flushInternal().catch(e=>{V(this.config.onError,e)})}scheduleFlush(){let e=this.config.now(),t=Math.max(0,this.config.minSessionDurationMs-(e-this.startedAt)),n=Math.max(f(this.config.flushIntervalMs,e-this.lastUserActivityAt),t);this.scheduleFlushIn(e,n)}scheduleFlushIn(e,t){if(!this.started||this.mode!==`full`||this.held||this.buffer.length===0)return;let n=e+t;this.timer!==void 0&&this.nextFlushAt!==void 0&&this.nextFlushAt<=n||(this.clearScheduledFlush(),this.nextFlushAt=n,this.timer=setTimeout(()=>{this.timer=void 0,this.nextFlushAt=void 0,this.flushAndReport()},t))}clearScheduledFlush(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0),this.nextFlushAt=void 0}minimumDurationReached(){return this.minimumDurationSatisfied||this.config.minSessionDurationMs===0?!0:this.firstObservedTimestamp===void 0||this.lastObservedTimestamp===void 0?!1:this.lastObservedTimestamp-this.firstObservedTimestamp>=this.config.minSessionDurationMs}finishMinimumBufferingEvent(){this.minimumDurationReached()?this.flushAndReport():this.scheduleFlush()}refreshMinimumBuffer(){let e=this.buffer.length,t=this.pendingBytes;if(this.takeFullSnapshot!==void 0){this.refreshingMinimumSnapshot=!0;try{this.takeFullSnapshot()}catch(e){V(this.config.onError,e)}finally{this.refreshingMinimumSnapshot=!1}}return this.buffer.slice(e).some(e=>e.type===i.FullSnapshot)?(this.minimumBufferIncomplete=!1,!0):(this.buffer.length=e,this.pendingBytes=t,!1)}snapshotIdentity(){let e=this.snapshotUser(),t=this.config.distinctId;if(this.config.getDistinctId!==void 0)try{t=this.config.getDistinctId()??this.config.distinctId}catch(e){V(this.config.onError,e)}else e!==void 0&&(t=e.id);return{distinctId:t,user:e}}createEnvelope(e,t,n){return{version:1,meta:ye(t,e,n.distinctId,this.sessionAttributes,n.user),events:e}}snapshotUser(){if(this.config.getUser!==void 0)try{return ve(this.config.getUser())}catch(e){V(this.config.onError,e);return}}async deliverOrdinary(e,t,n,i){let a=this.createEnvelope(e,t,i);try{let e=r(JSON.stringify(a)),i=await this.compressOrdinary(e);await this.sendWithRetry({body:i,lifecycle:!1,requestKeepalive:!1,reservedBytes:0,seq:t,sessionId:n})}catch(e){V(this.config.onError,e)}}async deliverLifecycle(e,t,n,i){let a=[];for(let o=0;o<e.length;o++){let s=e[o];if(s===void 0){a.push(void 0);continue}let c=this.createEnvelope(s,t+o,i);try{a.push({body:this.compression.gzipSync(r(JSON.stringify(c))),lifecycle:!0,requestKeepalive:!1,reservedBytes:0,seq:t+o,sessionId:n})}catch(e){V(this.config.onError,e),a.push(void 0)}}let o=!0,s=Math.max(0,48e3-this.reservedKeepaliveBytes);for(let e of a){if(e===void 0){o=!1;continue}o&&e.body.byteLength<=s?(e.requestKeepalive=!0,e.reservedBytes=e.body.byteLength,this.reservedKeepaliveBytes+=e.reservedBytes,s-=e.reservedBytes):o=!1}await Promise.all(a.map(async e=>{if(e!==void 0)try{await this.sendWithRetry(e)}catch(e){V(this.config.onError,e)}}))}async compressOrdinary(e){if(!this.asyncCompressionAvailable)return this.compression.gzipSync(e);try{return await Ee(this.compression,e)}catch{return this.asyncCompressionAvailable=!1,this.compression.gzipSync(e)}}async sendWithRetry(e){let t=e.lifecycle?1:3;for(let n=1;n<=t;n++)try{await this.send(e);return}catch(e){let r=Oe(e,n);if(r===void 0||n>=t)throw e;await we(r)}}async send(e){let t,n,r,i=new AbortController,a=setTimeout(()=>{i.abort(Error(`replay upload timed out after 10000ms`))},1e4);try{let a=`${this.config.replayUrl.replace(/\/+$/u,``)}/${encodeURIComponent(e.sessionId)}?seq=${String(e.seq)}`,o=await this.getUploadHeaders(),s=this.config.fetchImpl(a,{method:`POST`,headers:o,body:e.body.slice(),keepalive:e.requestKeepalive,signal:i.signal});t=!0;let c=await s;if(n=!0,r=await De(c),!c.ok){let e=c.status===429?ke(c.headers.get(`retry-after`),Date.now()):void 0;throw new H(c.status,e)}}finally{clearTimeout(a),e.reservedBytes>0&&(t!==!0||n!==!0||r===!0)&&(this.reservedKeepaliveBytes=Math.max(0,this.reservedKeepaliveBytes-e.reservedBytes))}}async getUploadHeaders(){let e=this.config.headers===void 0?{}:await this.config.headers(),t=await Ce(this.config.token);return{...t===void 0||t.length===0?e:{...Object.fromEntries(Object.entries(e).filter(([e])=>e.toLowerCase()!==`authorization`)),Authorization:`Bearer ${t}`},"Content-Type":`application/json`,"Content-Encoding":`gzip`}}loadSeq(e){if(this.storage===null)return 0;try{let t=this.storage.getItem(B);if(t===null)return 0;let n=JSON.parse(t);if(typeof n!=`object`||!n)return 0;let r=n;return r.id===e&&typeof r.seq==`number`&&Number.isFinite(r.seq)?r.seq:0}catch{return 0}}saveSeq(e,t){if(this.storage!==null)try{this.storage.setItem(B,JSON.stringify({id:e,seq:t}))}catch{}}};function V(e,t){try{let n=e?.(t);Se(n)&&Promise.resolve(n).catch(()=>void 0)}catch{}}function Se(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}var H=class extends Error{retryAfter;status;constructor(e,t){super(`replay ingest failed: ${String(e)}`),this.status=e,this.retryAfter=t,this.name=`ReplayIngestError`}};async function Ce(e){return typeof e==`function`?e():e}async function we(e){return new Promise(t=>{setTimeout(t,e)})}function U(e){try{return r(JSON.stringify(e)).byteLength}catch{return 0}}function Te(e){let t=[],n=[],r=0;for(let i of e){let e=U(i);n.length>0&&r+e>48e3&&(t.push(n),n=[],r=0),n.push(i),r+=e}return n.length>0&&t.push(n),t}async function Ee(e,t){return new Promise((n,r)=>{let i=[];typeof window<`u`&&i.push(window),typeof document<`u`&&i.push(document);let a=()=>{for(let e of i)e.removeEventListener(`securitypolicyviolation`,s)},o=(e,t)=>{if(a(),e!==null){r(e);return}n(t)},s=e=>{let t=e;(t.effectiveDirective.includes(`worker-src`)||t.violatedDirective.includes(`worker-src`))&&o(Error(`replay compression worker blocked by Content Security Policy`))};for(let e of i)e.addEventListener(`securitypolicyviolation`,s);try{e.gzip(t,{level:6},(e,t)=>{o(e,t)})}catch(e){a(),r(e instanceof Error?e:Error(String(e)))}})}async function De(e){if(e.body===null)return!0;try{return await e.body.cancel(),!0}catch{return!1}}function Oe(e,t){return e instanceof H?e.status===429?e.retryAfter?.kind===`too-long`?void 0:e.retryAfter?.kind===`delay`?e.retryAfter.milliseconds:500*t:e.status<500?void 0:500*t:500*t}function ke(e,t){if(e===null)return{kind:`fallback`};let n=e.trim();if(/^\d+$/u.test(n)){let e=Number(n);return Number.isSafeInteger(e)?W(e*1e3):{kind:`fallback`}}let r=Ne(n,t);return r===void 0?{kind:`fallback`}:W(Math.max(0,r-t))}function W(e){return e>1e4?{kind:`too-long`}:{kind:`delay`,milliseconds:e}}const Ae=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],je=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],Me=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function Ne(e,t){let n=/^(Sun|Mon|Tue|Wed|Thu|Fri|Sat), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{2}):(\d{2}):(\d{2}) GMT$/u.exec(e);if(n!==null)return G(n[1],n[2],n[3],n[4],n[5],n[6],n[7]);let r=/^(Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{2}):(\d{2}):(\d{2}) GMT$/u.exec(e);if(r!==null){let e=new Date(t).getUTCFullYear(),n=Number(r[4]),i=Math.floor(e/100)*100+n;return i>e+50&&(i-=100),G(r[1],r[2],r[3],String(i),r[5],r[6],r[7])}let i=/^(Sun|Mon|Tue|Wed|Thu|Fri|Sat) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{2}| \d) (\d{2}):(\d{2}):(\d{2}) (\d{4})$/u.exec(e);if(i!==null)return G(i[1],i[3]?.trim(),i[2],i[7],i[4],i[5],i[6])}function G(e,t,n,r,i,a,o){let s=Number(t),c=Ae.indexOf(n),l=Number(r),u=Number(i),d=Number(a),f=Number(o);if(c<0||s<1||s>31||u>23||d>59||f>59)return;let p=new Date(0);if(p.setUTCFullYear(l,c,s),p.setUTCHours(u,d,f,0),p.getUTCFullYear()!==l||p.getUTCMonth()!==c||p.getUTCDate()!==s||p.getUTCHours()!==u||p.getUTCMinutes()!==d||p.getUTCSeconds()!==f)return;let m=je.indexOf(e),h=Me.indexOf(e);return(m>=0?m:h)===p.getUTCDay()?p.getTime():void 0}const Pe={mode:`off`,recording:!1,getSessionId:()=>``,flush:async()=>Promise.resolve(),stop:async()=>Promise.resolve()},K=`lf_session_replay_mode`,q=Symbol.for(`@pydantic/logfire-session-replay/controller`);function Fe(e){if(typeof window>`u`||typeof document>`u`)return Pe;let t=Ue();try{let n=Le(e),r=new I({idleTimeoutMs:n.sessionIdleTimeoutMs,maxDurationMs:n.maxSessionDurationMs,now:n.now}),i=r.getSession().id,a=e=>{let t;try{t=n.getSessionId?.()}catch(e){return Z(n.onError,e),i}if(t!==void 0&&t.length>0)return i=t,t;let a=e?r.touch().id:r.getSession().id;return i=a,a},o=L(),s=a(!1),c,l=!1,u=Promise.resolve(),d,f=(e,t,r=!t)=>{let i=Re(n,e,o);if(!(i===`off`||l||e!==s))try{c=Ie({config:n,getSessionId:a,mode:i,onSessionChanged:p,samplingModeStorage:o,sessionId:e,holdUntilActivity:r})}catch(e){if(c=void 0,t)throw e;Z(n.onError,e)}},p=(e,t=!0)=>{if(l||e===s)return;s=e;let r=c;c=void 0;let i=r?.deactivate()??Promise.resolve();u=u.then(async()=>{await X(i,n.onError),!l&&s===e&&f(e,!1,t)})},m;try{f(s,!0),m=setInterval(()=>{p(a(!1))},1e3)}catch(e){throw c?.discard(),c=void 0,e}return{get mode(){try{return c?.transport.getMode()??`off`}catch(e){return Z(n.onError,e),`off`}},get recording(){try{return c!==void 0}catch(e){return Z(n.onError,e),!1}},getSessionId:()=>a(!1),flush:async()=>{try{await u,await c?.transport.flush()}catch(e){Z(n.onError,e)}},stop:async()=>(d??=(async()=>{l=!0,clearInterval(m);let e=c;c=void 0,await X(e?.deactivate()??Promise.resolve(),n.onError),await u,r.flushPendingStorage(),t()})(),d)}}catch(e){throw t(),e}}function Ie(e){let{config:t,getSessionId:n,holdUntilActivity:r,mode:i,onSessionChanged:a,samplingModeStorage:o,sessionId:c}=e,l=me(t.getSessionAttributes,e=>{Z(t.onError,e)}),u,f=new xe(t,c,i,void 0,void 0,l,{holdUntilActivity:r,takeFullSnapshot:()=>{u.takeFullSnapshot()}}),p=[],m=!0,h=()=>m,g;try{u=le({beforeUserActivity:()=>{if(!(!m||!f.isHeld()))try{let e=n(!0);if(e!==c){a(e,!1);return}f.releaseHeld(()=>{u.takeFullSnapshot()})}catch(e){Z(t.onError,e)}},emit:e=>{if(m)try{let t=n(d(e));if(t!==c){a(t,!1);return}f.add(e)}catch(e){Z(t.onError,e)}},maskAllText:t.maskAllText,maskAllInputs:t.maskAllInputs,maskTextSelector:t.maskTextSelector,blockSelector:t.blockSelector,checkoutEveryNms:i===`buffer`?12e4:0,redactUrlPatterns:t.redactUrlPatterns}),p.push(()=>{u.stop()});let e=(e,n)=>{if(m)try{u.addCustomEvent(e,n)}catch(e){Z(t.onError,e)}},r=n=>{h()&&(f.releaseHeld(()=>{u.takeFullSnapshot()}),e(s.Error,n),h()&&f.getMode()===`buffer`&&(J(o,c,`full`),Y(f.triggerFlush(),t.onError)))},l=e=>{e instanceof ErrorEvent&&r($(e.message,e.filename,Ve(e.error)))},_=e=>{let t=e.reason;r($(We(t?.message??e.reason),void 0,typeof t?.stack==`string`?t.stack:void 0))},y=()=>{document.visibilityState===`hidden`&&Y(f.flush({keepalive:!0}),t.onError)},b=()=>{Y(f.flush({keepalive:!0}),t.onError)};return window.addEventListener(`error`,l,!0),p.push(()=>{window.removeEventListener(`error`,l,!0)}),window.addEventListener(`unhandledrejection`,_,!0),p.push(()=>{window.removeEventListener(`unhandledrejection`,_,!0)}),document.addEventListener(`visibilitychange`,y),p.push(()=>{document.removeEventListener(`visibilitychange`,y)}),window.addEventListener(`pagehide`,b),p.push(()=>{window.removeEventListener(`pagehide`,b)}),t.captureConsole&&p.push(ee(e,{onError:t.onError})),t.captureNetwork&&p.push(v(e,{ignoreUrlPatterns:t.ignoreUrlPatterns,now:t.now,onError:t.onError,redactUrlPatterns:t.redactUrlPatterns})),t.captureNavigation&&p.push(te(e,{onError:t.onError,redactUrlPatterns:t.redactUrlPatterns})),f.start(),{sessionId:c,transport:f,deactivate:async()=>(g??=(async()=>{let e=f.flush({keepalive:!1});m=!1,Q(p),await e,await f.shutdown({keepalive:!1})})(),g),discard:()=>{m=!1,Q(p),f.discard()}}}catch(e){throw m=!1,Q(p),f.discard(),e}}function Le(e){if(e.replayUrl.length===0)throw Error("logfire session replay: `replayUrl` is required");let t=new URL(e.replayUrl,`https://logfire.invalid/`);if(t.search!==``||t.hash!==``)throw Error("logfire session replay: `replayUrl` must not contain a query or fragment");let n=e.fetchImpl??(typeof fetch==`function`?fetch.bind(globalThis):void 0);if(n===void 0)throw Error("logfire session replay: no `fetch` available; pass `fetchImpl`");return{replayUrl:e.replayUrl,headers:e.headers,token:e.token,getSessionId:e.getSessionId,getSessionAttributes:e.getSessionAttributes,sessionSampleRate:e.sessionSampleRate??l.sessionSampleRate,onErrorSampleRate:e.onErrorSampleRate??l.onErrorSampleRate,maskAllText:e.maskAllText??l.maskAllText,maskAllInputs:e.maskAllInputs??l.maskAllInputs,maskTextSelector:e.maskTextSelector??l.maskTextSelector,blockSelector:e.blockSelector??l.blockSelector,flushIntervalMs:e.flushIntervalMs??l.flushIntervalMs,maxBufferBytes:e.maxBufferBytes??l.maxBufferBytes,minSessionDurationMs:e.minSessionDurationMs??l.minSessionDurationMs,sessionIdleTimeoutMs:e.sessionIdleTimeoutMs??l.sessionIdleTimeoutMs,maxSessionDurationMs:e.maxSessionDurationMs??l.maxSessionDurationMs,distinctId:e.distinctId??l.distinctId,getDistinctId:e.getDistinctId,getUser:e.getUser,captureConsole:e.captureConsole??l.captureConsole,captureNetwork:e.captureNetwork??l.captureNetwork,captureNavigation:e.captureNavigation??l.captureNavigation,ignoreUrlPatterns:e.ignoreUrlPatterns??[],redactUrlPatterns:e.redactUrlPatterns??[...l.redactUrlPatterns],onError:e.onError,fetchImpl:n,now:e.now??Date.now,random:e.random??Math.random}}function Re(e,t,n){let r=ze(n,t);if(r!==void 0)return r;let i=de({sessionSampleRate:e.sessionSampleRate,onErrorSampleRate:e.onErrorSampleRate,random:e.random});return J(n,t,i),i}function ze(e,t){if(e!==null)try{let n=e.getItem(K);if(n===null)return;let r=JSON.parse(n);if(typeof r!=`object`||!r)return;let i=r;return i.id!==t||!Be(i.mode)?void 0:i.mode}catch{return}}function J(e,t,n){if(e!==null)try{e.setItem(K,JSON.stringify({id:t,mode:n}))}catch{}}function Be(e){return e===`full`||e===`buffer`||e===`off`}function Ve(e){let t=typeof e==`object`&&e&&`stack`in e?e.stack:void 0;return typeof t==`string`?t:void 0}function Y(e,t){e.catch(e=>{Z(t,e)})}async function X(e,t){try{await e}catch(e){Z(t,e)}}function Z(e,t){try{let n=e?.(t);He(n)&&Promise.resolve(n).catch(()=>void 0)}catch{}}function He(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}function Ue(){let e=globalThis;if(e[q]!==void 0)throw Error(`logfire session replay: a replay controller is already active in this page`);let t={};Object.defineProperty(e,q,{configurable:!0,enumerable:!1,value:t,writable:!0});let n=!1;return()=>{n||(n=!0,e[q]===t&&Reflect.deleteProperty(e,q))}}function Q(e){for(let t=e.length-1;t>=0;--t)try{e[t]?.()}catch{}e.length=0}function $(e,t,n){return{message:e,...t===void 0||t.length===0?{}:{source:t},...n===void 0?{}:{stack:n}}}function We(e){if(e==null)return`unhandledrejection`;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`||typeof e==`symbol`)return String(e);try{let t=JSON.stringify(e);return typeof t==`string`?t:Object.prototype.toString.call(e)}catch{return Object.prototype.toString.call(e)}}export{c as CHUNK_ENVELOPE_VERSION,s as CustomTag,i as EventType,a as IncrementalSource,o as MouseInteractions,Fe as startSessionReplay};
|
|
1
|
+
import{record as e}from"@rrweb/record";import{gzip as t,gzipSync as n,strToU8 as r}from"fflate";const i={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5,Plugin:6},a={Mutation:0,MouseMove:1,MouseInteraction:2,Scroll:3,ViewportResize:4,Input:5,TouchMove:6,MediaInteraction:7,Drag:12,Selection:14},o={MouseUp:0,MouseDown:1,Click:2,ContextMenu:3,DblClick:4},s={Error:`logfire.error`,Console:`logfire.console`,Network:`logfire.network`,Navigation:`logfire.navigation`},c=1,l={sessionSampleRate:1,onErrorSampleRate:1,maskAllText:!0,maskAllInputs:!0,maskTextSelector:``,blockSelector:``,flushIntervalMs:5e3,maxBufferBytes:1e6,minSessionDurationMs:1e4,sessionIdleTimeoutMs:18e5,maxSessionDurationMs:72e5,distinctId:``,captureConsole:!1,captureNetwork:!0,captureNavigation:!0,captureGlobalErrors:!0,redactUrlPatterns:[/.+/u]},u=/* @__PURE__ */ new Set([a.MouseMove,a.MouseInteraction,a.Scroll,a.ViewportResize,a.Input,a.TouchMove,a.MediaInteraction,a.Drag,a.Selection]);function d(e){return e.type!==i.IncrementalSnapshot||typeof e.data!=`object`||e.data===null||!(`source`in e.data)?!1:typeof e.data.source==`number`&&u.has(e.data.source)}function f(e,t){return t<3e4?e:t<3e5?Math.max(e,6e4):Math.max(e,3e5)}function p(e,t){return t.some(t=>new RegExp(t.source,t.flags).test(e))}function m(e,t,n){if(!p(e,t))return e;try{let t=new URL(e,n);return`${t.origin}${t.pathname}`}catch{let[t=e]=e.split(`?`),[n=t]=t.split(`#`);return n}}const h=[`log`,`info`,`warn`,`error`,`debug`],g=1024,_=()=>void 0;function v(e,t={}){let n=[],r=E(t.onError);try{for(let t of h)typeof console[t]==`function`&&n.push(O(console,t,(n,i)=>function(...a){return i()&&T(e,s.Console,{level:t,args:a.slice(0,10).map(ee)},r),n.apply(this,a)}));return k(n)}catch(e){throw A(n),e}}function y(e,t){let n=C(t),r={...n,onError:E(n.onError)},i=x(e,r);try{return k([i,S(e,r)])}catch(e){throw i(),e}}function b(e,t={redactUrlPatterns:[]}){let n=E(t.onError),r=r=>{let i=m(window.location.href,t.redactUrlPatterns??[],window.location.href);T(e,s.Navigation,{url:i,kind:r},n)},i=[];try{i.push(O(history,`pushState`,(e,t)=>function(...n){let i=e.apply(this,n);return t()&&r(`push`),i})),i.push(O(history,`replaceState`,(e,t)=>function(...n){let i=e.apply(this,n);return t()&&r(`replace`),i}));let e=!0,t=()=>{e&&r(`pop`)};return window.addEventListener(`popstate`,t),i.push(()=>{e=!1,window.removeEventListener(`popstate`,t)}),k(i)}catch(e){throw A(i),e}}function x(e,t){return typeof window.fetch==`function`?O(window,`fetch`,(n,r)=>{let i=async function(i,a){let o=n;if(!r())return o.call(this,i,a);let c=t.now(),l=te(i,a),u=ne(i);if(oe(u,t.ignoreUrlPatterns))return o.call(this,i,a);let d=m(u,t.redactUrlPatterns,window.location.href),f=ae(a?.body);try{let n=await o.call(this,i,a);return r()&&T(e,s.Network,M({method:l,url:d,status:n.status,durationMs:Math.max(0,t.now()-c),reqBytes:f,resBytes:re(n.headers)}),t.onError),n}catch(n){throw r()&&T(e,s.Network,M({method:l,url:d,status:0,durationMs:Math.max(0,t.now()-c),failed:!0,reqBytes:f}),t.onError),n}},a=Reflect.get(n,`__original`);return Object.defineProperty(i,"__original",{configurable:!0,value:typeof a==`function`?a:n,writable:!0}),i}):_}function S(e,t){let n=window.XMLHttpRequest.prototype,r=/* @__PURE__ */ new WeakMap,i=[];try{return i.push(O(n,`open`,(e,n)=>function(...i){let[a,o]=i;if(!n())return e.apply(this,i);let s=o.toString();return oe(s,t.ignoreUrlPatterns)?(r.delete(this),e.apply(this,i)):(r.set(this,{method:a.toUpperCase(),url:m(s,t.redactUrlPatterns,window.location.href),startedAt:0,reqBytes:0,failed:!1,emitted:!1}),e.apply(this,i))})),i.push(O(n,`send`,(n,i)=>function(...a){let[o]=a,c=i()?r.get(this):void 0;if(c===void 0)return n.apply(this,a);c.startedAt=t.now(),c.reqBytes=ae(o);let l=()=>{c.failed=!0},u=()=>{c.emitted||(c.emitted=!0,this.removeEventListener(`error`,l),this.removeEventListener(`abort`,l),this.removeEventListener(`timeout`,l),i()&&T(e,s.Network,M({method:c.method,url:c.url,status:this.status,durationMs:Math.max(0,t.now()-c.startedAt),failed:c.failed||this.status===0,reqBytes:c.reqBytes,resBytes:ie(this)}),t.onError))};this.addEventListener(`error`,l),this.addEventListener(`abort`,l),this.addEventListener(`timeout`,l),this.addEventListener(`loadend`,u,{once:!0});try{return n.apply(this,a)}catch(n){throw this.removeEventListener(`error`,l),this.removeEventListener(`abort`,l),this.removeEventListener(`timeout`,l),this.removeEventListener(`loadend`,u),i()&&T(e,s.Network,M({method:c.method,url:c.url,status:0,durationMs:Math.max(0,t.now()-c.startedAt),failed:!0,reqBytes:c.reqBytes}),t.onError),n}})),k(i)}catch(e){throw A(i),e}}function C(e){return{...e,ignoreUrlPatterns:w(e.ignoreUrlPatterns),redactUrlPatterns:w(e.redactUrlPatterns)}}function w(e){return e.map(e=>{let t=e.flags.replace(/[gy]/gu,``);return t===e.flags?e:new RegExp(e.source,t)})}function T(e,t,n,r){try{e(t,n)}catch(e){r?.(e)}}function E(e){let t=!1;return n=>{if(!t){t=!0;try{let t=e?.(n);D(t)&&Promise.resolve(t).catch(()=>void 0)}catch{}finally{t=!1}}}}function D(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}function O(e,t,n){let r=e,i=r[t];if(typeof i!=`function`)return _;let a=!0,o=n(i,()=>a);return r[t]=o,()=>{a&&(a=!1,r[t]===o&&(r[t]=i))}}function k(e){let t=!1;return()=>{t||(t=!0,A(e))}}function A(e){for(let t=e.length-1;t>=0;--t)try{e[t]?.()}catch{}}function ee(e){if(e==null)return String(e);if(typeof e==`string`)return j(e);if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);if(e instanceof Error)return j(e.stack??`${e.name}: ${e.message}`);try{return j(JSON.stringify(e))}catch{return Object.prototype.toString.call(e)}}function j(e){if(e.length<=g)return e;let t=e.charCodeAt(1023),n=t>=55296&&t<=56319?1023:g;return`${e.slice(0,n)}...(+${String(e.length-n)} chars)`}function te(e,t){return(t?.method??(typeof e==`object`&&`method`in e?e.method:`GET`)).toUpperCase()}function ne(e){return typeof e==`string`||e instanceof URL?e.toString():e.url}function re(e){let t=e.get(`content-length`);if(t===null)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}function ie(e){try{let t=e.getResponseHeader(`content-length`);if(t===null)return;let n=Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}catch{return}}function M(e){return{method:e.method,url:e.url,status:e.status,durationMs:e.durationMs,...e.failed===void 0?{}:{failed:e.failed},...e.reqBytes===void 0?{}:{reqBytes:e.reqBytes},...e.resBytes===void 0?{}:{resBytes:e.resBytes}}}function ae(e){if(e==null)return 0;if(typeof e==`string`)return new TextEncoder().encode(e).byteLength;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e.byteLength;if(e instanceof Blob)return e.size}function oe(e,t){return p(e,t)}const se=/* @__PURE__ */ new Set([`action`,`formaction`,`href`,`src`]);function ce(t){let n=()=>{t.beforeUserActivity?.()},r={emit:e=>{t.emit(le(e,t.redactUrlPatterns))},maskAllInputs:t.maskAllInputs,recordCanvas:!1,collectFonts:!1,inlineImages:!1,recordCrossOriginIframes:!1,slimDOMOptions:`all`,hooks:{input:n,mediaInteaction:n,mouseInteraction:n,mousemove:n,scroll:n,selection:n,viewportResize:n},sampling:{mousemove:100,mouseInteraction:!0,scroll:250,media:800,input:`last`}};t.maskAllText?r.maskTextSelector=`*`:t.maskTextSelector!==void 0&&t.maskTextSelector.length>0&&(r.maskTextSelector=t.maskTextSelector),t.blockSelector!==void 0&&t.blockSelector.length>0&&(r.blockSelector=t.blockSelector),t.checkoutEveryNms!==void 0&&t.checkoutEveryNms>0&&(r.checkoutEveryNms=t.checkoutEveryNms);let i=e(r);if(i===void 0)throw Error(`logfire session replay: rrweb failed to start recording`);return{stop:()=>{i()},addCustomEvent:(t,n)=>{e.addCustomEvent(t,n)},takeFullSnapshot:()=>{e.takeFullSnapshot(!0)}}}function le(e,t){if(typeof e.data!=`object`||e.data===null)return e;let n=e.data;if(e.type===i.Meta){if(typeof n.href!=`string`)return e;let r=m(n.href,t,window.location.href);return r===n.href?e:{...e,data:{...n,href:r}}}if(e.type!==i.FullSnapshot&&(e.type!==i.IncrementalSnapshot||n.source!==a.Mutation))return e;let r=N(n,t);return r===n?e:{...e,data:r}}function N(e,t){if(Array.isArray(e)){let n=!1,r=[];for(let i of e){let e=N(i,t);e!==i&&(n=!0),r.push(e)}return n?r:e}if(typeof e!=`object`||!e)return e;let n=e,r=!1,i={};for(let[e,a]of Object.entries(n)){let n=e===`attributes`&&!Array.isArray(a)?ue(a,t):N(a,t);n!==a&&(r=!0),i[e]=n}return r?i:e}function ue(e,t){if(typeof e!=`object`||!e||Array.isArray(e))return e;let n=e,r=!1,i={};for(let[e,a]of Object.entries(n)){if(!se.has(e.toLowerCase())||typeof a!=`string`){i[e]=a;continue}let n=m(a,t,window.location.href);n!==a&&(r=!0),i[e]=n}return r?i:e}function P(e){return typeof e==`object`&&e?e:void 0}function F(e){return typeof e==`string`&&e.length>0?e:void 0}function de(e){let t=P(e),n=F(t?.id);if(t===void 0||n===void 0)return;let r=F(t.name),i=F(t.email);return{id:n,...r===void 0?{}:{name:r},...i===void 0?{}:{email:i}}}function fe(e,t,n,r={},c){let l=1/0,u=0,d=0,f=0,p=0,m=!1,h=/* @__PURE__ */ new Set;for(let e of t){e.timestamp<l&&(l=e.timestamp),e.timestamp>u&&(u=e.timestamp);let t=P(e.data);if(e.type===i.FullSnapshot)m=!0;else if(e.type===i.Meta){let e=F(t?.href);e!==void 0&&h.add(e)}else if(e.type===i.IncrementalSnapshot&&t!==void 0){let e=t.source;if(e===a.MouseInteraction){let e=t.type;(e===o.Click||e===o.DblClick)&&d++}else e===a.Input&&f++}else if(e.type===i.Custom&&t!==void 0){let e=F(t.tag),n=P(t.payload);if(e===s.Error)p++;else if(e===s.Console)n?.level===`error`&&p++;else if(e===s.Navigation){let e=F(n?.url);e!==void 0&&h.add(e)}}}return{seq:e,firstTimestamp:l===1/0?0:l,lastTimestamp:u,eventCount:t.length,clickCount:d,keypressCount:f,errorCount:p,hasFullSnapshot:m,urls:[...h],...n!==void 0&&n.length>0?{distinctId:n}:{},...c===void 0?{}:{user:{...c}},...Object.keys(r).length===0?{}:{sessionAttributes:{...r}}}}function I(e=Date.now){let t=e(),n=new Uint8Array(/* @__PURE__ */ new ArrayBuffer(16));pe(n),n[0]=Math.floor(t/2**40)&255,n[1]=Math.floor(t/2**32)&255,n[2]=Math.floor(t/2**24)&255,n[3]=Math.floor(t/2**16)&255,n[4]=Math.floor(t/256)&255,n[5]=t&255,n[6]=(n[6]??0)&15|112,n[8]=(n[8]??0)&63|128;let r=``;for(let e of n)r+=e.toString(16).padStart(2,`0`);return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}function pe(e){let t=globalThis.crypto;if(typeof t?.getRandomValues==`function`){t.getRandomValues(e);return}for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256)}const me=`lf_session_replay`;var he=class{idleTimeoutMs;maxDurationMs;now;storage;memorySession;pendingSession;persistenceTimer;constructor(e){this.idleTimeoutMs=e.idleTimeoutMs,this.maxDurationMs=e.maxDurationMs,this.now=e.now??Date.now,this.storage=e.storage===void 0?L():e.storage}getSession(){let e=this.now();if(this.memorySession!==void 0&&!this.isExpired(this.memorySession,e))return this.memorySession;let t=this.read();return t!==void 0&&!this.isExpired(t,e)?t:this.createSession(e)}touch(){let e=this.now(),t={...this.getSession(),lastActivityAt:e};return this.memorySession=t,this.scheduleWrite(t),t}reset(){return this.createSession(this.now())}flushPendingStorage(){this.persistenceTimer!==void 0&&(clearTimeout(this.persistenceTimer),this.persistenceTimer=void 0);let e=this.pendingSession;this.pendingSession=void 0,e!==void 0&&this.writeNow(e)}isExpired(e,t){return t-e.lastActivityAt>this.idleTimeoutMs||t-e.startedAt>this.maxDurationMs}createSession(e){let t={id:I(this.now),startedAt:e,lastActivityAt:e};return this.flushPendingStorage(),this.writeNow(t),t}read(){if(this.storage!==null)try{let e=this.storage.getItem(me);if(e!==null){let t=JSON.parse(e);if(ge(t))return this.memorySession=t,t}}catch{return this.memorySession}return this.memorySession}write(e){if(this.memorySession=e,this.storage!==null)try{this.storage.setItem(me,JSON.stringify(e))}catch{}}scheduleWrite(e){this.pendingSession=e,this.persistenceTimer===void 0&&(this.persistenceTimer=setTimeout(()=>{this.persistenceTimer=void 0;let e=this.pendingSession;this.pendingSession=void 0,e!==void 0&&this.writeNow(e)},1e3))}writeNow(e){this.memorySession=e,this.write(e)}};function L(){try{return globalThis.sessionStorage??null}catch{return null}}function ge(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.id==`string`&&t.id.length>0&&typeof t.startedAt==`number`&&Number.isFinite(t.startedAt)&&typeof t.lastActivityAt==`number`&&Number.isFinite(t.lastActivityAt)}var R=class extends Error{droppedSeqs;reason;seq;sessionId;status;constructor(e){super(_e(e),{cause:e.cause}),this.name=`ReplayUploadError`,this.droppedSeqs=Object.freeze([...e.droppedSeqs??[]]),this.reason=e.reason,this.seq=e.seq,this.sessionId=e.sessionId,this.status=e.status}};function _e(e){let t=e.seq===void 0?`replay chunk`:`replay chunk seq=${String(e.seq)}`,n=e.cause instanceof Error?`: ${e.cause.message}`:``;return`${t} ${e.reason}${n}`}const z=`lf_session_replay_seq`,B=1e4,ve=3e4,ye={gzip:t,gzipSync:n};var be=class{buffer=[];bufferHasFullSnapshot=!1;pendingBytes=0;seq=0;timer;nextFlushAt;lastUserActivityAt;startedAt;started=!1;held;heldBufferIncomplete=!1;minimumBufferIncomplete=!1;minimumDurationSatisfied=!1;firstObservedTimestamp;lastObservedTimestamp;refreshingMinimumSnapshot=!1;mode;queue=[];retainedBytes=0;activeUpload;drainPromise;draining=!1;lifecycleFlights=/* @__PURE__ */ new Set;closed=!1;shuttingDown=!1;retryAbort=new AbortController;deadlineAbort=new AbortController;resyncPending=!1;resyncTimer;lastResyncAt;reservedKeepaliveBytes=0;asyncCompressionAvailable=!0;config;compression;storage;sessionId;sessionAttributes;takeFullSnapshot;constructor(e,t,n,r=L(),i=ye,a={},o={}){this.config=e,this.sessionId=t,this.sessionAttributes=Object.freeze({...a}),this.mode=n,this.storage=r,this.compression=i,this.held=o.holdUntilActivity===!0&&n===`full`,this.takeFullSnapshot=o.takeFullSnapshot,this.minimumDurationSatisfied=e.minSessionDurationMs===0,this.seq=this.readPersistedSequence()??0,this.startedAt=this.config.now(),this.lastUserActivityAt=this.startedAt}start(){this.started||this.mode!==`full`||(this.started=!0,this.scheduleFlush())}add(e){this.minimumDurationSatisfied||(this.firstObservedTimestamp??=e.timestamp,this.lastObservedTimestamp=Math.max(this.lastObservedTimestamp??e.timestamp,e.timestamp)),d(e)&&(this.lastUserActivityAt=this.config.now());let t=U(e);if(this.resyncPending){this.addDuringResync(e,t);return}if(this.refreshingMinimumSnapshot){this.buffer.push(e),this.pendingBytes+=t;return}let n=!this.minimumDurationSatisfied;if(this.mode===`buffer`||this.held||n){if(e.type===i.Meta){this.buffer=[e],this.bufferHasFullSnapshot=!1,this.minimumBufferIncomplete=!1,this.pendingBytes=t,n&&(this.mode===`full`&&(this.firstObservedTimestamp=e.timestamp),this.finishMinimumBufferingEvent());return}if(e.type===i.FullSnapshot){let r=!this.bufferHasFullSnapshot&&this.buffer.length===1&&this.buffer[0]?.type===i.Meta?this.buffer[0]:void 0;this.buffer=r===void 0?[e]:[r,e],this.bufferHasFullSnapshot=!0,this.pendingBytes=t+(r===void 0?0:U(r)),this.heldBufferIncomplete=!1,this.minimumBufferIncomplete=!1,n&&(this.mode===`full`&&(this.firstObservedTimestamp=r?.timestamp??e.timestamp),this.finishMinimumBufferingEvent());return}if(!this.bufferHasFullSnapshot||t>this.config.maxBufferBytes){this.heldBufferIncomplete||=this.held,this.minimumBufferIncomplete||=n,n&&this.finishMinimumBufferingEvent();return}if(this.pendingBytes+t>this.config.maxBufferBytes){this.heldBufferIncomplete||=this.held,this.minimumBufferIncomplete||=n,n&&this.finishMinimumBufferingEvent();return}}if(e.type===i.Meta&&this.mode===`full`&&this.buffer.length>0&&this.flushAndReport(),this.buffer.push(e),this.pendingBytes+=t,n&&this.minimumDurationReached()){this.flushAndReport();return}this.mode===`full`&&this.pendingBytes>=this.config.maxBufferBytes&&e.type!==i.Meta?this.flushAndReport():this.scheduleFlush()}addDuringResync(e,t){if(e.type===i.Meta){this.buffer=[e],this.pendingBytes=t;return}if(e.type!==i.FullSnapshot)return;let n=this.buffer.length===1&&this.buffer[0]?.type===i.Meta?this.buffer[0]:void 0;this.buffer=n===void 0?[e]:[n,e],this.pendingBytes=t+(n===void 0?0:U(n)),this.resyncPending=!1,this.clearResyncTimer(),this.pendingBytes>=this.config.maxBufferBytes?this.flushAndReport():this.scheduleFlush()}async triggerFlush(){return this.mode===`buffer`&&(this.bufferHasFullSnapshot||(this.buffer=[],this.pendingBytes=0),this.mode=`full`,this.start()),this.flush()}async flush(e={}){return this.flushInternal(e)}async flushInternal(e={}){if(this.closed||this.mode===`buffer`||this.held||this.buffer.length===0||!this.minimumDurationReached()||(this.clearScheduledFlush(),this.minimumBufferIncomplete&&!this.refreshMinimumBuffer()))return;this.minimumDurationSatisfied=!0;let t=this.buffer,n=this.pendingBytes;this.buffer=[],this.bufferHasFullSnapshot=!1,this.minimumBufferIncomplete=!1,this.pendingBytes=0;let r=this.sessionId,i=this.snapshotIdentity();if(e.keepalive===!0){let e=Ee(t),n=this.allocateSeq(e.length),a=this.deliverLifecycle(e,n,r,i);this.lifecycleFlights.add(a);let o=()=>{this.lifecycleFlights.delete(a)};a.then(o,o),await a;return}await this.enqueue(t,n,r,i)?.done}async shutdown(e={}){if(this.started=!1,this.clearScheduledFlush(),this.held||!this.minimumDurationReached()){this.discard(),await this.settleWithinDeadline([]);return}if(e.keepalive===!0){await this.flush(e),this.closed=!0,this.clearResyncTimer(),await this.settleWithinDeadline([]);return}let t=this.flushInternal();this.closed=!0,this.shuttingDown=!0,this.clearResyncTimer(),this.retryAbort.abort();let n=this.queue.filter(e=>e!==this.activeUpload).map(async e=>this.finalAttempt(e));await this.settleWithinDeadline([t,...n])}discard(){this.started=!1,this.closed=!0,this.clearScheduledFlush(),this.clearResyncTimer(),this.buffer=[],this.bufferHasFullSnapshot=!1,this.minimumBufferIncomplete=!1,this.pendingBytes=0}getMode(){return this.mode}isHeld(){return this.held}releaseHeld(e){this.held&&((this.heldBufferIncomplete||!this.bufferHasFullSnapshot)&&(this.buffer=[],this.bufferHasFullSnapshot=!1,this.pendingBytes=0,e()),this.held=!1,this.pendingBytes>=this.config.maxBufferBytes?this.flushAndReport():this.scheduleFlush())}flushAndReport(){this.flushInternal().catch(e=>{V(this.config.onError,e)})}scheduleFlush(){let e=this.config.now(),t=Math.max(0,this.config.minSessionDurationMs-(e-this.startedAt)),n=Math.max(f(this.config.flushIntervalMs,e-this.lastUserActivityAt),t);this.scheduleFlushIn(e,n)}scheduleFlushIn(e,t){if(!this.started||this.mode!==`full`||this.held||this.buffer.length===0)return;let n=e+t;this.timer!==void 0&&this.nextFlushAt!==void 0&&this.nextFlushAt<=n||(this.clearScheduledFlush(),this.nextFlushAt=n,this.timer=setTimeout(()=>{this.timer=void 0,this.nextFlushAt=void 0,this.flushAndReport()},t))}clearScheduledFlush(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0),this.nextFlushAt=void 0}minimumDurationReached(){return this.minimumDurationSatisfied||this.config.minSessionDurationMs===0?!0:this.firstObservedTimestamp===void 0||this.lastObservedTimestamp===void 0?!1:this.lastObservedTimestamp-this.firstObservedTimestamp>=this.config.minSessionDurationMs}finishMinimumBufferingEvent(){this.minimumDurationReached()?this.flushAndReport():this.scheduleFlush()}refreshMinimumBuffer(){let e=this.buffer.length,t=this.pendingBytes;if(this.takeFullSnapshot!==void 0){this.refreshingMinimumSnapshot=!0;try{this.takeFullSnapshot()}catch(e){V(this.config.onError,e)}finally{this.refreshingMinimumSnapshot=!1}}return this.buffer.slice(e).some(e=>e.type===i.FullSnapshot)?(this.minimumBufferIncomplete=!1,!0):(this.buffer.length=e,this.pendingBytes=t,!1)}snapshotIdentity(){let e=this.snapshotUser(),t=this.config.distinctId;if(this.config.getDistinctId!==void 0)try{t=this.config.getDistinctId()??this.config.distinctId}catch(e){V(this.config.onError,e)}else e!==void 0&&(t=e.id);return{distinctId:t,user:e}}createEnvelope(e,t,n){return{version:1,meta:fe(t,e,n.distinctId,this.sessionAttributes,n.user),events:e}}snapshotUser(){if(this.config.getUser!==void 0)try{return de(this.config.getUser())}catch(e){V(this.config.onError,e);return}}allocateSeq(e){let t=this.seq;return this.seq+=e,this.saveSeq(this.sessionId,this.seq),t}enqueue(e,t,n,r){let a=Math.max(2e6,2*this.config.maxBufferBytes);if(this.queue.length>0&&this.retainedBytes+t>a){V(this.config.onError,new R({cause:/* @__PURE__ */ Error(`replay upload queue is full`),reason:`not-sent`,seq:void 0,sessionId:n})),this.beginResync();return}let o=()=>void 0,s={body:void 0,done:new Promise(e=>{o=e}),events:e,hasFullSnapshot:e.some(e=>e.type===i.FullSnapshot),identity:r,reachedFetch:!1,resolve:o,retainedBytes:t,seq:this.allocateSeq(1),sessionId:n,settled:!1};return this.queue.push(s),this.retainedBytes+=t,this.draining||(this.draining=!0,this.drainPromise=this.drain()),s}async drain(){try{for(;!this.shuttingDown;){let e=this.queue[0];if(e===void 0)break;this.activeUpload=e;let t=await this.deliverQueued(e);this.activeUpload=void 0,this.settle(e,t)}}finally{this.activeUpload=void 0,this.draining=!1}}async deliverQueued(e){let t=await this.compressQueued(e);if(t!==void 0||e.settled)return t;let n=Date.now(),r;for(let t=1;;t++){let i=ve-(Date.now()-n);if(t>1&&i<=0)return W(r,e.reachedFetch);let a=await this.attemptQueued(e,Math.min(B,i));if(a===void 0)return;r=a;let o=Ae(a,t,this.config.random);if(o===void 0||this.shuttingDown||Date.now()-n+o>=ve)return W(a,e.reachedFetch);await this.backoff(o)}}async compressQueued(e){if(e.body!==void 0||e.events===void 0)return;let t=e.events;try{let n=r(JSON.stringify(this.createEnvelope(t,e.seq,e.identity))),i=this.shuttingDown?this.compression.gzipSync(n):await this.compressOrdinary(n);if(e.events!==t)return await this.compressQueued(e);e.settled||(this.retainedBytes+=i.byteLength-e.retainedBytes,e.retainedBytes=i.byteLength,e.body=i,e.events=void 0);return}catch(e){return{cause:e,reason:`not-sent`}}}async attemptQueued(e,t=B){let n=e.body;if(n!==void 0)try{await this.send({body:n,requestKeepalive:!1,reservedBytes:0,seq:e.seq,sessionId:e.sessionId},()=>{e.reachedFetch=!0},t);return}catch(e){return e}}async finalAttempt(e){let t=await this.compressQueued(e);if(t!==void 0){this.settle(e,t);return}let n=await this.attemptQueued(e);this.settle(e,n===void 0?void 0:W(n,e.reachedFetch))}async settleWithinDeadline(e){let t=Promise.all([...e,this.drainPromise,...this.lifecycleFlights]).then(()=>void 0,()=>void 0),n,r=new Promise(e=>{n=setTimeout(e,B)});if(await Promise.race([t,r]),clearTimeout(n),this.shuttingDown){this.deadlineAbort.abort(/* @__PURE__ */ Error(`replay upload did not finish before shutdown`));for(let e of[...this.queue])this.settle(e,{cause:/* @__PURE__ */ Error(`replay upload did not finish before shutdown`),reason:e.reachedFetch?`unconfirmed`:`not-sent`})}}settle(e,t){if(e.settled)return;e.settled=!0,this.retainedBytes-=e.retainedBytes;let n=this.queue.indexOf(e);n>=0&&this.queue.splice(n,1),e.body=void 0,e.events=void 0,e.resolve(),t!==void 0&&this.handleSequencedLoss(e.seq,e.sessionId,t)}handleSequencedLoss(e,t,n){let r=[];if(!this.shuttingDown){let t=!1;for(let n of[...this.queue])if(!(n.seq<e)){if(n.events===void 0){if(n.hasFullSnapshot){t=!0;break}continue}if(n.hasFullSnapshot){let e=we(n.events),r=Te(e);this.retainedBytes+=r-n.retainedBytes,n.retainedBytes=r,n.events=e,t=!0;break}r.push(n.seq),this.settle(n,void 0)}!t&&!this.trimBufferToAnchor()&&this.beginResync()}V(this.config.onError,new R({cause:n.cause,droppedSeqs:r,reason:n.reason,seq:e,sessionId:t,status:n.status}))}trimBufferToAnchor(){return this.buffer.some(e=>e.type===i.FullSnapshot)?(this.buffer=we(this.buffer),this.pendingBytes=Te(this.buffer),!0):!1}beginResync(){this.closed||(this.resyncPending=!0,this.buffer=[],this.bufferHasFullSnapshot=!1,this.pendingBytes=0,this.clearScheduledFlush(),this.scheduleResyncSnapshot())}scheduleResyncSnapshot(){if(this.resyncTimer!==void 0||this.closed)return;let e=this.lastResyncAt===void 0?0:Math.max(0,this.lastResyncAt+6e4-this.config.now());this.resyncTimer=setTimeout(()=>{this.resyncTimer=void 0,this.takeResyncSnapshot()},e)}takeResyncSnapshot(){if(this.resyncPending&&!this.closed&&this.takeFullSnapshot!==void 0){this.lastResyncAt=this.config.now();try{this.takeFullSnapshot()}catch(e){V(this.config.onError,e),this.scheduleResyncSnapshot();return}this.isResyncPending()&&(V(this.config.onError,/* @__PURE__ */ Error(`replay resync snapshot produced no full snapshot`)),this.scheduleResyncSnapshot())}}isResyncPending(){return this.resyncPending}clearResyncTimer(){this.resyncTimer!==void 0&&(clearTimeout(this.resyncTimer),this.resyncTimer=void 0)}async backoff(e){let t=this.retryAbort.signal;t.aborted||await new Promise(n=>{let r=()=>{clearTimeout(i),t.removeEventListener(`abort`,r),n()},i=setTimeout(r,e);t.addEventListener(`abort`,r)})}async deliverLifecycle(e,t,n,i){let a=[];for(let o=0;o<e.length;o++){let s=e[o];if(s===void 0){a.push(void 0);continue}let c=this.createEnvelope(s,t+o,i);try{a.push({body:this.compression.gzipSync(r(JSON.stringify(c))),requestKeepalive:!1,reservedBytes:0,seq:t+o,sessionId:n})}catch(e){this.handleSequencedLoss(t+o,n,{cause:e,reason:`not-sent`}),a.push(void 0)}}let o=!0,s=Math.max(0,48e3-this.reservedKeepaliveBytes);for(let e of a){if(e===void 0){o=!1;continue}o&&e.body.byteLength<=s?(e.requestKeepalive=!0,e.reservedBytes=e.body.byteLength,this.reservedKeepaliveBytes+=e.reservedBytes,s-=e.reservedBytes):o=!1}await Promise.all(a.map(async e=>{if(e===void 0)return;let t=!1;try{await this.send(e,()=>{t=!0})}catch(n){this.handleSequencedLoss(e.seq,e.sessionId,W(n,t))}}))}async compressOrdinary(e){if(!this.asyncCompressionAvailable)return this.compression.gzipSync(e);try{return await De(this.compression,e)}catch{return this.asyncCompressionAvailable=!1,this.compression.gzipSync(e)}}async send(e,t,n=B){let r,i,a,o=new AbortController,s=setTimeout(()=>{o.abort(/* @__PURE__ */ Error(`replay upload timed out after ${String(n)}ms`))},n),c=this.deadlineAbort.signal,l=()=>{o.abort(c.reason)};c.addEventListener(`abort`,l);try{let n=`${this.config.replayUrl.replace(/\/+$/u,``)}/${encodeURIComponent(e.sessionId)}?seq=${String(e.seq)}`,s=await Ce(this.getUploadHeaders(),o.signal);t();let c=this.config.fetchImpl(n,{method:`POST`,headers:s,body:e.body.slice(),keepalive:e.requestKeepalive,signal:o.signal});r=!0;let l=await c;if(i=!0,a=await Oe(l),!l.ok){let e=l.status===429||l.status===503?je(l.headers.get(`retry-after`),Date.now()):void 0;throw new H(l.status,e)}}finally{clearTimeout(s),c.removeEventListener(`abort`,l),e.reservedBytes>0&&(r!==!0||i!==!0||a===!0)&&(this.reservedKeepaliveBytes=Math.max(0,this.reservedKeepaliveBytes-e.reservedBytes))}}async getUploadHeaders(){let e=this.config.headers===void 0?{}:await this.config.headers(),t=await Se(this.config.token);return{...t===void 0||t.length===0?e:{...Object.fromEntries(Object.entries(e).filter(([e])=>e.toLowerCase()!==`authorization`)),Authorization:`Bearer ${t}`},"Content-Type":`application/json`,"Content-Encoding":`gzip`}}canResumeSequence(){return this.readPersistedSequence()===this.seq}readPersistedSequence(){if(this.storage!==null)try{let e=this.storage.getItem(z);if(e===null)return;let t=JSON.parse(e);if(typeof t!=`object`||!t)return;let n=t;return n.id===this.sessionId&&typeof n.seq==`number`&&Number.isSafeInteger(n.seq)&&n.seq>=0?n.seq:void 0}catch{return}}saveSeq(e,t){if(this.storage!==null)try{this.storage.setItem(z,JSON.stringify({id:e,seq:t}))}catch{}}};function V(e,t){try{let n=e?.(t);xe(n)&&Promise.resolve(n).catch(()=>void 0)}catch{}}function xe(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}var H=class extends Error{retryAfter;status;constructor(e,t){super(`replay ingest failed: ${String(e)}`),this.status=e,this.retryAfter=t,this.name=`ReplayIngestError`}};async function Se(e){return typeof e==`function`?e():e}async function Ce(e,t){if(t.aborted)throw t.reason;return new Promise((n,r)=>{let i=()=>{r(t.reason)};t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{t.removeEventListener(`abort`,i),n(e)},e=>{t.removeEventListener(`abort`,i),r(e instanceof Error?e:Error(String(e)))})})}function U(e){try{return r(JSON.stringify(e)).byteLength}catch{return 0}}function we(e){let t=e.findIndex(e=>e.type===i.FullSnapshot);if(t<0)return e;let n=t>0&&e[t-1]?.type===i.Meta?t-1:t;return e.slice(n)}function Te(e){return e.reduce((e,t)=>e+U(t),0)}function Ee(e){let t=[],n=[],r=0;for(let i of e){let e=U(i);n.length>0&&r+e>48e3&&(t.push(n),n=[],r=0),n.push(i),r+=e}return n.length>0&&t.push(n),t}async function De(e,t){return new Promise((n,r)=>{let i=[];typeof window<`u`&&i.push(window),typeof document<`u`&&i.push(document);let a=()=>{for(let e of i)e.removeEventListener(`securitypolicyviolation`,s)},o=(e,t)=>{if(a(),e!==null){r(e);return}n(t)},s=e=>{let t=e;(t.effectiveDirective.includes(`worker-src`)||t.violatedDirective.includes(`worker-src`))&&o(/* @__PURE__ */ Error(`replay compression worker blocked by Content Security Policy`))};for(let e of i)e.addEventListener(`securitypolicyviolation`,s);try{e.gzip(t,{level:6},(e,t)=>{o(e,t)})}catch(e){a(),r(e instanceof Error?e:Error(String(e)))}})}async function Oe(e){if(e.body===null)return!0;try{return await e.body.cancel(),!0}catch{return!1}}function ke(e){return e===408||e===425||e===429||e>=500}function Ae(e,t,n){if(e instanceof H&&!ke(e.status))return;let r=Math.min(8e3,500*2**(t-1)),i=Math.round(r*(1-.5*n())),a=e instanceof H?e.retryAfter:void 0;return a===void 0?i:Math.max(a,i)}function W(e,t){let n=e instanceof H?e.status:void 0;return n!==void 0&&!ke(n)?{cause:e,reason:`rejected`,status:n}:{cause:e,reason:t?`unconfirmed`:`not-sent`,status:n}}function je(e,t){if(e===null)return;let n=e.trim();if(/^\d+$/u.test(n)){let e=Number(n);return Number.isSafeInteger(e)?e*1e3:void 0}let r=Fe(n,t);return r===void 0?void 0:Math.max(0,r-t)}const Me=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Ne=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],Pe=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];function Fe(e,t){let n=/^(Sun|Mon|Tue|Wed|Thu|Fri|Sat), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{2}):(\d{2}):(\d{2}) GMT$/u.exec(e);if(n!==null)return G(n[1],n[2],n[3],n[4],n[5],n[6],n[7]);let r=/^(Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{2}):(\d{2}):(\d{2}) GMT$/u.exec(e);if(r!==null){let e=new Date(t).getUTCFullYear(),n=Number(r[4]),i=Math.floor(e/100)*100+n;return i>e+50&&(i-=100),G(r[1],r[2],r[3],String(i),r[5],r[6],r[7])}let i=/^(Sun|Mon|Tue|Wed|Thu|Fri|Sat) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{2}| \d) (\d{2}):(\d{2}):(\d{2}) (\d{4})$/u.exec(e);if(i!==null)return G(i[1],i[3]?.trim(),i[2],i[7],i[4],i[5],i[6])}function G(e,t,n,r,i,a,o){let s=Number(t),c=Me.indexOf(n),l=Number(r),u=Number(i),d=Number(a),f=Number(o);if(c<0||s<1||s>31||u>23||d>59||f>59)return;let p=/* @__PURE__ */ new Date(0);if(p.setUTCFullYear(l,c,s),p.setUTCHours(u,d,f,0),p.getUTCFullYear()!==l||p.getUTCMonth()!==c||p.getUTCDate()!==s||p.getUTCHours()!==u||p.getUTCMinutes()!==d||p.getUTCSeconds()!==f)return;let m=Ne.indexOf(e),h=Pe.indexOf(e);return(m>=0?m:h)===p.getUTCDay()?p.getTime():void 0}const Ie=`lf_session_replay_recording`,K=`lf_session_replay_recording_owner`;var Le=class{state;storage;owner;now;maxDurationMs;readOpenerState;constructor(e,t,n,r=()=>null){this.storage=e,this.now=t,this.owner=I(t),this.maxDurationMs=Math.min(n,72e5),this.readOpenerState=r;try{e?.getItem(`lf_session_replay_recording_owner`)===null&&(this.state=this.readResumableState()),e?.setItem(K,this.owner),e?.getItem(`lf_session_replay_recording_owner`)!==this.owner&&(this.storage=null,this.state=void 0)}catch{this.storage=null,this.state=void 0}}get(e){if(this.state!==void 0&&this.isCurrent(this.state.id,e))return this.state.id;this.state={id:I(this.now),rumSessionId:e,startedAt:this.now()};try{this.storage?.setItem(Ie,JSON.stringify(this.state))}catch{}return this.state.id}isCurrent(e,t){let n=this.state;if(n===void 0)return!1;let r=this.now();return n.id===e&&n.rumSessionId===t&&r>=n.startedAt&&r-n.startedAt<this.maxDurationMs}release(){try{this.storage?.getItem(`lf_session_replay_recording_owner`)===this.owner&&this.storage.removeItem(K)}catch{}}resume(){try{this.state=this.storage?.getItem(`lf_session_replay_recording_owner`)===null?this.readResumableState():void 0,this.storage?.setItem(K,this.owner),this.storage?.getItem(`lf_session_replay_recording_owner`)!==this.owner&&(this.state=void 0,this.storage=null)}catch{this.state=void 0,this.storage=null}}readResumableState(){let e=this.storage?.getItem(Ie),t=this.storage?.getItem(z);if(e==null||t==null)return;let n=null;try{n=this.readOpenerState()}catch{}if(n!==e)return Re(e,t)}};function Re(e,t){let n=JSON.parse(e),r=JSON.parse(t);if(typeof n!=`object`||!n||typeof r!=`object`||!r)return;let i=n,a=r;if(!(typeof i.id!=`string`||i.id.length===0||typeof i.rumSessionId!=`string`||typeof i.startedAt!=`number`||!Number.isFinite(i.startedAt)||a.id!==i.id||typeof a.seq!=`number`||!Number.isSafeInteger(a.seq)||a.seq<0))return{id:i.id,rumSessionId:i.rumSessionId,startedAt:i.startedAt}}function ze(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function Be(e){let t=e.random??Math.random;return t()<ze(e.sessionSampleRate)?`full`:t()<ze(e.onErrorSampleRate)?`buffer`:`off`}const Ve=/^[a-z][a-z0-9_]{0,63}$/u;function He(e,t){let n=0;for(let r of e)if(n+=+(r.length>0),n>t)return!1;return!0}function Ue(e,t){if(e===void 0)return Object.freeze({});let n;try{n=e()}catch(e){return t(e),Object.freeze({})}if(typeof n!=`object`||!n||Array.isArray(n))return Object.freeze({});let r;try{r=Object.getPrototypeOf(n)}catch(e){return t(e),Object.freeze({})}if(r!==Object.prototype&&r!==null)return Object.freeze({});let i;try{i=Object.keys(n)}catch(e){return t(e),Object.freeze({})}let a={},o=0;for(let e of i){if(!Ve.test(e))continue;let r;try{r=Reflect.get(n,e)}catch(e){t(e);continue}if((typeof r==`boolean`||typeof r==`number`&&Number.isFinite(r)||typeof r==`string`&&He(r,200))&&(Object.defineProperty(a,e,{configurable:!0,enumerable:!0,value:r,writable:!0}),o+=1,o===20))break}return Object.freeze(a)}const We={mode:`off`,recording:!1,getSessionId:()=>``,captureError:()=>void 0,getRecordingId:()=>``,flush:async()=>Promise.resolve(),stop:async()=>Promise.resolve()},Ge=`lf_session_replay_mode`,q=Symbol.for(`@pydantic/logfire-session-replay/controller`);function Ke(e){if(typeof window>`u`||typeof document>`u`)return We;let t=nt();try{let n=Je(e),r=new he({idleTimeoutMs:n.sessionIdleTimeoutMs,maxDurationMs:n.maxSessionDurationMs,now:n.now}),i=r.getSession().id,a=e=>{let t;try{t=n.getSessionId?.()}catch(e){return Z(n.onError,e),i}if(t!==void 0&&t.length>0)return i=t,t;let a=e?r.touch().id:r.getSession().id;return i=a,a},o=L(),s=new Le(o,n.now,n.maxSessionDurationMs,()=>window.opener?.sessionStorage.getItem(`lf_session_replay_recording`)??null),c=a(!1),l=s.get(c),u,d=!1,f=!1,p=0,m=!0,h=Promise.resolve(),g=Promise.resolve(),_,v=(e,t,r=!t)=>{let i=Ye(n,e,o);if(!(i===`off`||d||f||u!==void 0||e!==c))try{let t=l;u=qe({config:n,getSessionId:a,mode:i,onSessionChanged:y,samplingModeStorage:o,sessionId:e,recordingId:t,isCurrentRecording:()=>s.isCurrent(t,a(!1)),holdUntilActivity:r})}catch(e){if(u=void 0,t)throw e;Z(n.onError,e)}},y=(e,t=!0)=>{if(d||f)return;let r=s.get(e);if(e===c&&r===l)return;c=e,l=r;let i=u;u=void 0;let a=i?.deactivate()??Promise.resolve(),o=p;h=h.then(async()=>{await X(a,n.onError),!d&&p===o&&c===e&&l===r&&v(e,!1,t)})},b;try{v(c,!0),b=setInterval(()=>{y(a(!1))},1e3)}catch(e){throw u?.discard(),u=void 0,s.release(),e}let x=()=>{f=!0,p+=1;let e=u;u=void 0;let t=e?.deactivate(!0)??Promise.resolve();g=Promise.all([g,h,X(t,n.onError)]).then(()=>void 0),h=Promise.resolve(),m=e?.transport.canResumeSequence()??m,m&&s.release()},S=e=>{if(!e.persisted||d)return;u?.discard(),u=void 0;let t=p;h=h.then(async()=>{await new Promise(e=>{setTimeout(e,0)}),!(d||p!==t)&&(f=!1,s.resume(),c=a(!1),l=s.get(c),m=!0,v(c,!1,!1))})};return window.addEventListener(`pagehide`,x),window.addEventListener(`pageshow`,S),{get mode(){try{return u?.transport.getMode()??`off`}catch(e){return Z(n.onError,e),`off`}},get recording(){try{return u!==void 0}catch(e){return Z(n.onError,e),!1}},getSessionId:()=>a(!1),captureError:(e,t)=>{try{u?.captureError(e,t)}catch(e){Z(n.onError,e)}},getRecordingId:()=>u!==void 0&&s.isCurrent(u.recordingId,a(!1))?u.recordingId:``,flush:async()=>{try{await h,await u?.transport.flush()}catch(e){Z(n.onError,e)}},stop:async()=>(_??=(async()=>{d=!0,p+=1,clearInterval(b),window.removeEventListener(`pagehide`,x),window.removeEventListener(`pageshow`,S);let e=u;u=void 0,await X(e?.deactivate()??Promise.resolve(),n.onError),await h,await g,r.flushPendingStorage(),m=e?.transport.canResumeSequence()??m,m&&s.release(),t()})(),_)}}catch(e){throw t(),e}}function qe(e){let{config:t,getSessionId:n,holdUntilActivity:r,mode:i,onSessionChanged:a,samplingModeStorage:o,sessionId:c,recordingId:l,isCurrentRecording:u}=e,f=Ue(t.getSessionAttributes,e=>{Z(t.onError,e)}),p,m=new be(t,l,i,void 0,void 0,f,{holdUntilActivity:r,takeFullSnapshot:()=>{p.takeFullSnapshot()}}),h=[],g=!0,_=()=>g,x;try{p=ce({beforeUserActivity:()=>{if(g&&m.isHeld())try{let e=n(!0);if(e!==c||!u()){a(e,!1);return}m.releaseHeld(()=>{p.takeFullSnapshot()})}catch(e){Z(t.onError,e)}},emit:e=>{if(g)try{let t=n(d(e));if(t!==c||!u()){a(t,!1);return}m.add(e)}catch(e){Z(t.onError,e)}},maskAllText:t.maskAllText,maskAllInputs:t.maskAllInputs,maskTextSelector:t.maskTextSelector,blockSelector:t.blockSelector,checkoutEveryNms:i===`buffer`?12e4:Math.max(3e5,t.minSessionDurationMs),redactUrlPatterns:t.redactUrlPatterns}),h.push(()=>{p.stop()});let e=(e,n)=>{if(g)try{p.addCustomEvent(e,n)}catch(e){Z(t.onError,e)}},r=n=>{_()&&(m.releaseHeld(()=>{p.takeFullSnapshot()}),e(s.Error,n),_()&&m.getMode()===`buffer`&&(Ze(o,c,`full`),Y(m.triggerFlush(),t.onError)))},f=/* @__PURE__ */ new WeakSet,S=e=>typeof e!=`object`||!e||!f.has(e)&&(f.add(e),!0),C=(e,t)=>{if(S(e)){let n=$($e(e),void 0,J(e));r(typeof t?.timestamp==`number`?{...n,timestamp:t.timestamp}:n)}},w=e=>{e instanceof ErrorEvent&&S(e.error)&&r($(e.message,e.filename,J(e.error)))},T=e=>{C(e.reason)},E=()=>{document.visibilityState===`hidden`&&Y(m.flush({keepalive:!0}),t.onError)},D=()=>{Y(m.flush({keepalive:!0}),t.onError)};return t.captureGlobalErrors&&(window.addEventListener(`error`,w,!0),h.push(()=>{window.removeEventListener(`error`,w,!0)}),window.addEventListener(`unhandledrejection`,T,!0),h.push(()=>{window.removeEventListener(`unhandledrejection`,T,!0)})),document.addEventListener(`visibilitychange`,E),h.push(()=>{document.removeEventListener(`visibilitychange`,E)}),window.addEventListener(`pagehide`,D),h.push(()=>{window.removeEventListener(`pagehide`,D)}),t.captureConsole&&h.push(v(e,{onError:t.onError})),t.captureNetwork&&h.push(y(e,{ignoreUrlPatterns:t.ignoreUrlPatterns,now:t.now,onError:t.onError,redactUrlPatterns:t.redactUrlPatterns})),t.captureNavigation&&h.push(b(e,{onError:t.onError,redactUrlPatterns:t.redactUrlPatterns})),m.start(),{sessionId:c,recordingId:l,transport:m,captureError:C,deactivate:async(e=!1)=>(x??=(async()=>{let t=m.shutdown({keepalive:e});g=!1,Q(h),await t})(),x),discard:()=>{g=!1,Q(h),m.discard()}}}catch(e){throw g=!1,Q(h),m.discard(),e}}function Je(e){if(e.replayUrl.length===0)throw Error("logfire session replay: `replayUrl` is required");let t=new URL(e.replayUrl,`https://logfire.invalid/`);if(t.search!==``||t.hash!==``)throw Error("logfire session replay: `replayUrl` must not contain a query or fragment");let n=e.fetchImpl??(typeof fetch==`function`?fetch.bind(globalThis):void 0);if(n===void 0)throw Error("logfire session replay: no `fetch` available; pass `fetchImpl`");return{replayUrl:e.replayUrl,headers:e.headers,token:e.token,getSessionId:e.getSessionId,getSessionAttributes:e.getSessionAttributes,sessionSampleRate:e.sessionSampleRate??l.sessionSampleRate,onErrorSampleRate:e.onErrorSampleRate??l.onErrorSampleRate,maskAllText:e.maskAllText??l.maskAllText,maskAllInputs:e.maskAllInputs??l.maskAllInputs,maskTextSelector:e.maskTextSelector??l.maskTextSelector,blockSelector:e.blockSelector??l.blockSelector,flushIntervalMs:e.flushIntervalMs??l.flushIntervalMs,maxBufferBytes:e.maxBufferBytes??l.maxBufferBytes,minSessionDurationMs:e.minSessionDurationMs??l.minSessionDurationMs,sessionIdleTimeoutMs:e.sessionIdleTimeoutMs??l.sessionIdleTimeoutMs,maxSessionDurationMs:e.maxSessionDurationMs??l.maxSessionDurationMs,distinctId:e.distinctId??l.distinctId,getDistinctId:e.getDistinctId,getUser:e.getUser,captureConsole:e.captureConsole??l.captureConsole,captureNetwork:e.captureNetwork??l.captureNetwork,captureNavigation:e.captureNavigation??l.captureNavigation,captureGlobalErrors:e.captureGlobalErrors??l.captureGlobalErrors,ignoreUrlPatterns:e.ignoreUrlPatterns??[],redactUrlPatterns:e.redactUrlPatterns??[...l.redactUrlPatterns],onError:e.onError,fetchImpl:n,now:e.now??Date.now,random:e.random??Math.random}}function Ye(e,t,n){let r=Xe(n,t);if(r!==void 0)return r;let i=Be({sessionSampleRate:e.sessionSampleRate,onErrorSampleRate:e.onErrorSampleRate,random:e.random});return Ze(n,t,i),i}function Xe(e,t){if(e!==null)try{let n=e.getItem(Ge);if(n===null)return;let r=JSON.parse(n);if(typeof r!=`object`||!r)return;let i=r;return i.id!==t||!Qe(i.mode)?void 0:i.mode}catch{return}}function Ze(e,t,n){if(e!==null)try{e.setItem(Ge,JSON.stringify({id:t,mode:n}))}catch{}}function Qe(e){return e===`full`||e===`buffer`||e===`off`}function $e(e){return rt(et(e,`message`)??e)}function J(e){let t=et(e,`stack`);return typeof t==`string`?t:void 0}function et(e,t){try{return typeof e==`object`&&e&&t in e?e[t]:void 0}catch{return}}function Y(e,t){e.catch(e=>{Z(t,e)})}async function X(e,t){try{await e}catch(e){Z(t,e)}}function Z(e,t){try{let n=e?.(t);tt(n)&&Promise.resolve(n).catch(()=>void 0)}catch{}}function tt(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}function nt(){let e=globalThis;if(e[q]!==void 0)throw Error(`logfire session replay: a replay controller is already active in this page`);let t={};Object.defineProperty(e,q,{configurable:!0,enumerable:!1,value:t,writable:!0});let n=!1;return()=>{n||(n=!0,e[q]===t&&Reflect.deleteProperty(e,q))}}function Q(e){for(let t=e.length-1;t>=0;--t)try{e[t]?.()}catch{}e.length=0}function $(e,t,n){return{message:e,...t===void 0||t.length===0?{}:{source:t},...n===void 0?{}:{stack:n}}}function rt(e){if(e==null)return`unhandledrejection`;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`||typeof e==`symbol`)return String(e);try{return Object.prototype.toString.call(e)}catch{return`[object Object]`}}export{c as CHUNK_ENVELOPE_VERSION,s as CustomTag,i as EventType,a as IncrementalSource,o as MouseInteractions,R as ReplayUploadError,Ke as startSessionReplay};
|
package/dist/integration.d.cts
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { C as SessionReplayConfig, r as startSessionReplay } from "./index-BxzwrVOz.js";
|
|
3
2
|
//#region src/integration.d.ts
|
|
4
|
-
type SessionReplayIntegrationOptions = Omit<SessionReplayConfig, "getSessionAttributes" | "getSessionId" | "getUser" | "headers" | "maxSessionDurationMs" | "now" | "random" | "replayUrl" | "sessionIdleTimeoutMs" | "token">;
|
|
5
|
-
interface SessionReplayIntegration extends SessionReplayIntegrationOptions {
|
|
3
|
+
export type SessionReplayIntegrationOptions = Omit<SessionReplayConfig, "getSessionAttributes" | "getSessionId" | "getUser" | "headers" | "maxSessionDurationMs" | "now" | "random" | "replayUrl" | "sessionIdleTimeoutMs" | "token">;
|
|
4
|
+
export interface SessionReplayIntegration extends SessionReplayIntegrationOptions {
|
|
6
5
|
load: () => Promise<{
|
|
7
6
|
startSessionReplay: typeof startSessionReplay;
|
|
8
7
|
}>;
|
|
9
8
|
}
|
|
10
9
|
/**
|
|
11
|
-
* Configure the optional browser SDK integration without eagerly bundling the
|
|
12
|
-
* session replay recorder.
|
|
13
|
-
*/
|
|
14
|
-
declare function sessionReplayIntegration(options?: SessionReplayIntegrationOptions): SessionReplayIntegration;
|
|
15
|
-
//#endregion
|
|
16
|
-
export { SessionReplayIntegration, SessionReplayIntegrationOptions, sessionReplayIntegration };
|
|
10
|
+
* Configure the optional browser SDK integration without eagerly bundling the
|
|
11
|
+
* session replay recorder.
|
|
12
|
+
*/
|
|
13
|
+
export declare function sessionReplayIntegration(options?: SessionReplayIntegrationOptions): SessionReplayIntegration;
|
|
14
|
+
//#endregion
|
package/dist/integration.d.ts
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { C as SessionReplayConfig, r as startSessionReplay } from "./index-BxzwrVOz.js";
|
|
3
2
|
//#region src/integration.d.ts
|
|
4
|
-
type SessionReplayIntegrationOptions = Omit<SessionReplayConfig, "getSessionAttributes" | "getSessionId" | "getUser" | "headers" | "maxSessionDurationMs" | "now" | "random" | "replayUrl" | "sessionIdleTimeoutMs" | "token">;
|
|
5
|
-
interface SessionReplayIntegration extends SessionReplayIntegrationOptions {
|
|
3
|
+
export type SessionReplayIntegrationOptions = Omit<SessionReplayConfig, "getSessionAttributes" | "getSessionId" | "getUser" | "headers" | "maxSessionDurationMs" | "now" | "random" | "replayUrl" | "sessionIdleTimeoutMs" | "token">;
|
|
4
|
+
export interface SessionReplayIntegration extends SessionReplayIntegrationOptions {
|
|
6
5
|
load: () => Promise<{
|
|
7
6
|
startSessionReplay: typeof startSessionReplay;
|
|
8
7
|
}>;
|
|
9
8
|
}
|
|
10
9
|
/**
|
|
11
|
-
* Configure the optional browser SDK integration without eagerly bundling the
|
|
12
|
-
* session replay recorder.
|
|
13
|
-
*/
|
|
14
|
-
declare function sessionReplayIntegration(options?: SessionReplayIntegrationOptions): SessionReplayIntegration;
|
|
15
|
-
//#endregion
|
|
16
|
-
export { SessionReplayIntegration, SessionReplayIntegrationOptions, sessionReplayIntegration };
|
|
10
|
+
* Configure the optional browser SDK integration without eagerly bundling the
|
|
11
|
+
* session replay recorder.
|
|
12
|
+
*/
|
|
13
|
+
export declare function sessionReplayIntegration(options?: SessionReplayIntegrationOptions): SessionReplayIntegration;
|
|
14
|
+
//#endregion
|
package/package.json
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"rum",
|
|
25
25
|
"rrweb"
|
|
26
26
|
],
|
|
27
|
-
"version": "0.
|
|
27
|
+
"version": "0.6.0",
|
|
28
28
|
"type": "module",
|
|
29
29
|
"main": "./dist/index.cjs",
|
|
30
30
|
"module": "./dist/index.js",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"@rrweb/replay": "2.1.1",
|
|
61
61
|
"@types/node": "^22.5.1",
|
|
62
62
|
"jsdom": "^29.1.1",
|
|
63
|
-
"vitest": "
|
|
63
|
+
"vitest": "5.0.1"
|
|
64
64
|
},
|
|
65
65
|
"files": [
|
|
66
66
|
"dist",
|