sentry-miniapp 1.7.0 → 1.8.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.en.md CHANGED
@@ -41,7 +41,7 @@ A **mini program monitoring SDK** built on `@sentry/core` (v10.45.0), providing
41
41
  ## Installation
42
42
 
43
43
  ```bash
44
- npm install sentry-miniapp --save
44
+ npm install sentry-miniapp
45
45
  ```
46
46
 
47
47
  > **Note:** Starting from `v1.1.0`, the build strategy has been optimized (dependencies are inlined), so there is **no need** to install `@sentry/core` separately.
@@ -50,6 +50,18 @@ npm install sentry-miniapp --save
50
50
 
51
51
  ---
52
52
 
53
+ ## AI-Assisted Setup
54
+
55
+ If you use [Claude Code](https://claude.ai/code) or [Cursor](https://cursor.com), get AI-guided setup with one command:
56
+
57
+ ```bash
58
+ npx skills add https://github.com/lizhiyao/sentry-miniapp --skill sentry-miniapp-sdk
59
+ ```
60
+
61
+ After installation, just ask "help me set up Sentry monitoring" in your AI editor.
62
+
63
+ ---
64
+
53
65
  ## Quick Start
54
66
 
55
67
  ### 1. Prerequisites
@@ -309,20 +321,6 @@ If errors are not being reported, check:
309
321
 
310
322
  ---
311
323
 
312
- ## Contributing
313
-
314
- We welcome Pull Requests and Issues!
315
-
316
- Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup and guidelines.
317
-
318
- Quick start:
319
-
320
- 1. `npm install` — install dependencies
321
- 2. `npm run dev` — start watch mode
322
- 3. `npm run test:all` — run full test suite (unit + integration)
323
-
324
- ---
325
-
326
324
  ## Community
327
325
 
328
326
  Have questions or want to discuss mini program monitoring? Join our community.
package/README.md CHANGED
@@ -41,7 +41,7 @@
41
41
  推荐使用 `npm` 进行安装。
42
42
 
43
43
  ```bash
44
- npm install sentry-miniapp --save
44
+ npm install sentry-miniapp
45
45
  ```
46
46
 
47
47
  > **注意:** `v1.1.0` 及以上版本已优化构建策略(内联依赖),**无需**再额外安装 `@sentry/core`。
@@ -50,6 +50,18 @@ npm install sentry-miniapp --save
50
50
 
51
51
  ---
52
52
 
53
+ ## 🤖 AI 辅助接入
54
+
55
+ 如果你使用 [Claude Code](https://claude.ai/code) 或 [Cursor](https://cursor.com),AI 可以自动引导你完成接入:
56
+
57
+ ```bash
58
+ npx skills add https://github.com/lizhiyao/sentry-miniapp --skill sentry-miniapp-sdk
59
+ ```
60
+
61
+ 安装后,在 AI 编辑器中输入"帮我接入 Sentry 监控"即可触发向导。
62
+
63
+ ---
64
+
53
65
  ## 🚀 快速接入
54
66
 
55
67
  ### 1. 前置准备
@@ -324,18 +336,6 @@ Sentry 官方的 Replay 功能强依赖于浏览器标准 DOM 环境(通过 rr
324
336
 
325
337
  ---
326
338
 
327
- ## 🤝 参与贡献
328
-
329
- 我们非常欢迎开发者提交 `Pull Request` 或通过 `Issues` 提出宝贵意见!
330
-
331
- 要参与本地开发:
332
-
333
- 1. `npm install` 安装依赖
334
- 2. `npm run dev` 启动监听编译
335
- 3. `npm run test:all` 运行完整的单元测试与集成测试套件
336
-
337
- ---
338
-
339
339
  ## 💬 联系与交流
340
340
 
341
341
  遇到问题?想探讨小程序监控方案?欢迎加入我们的交流群。
@@ -4,5 +4,5 @@ ${JSON.stringify(o)}
4
4
  `),typeof a=="string"||a instanceof Uint8Array)s(a);else{let c;try{c=JSON.stringify(a)}catch(u){c=JSON.stringify($(a))}s(c)}}return typeof r=="string"?r:Ei(r)}function Ei(t){const e=t.reduce((s,i)=>s+i.length,0),n=new Uint8Array(e);let r=0;for(const s of t)n.set(s,r),r+=s.length;return n}function Ti(t){return[{type:"span"},t]}function Ii(t){const e=typeof t.data=="string"?$t(t.data):t.data;return[{type:"attachment",length:e.length,filename:t.filename,content_type:t.contentType,attachment_type:t.attachmentType},e]}const Tr={sessions:"session",event:"error",client_report:"internal",user_report:"default",profile_chunk:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",raw_security:"security",log:"log_item",trace_metric:"metric"};function wi(t){return t in Tr}function Nn(t){return wi(t)?Tr[t]:t}function Ir(t){if(!(t!=null&&t.sdk))return;const{name:e,version:n}=t.sdk;return{name:e,version:n}}function vi(t,e,n,r){var i;const s=(i=t.sdkProcessingMetadata)==null?void 0:i.dynamicSamplingContext;return l(l(l({event_id:t.event_id,sent_at:new Date().toISOString()},e&&{sdk:e}),!!n&&r&&{dsn:te(r)}),s&&{trace:s})}function ki(t,e){var r,s,i,o;if(!e)return t;const n=t.sdk||{};return t.sdk=E(l({},n),{name:n.name||e.name,version:n.version||e.version,integrations:[...((r=t.sdk)==null?void 0:r.integrations)||[],...e.integrations||[]],packages:[...((s=t.sdk)==null?void 0:s.packages)||[],...e.packages||[]],settings:(i=t.sdk)!=null&&i.settings||e.settings?l(l({},(o=t.sdk)==null?void 0:o.settings),e.settings):void 0}),t}function Ai(t,e,n,r){const s=Ir(n),i=l(l({sent_at:new Date().toISOString()},s&&{sdk:s}),!!r&&e&&{dsn:te(e)}),o="aggregates"in t?[{type:"sessions"},t]:[{type:"session"},t.toJSON()];return z(i,[o])}function Ri(t,e,n,r){const s=Ir(n),i=t.type&&t.type!=="replay_event"?t.type:"event";ki(t,n==null?void 0:n.sdk);const o=vi(t,s,r,e);return delete t.sdkProcessingMetadata,z(o,[[{type:i},t]])}function Ni(t,e){function n(d){return!!d.trace_id&&!!d.public_key}const r=le(t[0]),s=e==null?void 0:e.getDsn(),i=e==null?void 0:e.getOptions().tunnel,o=l(l({sent_at:new Date().toISOString()},n(r)&&{trace:r}),!!i&&s&&{dsn:te(s)}),{beforeSendSpan:a,ignoreSpans:c}=(e==null?void 0:e.getOptions())||{},u=c!=null&&c.length?t.filter(d=>!Ot(N(d),c)):t,p=t.length-u.length;p&&(e==null||e.recordDroppedEvent("before_send","span",p));const f=a?d=>{const _=N(d),b=a(_);return b||(Dt(),_)}:N,h=[];for(const d of u){const _=f(d);_&&h.push(Ti(_))}return z(o,h)}function Pi(t){if(!m)return;const{description:e="< unknown name >",op:n="< unknown op >",parent_span_id:r}=N(t),{spanId:s}=t.spanContext(),i=Se(t),o=j(t),a=o===t,c=`[Tracing] Starting ${i?"sampled":"unsampled"} ${a?"root ":""}span`,u=[`op: ${n}`,`name: ${e}`,`ID: ${s}`];if(r&&u.push(`parent ID: ${r}`),!a){const{op:p,description:f}=N(o);u.push(`root ID: ${o.spanContext().spanId}`),p&&u.push(`root op: ${p}`),f&&u.push(`root description: ${f}`)}g.log(`${c}
5
5
  ${u.join(`
6
6
  `)}`)}function xi(t){if(!m)return;const{description:e="< unknown name >",op:n="< unknown op >"}=N(t),{spanId:r}=t.spanContext(),i=j(t)===t,o=`[Tracing] Finishing "${n}" ${i?"root ":""}span "${e}" with ID ${r}`;g.log(o)}function Pn(t){if(!t||t.length===0)return;const e={};return t.forEach(n=>{const r=n.attributes||{},s=r[qs],i=r[Ws];typeof s=="string"&&typeof i=="number"&&(e[n.name]={value:i,unit:s})}),e}const xn=1e3;class Qt{constructor(e={}){this._traceId=e.traceId||Ne(),this._spanId=e.spanId||ut(),this._startTime=e.startTimestamp||ue(),this._links=e.links,this._attributes={},this.setAttributes(l({[xt]:"manual",[Pt]:e.op},e.attributes)),this._name=e.name,e.parentSpanId&&(this._parentSpanId=e.parentSpanId),"sampled"in e&&(this._sampled=e.sampled),e.endTimestamp&&(this._endTime=e.endTimestamp),this._events=[],this._isStandaloneSpan=e.isStandalone,this._endTime&&this._onSpanEnded()}addLink(e){return this._links?this._links.push(e):this._links=[e],this}addLinks(e){return this._links?this._links.push(...e):this._links=e,this}recordException(e,n){}spanContext(){const{_spanId:e,_traceId:n,_sampled:r}=this;return{spanId:e,traceId:n,traceFlags:r?Jt:gr}}setAttribute(e,n){return n===void 0?delete this._attributes[e]:this._attributes[e]=n,this}setAttributes(e){return Object.keys(e).forEach(n=>this.setAttribute(n,e[n])),this}updateStartTime(e){this._startTime=Y(e)}setStatus(e){return this._status=e,this}updateName(e){return this._name=e,this.setAttribute(xe,"custom"),this}end(e){this._endTime||(this._endTime=Y(e),xi(this),this._onSpanEnded())}getSpanJSON(){return{data:this._attributes,description:this._name,op:this._attributes[Pt],parent_span_id:this._parentSpanId,span_id:this._spanId,start_timestamp:this._startTime,status:yr(this._status),timestamp:this._endTime,trace_id:this._traceId,origin:this._attributes[xt],profile_id:this._attributes[Kt],exclusive_time:this._attributes[Gt],measurements:Pn(this._events),is_segment:this._isStandaloneSpan&&j(this)===this||void 0,segment_id:this._isStandaloneSpan?j(this).spanContext().spanId:void 0,links:mr(this._links)}}isRecording(){return!this._endTime&&!!this._sampled}addEvent(e,n,r){m&&g.log("[Tracing] Adding an event to span:",e);const s=Cn(n)?n:r||ue(),i=Cn(n)?{}:n||{},o={name:e,time:Y(s),attributes:i};return this._events.push(o),this}isStandaloneSpan(){return!!this._isStandaloneSpan}_onSpanEnded(){const e=R();if(e&&e.emit("spanEnd",this),!(this._isStandaloneSpan||this===j(this)))return;if(this._isStandaloneSpan){this._sampled?Di(Ni([this],e)):(m&&g.log("[Tracing] Discarding standalone span because its trace was not chosen to be sampled."),e&&e.recordDroppedEvent("sample_rate","span"));return}const r=this._convertSpanToTransaction();r&&(Ce(this).scope||y()).captureEvent(r)}_convertSpanToTransaction(){var p;if(!Dn(N(this)))return;this._name||(m&&g.warn("Transaction has no name, falling back to `<unlabeled transaction>`."),this._name="<unlabeled transaction>");const{scope:e,isolationScope:n}=Ce(this),r=(p=e==null?void 0:e.getScopeData().sdkProcessingMetadata)==null?void 0:p.normalizedRequest;if(this._sampled!==!0)return;const i=pi(this).filter(f=>f!==this&&!Ci(f)).map(f=>N(f)).filter(Dn),o=this._attributes[xe];delete this._attributes[In],i.forEach(f=>{delete f.data[In]});const a=l({contexts:{trace:ci(this)},spans:i.length>xn?i.sort((f,h)=>f.start_timestamp-h.start_timestamp).slice(0,xn):i,start_timestamp:this._startTime,timestamp:this._endTime,transaction:this._name,type:"transaction",sdkProcessingMetadata:{capturedSpanScope:e,capturedSpanIsolationScope:n,dynamicSamplingContext:le(this)},request:r},o&&{transaction_info:{source:o}}),c=Pn(this._events);return c&&Object.keys(c).length&&(m&&g.log("[Measurements] Adding measurements to transaction event",JSON.stringify(c,void 0,2)),a.measurements=c),a}}function Cn(t){return t&&typeof t=="number"||t instanceof Date||Array.isArray(t)}function Dn(t){return!!t.start_timestamp&&!!t.timestamp&&!!t.span_id&&!!t.trace_id}function Ci(t){return t instanceof Qt&&t.isStandaloneSpan()}function Di(t){const e=R();if(!e)return;const n=t[1];if(!n||n.length===0){e.recordDroppedEvent("before_send","span");return}e.sendEnvelope(t)}function Oi(t,e,n=()=>{},r=()=>{}){let s;try{s=t()}catch(i){throw e(i),n(),i}return Mi(s,e,n,r)}function Mi(t,e,n,r){return ee(t)?t.then(s=>(n(),r(s),s),s=>{throw e(s),n(),s}):(n(),r(t),t)}function Li(t,e,n){if(!Xt(t))return[!1];let r,s;typeof t.tracesSampler=="function"?(s=t.tracesSampler(E(l({},e),{inheritOrSampleWith:a=>typeof e.parentSampleRate=="number"?e.parentSampleRate:typeof e.parentSampled=="boolean"?Number(e.parentSampled):a})),r=!0):e.parentSampled!==void 0?s=e.parentSampled:typeof t.tracesSampleRate!="undefined"&&(s=t.tracesSampleRate,r=!0);const i=Yt(s);if(i===void 0)return m&&g.warn(`[Tracing] Discarding root span because of invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(s)} of type ${JSON.stringify(typeof s)}.`),[!1];if(!i)return m&&g.log(`[Tracing] Discarding transaction because ${typeof t.tracesSampler=="function"?"tracesSampler returned 0 or false":"a negative sampling decision was inherited or tracesSampleRate is set to 0"}`),[!1,i,r];const o=n<i;return o||m&&g.log(`[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(s)})`),[o,i,r]}const wr="__SENTRY_SUPPRESS_TRACING__";function se(t,e){const n=en();if(n.startSpan)return n.startSpan(t,e);const r=Ar(t),{forceTransaction:s,parentSpan:i,scope:o}=t,a=o==null?void 0:o.clone();return ye(a,()=>ji(i)(()=>{const u=y(),p=Rr(u,i),h=t.onlyIfParent&&!p?new ft:kr({parentSpan:p,spanArguments:r,forceTransaction:s,scope:u});return Pe(u,h),Oi(()=>e(h),()=>{const{status:d}=N(h);h.isRecording()&&(!d||d==="ok")&&h.setStatus({code:Gs,message:"internal_error"})},()=>{h.end()})}))}function Fi(t){const e=en();if(e.startInactiveSpan)return e.startInactiveSpan(t);const n=Ar(t),{forceTransaction:r,parentSpan:s}=t;return(t.scope?o=>ye(t.scope,o):s!==void 0?o=>vr(s,o):o=>o())(()=>{const o=y(),a=Rr(o,s);return t.onlyIfParent&&!a?new ft:kr({parentSpan:a,spanArguments:n,forceTransaction:r,scope:o})})}function vr(t,e){const n=en();return n.withActiveSpan?n.withActiveSpan(t,e):ye(r=>(Pe(r,t||void 0),e(r)))}function kr({parentSpan:t,spanArguments:e,forceTransaction:n,scope:r}){if(!Xt()){const o=new ft;if(n||!t){const a=l({sampled:"false",sample_rate:"0",transaction:e.name},le(o));mt(o,a)}return o}const s=k();let i;if(t&&!n)i=$i(t,r,e),Sr(t,i);else if(t){const o=le(t),{traceId:a,spanId:c}=t.spanContext(),u=Se(t);i=On(l({traceId:a,parentSpanId:c},e),r,u),mt(i,o)}else{const{traceId:o,dsc:a,parentSpanId:c,sampled:u}=l(l({},s.getPropagationContext()),r.getPropagationContext());i=On(l({traceId:o,parentSpanId:c},e),r,u),a&&mt(i,a)}return Pi(i),Xs(i,r,s),i}function Ar(t){const e=t.experimental||{},n=l({isStandalone:e.standalone},t);if(t.startTime){const r=l({},n);return r.startTimestamp=Y(t.startTime),delete r.startTime,r}return n}function en(){const t=he();return lt(t)}function On(t,e,n){var _,b;const r=R(),s=(r==null?void 0:r.getOptions())||{},{name:i=""}=t,o={spanAttributes:l({},t.attributes),spanName:i,parentSampled:n};r==null||r.emit("beforeSampling",o,{decision:!1});const a=(_=o.parentSampled)!=null?_:n,c=o.spanAttributes,u=e.getPropagationContext(),[p,f,h]=e.getScopeData().sdkProcessingMetadata[wr]?[!1]:Li(s,{name:i,parentSampled:a,attributes:c,parentSampleRate:Yt((b=u.dsc)==null?void 0:b.sample_rate)},u.sampleRand),d=new Qt(E(l({},t),{attributes:l({[xe]:"custom",[pr]:f!==void 0&&h?f:void 0},c),sampled:p}));return!p&&r&&(m&&g.log("[Tracing] Discarding root span because its trace was not chosen to be sampled."),r.recordDroppedEvent("sample_rate","transaction")),r&&r.emit("spanStart",d),d}function $i(t,e,n){const{spanId:r,traceId:s}=t.spanContext(),i=e.getScopeData().sdkProcessingMetadata[wr]?!1:Se(t),o=i?new Qt(E(l({},n),{parentSpanId:r,traceId:s,sampled:i})):new ft({traceId:s});Sr(t,o);const a=R();return a&&(a.emit("spanStart",o),n.endTimestamp&&a.emit("spanEnd",o)),o}function Rr(t,e){if(e)return e;if(e===null)return;const n=Nt(t);if(!n)return;const r=R();return(r?r.getOptions():{}).parentSpanIsAlwaysRootSpan?j(n):n}function ji(t){return t!==void 0?e=>vr(t,e):e=>e()}const yt=0,Mn=1,Ln=2;function tn(t){return new fe(e=>{e(t)})}function nn(t){return new fe((e,n)=>{n(t)})}class fe{constructor(e){this._state=yt,this._handlers=[],this._runExecutor(e)}then(e,n){return new fe((r,s)=>{this._handlers.push([!1,i=>{if(!e)r(i);else try{r(e(i))}catch(o){s(o)}},i=>{if(!n)s(i);else try{r(n(i))}catch(o){s(o)}}]),this._executeHandlers()})}catch(e){return this.then(n=>n,e)}finally(e){return new fe((n,r)=>{let s,i;return this.then(o=>{i=!1,s=o,e&&e()},o=>{i=!0,s=o,e&&e()}).then(()=>{if(i){r(s);return}n(s)})})}_executeHandlers(){if(this._state===yt)return;const e=this._handlers.slice();this._handlers=[],e.forEach(n=>{n[0]||(this._state===Mn&&n[1](this._value),this._state===Ln&&n[2](this._value),n[0]=!0)})}_runExecutor(e){const n=(i,o)=>{if(this._state===yt){if(ee(o)){o.then(r,s);return}this._state=i,this._value=o,this._executeHandlers()}},r=i=>{n(Mn,i)},s=i=>{n(Ln,i)};try{e(r,s)}catch(i){s(i)}}}function Ui(t,e,n,r=0){try{const s=jt(e,n,t,r);return ee(s)?s:tn(s)}catch(s){return nn(s)}}function jt(t,e,n,r){const s=n[r];if(!t||!s)return t;const i=s(l({},t),e);return m&&i===null&&g.log(`Event processor "${s.id||"?"}" dropped event`),ee(i)?i.then(o=>jt(o,e,n,r+1)):jt(i,e,n,r+1)}let L,Fn,$n,F;function Bi(t){const e=A._sentryDebugIds,n=A._debugIds;if(!e&&!n)return{};const r=e?Object.keys(e):[],s=n?Object.keys(n):[];if(F&&r.length===Fn&&s.length===$n)return F;Fn=r.length,$n=s.length,F={},L||(L={});const i=(o,a)=>{for(const c of o){const u=a[c],p=L==null?void 0:L[c];if(p&&F&&u)F[p[0]]=u,L&&(L[c]=[p[0],u]);else if(u){const f=t(c);for(let h=f.length-1;h>=0;h--){const d=f[h],_=d==null?void 0:d.filename;if(_&&F&&L){F[_]=u,L[c]=[_,u];break}}}}};return e&&i(r,e),n&&i(s,n),F}function Hi(t,e){const{fingerprint:n,span:r,breadcrumbs:s,sdkProcessingMetadata:i}=e;zi(t,e),r&&Vi(t,r),Ki(t,n),qi(t,s),Wi(t,i)}function jn(t,e){const{extra:n,tags:r,attributes:s,user:i,contexts:o,level:a,sdkProcessingMetadata:c,breadcrumbs:u,fingerprint:p,eventProcessors:f,attachments:h,propagationContext:d,transactionName:_,span:b}=e;re(t,"extra",n),re(t,"tags",r),re(t,"attributes",s),re(t,"user",i),re(t,"contexts",o),t.sdkProcessingMetadata=me(t.sdkProcessingMetadata,c,2),a&&(t.level=a),_&&(t.transactionName=_),b&&(t.span=b),u.length&&(t.breadcrumbs=[...t.breadcrumbs,...u]),p.length&&(t.fingerprint=[...t.fingerprint,...p]),f.length&&(t.eventProcessors=[...t.eventProcessors,...f]),h.length&&(t.attachments=[...t.attachments,...h]),t.propagationContext=l(l({},t.propagationContext),d)}function re(t,e,n){t[e]=me(t[e],n,1)}function Nr(t,e){const n=Bs().getScopeData();return t&&jn(n,t.getScopeData()),e&&jn(n,e.getScopeData()),n}function zi(t,e){const{extra:n,tags:r,user:s,contexts:i,level:o,transactionName:a}=e;Object.keys(n).length&&(t.extra=l(l({},n),t.extra)),Object.keys(r).length&&(t.tags=l(l({},r),t.tags)),Object.keys(s).length&&(t.user=l(l({},s),t.user)),Object.keys(i).length&&(t.contexts=l(l({},i),t.contexts)),o&&(t.level=o),a&&t.type!=="transaction"&&(t.transaction=a)}function qi(t,e){const n=[...t.breadcrumbs||[],...e];t.breadcrumbs=n.length?n:void 0}function Wi(t,e){t.sdkProcessingMetadata=l(l({},t.sdkProcessingMetadata),e)}function Vi(t,e){t.contexts=l({trace:ui(e)},t.contexts),t.sdkProcessingMetadata=l({dynamicSamplingContext:le(e)},t.sdkProcessingMetadata);const n=j(e),r=N(n).description;r&&!t.transaction&&t.type==="transaction"&&(t.transaction=r)}function Ki(t,e){t.fingerprint=t.fingerprint?Array.isArray(t.fingerprint)?t.fingerprint:[t.fingerprint]:[],e&&(t.fingerprint=t.fingerprint.concat(e)),t.fingerprint.length||delete t.fingerprint}function Gi(t,e,n,r,s,i){const{normalizeDepth:o=3,normalizeMaxBreadth:a=1e3}=t,c=E(l({},e),{event_id:e.event_id||n.event_id||C(),timestamp:e.timestamp||ge()}),u=n.integrations||t.integrations.map(w=>w.name);Yi(c,t),Zi(c,u),s&&s.emit("applyFrameMetadata",e),e.type===void 0&&Ji(c,t.stackParser);const p=eo(r,n.captureContext);n.mechanism&&Ps(c,n.mechanism);const f=s?s.getEventProcessors():[],h=Nr(i,p),d=[...n.attachments||[],...h.attachments];d.length&&(n.attachments=d),Hi(c,h);const _=[...f,...h.eventProcessors];return(n.data&&n.data.__sentry__===!0?tn(c):Ui(_,c,n)).then(w=>(w&&Xi(w),typeof o=="number"&&o>0?Qi(w,o,a):w))}function Yi(t,e){var a,c;const{environment:n,release:r,dist:s,maxValueLength:i}=e;t.environment=t.environment||n||Zt,!t.release&&r&&(t.release=r),!t.dist&&s&&(t.dist=s);const o=t.request;o!=null&&o.url&&i&&(o.url=At(o.url,i)),i&&((c=(a=t.exception)==null?void 0:a.values)==null||c.forEach(u=>{u.value&&(u.value=At(u.value,i))}))}function Ji(t,e){var r,s;const n=Bi(e);(s=(r=t.exception)==null?void 0:r.values)==null||s.forEach(i=>{var o,a;(a=(o=i.stacktrace)==null?void 0:o.frames)==null||a.forEach(c=>{c.filename&&(c.debug_id=n[c.filename])})})}function Xi(t){var r,s;const e={};if((s=(r=t.exception)==null?void 0:r.values)==null||s.forEach(i=>{var o,a;(a=(o=i.stacktrace)==null?void 0:o.frames)==null||a.forEach(c=>{c.debug_id&&(c.abs_path?e[c.abs_path]=c.debug_id:c.filename&&(e[c.filename]=c.debug_id),delete c.debug_id)})}),Object.keys(e).length===0)return;t.debug_meta=t.debug_meta||{},t.debug_meta.images=t.debug_meta.images||[];const n=t.debug_meta.images;Object.entries(e).forEach(([i,o])=>{n.push({type:"sourcemap",code_file:i,debug_id:o})})}function Zi(t,e){e.length>0&&(t.sdk=t.sdk||{},t.sdk.integrations=[...t.sdk.integrations||[],...e])}function Qi(t,e,n){var s,i;if(!t)return null;const r=l(l(l(l(l({},t),t.breadcrumbs&&{breadcrumbs:t.breadcrumbs.map(o=>l(l({},o),o.data&&{data:$(o.data,e,n)}))}),t.user&&{user:$(t.user,e,n)}),t.contexts&&{contexts:$(t.contexts,e,n)}),t.extra&&{extra:$(t.extra,e,n)});return(s=t.contexts)!=null&&s.trace&&r.contexts&&(r.contexts.trace=t.contexts.trace,t.contexts.trace.data&&(r.contexts.trace.data=$(t.contexts.trace.data,e,n))),t.spans&&(r.spans=t.spans.map(o=>l(l({},o),o.data&&{data:$(o.data,e,n)}))),(i=t.contexts)!=null&&i.flags&&r.contexts&&(r.contexts.flags=$(t.contexts.flags,3,n)),r}function eo(t,e){if(!e)return t;const n=t?t.clone():new O;return n.update(e),n}function to(t){if(t)return no(t)?{captureContext:t}:so(t)?{captureContext:t}:t}function no(t){return t instanceof O||typeof t=="function"}const ro=["user","level","extra","contexts","tags","fingerprint","propagationContext"];function so(t){return Object.keys(t).some(e=>ro.includes(e))}function G(t,e){return y().captureException(t,to(e))}function io(t,e){const n=typeof e=="string"?e:void 0,r=typeof e!="string"?{captureContext:e}:void 0;return y().captureMessage(t,n,r)}function oo(t,e){return y().captureEvent(t,e)}function U(t,e){k().setContext(t,e)}function ao(t){k().setExtras(t)}function co(t,e){k().setExtra(t,e)}function uo(t){k().setTags(t)}function lo(t,e){k().setTag(t,e)}function fo(t){k().setUser(t)}function po(){return k().lastEventId()}function ho(t){return x(this,null,function*(){const e=R();return e?e.flush(t):(m&&g.warn("Cannot flush events. No client defined."),Promise.resolve(!1))})}function _o(t){return x(this,null,function*(){const e=R();return e?e.close(t):(m&&g.warn("Cannot flush events and disable SDK. No client defined."),Promise.resolve(!1))})}function go(){const t=R();return(t==null?void 0:t.getOptions().enabled)!==!1&&!!(t!=null&&t.getTransport())}function mo(t){k().addEventProcessor(t)}function Pr(t){const e=k(),{user:n}=Nr(e,y()),{userAgent:r}=A.navigator||{},s=lr(l(l({user:n},r&&{userAgent:r}),t)),i=e.getSession();return(i==null?void 0:i.status)==="ok"&&H(i,{status:"exited"}),pt(),e.setSession(s),s}function pt(){const t=k(),n=y().getSession()||t.getSession();n&&fr(n),xr(),t.setSession()}function xr(){const t=k(),e=R(),n=t.getSession();n&&e&&e.captureSession(n)}function Ut(t=!1){if(t){pt();return}xr()}const yo="7";function So(t){const e=t.protocol?`${t.protocol}:`:"",n=t.port?`:${t.port}`:"";return`${e}//${t.host}${n}${t.path?`/${t.path}`:""}/api/`}function bo(t){return`${So(t)}${t.projectId}/envelope/`}function Eo(t,e){const n={sentry_version:yo};return t.publicKey&&(n.sentry_key=t.publicKey),e&&(n.sentry_client=`${e.name}/${e.version}`),new URLSearchParams(n).toString()}function To(t,e,n){return e||`${bo(t)}?${Eo(t,n)}`}const Un=[];function Io(t,e){const n={};return e.forEach(r=>{r&&Cr(t,r,n)}),n}function Bn(t,e){for(const n of e)n!=null&&n.afterAllSetup&&n.afterAllSetup(t)}function Cr(t,e,n){if(n[e.name]){m&&g.log(`Integration skipped because it was already installed: ${e.name}`);return}if(n[e.name]=e,!Un.includes(e.name)&&typeof e.setupOnce=="function"&&(e.setupOnce(),Un.push(e.name)),e.setup&&typeof e.setup=="function"&&e.setup(t),typeof e.preprocessEvent=="function"){const r=e.preprocessEvent.bind(e);t.on("preprocessEvent",(s,i)=>r(s,i,t))}if(typeof e.processEvent=="function"){const r=e.processEvent.bind(e),s=Object.assign((i,o)=>r(i,o,t),{id:e.name});t.addEventProcessor(s)}m&&g.log(`Integration installed: ${e.name}`)}function wo(t){const e=R();if(!e){m&&g.warn(`Cannot add integration "${t.name}" because no SDK Client is available.`);return}e.addIntegration(t)}function vo(t){return[{type:"log",item_count:t.length,content_type:"application/vnd.sentry.items.log+json"},{items:t}]}function ko(t,e,n,r){const s={};return e!=null&&e.sdk&&(s.sdk={name:e.sdk.name,version:e.sdk.version}),n&&r&&(s.dsn=te(r)),z(s,[vo(t)])}function Hn(t,e){var i;const n=(i=e!=null?e:Ao(t))!=null?i:[];if(n.length===0)return;const r=t.getOptions(),s=ko(n,r._metadata,r.tunnel,t.getDsn());Dr().set(t,[]),t.emit("flushLogs"),t.sendEnvelope(s)}function Ao(t){return Dr().get(t)}function Dr(){return Q("clientToLogBufferMap",()=>new WeakMap)}function Ro(t){return[{type:"trace_metric",item_count:t.length,content_type:"application/vnd.sentry.items.trace-metric+json"},{items:t}]}function No(t,e,n,r){const s={};return e!=null&&e.sdk&&(s.sdk={name:e.sdk.name,version:e.sdk.version}),n&&r&&(s.dsn=te(r)),z(s,[Ro(t)])}function Po(t,e){var i;const n=(i=e!=null?e:xo(t))!=null?i:[];if(n.length===0)return;const r=t.getOptions(),s=No(n,r._metadata,r.tunnel,t.getDsn());Or().set(t,[]),t.emit("flushMetrics"),t.sendEnvelope(s)}function xo(t){return Or().get(t)}function Or(){return Q("clientToMetricBufferMap",()=>new WeakMap)}function rn(t){return typeof t=="object"&&typeof t.unref=="function"&&t.unref(),t}const sn=Symbol.for("SentryBufferFullError");function Mr(t=100){const e=new Set;function n(){return e.size<t}function r(o){e.delete(o)}function s(o){if(!n())return nn(sn);const a=o();return e.add(a),a.then(()=>r(a),()=>r(a)),a}function i(o){if(!e.size)return tn(!0);const a=Promise.allSettled(Array.from(e)).then(()=>!0);if(!o)return a;const c=[a,new Promise(u=>rn(setTimeout(()=>u(!1),o)))];return Promise.race(c)}return{get $(){return Array.from(e)},add:s,drain:i}}const Co=60*1e3;function Lr(t,e=ct()){const n=parseInt(`${t}`,10);if(!isNaN(n))return n*1e3;const r=Date.parse(`${t}`);return isNaN(r)?Co:r-e}function Do(t,e){return t[e]||t.all||0}function Oo(t,e,n=ct()){return Do(t,e)>n}function Mo(t,{statusCode:e,headers:n},r=ct()){const s=l({},t),i=n==null?void 0:n["x-sentry-rate-limits"],o=n==null?void 0:n["retry-after"];if(i)for(const a of i.trim().split(",")){const[c,u,,,p]=a.split(":",5),f=parseInt(c,10),h=(isNaN(f)?60:f)*1e3;if(!u)s.all=r+h;else for(const d of u.split(";"))d==="metric_bucket"?(!p||p.split(";").includes("custom"))&&(s[d]=r+h):s[d]=r+h}else o?s.all=r+Lr(o,r):e===429&&(s.all=r+60*1e3);return s}const Fr=64;function Lo(t,e,n=Mr(t.bufferSize||Fr)){let r={};const s=o=>n.drain(o);function i(o){const a=[];if(Lt(o,(f,h)=>{const d=Nn(h);Oo(r,d)?t.recordDroppedEvent("ratelimit_backoff",d):a.push(f)}),a.length===0)return Promise.resolve({});const c=z(o[0],a),u=f=>{if(Ft(c,["client_report"])){m&&g.warn(`Dropping client report. Will not send outcomes (reason: ${f}).`);return}Lt(c,(h,d)=>{t.recordDroppedEvent(f,Nn(d))})},p=()=>e({body:bi(c)}).then(f=>f.statusCode===413?(m&&g.error("Sentry responded with status code 413. Envelope was discarded due to exceeding size limits."),u("send_error"),f):(m&&f.statusCode!==void 0&&(f.statusCode<200||f.statusCode>=300)&&g.warn(`Sentry responded with status code ${f.statusCode} to sent event.`),r=Mo(r,f),f),f=>{throw u("network_error"),m&&g.error("Encountered error running transport request:",f),f});return n.add(p).then(f=>f,f=>{if(f===sn)return m&&g.error("Skipped sending event because buffer is full."),u("queue_overflow"),Promise.resolve({});throw f})}return{send:i,flush:s}}function Fo(t,e,n){const r=[{type:"client_report"},{timestamp:ge(),discarded_events:t}];return z(e?{dsn:e}:{},[r])}function $o(t){const e=[];t.message&&e.push(t.message);try{const n=t.exception.values[t.exception.values.length-1];n!=null&&n.value&&(e.push(n.value),n.type&&e.push(`${n.type}: ${n.value}`))}catch(n){}return e}function jo(t){var c,u,p;const{trace_id:e,parent_span_id:n,span_id:r,status:s,origin:i,data:o,op:a}=(u=(c=t.contexts)==null?void 0:c.trace)!=null?u:{};return{data:o!=null?o:{},description:t.transaction,op:a,parent_span_id:n,span_id:r!=null?r:"",start_timestamp:(p=t.start_timestamp)!=null?p:0,status:s,timestamp:t.timestamp,trace_id:e!=null?e:"",origin:i,profile_id:o==null?void 0:o[Kt],exclusive_time:o==null?void 0:o[Gt],measurements:t.measurements,is_segment:!0}}function Uo(t){return{type:"transaction",timestamp:t.timestamp,start_timestamp:t.start_timestamp,transaction:t.description,contexts:{trace:{trace_id:t.trace_id,span_id:t.span_id,parent_span_id:t.parent_span_id,op:t.op,status:t.status,origin:t.origin,data:l(l(l({},t.data),t.profile_id&&{[Kt]:t.profile_id}),t.exclusive_time&&{[Gt]:t.exclusive_time})}},measurements:t.measurements}}const zn="Not capturing exception because it's already been captured.",qn="Discarded session because of missing or non-string release",$r=Symbol.for("SentryInternalError"),jr=Symbol.for("SentryDoNotSendEventError"),Bo=5e3;function we(t){return{message:t,[$r]:!0}}function St(t){return{message:t,[jr]:!0}}function Wn(t){return!!t&&typeof t=="object"&&$r in t}function Vn(t){return!!t&&typeof t=="object"&&jr in t}function Kn(t,e,n,r,s){let i=0,o,a=!1;t.on(n,()=>{i=0,clearTimeout(o),a=!1}),t.on(e,c=>{i+=r(c),i>=8e5?s(t):a||(a=!0,o=rn(setTimeout(()=>{s(t)},Bo)))}),t.on("flush",()=>{s(t)})}class Ho{constructor(e){var r,s,i,o,a,c,u;if(this._options=e,this._integrations={},this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],this._promiseBuffer=Mr((s=(r=e.transportOptions)==null?void 0:r.bufferSize)!=null?s:Fr),e.dsn?this._dsn=ai(e.dsn):m&&g.warn("No DSN provided, client will not send events."),this._dsn){const p=To(this._dsn,e.tunnel,e._metadata?e._metadata.sdk:void 0);this._transport=e.transport(E(l({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this)},e.transportOptions),{url:p}))}this._options.enableLogs=(o=this._options.enableLogs)!=null?o:(i=this._options._experiments)==null?void 0:i.enableLogs,this._options.enableLogs&&Kn(this,"afterCaptureLog","flushLogs",Vo,Hn),((u=(c=this._options.enableMetrics)!=null?c:(a=this._options._experiments)==null?void 0:a.enableMetrics)!=null?u:!0)&&Kn(this,"afterCaptureMetric","flushMetrics",Wo,Po)}captureException(e,n,r){const s=C();if(En(e))return m&&g.log(zn),s;const i=l({event_id:s},n);return this._process(()=>this.eventFromException(e,i).then(o=>this._captureEvent(o,i,r)).then(o=>o),"error"),i.event_id}captureMessage(e,n,r,s){const i=l({event_id:C()},r),o=ar(e)?e:String(e),a=cr(e),c=a?this.eventFromMessage(o,n,i):this.eventFromException(e,i);return this._process(()=>c.then(u=>this._captureEvent(u,i,s)),a?"unknown":"error"),i.event_id}captureEvent(e,n,r){const s=C();if(n!=null&&n.originalException&&En(n.originalException))return m&&g.log(zn),s;const i=l({event_id:s},n),o=e.sdkProcessingMetadata||{},a=o.capturedSpanScope,c=o.capturedSpanIsolationScope,u=Gn(e.type);return this._process(()=>this._captureEvent(e,i,a||r,c),u),i.event_id}captureSession(e){this.sendSession(e),H(e,{init:!1})}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}flush(e){return x(this,null,function*(){const n=this._transport;if(!n)return!0;this.emit("flush");const r=yield this._isClientDoneProcessing(e),s=yield n.flush(e);return r&&s})}close(e){return x(this,null,function*(){Hn(this);const n=yield this.flush(e);return this.getOptions().enabled=!1,this.emit("close"),n})}getEventProcessors(){return this._eventProcessors}addEventProcessor(e){this._eventProcessors.push(e)}init(){(this._isEnabled()||this._options.integrations.some(({name:e})=>e.startsWith("Spotlight")))&&this._setupIntegrations()}getIntegrationByName(e){return this._integrations[e]}addIntegration(e){const n=this._integrations[e.name];Cr(this,e,this._integrations),n||Bn(this,[e])}sendEvent(e,n={}){this.emit("beforeSendEvent",e,n);let r=Ri(e,this._dsn,this._options._metadata,this._options.tunnel);for(const s of n.attachments||[])r=Si(r,Ii(s));this.sendEnvelope(r).then(s=>this.emit("afterSendEvent",e,s))}sendSession(e){const{release:n,environment:r=Zt}=this._options;if("aggregates"in e){const i=e.attrs||{};if(!i.release&&!n){m&&g.warn(qn);return}i.release=i.release||n,i.environment=i.environment||r,e.attrs=i}else{if(!e.release&&!n){m&&g.warn(qn);return}e.release=e.release||n,e.environment=e.environment||r}this.emit("beforeSendSession",e);const s=Ai(e,this._dsn,this._options._metadata,this._options.tunnel);this.sendEnvelope(s)}recordDroppedEvent(e,n,r=1){if(this._options.sendClientReports){const s=`${e}:${n}`;m&&g.log(`Recording outcome: "${s}"${r>1?` (${r} times)`:""}`),this._outcomes[s]=(this._outcomes[s]||0)+r}}on(e,n){const r=this._hooks[e]=this._hooks[e]||new Set,s=(...i)=>n(...i);return r.add(s),()=>{r.delete(s)}}emit(e,...n){const r=this._hooks[e];r&&r.forEach(s=>s(...n))}sendEnvelope(e){return x(this,null,function*(){if(this.emit("beforeEnvelope",e),this._isEnabled()&&this._transport)try{return yield this._transport.send(e)}catch(n){return m&&g.error("Error while sending envelope:",n),{}}return m&&g.error("Transport disabled"),{}})}dispose(){}_setupIntegrations(){const{integrations:e}=this._options;this._integrations=Io(this,e),Bn(this,e)}_updateSessionFromEvent(e,n){var c,u;let r=n.level==="fatal",s=!1;const i=(c=n.exception)==null?void 0:c.values;if(i){s=!0,r=!1;for(const p of i)if(((u=p.mechanism)==null?void 0:u.handled)===!1){r=!0;break}}const o=e.status==="ok";(o&&e.errors===0||o&&r)&&(H(e,E(l({},r&&{status:"crashed"}),{errors:e.errors||Number(s||r)})),this.captureSession(e))}_isClientDoneProcessing(e){return x(this,null,function*(){let n=0;for(;!e||n<e;){if(yield new Promise(r=>setTimeout(r,1)),!this._numProcessing)return!0;n++}return!1})}_isEnabled(){return this.getOptions().enabled!==!1&&this._transport!==void 0}_prepareEvent(e,n,r,s){const i=this.getOptions(),o=Object.keys(this._integrations);return!n.integrations&&(o!=null&&o.length)&&(n.integrations=o),this.emit("preprocessEvent",e,n),e.type||s.setLastEventId(e.event_id||n.event_id),Gi(i,e,n,r,this,s).then(a=>{var u;if(a===null)return a;this.emit("postprocessEvent",a,n),a.contexts=l({trace:l(l({},(u=a.contexts)==null?void 0:u.trace),Hs(r))},a.contexts);const c=_i(this,r);return a.sdkProcessingMetadata=l({dynamicSamplingContext:c},a.sdkProcessingMetadata),a})}_captureEvent(e,n={},r=y(),s=k()){return m&&Bt(e)&&g.log(`Captured error event \`${$o(e)[0]||"<unknown>"}\``),this._processEvent(e,n,r,s).then(i=>i.event_id,i=>{m&&(Vn(i)?g.log(i.message):Wn(i)?g.warn(i.message):g.warn(i))})}_processEvent(e,n,r,s){const i=this.getOptions(),{sampleRate:o}=i,a=Ur(e),c=Bt(e),p=`before send for type \`${e.type||"error"}\``,f=typeof o=="undefined"?void 0:Yt(o);if(c&&typeof f=="number"&&Re()>f)return this.recordDroppedEvent("sample_rate","error"),nn(St(`Discarding event because it's not included in the random sample (sampling rate = ${o})`));const h=Gn(e.type);return this._prepareEvent(e,n,r,s).then(d=>{var v;if(d===null)throw this.recordDroppedEvent("event_processor",h),St("An event processor returned `null`, will not send event.");if(((v=n.data)==null?void 0:v.__sentry__)===!0)return d;const b=qo(this,i,d,n);return zo(b,p)}).then(d=>{var v;if(d===null){if(this.recordDroppedEvent("before_send",h),a){const M=1+(e.spans||[]).length;this.recordDroppedEvent("before_send","span",M)}throw St(`${p} returned \`null\`, will not send event.`)}const _=r.getSession()||s.getSession();if(c&&_&&this._updateSessionFromEvent(_,d),a){const w=((v=d.sdkProcessingMetadata)==null?void 0:v.spanCountBeforeProcessing)||0,M=d.spans?d.spans.length:0,ne=w-M;ne>0&&this.recordDroppedEvent("before_send","span",ne)}const b=d.transaction_info;if(a&&b&&d.transaction!==e.transaction){const w="custom";d.transaction_info=E(l({},b),{source:w})}return this.sendEvent(d,n),d}).then(null,d=>{throw Vn(d)||Wn(d)?d:(this.captureException(d,{mechanism:{handled:!1,type:"internal"},data:{__sentry__:!0},originalException:d}),we(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.
7
- Reason: ${d}`))})}_process(e,n){this._numProcessing++,this._promiseBuffer.add(e).then(r=>(this._numProcessing--,r),r=>(this._numProcessing--,r===sn&&this.recordDroppedEvent("queue_overflow",n),r))}_clearOutcomes(){const e=this._outcomes;return this._outcomes={},Object.entries(e).map(([n,r])=>{const[s,i]=n.split(":");return{reason:s,category:i,quantity:r}})}_flushOutcomes(){m&&g.log("Flushing outcomes...");const e=this._clearOutcomes();if(e.length===0){m&&g.log("No outcomes to send");return}if(!this._dsn){m&&g.log("No dsn provided, will not send outcomes");return}m&&g.log("Sending outcomes:",e);const n=Fo(e,this._options.tunnel&&te(this._dsn));this.sendEnvelope(n)}}function Gn(t){return t==="replay_event"?"replay":t||"error"}function zo(t,e){const n=`${e} must return \`null\` or a valid event.`;if(ee(t))return t.then(r=>{if(!Ae(r)&&r!==null)throw we(n);return r},r=>{throw we(`${e} rejected with ${r}`)});if(!Ae(t)&&t!==null)throw we(n);return t}function qo(t,e,n,r){const{beforeSend:s,beforeSendTransaction:i,beforeSendSpan:o,ignoreSpans:a}=e;let c=n;if(Bt(c)&&s)return s(c,r);if(Ur(c)){if(o||a){const u=jo(c);if(a!=null&&a.length&&Ot(u,a))return null;if(o){const p=o(u);p?c=me(n,Uo(p)):Dt()}if(c.spans){const p=[],f=c.spans;for(const d of f){if(a!=null&&a.length&&Ot(d,a)){di(f,d);continue}if(o){const _=o(d);_?p.push(_):(Dt(),p.push(d))}else p.push(d)}const h=c.spans.length-p.length;h&&t.recordDroppedEvent("before_send","span",h),c.spans=p}}if(i){if(c.spans){const u=c.spans.length;c.sdkProcessingMetadata=E(l({},n.sdkProcessingMetadata),{spanCountBeforeProcessing:u})}return i(c,r)}}return c}function Bt(t){return t.type===void 0}function Ur(t){return t.type==="transaction"}function Wo(t){let e=0;return t.name&&(e+=t.name.length*2),e+=8,e+Br(t.attributes)}function Vo(t){let e=0;return t.message&&(e+=t.message.length*2),e+Br(t.attributes)}function Br(t){if(!t)return 0;let e=0;return Object.values(t).forEach(n=>{Array.isArray(n)?e+=n.length*Yn(n[0]):cr(n)?e+=Yn(n):e+=100}),e}function Yn(t){return typeof t=="string"?t.length*2:typeof t=="number"?8:typeof t=="boolean"?4:0}function Ko(t,e){return t(e.stack||"",1)}function Go(t){return or(t)&&"__sentry_fetch_url_host__"in t&&typeof t.__sentry_fetch_url_host__=="string"}function Yo(t){return Go(t)?`${t.message} (${t.__sentry_fetch_url_host__})`:t.message}function Jo(t,e){const n={type:e.name||e.constructor.name,value:Yo(e)},r=Ko(t,e);return r.length&&(n.stacktrace={frames:r}),n}function Xo(t,e){e.debug===!0&&(m?g.enable():_e(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),y().update(e.initialScope);const r=new t(e);return Zo(r),r.init(),r}function Zo(t){y().setClient(t)}const bt=100,Et=5e3,Qo=36e5;function ea(t){function e(...n){m&&g.log("[Offline]:",...n)}return n=>{const r=t(n);if(!n.createStore)throw new Error("No `createStore` function was provided");const s=n.createStore(n);let i=Et,o;function a(f,h,d){return Ft(f,["client_report"])?!1:n.shouldStore?n.shouldStore(f,h,d):!0}function c(f){o&&clearTimeout(o),o=rn(setTimeout(()=>x(null,null,function*(){o=void 0;const h=yield s.shift();h&&(e("Attempting to send previously queued event"),h[0].sent_at=new Date().toISOString(),p(h,!0).catch(d=>{e("Failed to retry sending",d)}))}),f))}function u(){o||(c(i),i=Math.min(i*2,Qo))}function p(f,h=!1){return x(this,null,function*(){var d,_;if(!h&&Ft(f,["replay_event","replay_recording"]))return yield s.push(f),c(bt),{};try{if(n.shouldSend&&(yield n.shouldSend(f))===!1)throw new Error("Envelope not sent because `shouldSend` callback returned false");const b=yield r.send(f);let v=bt;if(b){if((d=b.headers)!=null&&d["retry-after"])v=Lr(b.headers["retry-after"]);else if((_=b.headers)!=null&&_["x-sentry-rate-limits"])v=6e4;else if((b.statusCode||0)>=400)return b}return c(v),i=Et,b}catch(b){if(yield a(f,b,i))return h?yield s.unshift(f):yield s.push(f),u(),e("Error sending. Event queued.",b),{};throw b}})}return n.flushAtStartup&&u(),{send:p,flush:f=>(f===void 0&&(i=Et,c(bt)),r.flush(f))}}}const ta=100;function P(t,e){const n=R(),r=k();if(!n)return;const{beforeBreadcrumb:s=null,maxBreadcrumbs:i=ta}=n.getOptions();if(i<=0)return;const o=ge(),a=l({timestamp:o},t),c=s?_e(()=>s(a,e)):a;c!==null&&(n.emit&&n.emit("beforeAddBreadcrumb",c,e),r.addBreadcrumb(c,i))}const ve="1.7.0",Hr="sentry.javascript.miniapp",na=/^\s*at\s+(?:(.+?)\s+\()?([^\s():]+):(\d+):(\d+)\)?$/,ra=/^\s*(?:([^@]*)@)?([^\s@:]+(?:\.[a-z]+)+):(\d+)(?::(\d+))?\s*$/,sa=/^\s*((?:pages|utils|components|subpackages|app-service|appservice)\/[^\s:]+):(\d+):(\d+)\s*$/;function X(t){if(!t)return 0;const e=parseInt(t,10);return isNaN(e)?0:e}function ia(t){const e=na.exec(t);if(!e)return;const[,n,r,s,i]=e,o={filename:r||"<anonymous>",function:n||it,in_app:on(r)},a=X(s),c=X(i);return a&&(o.lineno=a),c&&(o.colno=c),o}function oa(t){const e=ra.exec(t);if(!e)return;const[,n,r,s,i]=e,o={filename:r||"<anonymous>",function:n||it,in_app:on(r)},a=X(s),c=X(i);return a&&(o.lineno=a),c&&(o.colno=c),o}function aa(t){const e=sa.exec(t);if(!e)return;const[,n,r,s]=e,i={filename:n||"<anonymous>",function:it,in_app:on(n)},o=X(r),a=X(s);return o&&(i.lineno=o),a&&(i.colno=a),i}function on(t){return t?!(t.includes("sentry-miniapp")||t.includes("@sentry")||t.includes("WAService")||t.includes("WASubContext")||t.includes("aframeworkx")||t.includes("__dev__")):!0}const zr=ps([90,ia],[80,oa],[70,aa]),qr=()=>{let t={request:()=>{},httpRequest:()=>{},getSystemInfoSync:()=>({}),URLSearchParams:()=>{}};if(typeof wx=="object"&&wx!==null)t=wx;else if(typeof my=="object"&&my!==null)t=my;else if(typeof tt=="object"&&tt!==null)t=tt;else if(typeof dd=="object"&&dd!==null)t=dd;else if(typeof qq=="object"&&qq!==null)t=qq;else if(typeof swan=="object"&&swan!==null)t=swan;else if(typeof ks=="object"&&ks!==null)t=ks;else return console.warn("[sentry-miniapp] 未检测到已支持的小程序平台,SDK 将以降级模式运行"),t;if(typeof my=="object"&&my!==null&&t===my&&!t.request&&t.httpRequest&&(t.request=t.httpRequest),typeof my=="object"&&my!==null&&t===my||typeof dd=="object"&&dd!==null&&t===dd){if(t.getStorageSync){const e=t.getStorageSync;t.getStorageSync=n=>{const r=e.call(t,{key:n});return r?r.data:null}}if(t.setStorageSync){const e=t.setStorageSync;t.setStorageSync=(n,r)=>{e.call(t,{key:n,data:r})}}if(t.removeStorageSync){const e=t.removeStorageSync;t.removeStorageSync=n=>{e.call(t,{key:n})}}}return t},Wr=()=>{let t="unknown";return typeof wx=="object"&&wx!==null?t="wechat":typeof my=="object"&&my!==null?t="alipay":typeof tt=="object"&&tt!==null?t="bytedance":typeof dd=="object"&&dd!==null?t="dingtalk":typeof qq=="object"&&qq!==null?t="qq":typeof swan=="object"&&swan!==null?t="swan":typeof ks=="object"&&ks!==null&&(t="kuaishou"),t},Z=()=>{try{const t=qr(),e={};let n=!1;if(t.getAppBaseInfo){const r=t.getAppBaseInfo();Object.assign(e,r),n=!0}if(t.getWindowInfo){const r=t.getWindowInfo();Object.assign(e,r),n=!0}if(t.getDeviceInfo){const r=t.getDeviceInfo();Object.assign(e,r),n=!0}if(t.getAppAuthorizeSetting){const r=t.getAppAuthorizeSetting();e.albumAuthorized=r.albumAuthorized==="authorized",e.cameraAuthorized=r.cameraAuthorized==="authorized",e.locationAuthorized=r.locationAuthorized==="authorized",e.microphoneAuthorized=r.microphoneAuthorized==="authorized",e.notificationAuthorized=r.notificationAuthorized==="authorized"}if(t.getSystemSetting){const r=t.getSystemSetting();Object.assign(e,r)}if(n)return e;if(t.getSystemInfoSync){const r=t.getSystemInfoSync();return!r.SDKVersion&&r.version&&(r.SDKVersion=r.version),r}return null}catch(t){return console.warn("[sentry-miniapp] Failed to get system info:",t),null}},ca=()=>Wr()!=="unknown";let Tt=null,It=null;const S=()=>(Tt===null&&(Tt=qr()),Tt),Vr=()=>(It===null&&(It=Wr()),It),Kr=()=>{try{const t=S();if(t.getPerformance&&typeof t.getPerformance=="function")return t.getPerformance()}catch(t){console.warn("Failed to get performance manager:",t)}return null};function Gr(t){const e=t.url;function n(r){return new Promise((s,i)=>{var a,c,u,p;const o={url:e,method:"POST",data:r.body,header:l({"Content-Type":"application/json"},r.headers),headers:l({"Content-Type":"application/json"},r.headers),timeout:1e4,success:f=>{const h=f.statusCode||f.status,d=f.header||f.headers||{};s({statusCode:h,headers:{"x-sentry-rate-limits":d["x-sentry-rate-limits"],"retry-after":d["retry-after"]}})},fail:f=>{i(new Error(`Network request failed: ${f.errMsg||f.errorMessage||f.message||"Unknown error"}`))}};S().request?(c=(a=S()).request)==null||c.call(a,o):S().httpRequest?(p=(u=S()).httpRequest)==null||p.call(u,o):i(new Error("No request method available in current miniapp environment"))})}return Lo(t,n)}const ua=30,la=864e5,Yr="sentry_offline_store";function Jr(t){const e=t.offlineCacheLimit||ua,n=t.offlineCacheMaxAge||la;return{push:r=>x(null,null,function*(){try{let s=vt();for(s=wt(s,n),s.push({envelope:r,timestamp:Date.now()});s.length>e;){const i=s.findIndex(o=>!Jn(o.envelope));i>=0?s.splice(i,1):s.shift()}kt(s)}catch(s){console.warn("[sentry-miniapp] Failed to push to offline store",s)}}),unshift:r=>x(null,null,function*(){try{let s=vt();for(s=wt(s,n),s.unshift({envelope:r,timestamp:Date.now()});s.length>e;){const i=fa(s,o=>!Jn(o.envelope));i>=0?s.splice(i,1):s.pop()}kt(s)}catch(s){console.warn("[sentry-miniapp] Failed to unshift to offline store",s)}}),shift:()=>x(null,null,function*(){try{let r=vt();if(r=wt(r,n),r.length===0)return;const s=r.shift();return kt(r),s==null?void 0:s.envelope}catch(r){console.warn("[sentry-miniapp] Failed to shift from offline store",r);return}})}}function Jn(t){try{return(t[1]||[]).some(n=>{var s;const r=(s=n[0])==null?void 0:s.type;return r==="event"||r==="error"})}catch(e){return!0}}function wt(t,e){const n=Date.now();return t.filter(r=>n-r.timestamp<e)}function fa(t,e){for(let n=t.length-1;n>=0;n--)if(e(t[n]))return n;return-1}function vt(){try{const t=S().getStorageSync;if(t){const e=t(Yr);if(e){const n=typeof e=="string"?JSON.parse(e):e;if(Array.isArray(n)&&n.length>0)return n[0]&&"envelope"in n[0]&&"timestamp"in n[0]?n:n.map(r=>({envelope:r,timestamp:Date.now()}))}}}catch(t){}return[]}function kt(t){try{const e=S().setStorageSync;e&&e(Yr,JSON.stringify(t))}catch(e){}}const pa=Object.freeze(Object.defineProperty({__proto__:null,createMiniappOfflineStore:Jr,createMiniappTransport:Gr},Symbol.toStringTag,{value:"Module"}));class Xr extends Ho{constructor(e={}){super(E(l({},e),{transport:e.transport||(n=>{const r=Gr(E(l({},n),{headers:{}}));return e.enableOfflineCache!==!1?ea(()=>r)(E(l({},n),{createStore:s=>Jr(E(l({},s),{offlineCacheLimit:e.offlineCacheLimit})),flushAtStartup:!0})):r})}))}eventFromException(e){const n={type:e.name||"Error",value:e.message||String(e)};if(e.stack){const r=this.getOptions().stackParser;if(r&&typeof r=="function"){const s=r(e.stack,1);s.length&&(n.stacktrace={frames:s})}}return Promise.resolve({exception:{values:[n]},level:"error"})}eventFromMessage(e,n="info"){return Promise.resolve({message:e,level:n})}_prepareEvent(e,n,r){e.platform=e.platform||this.getOptions().platform||"javascript",e.sdk=E(l({},e.sdk),{name:Hr,packages:[...e.sdk&&e.sdk.packages||[],{name:"npm:@sentry/miniapp",version:ve}],version:ve}),e.contexts||(e.contexts={}),e.contexts.miniapp={platform:Vr(),sdk_version:ve};const s=Z();s?(e.contexts.device={brand:s.brand||"unknown",model:s.model||"unknown",screen_resolution:`${s.screenWidth||0}x${s.screenHeight||0}`,language:s.language||"unknown",version:s.version||"unknown",system:s.system||"unknown",platform:s.platform||"unknown"},e.contexts.os={name:s.system||"unknown",version:s.version||"unknown"},e.contexts.app={app_version:s.SDKVersion||"unknown"}):(e.contexts.device={brand:"unknown",model:"unknown",screen_resolution:"0x0",language:"unknown",version:"unknown",system:"unknown",platform:"unknown"},e.contexts.os={name:"unknown",version:"unknown"},e.contexts.app={app_version:"unknown"});try{const i=r||y(),o=k();return super._prepareEvent(e,n||{},i,o)}catch(i){return Promise.resolve(e)}}close(e){const n=this._integrations;if(n&&typeof n=="object")for(const r of Object.keys(n)){const s=n[r];if(s&&typeof s.cleanup=="function")try{s.cleanup()}catch(i){}}return super.close(e)}showReportDialog(e={}){console.warn("[sentry-miniapp] showReportDialog is deprecated and does nothing. Please build your own UI and use `Sentry.captureFeedback()` instead.")}captureFeedback(e){const n={contexts:{feedback:{contact_email:e.email,name:e.name,message:e.message,url:e.url,source:e.source,associated_event_id:e.associatedEventId}},type:"feedback",level:"info",tags:e.tags||{}};return y().captureEvent(n)}}const ze=class ze{constructor(e){this.name=ze.id,this._onErrorHandlerInstalled=!1,this._onUnhandledRejectionHandlerInstalled=!1,this._onPageNotFoundHandlerInstalled=!1,this._onMemoryWarningHandlerInstalled=!1,this._errorHandler=null,this._rejectionHandler=null,this._pageNotFoundHandler=null,this._memoryWarningHandler=null,this._options=l({onerror:!0,onunhandledrejection:!0,onpagenotfound:!0,onmemorywarning:!0},e)}setupOnce(){Error.stackTraceLimit=50,this._options.onerror&&this._installGlobalOnErrorHandler(),this._options.onunhandledrejection&&this._installGlobalOnUnhandledRejectionHandler(),this._options.onpagenotfound&&this._installGlobalOnPageNotFoundHandler(),this._options.onmemorywarning&&this._installGlobalOnMemoryWarningHandler()}_installGlobalOnErrorHandler(){var e,n;this._onErrorHandlerInstalled||(S().onError&&(this._errorHandler=r=>{const s=typeof r=="string"?new Error(r):r;G(s,{mechanism:{type:"onerror",handled:!1}})},(n=(e=S()).onError)==null||n.call(e,this._errorHandler)),this._onErrorHandlerInstalled=!0)}_installGlobalOnUnhandledRejectionHandler(){var e,n;this._onUnhandledRejectionHandlerInstalled||(S().onUnhandledRejection&&(this._rejectionHandler=({reason:r,promise:s})=>{const i=typeof r=="string"?new Error(r):r;G(i,{mechanism:{type:"onunhandledrejection",handled:!1},data:{promise:s}})},(n=(e=S()).onUnhandledRejection)==null||n.call(e,this._rejectionHandler)),this._onUnhandledRejectionHandlerInstalled=!0)}_installGlobalOnPageNotFoundHandler(){var e,n;this._onPageNotFoundHandlerInstalled||(S().onPageNotFound&&(this._pageNotFoundHandler=r=>{const s=y(),i=r.path.split("?")[0];s.setTag("pagenotfound",i),s.setContext("page_not_found",{path:r.path,query:r.query,isEntryPage:r.isEntryPage}),G(new Error(`页面无法找到: ${i}`),{mechanism:{type:"onpagenotfound",handled:!0}})},(n=(e=S()).onPageNotFound)==null||n.call(e,this._pageNotFoundHandler)),this._onPageNotFoundHandlerInstalled=!0)}_installGlobalOnMemoryWarningHandler(){var e,n;this._onMemoryWarningHandlerInstalled||(S().onMemoryWarning&&(this._memoryWarningHandler=({level:r=-1})=>{let s="没有获取到告警级别信息";switch(r){case 5:s="TRIM_MEMORY_RUNNING_MODERATE";break;case 10:s="TRIM_MEMORY_RUNNING_LOW";break;case 15:s="TRIM_MEMORY_RUNNING_CRITICAL";break;default:return}const i=y();i.setTag("memory-warning",String(r)),i.setContext("memory_warning",{level:r,message:s}),G(new Error("内存不足告警"),{mechanism:{type:"onmemorywarning",handled:!0}})},(n=(e=S()).onMemoryWarning)==null||n.call(e,this._memoryWarningHandler)),this._onMemoryWarningHandlerInstalled=!0)}cleanup(){try{const e=S();this._errorHandler&&e.offError&&e.offError(this._errorHandler),this._rejectionHandler&&e.offUnhandledRejection&&e.offUnhandledRejection(this._rejectionHandler),this._pageNotFoundHandler&&e.offPageNotFound&&e.offPageNotFound(this._pageNotFoundHandler),this._memoryWarningHandler&&e.offMemoryWarning&&e.offMemoryWarning(this._memoryWarningHandler)}catch(e){}this._errorHandler=null,this._rejectionHandler=null,this._pageNotFoundHandler=null,this._memoryWarningHandler=null,this._onErrorHandlerInstalled=!1,this._onUnhandledRejectionHandlerInstalled=!1,this._onPageNotFoundHandlerInstalled=!1,this._onMemoryWarningHandlerInstalled=!1}};ze.id="GlobalHandlers";let De=ze;function Xn(t,e={},n){if(typeof t!="function")return t;try{if(t.__sentry__)return t;if(t.__sentry_wrapped__)return t.__sentry_wrapped__}catch(s){return t}const r=function(...s){try{return t.apply(this,s)}catch(i){throw y().addEventProcessor(a=>{const c=l({},a);return e.mechanism&&(c.exception=c.exception||{},c.exception.mechanism=e.mechanism),c.extra=E(l({},c.extra),{arguments:s}),c}),G(i),i}};try{for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&(r[s]=t[s])}catch(s){}t.prototype=t.prototype||{},r.prototype=t.prototype,Object.defineProperty(t,"__sentry_wrapped__",{enumerable:!1,value:r}),Object.defineProperties(r,{__sentry__:{enumerable:!1,value:!0},__sentry_original__:{enumerable:!1,value:t}});try{Object.getOwnPropertyDescriptor(r,"name").configurable&&Object.defineProperty(r,"name",{get(){return t.name}})}catch(s){}return r}function Zn(t){try{return t&&t.name||"<anonymous>"}catch(e){return"<anonymous>"}}function ce(t,e,n){if(!(e in t))return;const r=t[e],s=n(r);if(typeof s=="function")try{s.prototype=s.prototype||{},s.prototype.constructor=s}catch(i){}t[e]=s}const qe=class qe{constructor(){this.name=qe.id}_wrapTimeFunction(e){return function(...n){const r=n[0];return n[0]=Xn(r,{mechanism:{data:{function:Zn(e)},handled:!0,type:"instrument"}}),e.apply(this,n)}}_wrapRAF(e){return function(n){return e(Xn(n,{mechanism:{data:{function:"requestAnimationFrame",handler:Zn(e)},handled:!0,type:"instrument"}}))}}setupOnce(){const e=globalThis;e.setTimeout&&ce(e,"setTimeout",this._wrapTimeFunction.bind(this)),e.setInterval&&ce(e,"setInterval",this._wrapTimeFunction.bind(this)),e.requestAnimationFrame&&ce(e,"requestAnimationFrame",this._wrapRAF.bind(this))}};qe.id="TryCatch";let Oe=qe;const da="cause",ha=5,We=class We{constructor(e={}){this.name=We.id,this._key=e.key||da,this._limit=e.limit||ha}setupOnce(){}processEvent(e,n){return y().getClient()?this._handler(e,n):e}_handler(e,n){if(!e.exception||!e.exception.values||!n||!Qn(n.originalException,Error))return e;const r=this._walkErrorTree(n.originalException,this._key);return e.exception.values=[...r,...e.exception.values],e}_walkErrorTree(e,n,r=[]){if(!Qn(e[n],Error)||r.length+1>=this._limit)return r;const s=Jo(()=>[],e[n]);return this._walkErrorTree(e[n],n,[s,...r])}};We.id="LinkedErrors";let Me=We;function Qn(t,e){try{return t instanceof e}catch(n){return!1}}const Ve=class Ve{constructor(){this.name=Ve.id}setupOnce(){}processEvent(e){const n=y(),r={runtime:{name:"miniapp",version:this._getMiniappVersion()},app:{name:this._getAppName(),version:this._getAppVersion()},device:this._getDeviceInfo(),network:this._getNetworkInfo()};return n.setContext("runtime",r.runtime),n.setContext("app",r.app),n.setContext("device",r.device),n.setContext("network",r.network),e}_getMiniappVersion(){const e=Z();return(e==null?void 0:e.version)||(e==null?void 0:e.SDKVersion)||"unknown"}_getAppName(){var e,n,r;try{if(S().getAccountInfoSync)return((r=((n=(e=S()).getAccountInfoSync)==null?void 0:n.call(e)).miniProgram)==null?void 0:r.appId)||"unknown"}catch(s){}return"unknown"}_getAppVersion(){var e,n,r;try{if(S().getAccountInfoSync){const s=(n=(e=S()).getAccountInfoSync)==null?void 0:n.call(e);return((r=s==null?void 0:s.miniProgram)==null?void 0:r.version)||"unknown"}}catch(s){}return"unknown"}_getDeviceInfo(){const e=Z();return e?{brand:e.brand,model:e.model,system:e.system,platform:e.platform,screenWidth:e.screenWidth,screenHeight:e.screenHeight,windowWidth:e.windowWidth,windowHeight:e.windowHeight,pixelRatio:e.pixelRatio,language:e.language}:{}}_getNetworkInfo(){try{S().getNetworkType&&S().getNetworkType({success:e=>{const n=y();n.setTag("network.type",e.networkType),n.setContext("network",{type:e.networkType})}})}catch(e){}return{}}};Ve.id="HttpContext";let Le=Ve;const Ke=class Ke{constructor(e={}){this.name=Ke.id,this._fuzzyMatch=!!e.fuzzyMatch}setupOnce(){}processEvent(e,n){if(e.type)return e;try{if(this._shouldDropEvent(e,this._previousEvent))return null}catch(r){return this._previousEvent=this._cloneEventForComparison(e),e}return this._previousEvent=this._cloneEventForComparison(e),e}_shouldDropEvent(e,n){return n?!!(this._isSameMessageEvent(e,n)||this._isSameExceptionEvent(e,n)):!1}_isSameMessageEvent(e,n){const r=e.message,s=n.message;return!(!r&&!s||r&&!s||!r&&s||r!==s||!this._isSameFingerprint(e,n)||!this._isSameStacktrace(e,n))}_isSameExceptionEvent(e,n){const r=this._getExceptionFromEvent(e),s=this._getExceptionFromEvent(n);if(!r||!s||r.type!==s.type)return!1;if(this._fuzzyMatch){if(!_a(r.value,s.value))return!1}else if(r.value!==s.value)return!1;return!(!this._isSameFingerprint(e,n)||!this._isSameStacktrace(e,n))}_isSameStacktrace(e,n){let r=this._getFramesFromEvent(e),s=this._getFramesFromEvent(n);if(!r&&!s)return!0;if(r&&!s||!r&&s||(r=r,s=s,s.length!==r.length))return!1;for(let i=0;i<s.length;i++){const o=s[i],a=r[i];if(o.filename!==a.filename||o.lineno!==a.lineno||o.colno!==a.colno||o.function!==a.function)return!1}return!0}_isSameFingerprint(e,n){let r=e.fingerprint,s=n.fingerprint;if(!r&&!s)return!0;if(r&&!s||!r&&s)return!1;r=r,s=s;try{return r.join("")===s.join("")}catch(i){return!1}}_getExceptionFromEvent(e){return e.exception&&e.exception.values&&e.exception.values[0]}_cloneEventForComparison(e){var n;return{message:e.message,fingerprint:e.fingerprint?[...e.fingerprint]:void 0,exception:e.exception?{values:(n=e.exception.values)==null?void 0:n.map(r=>{var s;return{type:r.type,value:r.value,stacktrace:r.stacktrace?{frames:(s=r.stacktrace.frames)==null?void 0:s.map(i=>l({},i))}:void 0}})}:void 0}}_getFramesFromEvent(e){const n=e.exception;if(n)try{return n.values[0].stacktrace.frames}catch(r){}}};Ke.id="Dedupe";let Fe=Ke;const er=/\d{10,}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/g;function _a(t,e){if(t===e)return!0;if(!t||!e)return!1;const n=t.replace(er,"<dynamic>"),r=e.replace(er,"<dynamic>");return n===r}const Ge=class Ge{constructor(){this.name=Ge.id}setupOnce(){this._addSystemContext(),this._addNetworkContext(),this._addLocationContext(),this._addStorageContext(),this._checkAppUpdate()}_addSystemContext(){var e,n,r,s;try{const i=Z();if(i){const o=y();o.setContext("device",{name:i.model,model:i.model,brand:i.brand,family:i.platform,arch:i.platform}),o.setContext("os",{name:((e=i.system)==null?void 0:e.split(" ")[0])||"unknown",version:((n=i.system)==null?void 0:n.split(" ")[1])||"unknown",kernel_version:i.version}),o.setContext("app",{app_name:i.appName||"unknown",app_version:i.version}),o.setContext("screen",{screen_width:i.screenWidth,screen_height:i.screenHeight,screen_density:i.pixelRatio}),o.setTag("device.model",i.model),o.setTag("device.brand",i.brand),o.setTag("os.name",((r=i.system)==null?void 0:r.split(" ")[0])||"unknown"),o.setTag("os.version",((s=i.system)==null?void 0:s.split(" ")[1])||"unknown"),o.setTag("app.version",i.version),o.setTag("language",i.language)}}catch(i){}}_addNetworkContext(){try{S().getNetworkType&&S().getNetworkType({success:e=>{const n=y();n.setContext("network",{type:e.networkType,connected:e.isConnected!==!1}),n.setTag("network.type",e.networkType)},fail:()=>{}})}catch(e){}}_addLocationContext(){try{S().getLocation&&S().getLocation({type:"gcj02",success:e=>{y().setContext("location",{latitude:e.latitude,longitude:e.longitude,accuracy:e.accuracy})},fail:()=>{}})}catch(e){}}_addStorageContext(){try{const e=S();if(e&&typeof e.getStorageInfoSync=="function"){const n=e.getStorageInfoSync();if(n){const r=n.currentSize||0,s=n.limitSize||0,i=s>0?Math.round(r/s*100):0;y().setContext("storage",{currentSize:r,limitSize:s,usagePercent:i}),i>=80&&P({category:"storage.warning",message:`存储使用率 ${i}%(${r}KB / ${s}KB)`,level:"warning",data:{currentSize:r,limitSize:s,usagePercent:i}})}}}catch(e){}}_checkAppUpdate(){try{const e=S();if(e&&typeof e.getUpdateManager=="function"){const n=e.getUpdateManager();n&&(typeof n.onCheckForUpdate=="function"&&n.onCheckForUpdate(r=>{r&&r.hasUpdate&&(y().setTag("has_update","true"),P({category:"app.update",message:"检测到新版本可用",level:"info",data:{hasUpdate:!0}}))}),typeof n.onUpdateReady=="function"&&n.onUpdateReady(()=>{P({category:"app.update",message:"新版本已下载完成",level:"info",data:{updateReady:!0}})}))}}catch(e){}}};Ge.id="System";let Ht=Ge;const Ye=class Ye{constructor(){this.name=Ye.id,this._lastRoute="",this._monitorTimer=null}setupOnce(){this._instrumentNavigation(),this._startRouteMonitoring()}_instrumentNavigation(){let e;try{e=S()}catch(r){return}const n=["navigateTo","redirectTo","switchTab","reLaunch"];for(const r of n)if(e[r]){const s=e[r];e[r]=i=>(this._recordNavigation(r,i.url,this._getCurrentRoute()),s.call(e,i))}if(e.navigateBack){const r=e.navigateBack;e.navigateBack=(s={})=>(this._recordNavigation("navigateBack","back",this._getCurrentRoute(),s.delta),r.call(e,s))}}_startRouteMonitoring(){this._monitorTimer=setInterval(()=>{const e=this._getCurrentRoute();e&&e!==this._lastRoute&&(this._recordRouteChange(this._lastRoute,e),this._lastRoute=e)},1e3)}cleanup(){this._monitorTimer&&(clearInterval(this._monitorTimer),this._monitorTimer=null)}_getCurrentRoute(){try{const e=globalThis;if(e.getCurrentPages){const n=e.getCurrentPages();if(n&&n.length>0){const r=n[n.length-1];return r.route||r.__route__||""}}}catch(e){}return""}_recordNavigation(e,n,r,s){const i=y();P({category:"navigation",data:{action:e,from:r,to:n,delta:s},message:`Navigation ${e}: ${r} -> ${n}`,type:"navigation"}),i.setTag("route",n==="back"?r:n),i.setContext("navigation",{action:e,from:r,to:n,delta:s,timestamp:Date.now()})}_recordRouteChange(e,n){const r=y();P({category:"navigation",data:{from:e,to:n},message:`Route changed: ${e} -> ${n}`,type:"navigation"}),r.setTag("route",n),r.setContext("route",{current:n,previous:e,timestamp:Date.now()})}};Ye.id="Router";let zt=Ye;const Je=class Je{constructor(e={}){this.name=Je.id,this._performanceManager=null,this._observers=[],this._entryBuffer=[],this._reportTimer=null,this._options=E(l({enableNavigation:!0,enableRender:!0,enableResource:!0,enableUserTiming:!1,sampleRate:1,bufferSize:100,reportInterval:3e4,enableMemory:!1},e),{thresholds:l({navigation:3e3,render:1e3,resource:2e3,setData:50},e==null?void 0:e.thresholds)})}setupOnce(){this._initializePerformanceManager(),this._setupPerformanceObservers(),this._startAutoReporting(),this._addPerformanceContext()}_initializePerformanceManager(){try{if(this._performanceManager=Kr(),!this._performanceManager){console.warn("[sentry-miniapp] Performance API not available");return}const e=y();e.setTag("performance.api.available",!0),e.setContext("performance",{api_version:"miniapp-1.0",sample_rate:this._options.sampleRate,buffer_size:this._options.bufferSize})}catch(e){console.warn("[sentry-miniapp] Failed to initialize performance manager:",e)}}_setupPerformanceObservers(){if(this._performanceManager)try{const e=[];this._options.enableNavigation&&e.push("navigation"),this._options.enableRender&&e.push("render"),this._options.enableResource&&e.push("resource");let n=this._options.enableUserTiming;if(n)try{const i=Z();if(i&&i.platform==="devtools"&&(n=!1),n){const a=(typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{}).PerformanceObserver,c=a&&Array.isArray(a.supportedEntryTypes)?a.supportedEntryTypes:void 0;(!c||!c.includes("measure")||!c.includes("mark"))&&(n=!1)}}catch(i){n=!1}if(n&&e.push("measure","mark"),e.length===0)return;const r=this._performanceManager.createObserver(i=>{this._handlePerformanceEntries(i)});try{r.observe({entryTypes:e})}catch(i){const o=e.filter(a=>a!=="measure"&&a!=="mark");if(o.length<e.length&&o.length>0)r.observe({entryTypes:o}),console.warn("[sentry-miniapp] Failed to observe all types, falling back to:",o),e.length=0,e.push(...o);else throw i}this._observers.push(r);const s=typeof globalThis!="undefined"?globalThis.process:void 0;s&&s.env&&s.env.NODE_ENV!=="production"&&console.log("[sentry-miniapp] Performance observers setup for:",e)}catch(e){console.warn("[sentry-miniapp] Failed to setup performance observers:",e)}}_handlePerformanceEntries(e){if(!e)return;let n;if(Array.isArray(e))n=e;else if(typeof e=="object"&&e.getEntries)n=e.getEntries();else if(typeof e=="object")n=[e];else{console.warn("[sentry-miniapp] Invalid entries format:",typeof e);return}n.length!==0&&(Math.random()>this._options.sampleRate||n.forEach(r=>{try{this._processPerformanceEntry(r),this._addToBuffer(r)}catch(s){console.warn("[sentry-miniapp] Failed to process performance entry:",s)}}))}_processPerformanceEntry(e){switch(e.entryType){case"navigation":this._processNavigationEntry(e);break;case"render":this._processRenderEntry(e);break;case"resource":this._processResourceEntry(e);break;case"measure":case"mark":this._processUserTimingEntry(e);break;default:console.log("[sentry-miniapp] Unknown entry type:",e.entryType)}}_processNavigationEntry(e){y().addBreadcrumb({message:`页面导航: ${e.name}`,category:"performance.navigation",level:"info",data:{duration:e.duration,appLaunchTime:e.appLaunchTime,pageReadyTime:e.pageReadyTime}}),se({name:`Navigation: ${e.name}`,op:"navigation",startTime:e.startTime/1e3},r=>{r.setAttributes({"navigation.name":e.name,"navigation.duration":e.duration,"navigation.app_launch_time":e.appLaunchTime||0,"navigation.page_ready_time":e.pageReadyTime||0,"navigation.first_render_time":e.firstRenderTime||0}),r.end((e.startTime+e.duration)/1e3)})}_processRenderEntry(e){var r,s;se({name:`Render: ${e.name}`,op:"render",startTime:e.startTime/1e3},i=>{i.setAttributes({"render.name":e.name,"render.duration":e.duration,"render.start":e.renderStart||0,"render.end":e.renderEnd||0,"render.script_start":e.scriptStart||0,"render.script_end":e.scriptEnd||0}),i.end((e.startTime+e.duration)/1e3)});const n=(s=(r=this._options.thresholds)==null?void 0:r.setData)!=null?s:50;e.duration>n&&y().addBreadcrumb({message:`慢渲染检测: ${e.name} (${e.duration.toFixed(1)}ms)`,category:"performance.setData.slow",level:"warning",data:{name:e.name,duration:e.duration,threshold:n,renderStart:e.renderStart,renderEnd:e.renderEnd,scriptStart:e.scriptStart,scriptEnd:e.scriptEnd}})}_processResourceEntry(e){se({name:`Resource: ${e.name}`,op:"resource",startTime:e.startTime/1e3},n=>{n.setAttributes({"resource.name":e.name,"resource.duration":e.duration,"resource.type":e.initiatorType||"unknown","resource.transfer_size":e.transferSize||0,"resource.encoded_size":e.encodedBodySize||0,"resource.decoded_size":e.decodedBodySize||0}),e.fetchStart&&e.responseEnd&&n.setAttributes({"resource.fetch_start":e.fetchStart,"resource.response_end":e.responseEnd,"resource.network_time":e.responseEnd-e.fetchStart}),n.end((e.startTime+e.duration)/1e3)})}_processUserTimingEntry(e){e.entryType==="measure"?se({name:`Measure: ${e.name}`,op:"measure",startTime:e.startTime/1e3},n=>{n.setAttributes({"measure.name":e.name,"measure.duration":e.duration,"measure.detail":e.detail?JSON.stringify(e.detail):void 0}),n.end((e.startTime+e.duration)/1e3)}):e.entryType==="mark"&&y().addBreadcrumb({message:`性能标记: ${e.name}`,category:"performance.mark",level:"info",data:{timestamp:e.startTime,detail:e.detail}})}_addToBuffer(e){for(this._entryBuffer.push(e);this._entryBuffer.length>this._options.bufferSize;)this._entryBuffer.shift()}_startAutoReporting(){this._options.reportInterval<=0||(this._reportTimer=setInterval(()=>{this._reportBufferedEntries()},this._options.reportInterval))}_reportBufferedEntries(){if(this._entryBuffer.length!==0)try{const e=y(),n=this._calculatePerformanceStats(),r=this._collectMemoryInfo();r&&(n.memory=r),e.setContext("performance_summary",l({total_entries:this._entryBuffer.length,navigation_count:this._entryBuffer.filter(s=>s.entryType==="navigation").length,render_count:this._entryBuffer.filter(s=>s.entryType==="render").length,resource_count:this._entryBuffer.filter(s=>s.entryType==="resource").length,measure_count:this._entryBuffer.filter(s=>s.entryType==="measure").length,mark_count:this._entryBuffer.filter(s=>s.entryType==="mark").length,report_time:new Date().toISOString()},n)),this._checkPerformanceThresholds(n),this._reportToNativeAPI(),this._entryBuffer=[]}catch(e){console.warn("[sentry-miniapp] Failed to report buffered entries:",e)}}_calculatePerformanceStats(){const e=this._entryBuffer.filter(i=>i.entryType==="navigation"),n=this._entryBuffer.filter(i=>i.entryType==="render"),r=this._entryBuffer.filter(i=>i.entryType==="resource"),s={};if(e.length>0){const i=e.map(o=>o.duration);s.navigation_stats={avg_duration:i.reduce((o,a)=>o+a,0)/i.length,max_duration:Math.max(...i),min_duration:Math.min(...i)}}if(n.length>0){const i=n.map(a=>a.duration);s.render_stats={avg_duration:i.reduce((a,c)=>a+c,0)/i.length,max_duration:Math.max(...i),min_duration:Math.min(...i)};const o=n.filter(a=>{var c,u;return a.duration>((u=(c=this._options.thresholds)==null?void 0:c.setData)!=null?u:50)});s.render_stats.slow_render_count=o.length,s.render_stats.slow_render_ratio=o.length/n.length}if(r.length>0){const i=r.map(a=>a.duration),o=r.map(a=>a.transferSize||0).filter(a=>a>0);s.resource_stats={avg_load_time:i.reduce((a,c)=>a+c,0)/i.length,max_load_time:Math.max(...i),total_transfer_size:o.reduce((a,c)=>a+c,0),avg_transfer_size:o.length>0?o.reduce((a,c)=>a+c,0)/o.length:0}}return s}_checkPerformanceThresholds(e){var o,a,c,u,p,f,h,d,_;const n=y(),r=(a=(o=this._options.thresholds)==null?void 0:o.navigation)!=null?a:3e3;((c=e.navigation_stats)==null?void 0:c.avg_duration)>r&&n.addBreadcrumb({message:"页面导航性能较慢",category:"performance.warning",level:"warning",data:{avg_duration:e.navigation_stats.avg_duration,threshold:r}});const s=(p=(u=this._options.thresholds)==null?void 0:u.render)!=null?p:1e3;((f=e.render_stats)==null?void 0:f.avg_duration)>s&&n.addBreadcrumb({message:"页面渲染性能较慢",category:"performance.warning",level:"warning",data:{avg_duration:e.render_stats.avg_duration,threshold:s}});const i=(d=(h=this._options.thresholds)==null?void 0:h.resource)!=null?d:2e3;((_=e.resource_stats)==null?void 0:_.avg_load_time)>i&&n.addBreadcrumb({message:"资源加载性能较慢",category:"performance.warning",level:"warning",data:{avg_load_time:e.resource_stats.avg_load_time,threshold:i}})}_reportToNativeAPI(){try{const e=S();if(e.reportPerformance&&this._entryBuffer.length>0){const n={entries:this._entryBuffer.map(r=>({name:r.name,entryType:r.entryType,startTime:r.startTime,duration:r.duration})),timestamp:Date.now(),sampleRate:this._options.sampleRate};e.reportPerformance(n)}}catch(e){console.warn("[sentry-miniapp] Failed to report to native API:",e)}}_collectMemoryInfo(){if(!this._options.enableMemory)return null;try{const e=S();if(e.getPerformance){const n=e.getPerformance();if(n&&n.memory)return{jsHeapSizeUsed:n.memory.jsHeapSizeUsed,jsHeapSizeLimit:n.memory.jsHeapSizeLimit}}}catch(e){}return null}_addPerformanceContext(){try{const e=y(),n=S(),r=!!n.getPerformance,s=!!n.reportPerformance;e.setContext("performance_support",{has_performance_api:r,has_report_api:s,integration_enabled:!0,options:this._options}),e.setTag("performance.integration","enabled")}catch(e){console.warn("[sentry-miniapp] Failed to add performance context:",e)}}cleanup(){this._observers.forEach(e=>{try{e.disconnect()}catch(n){console.warn("[sentry-miniapp] Failed to disconnect observer:",n)}}),this._observers=[],this._reportTimer&&(clearInterval(this._reportTimer),this._reportTimer=null),this._reportBufferedEntries()}};Je.id="PerformanceAPI";let $e=Je;const an=t=>()=>new $e(t),Xe=class Xe{constructor(e={}){this.name=Xe.id,this._prefix=e.prefix||"app:///"}setupOnce(){}processEvent(e){return e.exception&&e.exception.values&&e.exception.values.forEach(n=>{n.stacktrace&&n.stacktrace.frames&&n.stacktrace.frames.forEach(r=>{r.filename&&(r.filename=this._normalizeFilename(r.filename))})}),e}_normalizeFilename(e){let n=e;return n=n.replace(/^(appservice|app-service|WAService)\//i,"").replace(/^https?:\/\/[^/]+\//i,"").replace(/^[a-z]+:\/\//i,"").replace(/^\//,""),n.startsWith(this._prefix)?n:`${this._prefix}${n}`}};Xe.id="RewriteFrames";let je=Xe;const Ze=class Ze{constructor(e={}){this.name=Ze.id,this._originalRequest=null,this._originalHttpRequest=null,this._traceNetworkBody=!!e.traceNetworkBody,this._sensitiveKeys=(e.sensitiveKeys||["password","passwd","secret","token","access_token","refresh_token","authorization","cookie","session","creditcard","credit_card","card_number","cvv","ssn","id_card"]).map(n=>n.toLowerCase()),this._denyUrls=(e.denyBodyUrls||[]).map(n=>typeof n=="string"?new RegExp(n):n),this._enableTracePropagation=e.enableTracePropagation!==!1,this._tracePropagationTargets=e.tracePropagationTargets||[]}setupOnce(){const e=S();e&&typeof e.request=="function"&&(this._originalRequest=e.request,ce(e,"request",this._createRequestWrapper.bind(this))),e&&typeof e.httpRequest=="function"&&(this._originalHttpRequest=e.httpRequest,ce(e,"httpRequest",this._createRequestWrapper.bind(this)))}cleanup(){const e=S();e&&(this._originalRequest&&typeof e.request=="function"&&(e.request=this._originalRequest),this._originalHttpRequest&&typeof e.httpRequest=="function"&&(e.httpRequest=this._originalHttpRequest)),this._originalRequest=null,this._originalHttpRequest=null}_createRequestWrapper(e){const n=this._traceNetworkBody,r=this._sanitizeBody.bind(this),s=this._shouldDenyBodyUrl.bind(this),i=this._enableTracePropagation,o=this._shouldPropagateTrace.bind(this);return function(a){var w,M,ne;if(!a||typeof a!="object")return e.call(this,a);const c=a.url||"",u=R();let p="";if(u){const I=u.getOptions().dsn;if(I)try{const T=I.match(/^(?:https?:\/\/)?(?:[^@\n]+@)?([^:/\n]+)/i);T&&T[1]&&(p=T[1])}catch(T){}}if(typeof c=="string"){const I=c.match(/^https?:\/\/([^:/\n]+)/i),T=I&&I[1]?I[1]:"";if(p&&T===p||T==="sentry.io"||T.endsWith(".sentry.io"))return e.call(this,a)}if(i&&o(c))try{const T=y().getPropagationContext();if(T){const{traceId:D,parentSpanId:be}=T;if(D){const q=a.header||a.headers||{};q["sentry-trace"]=`${D}-${be||"0000000000000000"}-1`;const W=((w=u==null?void 0:u.getOptions())==null?void 0:w.dsn)||"",un=((M=u==null?void 0:u.getOptions())==null?void 0:M.release)||"",ln=((ne=u==null?void 0:u.getOptions())==null?void 0:ne.environment)||"",V=[];D&&V.push(`sentry-trace_id=${D}`),W&&V.push(`sentry-public_key=${ga(W)}`),un&&V.push(`sentry-release=${un}`),ln&&V.push(`sentry-environment=${ln}`),V.length>0&&(q.baggage=V.join(",")),a.header=q,a.headers=q}}}catch(I){}const f=(a.method||"GET").toUpperCase(),h=a.data,d=Date.now(),_={url:c,method:f};if(n&&h&&!s(c))try{const I=typeof h=="string"?h:JSON.stringify(h);_.request_body=r(I),_.request_size=I.length}catch(I){_.request_body="[Cannot serialize request body]"}const b=a.success,v=a.fail;return a.success=function(...I){const T=I[0]||{},D=T.statusCode||T.status,be=Date.now()-d;if(_.status_code=D,_.duration=be,n&&T.data&&!s(c))try{const W=typeof T.data=="string"?T.data:JSON.stringify(T.data);_.response_body=r(W),_.response_size=W.length}catch(W){_.response_body="[Cannot serialize response body]"}const q=D>=400||be>3e3?"warning":"info";if(P({type:"http",category:"xhr",data:_,level:q}),typeof b=="function")return b.apply(this,I)},a.fail=function(...I){const T=I[0]||{},D=Date.now()-d;if(_.error=T.errMsg||T.errorMessage||"Network request failed",_.duration=D,P({type:"http",category:"xhr",data:_,level:"error"}),typeof v=="function")return v.apply(this,I)},e.call(this,a)}}_shouldPropagateTrace(e){return this._tracePropagationTargets.length===0?!0:this._tracePropagationTargets.some(n=>typeof n=="string"?e.includes(n):n.test(e))}_shouldDenyBodyUrl(e){return this._denyUrls.some(n=>n.test(e))}_sanitizeBody(e){if(this._sensitiveKeys.length===0)return e;try{const n=JSON.parse(e);if(typeof n=="object"&&n!==null)return this._sanitizeObject(n),JSON.stringify(n)}catch(n){for(const r of this._sensitiveKeys){const s=new RegExp(`(${r})=[^&]*`,"gi");e=e.replace(s,"$1=[Filtered]")}}return e}_sanitizeObject(e){for(const n of Object.keys(e))this._sensitiveKeys.includes(n.toLowerCase())?e[n]="[Filtered]":typeof e[n]=="object"&&e[n]!==null&&this._sanitizeObject(e[n])}};Ze.id="NetworkBreadcrumbs";let Ue=Ze;function ga(t){try{const e=t.match(/^https?:\/\/([^@]+)@/);return e?e[1]:""}catch(e){return""}}const Zr=["onLoad","onShow","onHide","onUnload","onReady"],ma=["onLaunch","onShow","onHide"];function ya(t){return Zr.includes(t)||t.startsWith("_")?!1:/^(on|handle|bind)[A-Z]/.test(t)||/[Tt]ap$/.test(t)||/[Cc]lick$/.test(t)||/[Cc]hange$/.test(t)||/[Ss]ubmit$/.test(t)||/[Ss]croll$/.test(t)||/[Ii]nput$/.test(t)}const Qe=class Qe{constructor(e={}){this.name=Qe.id,this._originalPage=null,this._originalApp=null,this._launchTime=0,this._firstPageReady=!1,this._options=l({enableLifecycle:!0,enableUserInteraction:!0},e)}setupOnce(){this._wrapPage(),this._wrapApp()}_wrapPage(){const e=globalThis;if(typeof e.Page!="function")return;this._originalPage=e.Page;const n=e.Page,r=this._options,s=()=>this._firstPageReady,i=a=>{this._firstPageReady=a},o=()=>this._launchTime;e.Page=function(a){if(a&&typeof a=="object"){if(r.enableLifecycle){for(const c of Zr)if(typeof a[c]=="function"){const u=a[c];a[c]=function(...p){const f=(this==null?void 0:this.route)||(this==null?void 0:this.__route__)||"unknown",h={action:c,page:f};if(c==="onLoad"&&p[0]&&typeof p[0]=="object"&&(h.query=p[0]),c==="onReady"&&!s()&&o()>0){i(!0);const d=Date.now()-o();h.coldStartDuration=d,U("startup",{coldStartDuration:d,firstPage:f})}return P({category:"page.lifecycle",message:`${c}: ${f}`,level:"info",data:h}),u.apply(this,p)}}}if(r.enableUserInteraction){for(const c of Object.keys(a))if(typeof a[c]=="function"&&ya(c)){const u=a[c];a[c]=function(p,...f){const h=(this==null?void 0:this.route)||(this==null?void 0:this.__route__)||"unknown",d={handler:c,page:h};if(p&&typeof p=="object"&&(p.target&&(p.target.id&&(d.targetId=p.target.id),p.target.dataset&&(d.dataset=p.target.dataset)),p.type&&(d.eventType=p.type),p.detail&&(typeof p.detail.x=="number"&&(d.x=p.detail.x),typeof p.detail.y=="number"&&(d.y=p.detail.y)),p.touches&&p.touches.length>0)){const _=p.touches[0];_&&(d.touchX=_.pageX,d.touchY=_.pageY)}return P({category:"user.interaction",message:`${c} on ${h}`,level:"info",data:d}),u.apply(this,[p,...f])}}}}return n(a)}}_wrapApp(){const e=globalThis;if(typeof e.App!="function")return;this._originalApp=e.App;const n=e.App,r=this._options,s=i=>{this._launchTime=i};e.App=function(i){if(i&&typeof i=="object"&&r.enableLifecycle){for(const o of ma)if(typeof i[o]=="function"){const a=i[o];i[o]=function(...c){return o==="onLaunch"&&s(Date.now()),P({category:"app.lifecycle",message:`App.${o}`,level:"info",data:{action:o}}),a.apply(this,c)}}}return n(i)}}cleanup(){const e=globalThis;this._originalPage&&(e.Page=this._originalPage,this._originalPage=null),this._originalApp&&(e.App=this._originalApp,this._originalApp=null)}};Qe.id="PageBreadcrumbs";let pe=Qe;const Sa=t=>new pe(t),ba=["debug","info","warn","error","log"],Ea={debug:"debug",info:"info",log:"info",warn:"warning",error:"error"},et=class et{constructor(e={}){this.name=et.id,this._originalMethods={},this._levels=e.levels||[...ba]}setupOnce(){for(const e of this._levels){if(typeof console[e]!="function")continue;const n=console[e];this._originalMethods[e]=n,console[e]=function(...r){return P({category:"console",level:Ea[e],message:r.map(s=>{if(typeof s=="string")return s;try{return JSON.stringify(s)}catch(i){return String(s)}}).join(" ")}),n.apply(console,r)}}}cleanup(){for(const e of this._levels){const n=this._originalMethods[e];n&&(console[e]=n)}this._originalMethods={}}};et.id="ConsoleBreadcrumbs";let de=et;const Ta=t=>new de(t),nt=class nt{constructor(){this.name=nt.id,this._originalApp=null,this._isSessionActive=!1}setupOnce(){this._wrapApp()}_wrapApp(){const e=tr();if(!e||typeof e.App!="function")return;this._originalApp=e.App;const n=this._startSession.bind(this),r=this._endSession.bind(this),s=this._markSessionCrashed.bind(this),i=()=>this._isSessionActive,o=this._originalApp;e.App=function(a={}){const c=a.onLaunch,u=a.onShow,p=a.onHide,f=a.onError;return a.onLaunch=function(...h){if(n(),typeof c=="function")return c.apply(this,h)},a.onShow=function(...h){if(i()||n(),typeof u=="function")return u.apply(this,h)},a.onHide=function(...h){if(r(),typeof p=="function")return p.apply(this,h)},a.onError=function(...h){if(s(),typeof f=="function")return f.apply(this,h)},o.call(this,a)}}_startSession(){try{Pr({ignoreDuration:!0}),Ut(),this._isSessionActive=!0}catch(e){}}_endSession(){try{pt(),Ut(),this._isSessionActive=!1}catch(e){}}_markSessionCrashed(){try{const n=y().getSession();n&&(n.status="crashed")}catch(e){}}cleanup(){const e=tr();e&&this._originalApp&&(e.App=this._originalApp),this._originalApp=null,this._isSessionActive=!1}};nt.id="Session";let Be=nt;function tr(){if(typeof wx!="undefined")return wx;if(typeof my!="undefined")return my;if(typeof tt!="undefined")return tt;if(typeof dd!="undefined")return dd;if(typeof qq!="undefined")return qq;if(typeof swan!="undefined")return swan;if(typeof globalThis!="undefined")return globalThis}const rt=class rt{constructor(){this.name=rt.id,this._statusChangeHandler=null}setupOnce(){const e=S();if(e){if(typeof e.getNetworkType=="function")try{e.getNetworkType({success:n=>{const r=n.networkType||"unknown";U("network",{type:r,isConnected:r!=="none"})}})}catch(n){}typeof e.onNetworkStatusChange=="function"&&(this._statusChangeHandler=n=>{const r=n.networkType||"unknown",s=n.isConnected!==void 0?n.isConnected:r!=="none";U("network",{type:r,isConnected:s}),P({category:"network.change",message:`网络状态变化: ${r}`,level:s?"info":"warning",data:{networkType:r,isConnected:s}})},e.onNetworkStatusChange(this._statusChangeHandler))}}cleanup(){if(this._statusChangeHandler){const e=S();if(e&&typeof e.offNetworkStatusChange=="function")try{e.offNetworkStatusChange(this._statusChangeHandler)}catch(n){}this._statusChangeHandler=null}}};rt.id="NetworkStatus";let He=rt;const Ia=Object.freeze(Object.defineProperty({__proto__:null,ConsoleBreadcrumbs:de,Dedupe:Fe,GlobalHandlers:De,HttpContext:Le,LinkedErrors:Me,NetworkBreadcrumbs:Ue,NetworkStatusIntegration:He,PageBreadcrumbs:pe,PerformanceIntegration:$e,RewriteFrames:je,Router:zt,SessionIntegration:Be,System:Ht,TryCatch:Oe,consoleBreadcrumbsIntegration:Ta,pageBreadcrumbsIntegration:Sa,performanceIntegration:an},Symbol.toStringTag,{value:"Module"})),cn=[new Le,new Fe,new De,new Oe,new Me,an({enableNavigation:!0,enableRender:!0,enableResource:!0,enableUserTiming:!0,sampleRate:1,reportInterval:3e4})];function wa(){return[...cn]}function va(t={}){if(!ca()){console.warn("[sentry-miniapp] Not running in a supported miniapp environment");return}const e=E(l({},t),{integrations:t.integrations||cn,stackParser:zr,transport:t.transport});e.enableSourceMap!==!1&&e.integrations.push(new je);const n={traceNetworkBody:e.traceNetworkBody};e.enableTracePropagation!==void 0&&(n.enableTracePropagation=e.enableTracePropagation),e.tracePropagationTargets!==void 0&&(n.tracePropagationTargets=e.tracePropagationTargets),e.integrations.push(new Ue(n)),e.enableAutoSessionTracking!==!1&&e.integrations.push(new Be),e.enableUserInteractionBreadcrumbs!==!1&&e.integrations.push(new pe),e.enableNetworkStatusMonitoring!==!1&&e.integrations.push(new He),e.enableConsoleBreadcrumbs&&e.integrations.push(new de),U("miniapp",{platform:Vr,environment:"miniapp"});const r=Z();return r&&(U("device",{brand:r.brand,model:r.model,language:r.language,system:r.system,platform:r.platform,screen_resolution:`${r.screenWidth}x${r.screenHeight}`}),U("app",{sdk_version:r.SDKVersion,version:r.version})),Xo(Xr,e),y().getClient()}function ka(t={}){console.warn("[sentry-miniapp] showReportDialog is deprecated and does nothing. Please build your own UI and use `Sentry.captureFeedback()` instead.")}function Aa(t){return function(...e){return ye(()=>{try{return t.apply(this,e)}catch(n){throw y().captureException(n),n}})}}function Ra(t){const e=y().getClient();return e?e.captureFeedback(t):(console.warn("[sentry-miniapp] No client available for captureFeedback"),"")}nr();exports.Integrations=Ia;exports.MiniappClient=Xr;exports.SDK_NAME=Hr;exports.SDK_VERSION=ve;exports.Transports=pa;exports.addBreadcrumb=P;exports.addEventProcessor=mo;exports.addIntegration=wo;exports.captureEvent=oo;exports.captureException=G;exports.captureFeedback=Ra;exports.captureMessage=io;exports.captureSession=Ut;exports.close=_o;exports.closeSession=fr;exports.defaultIntegrations=cn;exports.endSession=pt;exports.flush=ho;exports.getClient=R;exports.getCurrentScope=y;exports.getDefaultIntegrations=wa;exports.getIsolationScope=k;exports.getPerformanceManager=Kr;exports.init=va;exports.isEnabled=go;exports.lastEventId=po;exports.makeSession=lr;exports.miniappStackParser=zr;exports.performanceIntegration=an;exports.setContext=U;exports.setExtra=co;exports.setExtras=ao;exports.setTag=lo;exports.setTags=uo;exports.setUser=fo;exports.showReportDialog=ka;exports.startInactiveSpan=Fi;exports.startSession=Pr;exports.startSpan=se;exports.updateSession=H;exports.withScope=ye;exports.wrap=Aa;
7
+ Reason: ${d}`))})}_process(e,n){this._numProcessing++,this._promiseBuffer.add(e).then(r=>(this._numProcessing--,r),r=>(this._numProcessing--,r===sn&&this.recordDroppedEvent("queue_overflow",n),r))}_clearOutcomes(){const e=this._outcomes;return this._outcomes={},Object.entries(e).map(([n,r])=>{const[s,i]=n.split(":");return{reason:s,category:i,quantity:r}})}_flushOutcomes(){m&&g.log("Flushing outcomes...");const e=this._clearOutcomes();if(e.length===0){m&&g.log("No outcomes to send");return}if(!this._dsn){m&&g.log("No dsn provided, will not send outcomes");return}m&&g.log("Sending outcomes:",e);const n=Fo(e,this._options.tunnel&&te(this._dsn));this.sendEnvelope(n)}}function Gn(t){return t==="replay_event"?"replay":t||"error"}function zo(t,e){const n=`${e} must return \`null\` or a valid event.`;if(ee(t))return t.then(r=>{if(!Ae(r)&&r!==null)throw we(n);return r},r=>{throw we(`${e} rejected with ${r}`)});if(!Ae(t)&&t!==null)throw we(n);return t}function qo(t,e,n,r){const{beforeSend:s,beforeSendTransaction:i,beforeSendSpan:o,ignoreSpans:a}=e;let c=n;if(Bt(c)&&s)return s(c,r);if(Ur(c)){if(o||a){const u=jo(c);if(a!=null&&a.length&&Ot(u,a))return null;if(o){const p=o(u);p?c=me(n,Uo(p)):Dt()}if(c.spans){const p=[],f=c.spans;for(const d of f){if(a!=null&&a.length&&Ot(d,a)){di(f,d);continue}if(o){const _=o(d);_?p.push(_):(Dt(),p.push(d))}else p.push(d)}const h=c.spans.length-p.length;h&&t.recordDroppedEvent("before_send","span",h),c.spans=p}}if(i){if(c.spans){const u=c.spans.length;c.sdkProcessingMetadata=E(l({},n.sdkProcessingMetadata),{spanCountBeforeProcessing:u})}return i(c,r)}}return c}function Bt(t){return t.type===void 0}function Ur(t){return t.type==="transaction"}function Wo(t){let e=0;return t.name&&(e+=t.name.length*2),e+=8,e+Br(t.attributes)}function Vo(t){let e=0;return t.message&&(e+=t.message.length*2),e+Br(t.attributes)}function Br(t){if(!t)return 0;let e=0;return Object.values(t).forEach(n=>{Array.isArray(n)?e+=n.length*Yn(n[0]):cr(n)?e+=Yn(n):e+=100}),e}function Yn(t){return typeof t=="string"?t.length*2:typeof t=="number"?8:typeof t=="boolean"?4:0}function Ko(t,e){return t(e.stack||"",1)}function Go(t){return or(t)&&"__sentry_fetch_url_host__"in t&&typeof t.__sentry_fetch_url_host__=="string"}function Yo(t){return Go(t)?`${t.message} (${t.__sentry_fetch_url_host__})`:t.message}function Jo(t,e){const n={type:e.name||e.constructor.name,value:Yo(e)},r=Ko(t,e);return r.length&&(n.stacktrace={frames:r}),n}function Xo(t,e){e.debug===!0&&(m?g.enable():_e(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),y().update(e.initialScope);const r=new t(e);return Zo(r),r.init(),r}function Zo(t){y().setClient(t)}const bt=100,Et=5e3,Qo=36e5;function ea(t){function e(...n){m&&g.log("[Offline]:",...n)}return n=>{const r=t(n);if(!n.createStore)throw new Error("No `createStore` function was provided");const s=n.createStore(n);let i=Et,o;function a(f,h,d){return Ft(f,["client_report"])?!1:n.shouldStore?n.shouldStore(f,h,d):!0}function c(f){o&&clearTimeout(o),o=rn(setTimeout(()=>x(null,null,function*(){o=void 0;const h=yield s.shift();h&&(e("Attempting to send previously queued event"),h[0].sent_at=new Date().toISOString(),p(h,!0).catch(d=>{e("Failed to retry sending",d)}))}),f))}function u(){o||(c(i),i=Math.min(i*2,Qo))}function p(f,h=!1){return x(this,null,function*(){var d,_;if(!h&&Ft(f,["replay_event","replay_recording"]))return yield s.push(f),c(bt),{};try{if(n.shouldSend&&(yield n.shouldSend(f))===!1)throw new Error("Envelope not sent because `shouldSend` callback returned false");const b=yield r.send(f);let v=bt;if(b){if((d=b.headers)!=null&&d["retry-after"])v=Lr(b.headers["retry-after"]);else if((_=b.headers)!=null&&_["x-sentry-rate-limits"])v=6e4;else if((b.statusCode||0)>=400)return b}return c(v),i=Et,b}catch(b){if(yield a(f,b,i))return h?yield s.unshift(f):yield s.push(f),u(),e("Error sending. Event queued.",b),{};throw b}})}return n.flushAtStartup&&u(),{send:p,flush:f=>(f===void 0&&(i=Et,c(bt)),r.flush(f))}}}const ta=100;function P(t,e){const n=R(),r=k();if(!n)return;const{beforeBreadcrumb:s=null,maxBreadcrumbs:i=ta}=n.getOptions();if(i<=0)return;const o=ge(),a=l({timestamp:o},t),c=s?_e(()=>s(a,e)):a;c!==null&&(n.emit&&n.emit("beforeAddBreadcrumb",c,e),r.addBreadcrumb(c,i))}const ve="1.8.0",Hr="sentry.javascript.miniapp",na=/^\s*at\s+(?:(.+?)\s+\()?([^\s():]+):(\d+):(\d+)\)?$/,ra=/^\s*(?:([^@]*)@)?([^\s@:]+(?:\.[a-z]+)+):(\d+)(?::(\d+))?\s*$/,sa=/^\s*((?:pages|utils|components|subpackages|app-service|appservice)\/[^\s:]+):(\d+):(\d+)\s*$/;function X(t){if(!t)return 0;const e=parseInt(t,10);return isNaN(e)?0:e}function ia(t){const e=na.exec(t);if(!e)return;const[,n,r,s,i]=e,o={filename:r||"<anonymous>",function:n||it,in_app:on(r)},a=X(s),c=X(i);return a&&(o.lineno=a),c&&(o.colno=c),o}function oa(t){const e=ra.exec(t);if(!e)return;const[,n,r,s,i]=e,o={filename:r||"<anonymous>",function:n||it,in_app:on(r)},a=X(s),c=X(i);return a&&(o.lineno=a),c&&(o.colno=c),o}function aa(t){const e=sa.exec(t);if(!e)return;const[,n,r,s]=e,i={filename:n||"<anonymous>",function:it,in_app:on(n)},o=X(r),a=X(s);return o&&(i.lineno=o),a&&(i.colno=a),i}function on(t){return t?!(t.includes("sentry-miniapp")||t.includes("@sentry")||t.includes("WAService")||t.includes("WASubContext")||t.includes("aframeworkx")||t.includes("__dev__")):!0}const zr=ps([90,ia],[80,oa],[70,aa]),qr=()=>{let t={request:()=>{},httpRequest:()=>{},getSystemInfoSync:()=>({}),URLSearchParams:()=>{}};if(typeof wx=="object"&&wx!==null)t=wx;else if(typeof my=="object"&&my!==null)t=my;else if(typeof tt=="object"&&tt!==null)t=tt;else if(typeof dd=="object"&&dd!==null)t=dd;else if(typeof qq=="object"&&qq!==null)t=qq;else if(typeof swan=="object"&&swan!==null)t=swan;else if(typeof ks=="object"&&ks!==null)t=ks;else return console.warn("[sentry-miniapp] 未检测到已支持的小程序平台,SDK 将以降级模式运行"),t;if(typeof my=="object"&&my!==null&&t===my&&!t.request&&t.httpRequest&&(t.request=t.httpRequest),typeof my=="object"&&my!==null&&t===my||typeof dd=="object"&&dd!==null&&t===dd){if(t.getStorageSync){const e=t.getStorageSync;t.getStorageSync=n=>{const r=e.call(t,{key:n});return r?r.data:null}}if(t.setStorageSync){const e=t.setStorageSync;t.setStorageSync=(n,r)=>{e.call(t,{key:n,data:r})}}if(t.removeStorageSync){const e=t.removeStorageSync;t.removeStorageSync=n=>{e.call(t,{key:n})}}}return t},Wr=()=>{let t="unknown";return typeof wx=="object"&&wx!==null?t="wechat":typeof my=="object"&&my!==null?t="alipay":typeof tt=="object"&&tt!==null?t="bytedance":typeof dd=="object"&&dd!==null?t="dingtalk":typeof qq=="object"&&qq!==null?t="qq":typeof swan=="object"&&swan!==null?t="swan":typeof ks=="object"&&ks!==null&&(t="kuaishou"),t},Z=()=>{try{const t=qr(),e={};let n=!1;if(t.getAppBaseInfo){const r=t.getAppBaseInfo();Object.assign(e,r),n=!0}if(t.getWindowInfo){const r=t.getWindowInfo();Object.assign(e,r),n=!0}if(t.getDeviceInfo){const r=t.getDeviceInfo();Object.assign(e,r),n=!0}if(t.getAppAuthorizeSetting){const r=t.getAppAuthorizeSetting();e.albumAuthorized=r.albumAuthorized==="authorized",e.cameraAuthorized=r.cameraAuthorized==="authorized",e.locationAuthorized=r.locationAuthorized==="authorized",e.microphoneAuthorized=r.microphoneAuthorized==="authorized",e.notificationAuthorized=r.notificationAuthorized==="authorized"}if(t.getSystemSetting){const r=t.getSystemSetting();Object.assign(e,r)}if(n)return e;if(t.getSystemInfoSync){const r=t.getSystemInfoSync();return!r.SDKVersion&&r.version&&(r.SDKVersion=r.version),r}return null}catch(t){return console.warn("[sentry-miniapp] Failed to get system info:",t),null}},ca=()=>Wr()!=="unknown";let Tt=null,It=null;const S=()=>(Tt===null&&(Tt=qr()),Tt),Vr=()=>(It===null&&(It=Wr()),It),Kr=()=>{try{const t=S();if(t.getPerformance&&typeof t.getPerformance=="function")return t.getPerformance()}catch(t){console.warn("Failed to get performance manager:",t)}return null};function Gr(t){const e=t.url;function n(r){return new Promise((s,i)=>{var a,c,u,p;const o={url:e,method:"POST",data:r.body,header:l({"Content-Type":"application/json"},r.headers),headers:l({"Content-Type":"application/json"},r.headers),timeout:1e4,success:f=>{const h=f.statusCode||f.status,d=f.header||f.headers||{};s({statusCode:h,headers:{"x-sentry-rate-limits":d["x-sentry-rate-limits"],"retry-after":d["retry-after"]}})},fail:f=>{i(new Error(`Network request failed: ${f.errMsg||f.errorMessage||f.message||"Unknown error"}`))}};S().request?(c=(a=S()).request)==null||c.call(a,o):S().httpRequest?(p=(u=S()).httpRequest)==null||p.call(u,o):i(new Error("No request method available in current miniapp environment"))})}return Lo(t,n)}const ua=30,la=864e5,Yr="sentry_offline_store";function Jr(t){const e=t.offlineCacheLimit||ua,n=t.offlineCacheMaxAge||la;return{push:r=>x(null,null,function*(){try{let s=vt();for(s=wt(s,n),s.push({envelope:r,timestamp:Date.now()});s.length>e;){const i=s.findIndex(o=>!Jn(o.envelope));i>=0?s.splice(i,1):s.shift()}kt(s)}catch(s){console.warn("[sentry-miniapp] Failed to push to offline store",s)}}),unshift:r=>x(null,null,function*(){try{let s=vt();for(s=wt(s,n),s.unshift({envelope:r,timestamp:Date.now()});s.length>e;){const i=fa(s,o=>!Jn(o.envelope));i>=0?s.splice(i,1):s.pop()}kt(s)}catch(s){console.warn("[sentry-miniapp] Failed to unshift to offline store",s)}}),shift:()=>x(null,null,function*(){try{let r=vt();if(r=wt(r,n),r.length===0)return;const s=r.shift();return kt(r),s==null?void 0:s.envelope}catch(r){console.warn("[sentry-miniapp] Failed to shift from offline store",r);return}})}}function Jn(t){try{return(t[1]||[]).some(n=>{var s;const r=(s=n[0])==null?void 0:s.type;return r==="event"||r==="error"})}catch(e){return!0}}function wt(t,e){const n=Date.now();return t.filter(r=>n-r.timestamp<e)}function fa(t,e){for(let n=t.length-1;n>=0;n--)if(e(t[n]))return n;return-1}function vt(){try{const t=S().getStorageSync;if(t){const e=t(Yr);if(e){const n=typeof e=="string"?JSON.parse(e):e;if(Array.isArray(n)&&n.length>0)return n[0]&&"envelope"in n[0]&&"timestamp"in n[0]?n:n.map(r=>({envelope:r,timestamp:Date.now()}))}}}catch(t){}return[]}function kt(t){try{const e=S().setStorageSync;e&&e(Yr,JSON.stringify(t))}catch(e){}}const pa=Object.freeze(Object.defineProperty({__proto__:null,createMiniappOfflineStore:Jr,createMiniappTransport:Gr},Symbol.toStringTag,{value:"Module"}));class Xr extends Ho{constructor(e={}){super(E(l({},e),{transport:e.transport||(n=>{const r=Gr(E(l({},n),{headers:{}}));return e.enableOfflineCache!==!1?ea(()=>r)(E(l({},n),{createStore:s=>Jr(E(l({},s),{offlineCacheLimit:e.offlineCacheLimit})),flushAtStartup:!0})):r})}))}eventFromException(e){const n={type:e.name||"Error",value:e.message||String(e)};if(e.stack){const r=this.getOptions().stackParser;if(r&&typeof r=="function"){const s=r(e.stack,1);s.length&&(n.stacktrace={frames:s})}}return Promise.resolve({exception:{values:[n]},level:"error"})}eventFromMessage(e,n="info"){return Promise.resolve({message:e,level:n})}_prepareEvent(e,n,r){e.platform=e.platform||this.getOptions().platform||"javascript",e.sdk=E(l({},e.sdk),{name:Hr,packages:[...e.sdk&&e.sdk.packages||[],{name:"npm:@sentry/miniapp",version:ve}],version:ve}),e.contexts||(e.contexts={}),e.contexts.miniapp={platform:Vr(),sdk_version:ve};const s=Z();s?(e.contexts.device={brand:s.brand||"unknown",model:s.model||"unknown",screen_resolution:`${s.screenWidth||0}x${s.screenHeight||0}`,language:s.language||"unknown",version:s.version||"unknown",system:s.system||"unknown",platform:s.platform||"unknown"},e.contexts.os={name:s.system||"unknown",version:s.version||"unknown"},e.contexts.app={app_version:s.SDKVersion||"unknown"}):(e.contexts.device={brand:"unknown",model:"unknown",screen_resolution:"0x0",language:"unknown",version:"unknown",system:"unknown",platform:"unknown"},e.contexts.os={name:"unknown",version:"unknown"},e.contexts.app={app_version:"unknown"});try{const i=r||y(),o=k();return super._prepareEvent(e,n||{},i,o)}catch(i){return Promise.resolve(e)}}close(e){const n=this._integrations;if(n&&typeof n=="object")for(const r of Object.keys(n)){const s=n[r];if(s&&typeof s.cleanup=="function")try{s.cleanup()}catch(i){}}return super.close(e)}showReportDialog(e={}){console.warn("[sentry-miniapp] showReportDialog is deprecated and does nothing. Please build your own UI and use `Sentry.captureFeedback()` instead.")}captureFeedback(e){const n={contexts:{feedback:{contact_email:e.email,name:e.name,message:e.message,url:e.url,source:e.source,associated_event_id:e.associatedEventId}},type:"feedback",level:"info",tags:e.tags||{}};return y().captureEvent(n)}}const ze=class ze{constructor(e){this.name=ze.id,this._onErrorHandlerInstalled=!1,this._onUnhandledRejectionHandlerInstalled=!1,this._onPageNotFoundHandlerInstalled=!1,this._onMemoryWarningHandlerInstalled=!1,this._errorHandler=null,this._rejectionHandler=null,this._pageNotFoundHandler=null,this._memoryWarningHandler=null,this._options=l({onerror:!0,onunhandledrejection:!0,onpagenotfound:!0,onmemorywarning:!0},e)}setupOnce(){Error.stackTraceLimit=50,this._options.onerror&&this._installGlobalOnErrorHandler(),this._options.onunhandledrejection&&this._installGlobalOnUnhandledRejectionHandler(),this._options.onpagenotfound&&this._installGlobalOnPageNotFoundHandler(),this._options.onmemorywarning&&this._installGlobalOnMemoryWarningHandler()}_installGlobalOnErrorHandler(){var e,n;this._onErrorHandlerInstalled||(S().onError&&(this._errorHandler=r=>{const s=typeof r=="string"?new Error(r):r;G(s,{mechanism:{type:"onerror",handled:!1}})},(n=(e=S()).onError)==null||n.call(e,this._errorHandler)),this._onErrorHandlerInstalled=!0)}_installGlobalOnUnhandledRejectionHandler(){var e,n;this._onUnhandledRejectionHandlerInstalled||(S().onUnhandledRejection&&(this._rejectionHandler=({reason:r,promise:s})=>{const i=typeof r=="string"?new Error(r):r;G(i,{mechanism:{type:"onunhandledrejection",handled:!1},data:{promise:s}})},(n=(e=S()).onUnhandledRejection)==null||n.call(e,this._rejectionHandler)),this._onUnhandledRejectionHandlerInstalled=!0)}_installGlobalOnPageNotFoundHandler(){var e,n;this._onPageNotFoundHandlerInstalled||(S().onPageNotFound&&(this._pageNotFoundHandler=r=>{const s=y(),i=r.path.split("?")[0];s.setTag("pagenotfound",i),s.setContext("page_not_found",{path:r.path,query:r.query,isEntryPage:r.isEntryPage}),G(new Error(`页面无法找到: ${i}`),{mechanism:{type:"onpagenotfound",handled:!0}})},(n=(e=S()).onPageNotFound)==null||n.call(e,this._pageNotFoundHandler)),this._onPageNotFoundHandlerInstalled=!0)}_installGlobalOnMemoryWarningHandler(){var e,n;this._onMemoryWarningHandlerInstalled||(S().onMemoryWarning&&(this._memoryWarningHandler=({level:r=-1})=>{let s="没有获取到告警级别信息";switch(r){case 5:s="TRIM_MEMORY_RUNNING_MODERATE";break;case 10:s="TRIM_MEMORY_RUNNING_LOW";break;case 15:s="TRIM_MEMORY_RUNNING_CRITICAL";break;default:return}const i=y();i.setTag("memory-warning",String(r)),i.setContext("memory_warning",{level:r,message:s}),G(new Error("内存不足告警"),{mechanism:{type:"onmemorywarning",handled:!0}})},(n=(e=S()).onMemoryWarning)==null||n.call(e,this._memoryWarningHandler)),this._onMemoryWarningHandlerInstalled=!0)}cleanup(){try{const e=S();this._errorHandler&&e.offError&&e.offError(this._errorHandler),this._rejectionHandler&&e.offUnhandledRejection&&e.offUnhandledRejection(this._rejectionHandler),this._pageNotFoundHandler&&e.offPageNotFound&&e.offPageNotFound(this._pageNotFoundHandler),this._memoryWarningHandler&&e.offMemoryWarning&&e.offMemoryWarning(this._memoryWarningHandler)}catch(e){}this._errorHandler=null,this._rejectionHandler=null,this._pageNotFoundHandler=null,this._memoryWarningHandler=null,this._onErrorHandlerInstalled=!1,this._onUnhandledRejectionHandlerInstalled=!1,this._onPageNotFoundHandlerInstalled=!1,this._onMemoryWarningHandlerInstalled=!1}};ze.id="GlobalHandlers";let De=ze;function Xn(t,e={},n){if(typeof t!="function")return t;try{if(t.__sentry__)return t;if(t.__sentry_wrapped__)return t.__sentry_wrapped__}catch(s){return t}const r=function(...s){try{return t.apply(this,s)}catch(i){throw y().addEventProcessor(a=>{const c=l({},a);return e.mechanism&&(c.exception=c.exception||{},c.exception.mechanism=e.mechanism),c.extra=E(l({},c.extra),{arguments:s}),c}),G(i),i}};try{for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&(r[s]=t[s])}catch(s){}t.prototype=t.prototype||{},r.prototype=t.prototype,Object.defineProperty(t,"__sentry_wrapped__",{enumerable:!1,value:r}),Object.defineProperties(r,{__sentry__:{enumerable:!1,value:!0},__sentry_original__:{enumerable:!1,value:t}});try{Object.getOwnPropertyDescriptor(r,"name").configurable&&Object.defineProperty(r,"name",{get(){return t.name}})}catch(s){}return r}function Zn(t){try{return t&&t.name||"<anonymous>"}catch(e){return"<anonymous>"}}function ce(t,e,n){if(!(e in t))return;const r=t[e],s=n(r);if(typeof s=="function")try{s.prototype=s.prototype||{},s.prototype.constructor=s}catch(i){}t[e]=s}const qe=class qe{constructor(){this.name=qe.id}_wrapTimeFunction(e){return function(...n){const r=n[0];return n[0]=Xn(r,{mechanism:{data:{function:Zn(e)},handled:!0,type:"instrument"}}),e.apply(this,n)}}_wrapRAF(e){return function(n){return e(Xn(n,{mechanism:{data:{function:"requestAnimationFrame",handler:Zn(e)},handled:!0,type:"instrument"}}))}}setupOnce(){const e=globalThis;e.setTimeout&&ce(e,"setTimeout",this._wrapTimeFunction.bind(this)),e.setInterval&&ce(e,"setInterval",this._wrapTimeFunction.bind(this)),e.requestAnimationFrame&&ce(e,"requestAnimationFrame",this._wrapRAF.bind(this))}};qe.id="TryCatch";let Oe=qe;const da="cause",ha=5,We=class We{constructor(e={}){this.name=We.id,this._key=e.key||da,this._limit=e.limit||ha}setupOnce(){}processEvent(e,n){return y().getClient()?this._handler(e,n):e}_handler(e,n){if(!e.exception||!e.exception.values||!n||!Qn(n.originalException,Error))return e;const r=this._walkErrorTree(n.originalException,this._key);return e.exception.values=[...r,...e.exception.values],e}_walkErrorTree(e,n,r=[]){if(!Qn(e[n],Error)||r.length+1>=this._limit)return r;const s=Jo(()=>[],e[n]);return this._walkErrorTree(e[n],n,[s,...r])}};We.id="LinkedErrors";let Me=We;function Qn(t,e){try{return t instanceof e}catch(n){return!1}}const Ve=class Ve{constructor(){this.name=Ve.id}setupOnce(){}processEvent(e){const n=y(),r={runtime:{name:"miniapp",version:this._getMiniappVersion()},app:{name:this._getAppName(),version:this._getAppVersion()},device:this._getDeviceInfo(),network:this._getNetworkInfo()};return n.setContext("runtime",r.runtime),n.setContext("app",r.app),n.setContext("device",r.device),n.setContext("network",r.network),e}_getMiniappVersion(){const e=Z();return(e==null?void 0:e.version)||(e==null?void 0:e.SDKVersion)||"unknown"}_getAppName(){var e,n,r;try{if(S().getAccountInfoSync)return((r=((n=(e=S()).getAccountInfoSync)==null?void 0:n.call(e)).miniProgram)==null?void 0:r.appId)||"unknown"}catch(s){}return"unknown"}_getAppVersion(){var e,n,r;try{if(S().getAccountInfoSync){const s=(n=(e=S()).getAccountInfoSync)==null?void 0:n.call(e);return((r=s==null?void 0:s.miniProgram)==null?void 0:r.version)||"unknown"}}catch(s){}return"unknown"}_getDeviceInfo(){const e=Z();return e?{brand:e.brand,model:e.model,system:e.system,platform:e.platform,screenWidth:e.screenWidth,screenHeight:e.screenHeight,windowWidth:e.windowWidth,windowHeight:e.windowHeight,pixelRatio:e.pixelRatio,language:e.language}:{}}_getNetworkInfo(){try{S().getNetworkType&&S().getNetworkType({success:e=>{const n=y();n.setTag("network.type",e.networkType),n.setContext("network",{type:e.networkType})}})}catch(e){}return{}}};Ve.id="HttpContext";let Le=Ve;const Ke=class Ke{constructor(e={}){this.name=Ke.id,this._fuzzyMatch=!!e.fuzzyMatch}setupOnce(){}processEvent(e,n){if(e.type)return e;try{if(this._shouldDropEvent(e,this._previousEvent))return null}catch(r){return this._previousEvent=this._cloneEventForComparison(e),e}return this._previousEvent=this._cloneEventForComparison(e),e}_shouldDropEvent(e,n){return n?!!(this._isSameMessageEvent(e,n)||this._isSameExceptionEvent(e,n)):!1}_isSameMessageEvent(e,n){const r=e.message,s=n.message;return!(!r&&!s||r&&!s||!r&&s||r!==s||!this._isSameFingerprint(e,n)||!this._isSameStacktrace(e,n))}_isSameExceptionEvent(e,n){const r=this._getExceptionFromEvent(e),s=this._getExceptionFromEvent(n);if(!r||!s||r.type!==s.type)return!1;if(this._fuzzyMatch){if(!_a(r.value,s.value))return!1}else if(r.value!==s.value)return!1;return!(!this._isSameFingerprint(e,n)||!this._isSameStacktrace(e,n))}_isSameStacktrace(e,n){let r=this._getFramesFromEvent(e),s=this._getFramesFromEvent(n);if(!r&&!s)return!0;if(r&&!s||!r&&s||(r=r,s=s,s.length!==r.length))return!1;for(let i=0;i<s.length;i++){const o=s[i],a=r[i];if(o.filename!==a.filename||o.lineno!==a.lineno||o.colno!==a.colno||o.function!==a.function)return!1}return!0}_isSameFingerprint(e,n){let r=e.fingerprint,s=n.fingerprint;if(!r&&!s)return!0;if(r&&!s||!r&&s)return!1;r=r,s=s;try{return r.join("")===s.join("")}catch(i){return!1}}_getExceptionFromEvent(e){return e.exception&&e.exception.values&&e.exception.values[0]}_cloneEventForComparison(e){var n;return{message:e.message,fingerprint:e.fingerprint?[...e.fingerprint]:void 0,exception:e.exception?{values:(n=e.exception.values)==null?void 0:n.map(r=>{var s;return{type:r.type,value:r.value,stacktrace:r.stacktrace?{frames:(s=r.stacktrace.frames)==null?void 0:s.map(i=>l({},i))}:void 0}})}:void 0}}_getFramesFromEvent(e){const n=e.exception;if(n)try{return n.values[0].stacktrace.frames}catch(r){}}};Ke.id="Dedupe";let Fe=Ke;const er=/\d{10,}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/g;function _a(t,e){if(t===e)return!0;if(!t||!e)return!1;const n=t.replace(er,"<dynamic>"),r=e.replace(er,"<dynamic>");return n===r}const Ge=class Ge{constructor(){this.name=Ge.id}setupOnce(){this._addSystemContext(),this._addNetworkContext(),this._addLocationContext(),this._addStorageContext(),this._checkAppUpdate()}_addSystemContext(){var e,n,r,s;try{const i=Z();if(i){const o=y();o.setContext("device",{name:i.model,model:i.model,brand:i.brand,family:i.platform,arch:i.platform}),o.setContext("os",{name:((e=i.system)==null?void 0:e.split(" ")[0])||"unknown",version:((n=i.system)==null?void 0:n.split(" ")[1])||"unknown",kernel_version:i.version}),o.setContext("app",{app_name:i.appName||"unknown",app_version:i.version}),o.setContext("screen",{screen_width:i.screenWidth,screen_height:i.screenHeight,screen_density:i.pixelRatio}),o.setTag("device.model",i.model),o.setTag("device.brand",i.brand),o.setTag("os.name",((r=i.system)==null?void 0:r.split(" ")[0])||"unknown"),o.setTag("os.version",((s=i.system)==null?void 0:s.split(" ")[1])||"unknown"),o.setTag("app.version",i.version),o.setTag("language",i.language)}}catch(i){}}_addNetworkContext(){try{S().getNetworkType&&S().getNetworkType({success:e=>{const n=y();n.setContext("network",{type:e.networkType,connected:e.isConnected!==!1}),n.setTag("network.type",e.networkType)},fail:()=>{}})}catch(e){}}_addLocationContext(){try{S().getLocation&&S().getLocation({type:"gcj02",success:e=>{y().setContext("location",{latitude:e.latitude,longitude:e.longitude,accuracy:e.accuracy})},fail:()=>{}})}catch(e){}}_addStorageContext(){try{const e=S();if(e&&typeof e.getStorageInfoSync=="function"){const n=e.getStorageInfoSync();if(n){const r=n.currentSize||0,s=n.limitSize||0,i=s>0?Math.round(r/s*100):0;y().setContext("storage",{currentSize:r,limitSize:s,usagePercent:i}),i>=80&&P({category:"storage.warning",message:`存储使用率 ${i}%(${r}KB / ${s}KB)`,level:"warning",data:{currentSize:r,limitSize:s,usagePercent:i}})}}}catch(e){}}_checkAppUpdate(){try{const e=S();if(e&&typeof e.getUpdateManager=="function"){const n=e.getUpdateManager();n&&(typeof n.onCheckForUpdate=="function"&&n.onCheckForUpdate(r=>{r&&r.hasUpdate&&(y().setTag("has_update","true"),P({category:"app.update",message:"检测到新版本可用",level:"info",data:{hasUpdate:!0}}))}),typeof n.onUpdateReady=="function"&&n.onUpdateReady(()=>{P({category:"app.update",message:"新版本已下载完成",level:"info",data:{updateReady:!0}})}))}}catch(e){}}};Ge.id="System";let Ht=Ge;const Ye=class Ye{constructor(){this.name=Ye.id,this._lastRoute="",this._monitorTimer=null}setupOnce(){this._instrumentNavigation(),this._startRouteMonitoring()}_instrumentNavigation(){let e;try{e=S()}catch(r){return}const n=["navigateTo","redirectTo","switchTab","reLaunch"];for(const r of n)if(e[r]){const s=e[r];e[r]=i=>(this._recordNavigation(r,i.url,this._getCurrentRoute()),s.call(e,i))}if(e.navigateBack){const r=e.navigateBack;e.navigateBack=(s={})=>(this._recordNavigation("navigateBack","back",this._getCurrentRoute(),s.delta),r.call(e,s))}}_startRouteMonitoring(){this._monitorTimer=setInterval(()=>{const e=this._getCurrentRoute();e&&e!==this._lastRoute&&(this._recordRouteChange(this._lastRoute,e),this._lastRoute=e)},1e3)}cleanup(){this._monitorTimer&&(clearInterval(this._monitorTimer),this._monitorTimer=null)}_getCurrentRoute(){try{const e=globalThis;if(e.getCurrentPages){const n=e.getCurrentPages();if(n&&n.length>0){const r=n[n.length-1];return r.route||r.__route__||""}}}catch(e){}return""}_recordNavigation(e,n,r,s){const i=y();P({category:"navigation",data:{action:e,from:r,to:n,delta:s},message:`Navigation ${e}: ${r} -> ${n}`,type:"navigation"}),i.setTag("route",n==="back"?r:n),i.setContext("navigation",{action:e,from:r,to:n,delta:s,timestamp:Date.now()})}_recordRouteChange(e,n){const r=y();P({category:"navigation",data:{from:e,to:n},message:`Route changed: ${e} -> ${n}`,type:"navigation"}),r.setTag("route",n),r.setContext("route",{current:n,previous:e,timestamp:Date.now()})}};Ye.id="Router";let zt=Ye;const Je=class Je{constructor(e={}){this.name=Je.id,this._performanceManager=null,this._observers=[],this._entryBuffer=[],this._reportTimer=null,this._options=E(l({enableNavigation:!0,enableRender:!0,enableResource:!0,enableUserTiming:!1,sampleRate:1,bufferSize:100,reportInterval:3e4,enableMemory:!1},e),{thresholds:l({navigation:3e3,render:1e3,resource:2e3,setData:50},e==null?void 0:e.thresholds)})}setupOnce(){this._initializePerformanceManager(),this._setupPerformanceObservers(),this._startAutoReporting(),this._addPerformanceContext()}_initializePerformanceManager(){try{if(this._performanceManager=Kr(),!this._performanceManager){console.warn("[sentry-miniapp] Performance API not available");return}const e=y();e.setTag("performance.api.available",!0),e.setContext("performance",{api_version:"miniapp-1.0",sample_rate:this._options.sampleRate,buffer_size:this._options.bufferSize})}catch(e){console.warn("[sentry-miniapp] Failed to initialize performance manager:",e)}}_setupPerformanceObservers(){if(this._performanceManager)try{const e=[];this._options.enableNavigation&&e.push("navigation"),this._options.enableRender&&e.push("render"),this._options.enableResource&&e.push("resource");let n=this._options.enableUserTiming;if(n)try{const i=Z();if(i&&i.platform==="devtools"&&(n=!1),n){const a=(typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{}).PerformanceObserver,c=a&&Array.isArray(a.supportedEntryTypes)?a.supportedEntryTypes:void 0;(!c||!c.includes("measure")||!c.includes("mark"))&&(n=!1)}}catch(i){n=!1}if(n&&e.push("measure","mark"),e.length===0)return;const r=this._performanceManager.createObserver(i=>{this._handlePerformanceEntries(i)});try{r.observe({entryTypes:e})}catch(i){const o=e.filter(a=>a!=="measure"&&a!=="mark");if(o.length<e.length&&o.length>0)r.observe({entryTypes:o}),console.warn("[sentry-miniapp] Failed to observe all types, falling back to:",o),e.length=0,e.push(...o);else throw i}this._observers.push(r);const s=typeof globalThis!="undefined"?globalThis.process:void 0;s&&s.env&&s.env.NODE_ENV!=="production"&&console.log("[sentry-miniapp] Performance observers setup for:",e)}catch(e){console.warn("[sentry-miniapp] Failed to setup performance observers:",e)}}_handlePerformanceEntries(e){if(!e)return;let n;if(Array.isArray(e))n=e;else if(typeof e=="object"&&e.getEntries)n=e.getEntries();else if(typeof e=="object")n=[e];else{console.warn("[sentry-miniapp] Invalid entries format:",typeof e);return}n.length!==0&&(Math.random()>this._options.sampleRate||n.forEach(r=>{try{this._processPerformanceEntry(r),this._addToBuffer(r)}catch(s){console.warn("[sentry-miniapp] Failed to process performance entry:",s)}}))}_processPerformanceEntry(e){switch(e.entryType){case"navigation":this._processNavigationEntry(e);break;case"render":this._processRenderEntry(e);break;case"resource":this._processResourceEntry(e);break;case"measure":case"mark":this._processUserTimingEntry(e);break;default:console.log("[sentry-miniapp] Unknown entry type:",e.entryType)}}_processNavigationEntry(e){y().addBreadcrumb({message:`页面导航: ${e.name}`,category:"performance.navigation",level:"info",data:{duration:e.duration,appLaunchTime:e.appLaunchTime,pageReadyTime:e.pageReadyTime}}),se({name:`Navigation: ${e.name}`,op:"navigation",startTime:e.startTime/1e3},r=>{r.setAttributes({"navigation.name":e.name,"navigation.duration":e.duration,"navigation.app_launch_time":e.appLaunchTime||0,"navigation.page_ready_time":e.pageReadyTime||0,"navigation.first_render_time":e.firstRenderTime||0}),r.end((e.startTime+e.duration)/1e3)})}_processRenderEntry(e){var r,s;se({name:`Render: ${e.name}`,op:"render",startTime:e.startTime/1e3},i=>{i.setAttributes({"render.name":e.name,"render.duration":e.duration,"render.start":e.renderStart||0,"render.end":e.renderEnd||0,"render.script_start":e.scriptStart||0,"render.script_end":e.scriptEnd||0}),i.end((e.startTime+e.duration)/1e3)});const n=(s=(r=this._options.thresholds)==null?void 0:r.setData)!=null?s:50;e.duration>n&&y().addBreadcrumb({message:`慢渲染检测: ${e.name} (${e.duration.toFixed(1)}ms)`,category:"performance.setData.slow",level:"warning",data:{name:e.name,duration:e.duration,threshold:n,renderStart:e.renderStart,renderEnd:e.renderEnd,scriptStart:e.scriptStart,scriptEnd:e.scriptEnd}})}_processResourceEntry(e){se({name:`Resource: ${e.name}`,op:"resource",startTime:e.startTime/1e3},n=>{n.setAttributes({"resource.name":e.name,"resource.duration":e.duration,"resource.type":e.initiatorType||"unknown","resource.transfer_size":e.transferSize||0,"resource.encoded_size":e.encodedBodySize||0,"resource.decoded_size":e.decodedBodySize||0}),e.fetchStart&&e.responseEnd&&n.setAttributes({"resource.fetch_start":e.fetchStart,"resource.response_end":e.responseEnd,"resource.network_time":e.responseEnd-e.fetchStart}),n.end((e.startTime+e.duration)/1e3)})}_processUserTimingEntry(e){e.entryType==="measure"?se({name:`Measure: ${e.name}`,op:"measure",startTime:e.startTime/1e3},n=>{n.setAttributes({"measure.name":e.name,"measure.duration":e.duration,"measure.detail":e.detail?JSON.stringify(e.detail):void 0}),n.end((e.startTime+e.duration)/1e3)}):e.entryType==="mark"&&y().addBreadcrumb({message:`性能标记: ${e.name}`,category:"performance.mark",level:"info",data:{timestamp:e.startTime,detail:e.detail}})}_addToBuffer(e){for(this._entryBuffer.push(e);this._entryBuffer.length>this._options.bufferSize;)this._entryBuffer.shift()}_startAutoReporting(){this._options.reportInterval<=0||(this._reportTimer=setInterval(()=>{this._reportBufferedEntries()},this._options.reportInterval))}_reportBufferedEntries(){if(this._entryBuffer.length!==0)try{const e=y(),n=this._calculatePerformanceStats(),r=this._collectMemoryInfo();r&&(n.memory=r),e.setContext("performance_summary",l({total_entries:this._entryBuffer.length,navigation_count:this._entryBuffer.filter(s=>s.entryType==="navigation").length,render_count:this._entryBuffer.filter(s=>s.entryType==="render").length,resource_count:this._entryBuffer.filter(s=>s.entryType==="resource").length,measure_count:this._entryBuffer.filter(s=>s.entryType==="measure").length,mark_count:this._entryBuffer.filter(s=>s.entryType==="mark").length,report_time:new Date().toISOString()},n)),this._checkPerformanceThresholds(n),this._reportToNativeAPI(),this._entryBuffer=[]}catch(e){console.warn("[sentry-miniapp] Failed to report buffered entries:",e)}}_calculatePerformanceStats(){const e=this._entryBuffer.filter(i=>i.entryType==="navigation"),n=this._entryBuffer.filter(i=>i.entryType==="render"),r=this._entryBuffer.filter(i=>i.entryType==="resource"),s={};if(e.length>0){const i=e.map(o=>o.duration);s.navigation_stats={avg_duration:i.reduce((o,a)=>o+a,0)/i.length,max_duration:Math.max(...i),min_duration:Math.min(...i)}}if(n.length>0){const i=n.map(a=>a.duration);s.render_stats={avg_duration:i.reduce((a,c)=>a+c,0)/i.length,max_duration:Math.max(...i),min_duration:Math.min(...i)};const o=n.filter(a=>{var c,u;return a.duration>((u=(c=this._options.thresholds)==null?void 0:c.setData)!=null?u:50)});s.render_stats.slow_render_count=o.length,s.render_stats.slow_render_ratio=o.length/n.length}if(r.length>0){const i=r.map(a=>a.duration),o=r.map(a=>a.transferSize||0).filter(a=>a>0);s.resource_stats={avg_load_time:i.reduce((a,c)=>a+c,0)/i.length,max_load_time:Math.max(...i),total_transfer_size:o.reduce((a,c)=>a+c,0),avg_transfer_size:o.length>0?o.reduce((a,c)=>a+c,0)/o.length:0}}return s}_checkPerformanceThresholds(e){var o,a,c,u,p,f,h,d,_;const n=y(),r=(a=(o=this._options.thresholds)==null?void 0:o.navigation)!=null?a:3e3;((c=e.navigation_stats)==null?void 0:c.avg_duration)>r&&n.addBreadcrumb({message:"页面导航性能较慢",category:"performance.warning",level:"warning",data:{avg_duration:e.navigation_stats.avg_duration,threshold:r}});const s=(p=(u=this._options.thresholds)==null?void 0:u.render)!=null?p:1e3;((f=e.render_stats)==null?void 0:f.avg_duration)>s&&n.addBreadcrumb({message:"页面渲染性能较慢",category:"performance.warning",level:"warning",data:{avg_duration:e.render_stats.avg_duration,threshold:s}});const i=(d=(h=this._options.thresholds)==null?void 0:h.resource)!=null?d:2e3;((_=e.resource_stats)==null?void 0:_.avg_load_time)>i&&n.addBreadcrumb({message:"资源加载性能较慢",category:"performance.warning",level:"warning",data:{avg_load_time:e.resource_stats.avg_load_time,threshold:i}})}_reportToNativeAPI(){try{const e=S();if(e.reportPerformance&&this._entryBuffer.length>0){const n={entries:this._entryBuffer.map(r=>({name:r.name,entryType:r.entryType,startTime:r.startTime,duration:r.duration})),timestamp:Date.now(),sampleRate:this._options.sampleRate};e.reportPerformance(n)}}catch(e){console.warn("[sentry-miniapp] Failed to report to native API:",e)}}_collectMemoryInfo(){if(!this._options.enableMemory)return null;try{const e=S();if(e.getPerformance){const n=e.getPerformance();if(n&&n.memory)return{jsHeapSizeUsed:n.memory.jsHeapSizeUsed,jsHeapSizeLimit:n.memory.jsHeapSizeLimit}}}catch(e){}return null}_addPerformanceContext(){try{const e=y(),n=S(),r=!!n.getPerformance,s=!!n.reportPerformance;e.setContext("performance_support",{has_performance_api:r,has_report_api:s,integration_enabled:!0,options:this._options}),e.setTag("performance.integration","enabled")}catch(e){console.warn("[sentry-miniapp] Failed to add performance context:",e)}}cleanup(){this._observers.forEach(e=>{try{e.disconnect()}catch(n){console.warn("[sentry-miniapp] Failed to disconnect observer:",n)}}),this._observers=[],this._reportTimer&&(clearInterval(this._reportTimer),this._reportTimer=null),this._reportBufferedEntries()}};Je.id="PerformanceAPI";let $e=Je;const an=t=>()=>new $e(t),Xe=class Xe{constructor(e={}){this.name=Xe.id,this._prefix=e.prefix||"app:///"}setupOnce(){}processEvent(e){return e.exception&&e.exception.values&&e.exception.values.forEach(n=>{n.stacktrace&&n.stacktrace.frames&&n.stacktrace.frames.forEach(r=>{r.filename&&(r.filename=this._normalizeFilename(r.filename))})}),e}_normalizeFilename(e){let n=e;return n=n.replace(/^(appservice|app-service|WAService)\//i,"").replace(/^https?:\/\/[^/]+\//i,"").replace(/^[a-z]+:\/\//i,"").replace(/^\//,""),n.startsWith(this._prefix)?n:`${this._prefix}${n}`}};Xe.id="RewriteFrames";let je=Xe;const Ze=class Ze{constructor(e={}){this.name=Ze.id,this._originalRequest=null,this._originalHttpRequest=null,this._traceNetworkBody=!!e.traceNetworkBody,this._sensitiveKeys=(e.sensitiveKeys||["password","passwd","secret","token","access_token","refresh_token","authorization","cookie","session","creditcard","credit_card","card_number","cvv","ssn","id_card"]).map(n=>n.toLowerCase()),this._denyUrls=(e.denyBodyUrls||[]).map(n=>typeof n=="string"?new RegExp(n):n),this._enableTracePropagation=e.enableTracePropagation!==!1,this._tracePropagationTargets=e.tracePropagationTargets||[]}setupOnce(){const e=S();e&&typeof e.request=="function"&&(this._originalRequest=e.request,ce(e,"request",this._createRequestWrapper.bind(this))),e&&typeof e.httpRequest=="function"&&(this._originalHttpRequest=e.httpRequest,ce(e,"httpRequest",this._createRequestWrapper.bind(this)))}cleanup(){const e=S();e&&(this._originalRequest&&typeof e.request=="function"&&(e.request=this._originalRequest),this._originalHttpRequest&&typeof e.httpRequest=="function"&&(e.httpRequest=this._originalHttpRequest)),this._originalRequest=null,this._originalHttpRequest=null}_createRequestWrapper(e){const n=this._traceNetworkBody,r=this._sanitizeBody.bind(this),s=this._shouldDenyBodyUrl.bind(this),i=this._enableTracePropagation,o=this._shouldPropagateTrace.bind(this);return function(a){var w,M,ne;if(!a||typeof a!="object")return e.call(this,a);const c=a.url||"",u=R();let p="";if(u){const I=u.getOptions().dsn;if(I)try{const T=I.match(/^(?:https?:\/\/)?(?:[^@\n]+@)?([^:/\n]+)/i);T&&T[1]&&(p=T[1])}catch(T){}}if(typeof c=="string"){const I=c.match(/^https?:\/\/([^:/\n]+)/i),T=I&&I[1]?I[1]:"";if(p&&T===p||T==="sentry.io"||T.endsWith(".sentry.io"))return e.call(this,a)}if(i&&o(c))try{const T=y().getPropagationContext();if(T){const{traceId:D,parentSpanId:be}=T;if(D){const q=a.header||a.headers||{};q["sentry-trace"]=`${D}-${be||"0000000000000000"}-1`;const W=((w=u==null?void 0:u.getOptions())==null?void 0:w.dsn)||"",un=((M=u==null?void 0:u.getOptions())==null?void 0:M.release)||"",ln=((ne=u==null?void 0:u.getOptions())==null?void 0:ne.environment)||"",V=[];D&&V.push(`sentry-trace_id=${D}`),W&&V.push(`sentry-public_key=${ga(W)}`),un&&V.push(`sentry-release=${un}`),ln&&V.push(`sentry-environment=${ln}`),V.length>0&&(q.baggage=V.join(",")),a.header=q,a.headers=q}}}catch(I){}const f=(a.method||"GET").toUpperCase(),h=a.data,d=Date.now(),_={url:c,method:f};if(n&&h&&!s(c))try{const I=typeof h=="string"?h:JSON.stringify(h);_.request_body=r(I),_.request_size=I.length}catch(I){_.request_body="[Cannot serialize request body]"}const b=a.success,v=a.fail;return a.success=function(...I){const T=I[0]||{},D=T.statusCode||T.status,be=Date.now()-d;if(_.status_code=D,_.duration=be,n&&T.data&&!s(c))try{const W=typeof T.data=="string"?T.data:JSON.stringify(T.data);_.response_body=r(W),_.response_size=W.length}catch(W){_.response_body="[Cannot serialize response body]"}const q=D>=400||be>3e3?"warning":"info";if(P({type:"http",category:"xhr",data:_,level:q}),typeof b=="function")return b.apply(this,I)},a.fail=function(...I){const T=I[0]||{},D=Date.now()-d;if(_.error=T.errMsg||T.errorMessage||"Network request failed",_.duration=D,P({type:"http",category:"xhr",data:_,level:"error"}),typeof v=="function")return v.apply(this,I)},e.call(this,a)}}_shouldPropagateTrace(e){return this._tracePropagationTargets.length===0?!0:this._tracePropagationTargets.some(n=>typeof n=="string"?e.includes(n):n.test(e))}_shouldDenyBodyUrl(e){return this._denyUrls.some(n=>n.test(e))}_sanitizeBody(e){if(this._sensitiveKeys.length===0)return e;try{const n=JSON.parse(e);if(typeof n=="object"&&n!==null)return this._sanitizeObject(n),JSON.stringify(n)}catch(n){for(const r of this._sensitiveKeys){const s=new RegExp(`(${r})=[^&]*`,"gi");e=e.replace(s,"$1=[Filtered]")}}return e}_sanitizeObject(e){for(const n of Object.keys(e))this._sensitiveKeys.includes(n.toLowerCase())?e[n]="[Filtered]":typeof e[n]=="object"&&e[n]!==null&&this._sanitizeObject(e[n])}};Ze.id="NetworkBreadcrumbs";let Ue=Ze;function ga(t){try{const e=t.match(/^https?:\/\/([^@]+)@/);return e?e[1]:""}catch(e){return""}}const Zr=["onLoad","onShow","onHide","onUnload","onReady"],ma=["onLaunch","onShow","onHide"];function ya(t){return Zr.includes(t)||t.startsWith("_")?!1:/^(on|handle|bind)[A-Z]/.test(t)||/[Tt]ap$/.test(t)||/[Cc]lick$/.test(t)||/[Cc]hange$/.test(t)||/[Ss]ubmit$/.test(t)||/[Ss]croll$/.test(t)||/[Ii]nput$/.test(t)}const Qe=class Qe{constructor(e={}){this.name=Qe.id,this._originalPage=null,this._originalApp=null,this._launchTime=0,this._firstPageReady=!1,this._options=l({enableLifecycle:!0,enableUserInteraction:!0},e)}setupOnce(){this._wrapPage(),this._wrapApp()}_wrapPage(){const e=globalThis;if(typeof e.Page!="function")return;this._originalPage=e.Page;const n=e.Page,r=this._options,s=()=>this._firstPageReady,i=a=>{this._firstPageReady=a},o=()=>this._launchTime;e.Page=function(a){if(a&&typeof a=="object"){if(r.enableLifecycle){for(const c of Zr)if(typeof a[c]=="function"){const u=a[c];a[c]=function(...p){const f=(this==null?void 0:this.route)||(this==null?void 0:this.__route__)||"unknown",h={action:c,page:f};if(c==="onLoad"&&p[0]&&typeof p[0]=="object"&&(h.query=p[0]),c==="onReady"&&!s()&&o()>0){i(!0);const d=Date.now()-o();h.coldStartDuration=d,U("startup",{coldStartDuration:d,firstPage:f})}return P({category:"page.lifecycle",message:`${c}: ${f}`,level:"info",data:h}),u.apply(this,p)}}}if(r.enableUserInteraction){for(const c of Object.keys(a))if(typeof a[c]=="function"&&ya(c)){const u=a[c];a[c]=function(p,...f){const h=(this==null?void 0:this.route)||(this==null?void 0:this.__route__)||"unknown",d={handler:c,page:h};if(p&&typeof p=="object"&&(p.target&&(p.target.id&&(d.targetId=p.target.id),p.target.dataset&&(d.dataset=p.target.dataset)),p.type&&(d.eventType=p.type),p.detail&&(typeof p.detail.x=="number"&&(d.x=p.detail.x),typeof p.detail.y=="number"&&(d.y=p.detail.y)),p.touches&&p.touches.length>0)){const _=p.touches[0];_&&(d.touchX=_.pageX,d.touchY=_.pageY)}return P({category:"user.interaction",message:`${c} on ${h}`,level:"info",data:d}),u.apply(this,[p,...f])}}}}return n(a)}}_wrapApp(){const e=globalThis;if(typeof e.App!="function")return;this._originalApp=e.App;const n=e.App,r=this._options,s=i=>{this._launchTime=i};e.App=function(i){if(i&&typeof i=="object"&&r.enableLifecycle){for(const o of ma)if(typeof i[o]=="function"){const a=i[o];i[o]=function(...c){return o==="onLaunch"&&s(Date.now()),P({category:"app.lifecycle",message:`App.${o}`,level:"info",data:{action:o}}),a.apply(this,c)}}}return n(i)}}cleanup(){const e=globalThis;this._originalPage&&(e.Page=this._originalPage,this._originalPage=null),this._originalApp&&(e.App=this._originalApp,this._originalApp=null)}};Qe.id="PageBreadcrumbs";let pe=Qe;const Sa=t=>new pe(t),ba=["debug","info","warn","error","log"],Ea={debug:"debug",info:"info",log:"info",warn:"warning",error:"error"},et=class et{constructor(e={}){this.name=et.id,this._originalMethods={},this._levels=e.levels||[...ba]}setupOnce(){for(const e of this._levels){if(typeof console[e]!="function")continue;const n=console[e];this._originalMethods[e]=n,console[e]=function(...r){return P({category:"console",level:Ea[e],message:r.map(s=>{if(typeof s=="string")return s;try{return JSON.stringify(s)}catch(i){return String(s)}}).join(" ")}),n.apply(console,r)}}}cleanup(){for(const e of this._levels){const n=this._originalMethods[e];n&&(console[e]=n)}this._originalMethods={}}};et.id="ConsoleBreadcrumbs";let de=et;const Ta=t=>new de(t),nt=class nt{constructor(){this.name=nt.id,this._originalApp=null,this._isSessionActive=!1}setupOnce(){this._wrapApp()}_wrapApp(){const e=tr();if(!e||typeof e.App!="function")return;this._originalApp=e.App;const n=this._startSession.bind(this),r=this._endSession.bind(this),s=this._markSessionCrashed.bind(this),i=()=>this._isSessionActive,o=this._originalApp;e.App=function(a={}){const c=a.onLaunch,u=a.onShow,p=a.onHide,f=a.onError;return a.onLaunch=function(...h){if(n(),typeof c=="function")return c.apply(this,h)},a.onShow=function(...h){if(i()||n(),typeof u=="function")return u.apply(this,h)},a.onHide=function(...h){if(r(),typeof p=="function")return p.apply(this,h)},a.onError=function(...h){if(s(),typeof f=="function")return f.apply(this,h)},o.call(this,a)}}_startSession(){try{Pr({ignoreDuration:!0}),Ut(),this._isSessionActive=!0}catch(e){}}_endSession(){try{pt(),Ut(),this._isSessionActive=!1}catch(e){}}_markSessionCrashed(){try{const n=y().getSession();n&&(n.status="crashed")}catch(e){}}cleanup(){const e=tr();e&&this._originalApp&&(e.App=this._originalApp),this._originalApp=null,this._isSessionActive=!1}};nt.id="Session";let Be=nt;function tr(){if(typeof wx!="undefined")return wx;if(typeof my!="undefined")return my;if(typeof tt!="undefined")return tt;if(typeof dd!="undefined")return dd;if(typeof qq!="undefined")return qq;if(typeof swan!="undefined")return swan;if(typeof globalThis!="undefined")return globalThis}const rt=class rt{constructor(){this.name=rt.id,this._statusChangeHandler=null}setupOnce(){const e=S();if(e){if(typeof e.getNetworkType=="function")try{e.getNetworkType({success:n=>{const r=n.networkType||"unknown";U("network",{type:r,isConnected:r!=="none"})}})}catch(n){}typeof e.onNetworkStatusChange=="function"&&(this._statusChangeHandler=n=>{const r=n.networkType||"unknown",s=n.isConnected!==void 0?n.isConnected:r!=="none";U("network",{type:r,isConnected:s}),P({category:"network.change",message:`网络状态变化: ${r}`,level:s?"info":"warning",data:{networkType:r,isConnected:s}})},e.onNetworkStatusChange(this._statusChangeHandler))}}cleanup(){if(this._statusChangeHandler){const e=S();if(e&&typeof e.offNetworkStatusChange=="function")try{e.offNetworkStatusChange(this._statusChangeHandler)}catch(n){}this._statusChangeHandler=null}}};rt.id="NetworkStatus";let He=rt;const Ia=Object.freeze(Object.defineProperty({__proto__:null,ConsoleBreadcrumbs:de,Dedupe:Fe,GlobalHandlers:De,HttpContext:Le,LinkedErrors:Me,NetworkBreadcrumbs:Ue,NetworkStatusIntegration:He,PageBreadcrumbs:pe,PerformanceIntegration:$e,RewriteFrames:je,Router:zt,SessionIntegration:Be,System:Ht,TryCatch:Oe,consoleBreadcrumbsIntegration:Ta,pageBreadcrumbsIntegration:Sa,performanceIntegration:an},Symbol.toStringTag,{value:"Module"})),cn=[new Le,new Fe,new De,new Oe,new Me,an({enableNavigation:!0,enableRender:!0,enableResource:!0,enableUserTiming:!0,sampleRate:1,reportInterval:3e4})];function wa(){return[...cn]}function va(t={}){if(!ca()){console.warn("[sentry-miniapp] Not running in a supported miniapp environment");return}const e=E(l({},t),{integrations:t.integrations||cn,stackParser:zr,transport:t.transport});e.enableSourceMap!==!1&&e.integrations.push(new je);const n={traceNetworkBody:e.traceNetworkBody};e.enableTracePropagation!==void 0&&(n.enableTracePropagation=e.enableTracePropagation),e.tracePropagationTargets!==void 0&&(n.tracePropagationTargets=e.tracePropagationTargets),e.integrations.push(new Ue(n)),e.enableAutoSessionTracking!==!1&&e.integrations.push(new Be),e.enableUserInteractionBreadcrumbs!==!1&&e.integrations.push(new pe),e.enableNetworkStatusMonitoring!==!1&&e.integrations.push(new He),e.enableConsoleBreadcrumbs&&e.integrations.push(new de),U("miniapp",{platform:Vr,environment:"miniapp"});const r=Z();return r&&(U("device",{brand:r.brand,model:r.model,language:r.language,system:r.system,platform:r.platform,screen_resolution:`${r.screenWidth}x${r.screenHeight}`}),U("app",{sdk_version:r.SDKVersion,version:r.version})),Xo(Xr,e),y().getClient()}function ka(t={}){console.warn("[sentry-miniapp] showReportDialog is deprecated and does nothing. Please build your own UI and use `Sentry.captureFeedback()` instead.")}function Aa(t){return function(...e){return ye(()=>{try{return t.apply(this,e)}catch(n){throw y().captureException(n),n}})}}function Ra(t){const e=y().getClient();return e?e.captureFeedback(t):(console.warn("[sentry-miniapp] No client available for captureFeedback"),"")}nr();exports.Integrations=Ia;exports.MiniappClient=Xr;exports.SDK_NAME=Hr;exports.SDK_VERSION=ve;exports.Transports=pa;exports.addBreadcrumb=P;exports.addEventProcessor=mo;exports.addIntegration=wo;exports.captureEvent=oo;exports.captureException=G;exports.captureFeedback=Ra;exports.captureMessage=io;exports.captureSession=Ut;exports.close=_o;exports.closeSession=fr;exports.defaultIntegrations=cn;exports.endSession=pt;exports.flush=ho;exports.getClient=R;exports.getCurrentScope=y;exports.getDefaultIntegrations=wa;exports.getIsolationScope=k;exports.getPerformanceManager=Kr;exports.init=va;exports.isEnabled=go;exports.lastEventId=po;exports.makeSession=lr;exports.miniappStackParser=zr;exports.performanceIntegration=an;exports.setContext=U;exports.setExtra=co;exports.setExtras=ao;exports.setTag=lo;exports.setTags=uo;exports.setUser=fo;exports.showReportDialog=ka;exports.startInactiveSpan=Fi;exports.startSession=Pr;exports.startSpan=se;exports.updateSession=H;exports.withScope=ye;exports.wrap=Aa;
8
8
  //# sourceMappingURL=sentry-miniapp.cjs.js.map