@swifty.js/sentry 0.0.5 → 0.0.7

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.
Files changed (124) hide show
  1. package/README.md +108 -110
  2. package/dist/constants/index.cjs +1 -1
  3. package/dist/constants/index.js +1 -1
  4. package/dist/core/api.cjs +1 -1
  5. package/dist/core/api.d.ts +28 -9
  6. package/dist/core/api.js +1 -1
  7. package/dist/core/breadcrumb.cjs +1 -1
  8. package/dist/core/breadcrumb.js +1 -1
  9. package/dist/core/decorate-http.cjs +1 -1
  10. package/dist/core/decorate-http.js +1 -1
  11. package/dist/core/decorate-route.cjs +1 -1
  12. package/dist/core/decorate-route.js +1 -1
  13. package/dist/core/decorates.cjs +1 -1
  14. package/dist/core/decorates.js +1 -1
  15. package/dist/core/error-dedup.cjs +1 -0
  16. package/dist/core/error-dedup.js +1 -0
  17. package/dist/core/framework-error.cjs +1 -1
  18. package/dist/core/framework-error.js +1 -1
  19. package/dist/core/handle-code-error.cjs +1 -1
  20. package/dist/core/handle-code-error.js +1 -1
  21. package/dist/core/handle-error.cjs +1 -1
  22. package/dist/core/handle-error.js +1 -1
  23. package/dist/core/handle-events.cjs +1 -1
  24. package/dist/core/handle-events.js +1 -1
  25. package/dist/core/handle-route.cjs +1 -1
  26. package/dist/core/handle-route.js +1 -1
  27. package/dist/core/options-schema.cjs +1 -1
  28. package/dist/core/options-schema.d.ts +42 -44
  29. package/dist/core/options-schema.js +1 -1
  30. package/dist/core/pv-lifecycle.cjs +1 -1
  31. package/dist/core/pv-lifecycle.js +1 -1
  32. package/dist/core/sdk-lifecycle.cjs +1 -1
  33. package/dist/core/sdk-lifecycle.js +1 -1
  34. package/dist/core/setup.cjs +1 -1
  35. package/dist/core/setup.js +1 -1
  36. package/dist/core/white-screen.cjs +1 -1
  37. package/dist/core/white-screen.js +1 -1
  38. package/dist/index.cjs +1 -1
  39. package/dist/index.d.ts +4 -5
  40. package/dist/index.js +1 -1
  41. package/dist/node/dev-endpoint.cjs +1 -0
  42. package/dist/node/dev-endpoint.js +1 -0
  43. package/dist/package.json.cjs +1 -1
  44. package/dist/package.json.js +1 -1
  45. package/dist/plugins/exposure/index.cjs +1 -1
  46. package/dist/plugins/exposure/index.d.ts +0 -1
  47. package/dist/plugins/exposure/index.js +1 -1
  48. package/dist/plugins/performance/first-screen-paint.cjs +1 -1
  49. package/dist/plugins/performance/first-screen-paint.js +1 -1
  50. package/dist/plugins/performance/index.cjs +1 -1
  51. package/dist/plugins/performance/index.d.ts +0 -1
  52. package/dist/plugins/performance/index.js +1 -1
  53. package/dist/plugins/performance/navigation-timing.cjs +1 -1
  54. package/dist/plugins/performance/navigation-timing.js +1 -1
  55. package/dist/plugins/performance/perf.cjs +1 -1
  56. package/dist/plugins/performance/perf.js +1 -1
  57. package/dist/plugins/performance/resource-element-fallback.cjs +1 -1
  58. package/dist/plugins/performance/resource-element-fallback.js +1 -1
  59. package/dist/plugins/performance/resource-timing.cjs +1 -1
  60. package/dist/plugins/performance/resource-timing.js +1 -1
  61. package/dist/plugins/screen-record/index.cjs +1 -1
  62. package/dist/plugins/screen-record/index.js +1 -1
  63. package/dist/plugins/screen-record/recorder.cjs +1 -1
  64. package/dist/plugins/screen-record/recorder.d.ts +1 -1
  65. package/dist/plugins/screen-record/recorder.js +1 -1
  66. package/dist/react.d.ts +6 -80
  67. package/dist/reporter/index.cjs +1 -1
  68. package/dist/reporter/index.js +1 -1
  69. package/dist/reporter/network-listener.cjs +1 -1
  70. package/dist/reporter/network-listener.js +1 -1
  71. package/dist/reporter/offline-cache.cjs +1 -1
  72. package/dist/reporter/offline-cache.js +1 -1
  73. package/dist/reporter/report-data-schema.cjs +1 -1
  74. package/dist/reporter/report-data-schema.js +1 -1
  75. package/dist/reporter/report-data.cjs +1 -1
  76. package/dist/reporter/report-data.js +1 -1
  77. package/dist/reporter/server-recovery.cjs +1 -1
  78. package/dist/reporter/server-recovery.js +1 -1
  79. package/dist/reporter/transports.cjs +1 -1
  80. package/dist/reporter/transports.js +1 -1
  81. package/dist/source-map/source-map.cjs +1 -1
  82. package/dist/source-map/source-map.js +1 -1
  83. package/dist/types/common.d.ts +9 -10
  84. package/dist/types/enums.cjs +1 -1
  85. package/dist/types/enums.d.ts +1 -43
  86. package/dist/types/enums.js +1 -1
  87. package/dist/types/options.d.ts +9 -13
  88. package/dist/types/plugin.cjs +1 -1
  89. package/dist/types/plugin.d.ts +0 -3
  90. package/dist/types/plugin.js +1 -1
  91. package/dist/utils/data-structures.cjs +1 -1
  92. package/dist/utils/data-structures.js +1 -1
  93. package/dist/utils/get-base-data.cjs +1 -1
  94. package/dist/utils/get-base-data.js +1 -1
  95. package/dist/utils/logger.cjs +1 -1
  96. package/dist/utils/logger.js +1 -1
  97. package/dist/utils/noop.cjs +1 -0
  98. package/dist/utils/noop.js +1 -0
  99. package/dist/utils/sentry.cjs +1 -1
  100. package/dist/utils/sentry.js +1 -1
  101. package/dist/utils/session.cjs +1 -1
  102. package/dist/utils/session.js +1 -1
  103. package/dist/utils/throttle.cjs +1 -1
  104. package/dist/utils/throttle.js +1 -1
  105. package/dist/utils/transform-http-data.cjs +1 -1
  106. package/dist/utils/transform-http-data.js +1 -1
  107. package/dist/utils/uuid.cjs +1 -0
  108. package/dist/utils/uuid.js +1 -0
  109. package/dist/vite.cjs +1 -1
  110. package/dist/vite.d.ts +2 -2
  111. package/dist/vite.js +1 -1
  112. package/dist/vue.cjs +1 -1
  113. package/dist/vue.js +1 -1
  114. package/dist/webpack.cjs +1 -1
  115. package/dist/webpack.js +1 -1
  116. package/package.json +3 -5
  117. package/skills/swifty-sentry/SKILL.md +1293 -0
  118. package/dist/core/ip.cjs +0 -1
  119. package/dist/core/ip.d.ts +0 -24
  120. package/dist/core/ip.js +0 -1
  121. package/dist/reporter/batch.cjs +0 -1
  122. package/dist/reporter/batch.js +0 -1
  123. package/dist/utils/base64.cjs +0 -1
  124. package/dist/utils/base64.js +0 -1
@@ -1 +1 @@
1
- "use strict";var e=require("../types/enums.cjs"),r=require("../utils/base64.cjs"),t=require("../constants/index.cjs"),s=require("../utils/event2breadcrumb.cjs"),o=require("../utils/get-base-data.cjs"),i=require("../utils/sentry.cjs"),u=require("../utils/is-ignored-error.cjs");require("../utils/is-type.cjs");var a=require("../reporter/index.cjs"),c=require("./breadcrumb.cjs");const n=new class{cacheError=[];timeoutID;push(e){this.cacheError.push(e),this.timeoutID&&clearTimeout(this.timeoutID),this.timeoutID=setTimeout(()=>this.flush(),2e3)}destroy(){this.timeoutID&&(clearTimeout(this.timeoutID),this.timeoutID=void 0),this.cacheError=[]}flush(){if(0===this.cacheError.length)return;const e={};for(const r of this.cacheError){const t=`${r.type}-${r.name}-${r.message}`;e[t]=[...e[t]??[],r]}this.cacheError=[];for(const[,r]of Object.entries(e))this.reportGroup(r)}reportGroup(e){if(e.length<5)return void e.forEach(e=>a.default.send(e));const r=e[0];if(!r)return;const t={...r,batchError:!0,batchErrorLength:e.length,batchErrorLastHappenTime:e.at(-1)?.timestamp??r.timestamp};a.default.send(t)}};exports.destroyBatchErrorManager=function(){n.destroy()},exports.handleCodeError=function(a){const{filename:h,colno:d,lineno:l,message:m}=a;if(u.default(m))return;const p={...o.default(),type:e.EventType.Error,name:h,message:m,status:e.Status.Error},f={...p,column:d,line:l};c.default.push({...p,userAction:s.default(e.EventType.Error)});const E=!h||h===t.UNKNOWN,b=r.base64v2(`${e.EventType.Error}-${m}-${h}-${l}-${d}`);(E||i.default.options.repeatCodeError||!i.default.codeErrors.has(b))&&(i.default.codeErrors.add(b),n.push(f))};
1
+ "use strict";var r=require("../types/enums.cjs"),e=require("../constants/index.cjs"),t=require("../utils/event2breadcrumb.cjs"),s=require("../utils/get-base-data.cjs");require("../utils/sentry.cjs");var o=require("../utils/is-ignored-error.cjs");require("../utils/is-type.cjs"),require("../utils/logger.cjs");var i=require("../reporter/index.cjs"),u=require("./breadcrumb.cjs"),c=require("./error-dedup.cjs");const a=new class{cacheError=[];timeoutID;push(r){this.cacheError.push(r),this.timeoutID&&clearTimeout(this.timeoutID),this.timeoutID=setTimeout(()=>this.flush(),2e3)}destroy(){this.timeoutID&&(clearTimeout(this.timeoutID),this.timeoutID=void 0),this.cacheError=[]}flush(){if(0===this.cacheError.length)return;const r=new Map;for(const e of this.cacheError){const t=`${e.type}-${e.name}-${e.message}`,s=r.get(t);s?s.push(e):r.set(t,[e])}this.cacheError=[];for(const e of r.values())this.reportGroup(e)}reportGroup(r){if(r.length<5)return void r.forEach(r=>i.default.send(r));const e=r[0];if(!e)return;const t={...e,batchError:!0,batchErrorLength:r.length,batchErrorLastHappenTime:r.at(-1)?.timestamp??e.timestamp};i.default.send(t)}};exports.destroyBatchErrorManager=function(){a.destroy()},exports.handleCodeError=function(i){const{filename:n,colno:h,lineno:l,message:p,error:m}=i;if(o.default(p))return;const d={...s.default(),type:r.EventType.Error,name:n,message:p,status:r.Status.Error},f=m instanceof Error&&m.stack?m.stack:void 0,E={...d,column:h,line:l,...f?{extra:f}:{}};u.default.push({...d,userAction:t.default(r.EventType.Error)}),n&&n!==e.UNKNOWN?c.reportOncePerError(`${r.EventType.Error}-${p}-${n}-${l}-${h}`,()=>{a.push(E)}):a.push(E)};
@@ -1 +1 @@
1
- import{Status as r,EventType as t}from"../types/enums.js";import{base64v2 as o}from"../utils/base64.js";import{UNKNOWN as e}from"../constants/index.js";import s from"../utils/event2breadcrumb.js";import i from"../utils/get-base-data.js";import n from"../utils/sentry.js";import m from"../utils/is-ignored-error.js";import"../utils/is-type.js";import c from"../reporter/index.js";import u from"./breadcrumb.js";const a=new class{cacheError=[];timeoutID;push(r){this.cacheError.push(r),this.timeoutID&&clearTimeout(this.timeoutID),this.timeoutID=setTimeout(()=>this.flush(),2e3)}destroy(){this.timeoutID&&(clearTimeout(this.timeoutID),this.timeoutID=void 0),this.cacheError=[]}flush(){if(0===this.cacheError.length)return;const r={};for(const t of this.cacheError){const o=`${t.type}-${t.name}-${t.message}`;r[o]=[...r[o]??[],t]}this.cacheError=[];for(const[,t]of Object.entries(r))this.reportGroup(t)}reportGroup(r){if(r.length<5)return void r.forEach(r=>c.send(r));const t=r[0];if(!t)return;const o={...t,batchError:!0,batchErrorLength:r.length,batchErrorLastHappenTime:r.at(-1)?.timestamp??t.timestamp};c.send(o)}};function h(){a.destroy()}function p(c){const{filename:h,colno:p,lineno:f,message:l}=c;if(m(l))return;const d={...i(),type:t.Error,name:h,message:l,status:r.Error},E={...d,column:p,line:f};u.push({...d,userAction:s(t.Error)});const j=!h||h===e,b=o(`${t.Error}-${l}-${h}-${f}-${p}`);(j||n.options.repeatCodeError||!n.codeErrors.has(b))&&(n.codeErrors.add(b),a.push(E))}export{h as destroyBatchErrorManager,p as handleCodeError};
1
+ import{Status as r,EventType as t}from"../types/enums.js";import{UNKNOWN as o}from"../constants/index.js";import e from"../utils/event2breadcrumb.js";import s from"../utils/get-base-data.js";import"../utils/sentry.js";import i from"../utils/is-ignored-error.js";import"../utils/is-type.js";import"../utils/logger.js";import n from"../reporter/index.js";import m from"./breadcrumb.js";import{reportOncePerError as u}from"./error-dedup.js";const c=new class{cacheError=[];timeoutID;push(r){this.cacheError.push(r),this.timeoutID&&clearTimeout(this.timeoutID),this.timeoutID=setTimeout(()=>this.flush(),2e3)}destroy(){this.timeoutID&&(clearTimeout(this.timeoutID),this.timeoutID=void 0),this.cacheError=[]}flush(){if(0===this.cacheError.length)return;const r=new Map;for(const t of this.cacheError){const o=`${t.type}-${t.name}-${t.message}`,e=r.get(o);e?e.push(t):r.set(o,[t])}this.cacheError=[];for(const t of r.values())this.reportGroup(t)}reportGroup(r){if(r.length<5)return void r.forEach(r=>n.send(r));const t=r[0];if(!t)return;const o={...t,batchError:!0,batchErrorLength:r.length,batchErrorLastHappenTime:r.at(-1)?.timestamp??t.timestamp};n.send(o)}};function a(){c.destroy()}function h(n){const{filename:a,colno:h,lineno:p,message:f,error:l}=n;if(i(f))return;const d={...s(),type:t.Error,name:a,message:f,status:r.Error},E=l instanceof Error&&l.stack?l.stack:void 0,g={...d,column:h,line:p,...E?{extra:E}:{}};m.push({...d,userAction:e(t.Error)}),a&&a!==o?u(`${t.Error}-${f}-${a}-${p}-${h}`,()=>{c.push(g)}):c.push(g)}export{a as destroyBatchErrorManager,h as handleCodeError};
@@ -1 +1 @@
1
- "use strict";var e=require("../types/enums.cjs"),r=require("../utils/base64.cjs");require("../constants/index.cjs");var t=require("../utils/event2breadcrumb.cjs"),s=require("../utils/sentry.cjs"),o=require("../utils/is-ignored-error.cjs"),a=require("../utils/is-type.cjs"),n=require("../utils/logger.cjs"),u=require("../reporter/index.cjs"),d=require("./breadcrumb.cjs"),c=require("./handle-code-error.cjs");function i(o){const a={...o,status:e.Status.Error};d.default.push({...a,userAction:t.default(e.EventType.Error)});const n=r.base64v2(`${e.EventType.Error}-${a.name}-${a.message}`);!s.default.options.repeatCodeError&&s.default.codeErrors.has(n)||(s.default.codeErrors.add(n),u.default.send(a))}exports.handleError=({extra:l,...E})=>{n.sentryLogger.error("Error captured",l),a.isErrorEvent(l)?o.default(l.message)||c.handleCodeError(l):a.isIExtendedErrorEvent(l)?function(o,a){const{localName:n}=o.target,c=o.target.src??"",i=o.target.href??"",l={...a,type:e.EventType.Resource,status:e.Status.Error,name:n,src:c,href:i,message:`Failed to load ${n}: ${c||i}`};d.default.push({...l,userAction:t.default(e.EventType.Resource)});const E=r.base64v2(`${e.EventType.Resource}-${n}-${c||i}`);!s.default.options.repeatCodeError&&s.default.codeErrors.has(E)||(s.default.codeErrors.add(E),u.default.send(l))}(l,E):a.isError(l)?function(r,t){const{name:s,message:a,stack:n}=r;if(o.default(a))return;i({...t,type:e.EventType.Error,name:s,message:a,extra:n||r})}(l,E):function(r,t){const s="string"==typeof r?r:JSON.stringify(r);if(o.default(s))return;i({...t,type:e.EventType.Error,name:"Unknown Error",message:s,extra:r})}(l,E)};
1
+ "use strict";var e=require("../types/enums.cjs");require("../constants/index.cjs");var r=require("../utils/event2breadcrumb.cjs");require("../utils/sentry.cjs");var t=require("../utils/is-ignored-error.cjs"),s=require("../utils/is-type.cjs"),n=require("../utils/logger.cjs"),u=require("../reporter/index.cjs"),o=require("./breadcrumb.cjs"),a=require("./error-dedup.cjs"),i=require("./handle-code-error.cjs");function c(t){const s={...t,status:e.Status.Error};o.default.push({...s,userAction:r.default(e.EventType.Error)}),a.reportOncePerError(`${e.EventType.Error}-${s.name}-${s.message}`,()=>{u.default.send(s)})}exports.handleError=({extra:d,...E})=>{n.sentryLogger.error("Error captured",d),s.isErrorEvent(d)?t.default(d.message)||i.handleCodeError(d):s.isIExtendedErrorEvent(d)?function(t,s){const{localName:n}=t.target,i=t.target.src??"",c=t.target.href??"",d={...s,type:e.EventType.Resource,status:e.Status.Error,name:n,src:i,href:c,message:`Failed to load ${n}: ${i||c}`};o.default.push({...d,userAction:r.default(e.EventType.Resource)}),a.reportOncePerError(`${e.EventType.Resource}-${n}-${i||c}`,()=>{u.default.send(d)})}(d,E):s.isError(d)?function(r,s){const{name:n,message:u,stack:o}=r;if(t.default(u))return;c({...s,type:e.EventType.Error,name:n,message:u,extra:o||r})}(d,E):function(r,s){const n="string"==typeof r?r:JSON.stringify(r);if(t.default(n))return;c({...s,type:e.EventType.Error,name:"Unknown Error",message:n,extra:r})}(d,E)};
@@ -1 +1 @@
1
- import{Status as r,EventType as e}from"../types/enums.js";import{base64v2 as o}from"../utils/base64.js";import"../constants/index.js";import s from"../utils/event2breadcrumb.js";import t from"../utils/sentry.js";import n from"../utils/is-ignored-error.js";import{isErrorEvent as a,isIExtendedErrorEvent as i,isError as m}from"../utils/is-type.js";import{sentryLogger as c}from"../utils/logger.js";import p from"../reporter/index.js";import u from"./breadcrumb.js";import{handleCodeError as d}from"./handle-code-error.js";const f=({extra:f,...E})=>{c.error("Error captured",f),a(f)?n(f.message)||d(f):i(f)?function(n,a){const{localName:i}=n.target,m=n.target.src??"",c=n.target.href??"",d={...a,type:e.Resource,status:r.Error,name:i,src:m,href:c,message:`Failed to load ${i}: ${m||c}`};u.push({...d,userAction:s(e.Resource)});const f=o(`${e.Resource}-${i}-${m||c}`);!t.options.repeatCodeError&&t.codeErrors.has(f)||(t.codeErrors.add(f),p.send(d))}(f,E):m(f)?function(r,o){const{name:s,message:t,stack:a}=r;if(n(t))return;g({...o,type:e.Error,name:s,message:t,extra:a||r})}(f,E):function(r,o){const s="string"==typeof r?r:JSON.stringify(r);if(n(s))return;g({...o,type:e.Error,name:"Unknown Error",message:s,extra:r})}(f,E)};function g(n){const a={...n,status:r.Error};u.push({...a,userAction:s(e.Error)});const i=o(`${e.Error}-${a.name}-${a.message}`);!t.options.repeatCodeError&&t.codeErrors.has(i)||(t.codeErrors.add(i),p.send(a))}export{f as handleError};
1
+ import{Status as r,EventType as e}from"../types/enums.js";import"../constants/index.js";import t from"../utils/event2breadcrumb.js";import"../utils/sentry.js";import s from"../utils/is-ignored-error.js";import{isErrorEvent as o,isIExtendedErrorEvent as n,isError as m}from"../utils/is-type.js";import{sentryLogger as i}from"../utils/logger.js";import a from"../reporter/index.js";import u from"./breadcrumb.js";import{reportOncePerError as c}from"./error-dedup.js";import{handleCodeError as p}from"./handle-code-error.js";const f=({extra:f,...g})=>{i.error("Error captured",f),o(f)?s(f.message)||p(f):n(f)?function(s,o){const{localName:n}=s.target,m=s.target.src??"",i=s.target.href??"",p={...o,type:e.Resource,status:r.Error,name:n,src:m,href:i,message:`Failed to load ${n}: ${m||i}`};u.push({...p,userAction:t(e.Resource)}),c(`${e.Resource}-${n}-${m||i}`,()=>{a.send(p)})}(f,g):m(f)?function(r,t){const{name:o,message:n,stack:m}=r;if(s(n))return;d({...t,type:e.Error,name:o,message:n,extra:m||r})}(f,g):function(r,t){const o="string"==typeof r?r:JSON.stringify(r);if(s(o))return;d({...t,type:e.Error,name:"Unknown Error",message:o,extra:r})}(f,g)};function d(s){const o={...s,status:r.Error};u.push({...o,userAction:t(e.Error)}),c(`${e.Error}-${o.name}-${o.message}`,()=>{a.send(o)})}export{f as handleError};
@@ -1 +1 @@
1
- "use strict";var e=require("../types/enums.cjs");require("../constants/index.cjs");var r=require("../utils/click-data.cjs"),t=require("../utils/event2breadcrumb.cjs"),s=require("../utils/sentry.cjs"),n=require("../utils/is-type.cjs"),a=require("../utils/logger.cjs"),i=require("../reporter/index.cjs"),u=require("./breadcrumb.cjs"),c=require("./white-screen.cjs"),l=require("./handle-code-error.cjs"),d=require("./handle-error.cjs");exports.handleClick=({extra:n,...a})=>{if(!(n instanceof MouseEvent))return;const c=r.getDeclarativeClickData(n);if(!c)return;const l={...a,type:e.EventType.Click,name:c.ev||c.msg,message:c.msg||c.ev,status:e.Status.OK,extra:c};u.default.push({...l,userAction:t.default(e.EventType.Click)}),s.default.options.enableClick&&i.default.send(l)},exports.handleUnhandledRejection=e=>{a.sentryLogger.error("Unhandled rejection captured",e.extra),n.isErrorEvent(e.extra)?l.handleCodeError(e.extra):d.handleError(e)},exports.handleWhiteScreen=e=>{c.default(()=>{i.default.send(e)})};
1
+ "use strict";var e=require("../types/enums.cjs");require("../constants/index.cjs");var r=require("../utils/click-data.cjs"),t=require("../utils/event2breadcrumb.cjs");require("../utils/sentry.cjs");var s=require("../utils/is-type.cjs"),n=require("../utils/logger.cjs"),a=require("../reporter/index.cjs"),i=require("./breadcrumb.cjs"),c=require("./handle-code-error.cjs"),u=require("./handle-error.cjs");exports.handleClick=({extra:s,...n})=>{if(!(s instanceof MouseEvent))return;const c=r.getDeclarativeClickData(s);if(!c)return;const u={...n,type:e.EventType.Click,name:c.ev||c.msg,message:c.msg||c.ev,status:e.Status.OK,extra:c};i.default.push({...u,userAction:t.default(e.EventType.Click)}),a.default.send(u)},exports.handleUnhandledRejection=e=>{const r=(t=e.extra)instanceof Event&&"reason"in t?Reflect.get(t,"reason"):t;var t;n.sentryLogger.error("Unhandled rejection captured",r),s.isErrorEvent(r)?c.handleCodeError(r):u.handleError({...e,extra:r})};
@@ -1 +1 @@
1
- import{Status as r,EventType as e}from"../types/enums.js";import"../constants/index.js";import{getDeclarativeClickData as t}from"../utils/click-data.js";import o from"../utils/event2breadcrumb.js";import s from"../utils/sentry.js";import{isErrorEvent as i}from"../utils/is-type.js";import{sentryLogger as m}from"../utils/logger.js";import n from"../reporter/index.js";import p from"./breadcrumb.js";import a from"./white-screen.js";import{handleCodeError as c}from"./handle-code-error.js";import{handleError as u}from"./handle-error.js";const f=r=>{m.error("Unhandled rejection captured",r.extra),i(r.extra)?c(r.extra):u(r)},l=r=>{a(()=>{n.send(r)})},d=({extra:i,...m})=>{if(!(i instanceof MouseEvent))return;const a=t(i);if(!a)return;const c={...m,type:e.Click,name:a.ev||a.msg,message:a.msg||a.ev,status:r.OK,extra:a};p.push({...c,userAction:o(e.Click)}),s.options.enableClick&&n.send(c)};export{d as handleClick,f as handleUnhandledRejection,l as handleWhiteScreen};
1
+ import{Status as r,EventType as e}from"../types/enums.js";import"../constants/index.js";import{getDeclarativeClickData as t}from"../utils/click-data.js";import s from"../utils/event2breadcrumb.js";import"../utils/sentry.js";import{isErrorEvent as o}from"../utils/is-type.js";import{sentryLogger as n}from"../utils/logger.js";import i from"../reporter/index.js";import m from"./breadcrumb.js";import{handleCodeError as a}from"./handle-code-error.js";import{handleError as c}from"./handle-error.js";const p=r=>{const e=(t=r.extra)instanceof Event&&"reason"in t?Reflect.get(t,"reason"):t;var t;n.error("Unhandled rejection captured",e),o(e)?a(e):c({...r,extra:e})},u=({extra:o,...n})=>{if(!(o instanceof MouseEvent))return;const a=t(o);if(!a)return;const c={...n,type:e.Click,name:a.ev||a.msg,message:a.msg||a.ev,status:r.OK,extra:a};m.push({...c,userAction:s(e.Click)}),i.send(c)};export{u as handleClick,p as handleUnhandledRejection};
@@ -1 +1 @@
1
- "use strict";var e=require("../types/enums.cjs"),t=require("../constants/index.cjs"),r=require("../utils/event2breadcrumb.cjs");require("../utils/sentry.cjs"),require("../utils/is-type.cjs");var s=require("./breadcrumb.cjs"),n=require("./pv-lifecycle.cjs");function a(e){return e instanceof HashChangeEvent}exports.handleHashChange=({extra:u,...i})=>{const o=a(u)?u.oldURL:t.UNKNOWN,c=a(u)?u.newURL:t.UNKNOWN,h=`${o} => ${c}`,y={...i,name:h,message:h,type:e.EventType.HashChange,from:o,to:c};s.default.push({...y,userAction:r.default(e.EventType.HashChange)}),n.recordRoutePageView(c,o,"HashChange")},exports.handleHistory=({from:t,to:a,...u})=>{const i=`${t} => ${a}`,o={...u,name:i,message:i,type:e.EventType.History,from:t,to:a};s.default.push({...o,userAction:r.default(e.EventType.History)}),n.recordRoutePageView(a,t,"HistoryChange")};
1
+ "use strict";var e=require("../types/enums.cjs"),r=require("../constants/index.cjs"),s=require("../utils/event2breadcrumb.cjs");require("../utils/sentry.cjs"),require("../utils/is-type.cjs"),require("../utils/logger.cjs");var t=require("./breadcrumb.cjs"),n=require("./pv-lifecycle.cjs");function a(e){return e instanceof HashChangeEvent}exports.handleHashChange=({extra:u,...i})=>{const o=a(u)?u.oldURL:r.UNKNOWN,c=a(u)?u.newURL:r.UNKNOWN,h=`${o} => ${c}`,l={...i,name:h,message:h,type:e.EventType.HashChange,from:o,to:c};t.default.push({...l,userAction:s.default(e.EventType.HashChange)}),n.recordRoutePageView(c,o,"HashChange")},exports.handleHistory=({from:r,to:a,...u})=>{const i=`${r} => ${a}`,o={...u,name:i,message:i,type:e.EventType.History,from:r,to:a};t.default.push({...o,userAction:s.default(e.EventType.History)}),n.recordRoutePageView(a,r,"HistoryChange")};
@@ -1 +1 @@
1
- import{EventType as s}from"../types/enums.js";import{UNKNOWN as t}from"../constants/index.js";import e from"../utils/event2breadcrumb.js";import"../utils/sentry.js";import"../utils/is-type.js";import o from"./breadcrumb.js";import{recordRoutePageView as r}from"./pv-lifecycle.js";function n(s){return s instanceof HashChangeEvent}const m=({from:t,to:n,...m})=>{const i=`${t} => ${n}`,a={...m,name:i,message:i,type:s.History,from:t,to:n};o.push({...a,userAction:e(s.History)}),r(n,t,"HistoryChange")},i=({extra:m,...i})=>{const a=n(m)?m.oldURL:t,p=n(m)?m.newURL:t,c=`${a} => ${p}`,u={...i,name:c,message:c,type:s.HashChange,from:a,to:p};o.push({...u,userAction:e(s.HashChange)}),r(p,a,"HashChange")};export{i as handleHashChange,m as handleHistory};
1
+ import{EventType as s}from"../types/enums.js";import{UNKNOWN as t}from"../constants/index.js";import e from"../utils/event2breadcrumb.js";import"../utils/sentry.js";import"../utils/is-type.js";import"../utils/logger.js";import o from"./breadcrumb.js";import{recordRoutePageView as r}from"./pv-lifecycle.js";function n(s){return s instanceof HashChangeEvent}const m=({from:t,to:n,...m})=>{const i=`${t} => ${n}`,a={...m,name:i,message:i,type:s.History,from:t,to:n};o.push({...a,userAction:e(s.History)}),r(n,t,"HistoryChange")},i=({extra:m,...i})=>{const a=n(m)?m.oldURL:t,p=n(m)?m.newURL:t,u=`${a} => ${p}`,c={...i,name:u,message:u,type:s.HashChange,from:a,to:p};o.push({...c,userAction:e(s.HashChange)}),r(p,a,"HashChange")};export{i as handleHashChange,m as handleHistory};
@@ -1 +1 @@
1
- "use strict";var e=require("zod"),n=require("../types/enums.cjs");const o=e.z.custom(e=>"function"==typeof e,"Expected a report data hook function"),t=e.z.custom(e=>"function"==typeof e,"Expected a breadcrumb hook function"),a=e.z.custom(e=>"function"==typeof e,"Expected an HTTP error hook function"),r=e.z.custom(e=>"function"==typeof e,"Expected a report batch hook function"),i=e.z.custom(e=>"function"==typeof e,"Expected an after-send hook function"),s=e.z.union([e.z.string(),e.z.instanceof(RegExp)]),c=e.z.object({dsn:e.z.string(),projectId:e.z.string(),disabled:e.z.boolean(),userId:e.z.string(),enableXhr:e.z.boolean(),enableFetch:e.z.boolean(),enableClick:e.z.boolean(),enableError:e.z.boolean(),enableUnhandledRejection:e.z.boolean(),enableHashChange:e.z.boolean(),enableHistory:e.z.boolean(),enablePerformance:e.z.boolean(),enableScreenRecord:e.z.boolean(),enableWhiteScreen:e.z.boolean(),enableFingerprint:e.z.boolean(),anonymousId:e.z.string(),visitorId:e.z.string(),useImageReport:e.z.boolean(),screenRecordDurationMs:e.z.number().nonnegative(),screenRecordEventTypes:e.z.array(e.z.nativeEnum(n.EventType)),hasSkeleton:e.z.boolean(),rootCssSelectors:e.z.array(e.z.string()),clickThrottleDelay:e.z.number().nonnegative(),requestTimeoutMilliseconds:e.z.number().nonnegative(),maxBreadcrumbs:e.z.number().int().positive(),repeatCodeError:e.z.boolean(),enableHttpPerformance:e.z.boolean(),ignoreErrors:e.z.array(s),excludeApis:e.z.array(s),onBeforePushBreadcrumb:t.optional(),cacheMaxLength:e.z.number().int().positive(),cacheWaitingTime:e.z.number().nonnegative(),maxQueueLength:e.z.number().int().positive(),retryIntervalMilliseconds:e.z.number().nonnegative(),onBeforeReportData:o.optional(),beforePushEventList:r.optional(),afterSendData:i.optional(),offlineCacheKey:e.z.string(),tracesSampleRate:e.z.number().min(0).max(1),handleHttpError:a.optional(),debug:e.z.boolean()});c.partial().extend({dsn:e.z.string()}),exports.optionsSchema=c;
1
+ "use strict";var e=require("zod"),n=require("../types/enums.cjs");const o=e.z.custom(e=>"function"==typeof e,"Expected a before-send hook function"),t=e.z.custom(e=>"function"==typeof e,"Expected a breadcrumb hook function"),r=e.z.custom(e=>"function"==typeof e,"Expected a before-send-batch hook function"),a=e.z.custom(e=>"function"==typeof e,"Expected an after-send hook function"),i=e.z.union([e.z.string(),e.z.instanceof(RegExp)]),c=e.z.object({dsn:e.z.string(),projectId:e.z.string(),disabled:e.z.boolean(),userId:e.z.string(),enableXhr:e.z.boolean(),enableFetch:e.z.boolean(),enableClick:e.z.boolean(),enableError:e.z.boolean(),enableUnhandledRejection:e.z.boolean(),enableHashChange:e.z.boolean(),enableHistory:e.z.boolean(),enableWhiteScreen:e.z.boolean(),enableFingerprint:e.z.boolean(),anonymousId:e.z.string(),visitorId:e.z.string(),screenRecordDurationMs:e.z.number().nonnegative(),screenRecordEventTypes:e.z.array(e.z.enum(n.EventType)),hasSkeleton:e.z.boolean(),rootCssSelectors:e.z.array(e.z.string()),clickThrottleDelay:e.z.number().nonnegative(),maxBreadcrumbs:e.z.number().int().positive(),repeatCodeError:e.z.boolean(),enableHttpPerformance:e.z.boolean(),ignoreErrors:e.z.array(i),excludeApis:e.z.array(i),beforeBreadcrumb:t.optional(),cacheMaxLength:e.z.number().int().positive(),cacheWaitingTime:e.z.number().nonnegative(),maxQueueLength:e.z.number().int().positive(),retryIntervalMilliseconds:e.z.number().nonnegative(),beforeSend:o.optional(),beforeSendBatch:r.optional(),afterSend:a.optional(),offlineCacheKey:e.z.string(),tracesSampleRate:e.z.number().min(0).max(1),debug:e.z.boolean()});exports.optionsSchema=c;
@@ -1,51 +1,49 @@
1
- import { IBreadcrumbItem } from '../types/common.js';
2
1
  import { EventType } from '../types/enums.js';
3
- import { ReportDataHook, ReportBatchHook, AfterSendDataHook } from '../types/options.js';
2
+ import { BeforeBreadcrumbHook, BeforeSendHook, BeforeSendBatchHook, AfterSendHook } from '../types/options.js';
4
3
  import { z } from 'zod';
5
4
 
6
- declare const initOptionsSchema: z.ZodObject<{
7
- projectId: z.ZodOptional<z.ZodString>;
8
- disabled: z.ZodOptional<z.ZodBoolean>;
9
- userId: z.ZodOptional<z.ZodString>;
10
- enableXhr: z.ZodOptional<z.ZodBoolean>;
11
- enableFetch: z.ZodOptional<z.ZodBoolean>;
12
- enableClick: z.ZodOptional<z.ZodBoolean>;
13
- enableError: z.ZodOptional<z.ZodBoolean>;
14
- enableUnhandledRejection: z.ZodOptional<z.ZodBoolean>;
15
- enableHashChange: z.ZodOptional<z.ZodBoolean>;
16
- enableHistory: z.ZodOptional<z.ZodBoolean>;
17
- enablePerformance: z.ZodOptional<z.ZodBoolean>;
18
- enableScreenRecord: z.ZodOptional<z.ZodBoolean>;
19
- enableWhiteScreen: z.ZodOptional<z.ZodBoolean>;
20
- enableFingerprint: z.ZodOptional<z.ZodBoolean>;
21
- anonymousId: z.ZodOptional<z.ZodString>;
22
- visitorId: z.ZodOptional<z.ZodString>;
23
- useImageReport: z.ZodOptional<z.ZodBoolean>;
24
- screenRecordDurationMs: z.ZodOptional<z.ZodNumber>;
25
- screenRecordEventTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<typeof EventType>>>;
26
- hasSkeleton: z.ZodOptional<z.ZodBoolean>;
27
- rootCssSelectors: z.ZodOptional<z.ZodArray<z.ZodString>>;
28
- clickThrottleDelay: z.ZodOptional<z.ZodNumber>;
29
- requestTimeoutMilliseconds: z.ZodOptional<z.ZodNumber>;
30
- maxBreadcrumbs: z.ZodOptional<z.ZodNumber>;
31
- repeatCodeError: z.ZodOptional<z.ZodBoolean>;
32
- enableHttpPerformance: z.ZodOptional<z.ZodBoolean>;
33
- ignoreErrors: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>]>>>;
34
- excludeApis: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>]>>>;
35
- onBeforePushBreadcrumb: z.ZodOptional<z.ZodOptional<z.ZodCustom<((data: IBreadcrumbItem) => IBreadcrumbItem) | undefined, ((data: IBreadcrumbItem) => IBreadcrumbItem) | undefined>>>;
36
- cacheMaxLength: z.ZodOptional<z.ZodNumber>;
37
- cacheWaitingTime: z.ZodOptional<z.ZodNumber>;
38
- maxQueueLength: z.ZodOptional<z.ZodNumber>;
39
- retryIntervalMilliseconds: z.ZodOptional<z.ZodNumber>;
40
- onBeforeReportData: z.ZodOptional<z.ZodOptional<z.ZodCustom<ReportDataHook, ReportDataHook>>>;
41
- beforePushEventList: z.ZodOptional<z.ZodOptional<z.ZodCustom<ReportBatchHook | undefined, ReportBatchHook | undefined>>>;
42
- afterSendData: z.ZodOptional<z.ZodOptional<z.ZodCustom<AfterSendDataHook | undefined, AfterSendDataHook | undefined>>>;
43
- offlineCacheKey: z.ZodOptional<z.ZodString>;
44
- tracesSampleRate: z.ZodOptional<z.ZodNumber>;
45
- handleHttpError: z.ZodOptional<z.ZodOptional<z.ZodCustom<(<T>(data: T) => boolean) | undefined, (<T>(data: T) => boolean) | undefined>>>;
46
- debug: z.ZodOptional<z.ZodBoolean>;
5
+ declare const optionsSchema: z.ZodObject<{
47
6
  dsn: z.ZodString;
7
+ projectId: z.ZodString;
8
+ disabled: z.ZodBoolean;
9
+ userId: z.ZodString;
10
+ enableXhr: z.ZodBoolean;
11
+ enableFetch: z.ZodBoolean;
12
+ enableClick: z.ZodBoolean;
13
+ enableError: z.ZodBoolean;
14
+ enableUnhandledRejection: z.ZodBoolean;
15
+ enableHashChange: z.ZodBoolean;
16
+ enableHistory: z.ZodBoolean;
17
+ enableWhiteScreen: z.ZodBoolean;
18
+ enableFingerprint: z.ZodBoolean;
19
+ anonymousId: z.ZodString;
20
+ visitorId: z.ZodString;
21
+ screenRecordDurationMs: z.ZodNumber;
22
+ screenRecordEventTypes: z.ZodArray<z.ZodEnum<typeof EventType>>;
23
+ hasSkeleton: z.ZodBoolean;
24
+ rootCssSelectors: z.ZodArray<z.ZodString>;
25
+ clickThrottleDelay: z.ZodNumber;
26
+ maxBreadcrumbs: z.ZodNumber;
27
+ repeatCodeError: z.ZodBoolean;
28
+ enableHttpPerformance: z.ZodBoolean;
29
+ ignoreErrors: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>]>>;
30
+ excludeApis: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<RegExp, RegExp>]>>;
31
+ beforeBreadcrumb: z.ZodOptional<z.ZodCustom<BeforeBreadcrumbHook | undefined, BeforeBreadcrumbHook | undefined>>;
32
+ cacheMaxLength: z.ZodNumber;
33
+ cacheWaitingTime: z.ZodNumber;
34
+ maxQueueLength: z.ZodNumber;
35
+ retryIntervalMilliseconds: z.ZodNumber;
36
+ beforeSend: z.ZodOptional<z.ZodCustom<BeforeSendHook, BeforeSendHook>>;
37
+ beforeSendBatch: z.ZodOptional<z.ZodCustom<BeforeSendBatchHook | undefined, BeforeSendBatchHook | undefined>>;
38
+ afterSend: z.ZodOptional<z.ZodCustom<AfterSendHook | undefined, AfterSendHook | undefined>>;
39
+ offlineCacheKey: z.ZodString;
40
+ tracesSampleRate: z.ZodNumber;
41
+ debug: z.ZodBoolean;
48
42
  }, z.core.$strip>;
49
- type InitOptions = z.input<typeof initOptionsSchema>;
43
+ type Options = z.input<typeof optionsSchema>;
44
+ type InitOptions = {
45
+ [K in keyof Options]?: Options[K] | undefined;
46
+ } & Pick<Options, "dsn">;
50
47
 
48
+ export { optionsSchema };
51
49
  export type { InitOptions };
@@ -1 +1 @@
1
- import{z as e}from"zod";import{EventType as n}from"../types/enums.js";const o=e.custom(e=>"function"==typeof e,"Expected a report data hook function"),t=e.custom(e=>"function"==typeof e,"Expected a breadcrumb hook function"),a=e.custom(e=>"function"==typeof e,"Expected an HTTP error hook function"),r=e.custom(e=>"function"==typeof e,"Expected a report batch hook function"),i=e.custom(e=>"function"==typeof e,"Expected an after-send hook function"),c=e.union([e.string(),e.instanceof(RegExp)]),l=e.object({dsn:e.string(),projectId:e.string(),disabled:e.boolean(),userId:e.string(),enableXhr:e.boolean(),enableFetch:e.boolean(),enableClick:e.boolean(),enableError:e.boolean(),enableUnhandledRejection:e.boolean(),enableHashChange:e.boolean(),enableHistory:e.boolean(),enablePerformance:e.boolean(),enableScreenRecord:e.boolean(),enableWhiteScreen:e.boolean(),enableFingerprint:e.boolean(),anonymousId:e.string(),visitorId:e.string(),useImageReport:e.boolean(),screenRecordDurationMs:e.number().nonnegative(),screenRecordEventTypes:e.array(e.nativeEnum(n)),hasSkeleton:e.boolean(),rootCssSelectors:e.array(e.string()),clickThrottleDelay:e.number().nonnegative(),requestTimeoutMilliseconds:e.number().nonnegative(),maxBreadcrumbs:e.number().int().positive(),repeatCodeError:e.boolean(),enableHttpPerformance:e.boolean(),ignoreErrors:e.array(c),excludeApis:e.array(c),onBeforePushBreadcrumb:t.optional(),cacheMaxLength:e.number().int().positive(),cacheWaitingTime:e.number().nonnegative(),maxQueueLength:e.number().int().positive(),retryIntervalMilliseconds:e.number().nonnegative(),onBeforeReportData:o.optional(),beforePushEventList:r.optional(),afterSendData:i.optional(),offlineCacheKey:e.string(),tracesSampleRate:e.number().min(0).max(1),handleHttpError:a.optional(),debug:e.boolean()});l.partial().extend({dsn:e.string()});export{l as optionsSchema};
1
+ import{z as e}from"zod";import{EventType as n}from"../types/enums.js";const o=e.custom(e=>"function"==typeof e,"Expected a before-send hook function"),t=e.custom(e=>"function"==typeof e,"Expected a breadcrumb hook function"),r=e.custom(e=>"function"==typeof e,"Expected a before-send-batch hook function"),a=e.custom(e=>"function"==typeof e,"Expected an after-send hook function"),i=e.union([e.string(),e.instanceof(RegExp)]),b=e.object({dsn:e.string(),projectId:e.string(),disabled:e.boolean(),userId:e.string(),enableXhr:e.boolean(),enableFetch:e.boolean(),enableClick:e.boolean(),enableError:e.boolean(),enableUnhandledRejection:e.boolean(),enableHashChange:e.boolean(),enableHistory:e.boolean(),enableWhiteScreen:e.boolean(),enableFingerprint:e.boolean(),anonymousId:e.string(),visitorId:e.string(),screenRecordDurationMs:e.number().nonnegative(),screenRecordEventTypes:e.array(e.enum(n)),hasSkeleton:e.boolean(),rootCssSelectors:e.array(e.string()),clickThrottleDelay:e.number().nonnegative(),maxBreadcrumbs:e.number().int().positive(),repeatCodeError:e.boolean(),enableHttpPerformance:e.boolean(),ignoreErrors:e.array(i),excludeApis:e.array(i),beforeBreadcrumb:t.optional(),cacheMaxLength:e.number().int().positive(),cacheWaitingTime:e.number().nonnegative(),maxQueueLength:e.number().int().positive(),retryIntervalMilliseconds:e.number().nonnegative(),beforeSend:o.optional(),beforeSendBatch:r.optional(),afterSend:a.optional(),offlineCacheKey:e.string(),tracesSampleRate:e.number().min(0).max(1),debug:e.boolean()});export{b as optionsSchema};
@@ -1 +1 @@
1
- "use strict";var e=require("../types/enums.cjs");require("../constants/index.cjs");var r=require("../utils/get-base-data.cjs");require("../utils/sentry.cjs"),require("../utils/is-type.cjs");var t=require("../reporter/index.cjs");let n=null;function s(n,s){t.default.send({...r.default(),type:e.EventType.PV,name:n.name,message:n.url,status:e.Status.OK,extra:{url:n.url,referrer:n.referrer,entryTime:n.startedAt}},s)}function a(n,s,a){s<=100||t.default.send({...r.default(),type:e.EventType.PV,name:"PageDwell",message:n.url,status:e.Status.OK,extra:{url:n.url,referrer:n.referrer,duration:s}},a)}function u(e,r,t){return{url:e,referrer:r,name:t,startedAt:Date.now()}}exports.flushCurrentPageDwell=function(e){n&&a(n,Date.now()-n.startedAt,e)},exports.initPageView=function(){n=u(globalThis.location?.href??"",globalThis.document?.referrer??"","PageLoad"),s(n,!0)},exports.recordRoutePageView=function(e,r,t){const l=globalThis.location.href,i=new URL(e,l).href,o=new URL(r,l).href;n?.url!==i&&(n&&a(n,Date.now()-n.startedAt,!1),n=u(i,o,t),s(n,!1))},exports.resetPageView=function(){n=null};
1
+ "use strict";var e=require("../types/enums.cjs");require("../constants/index.cjs");var r=require("../utils/get-base-data.cjs");require("../utils/sentry.cjs"),require("../utils/is-type.cjs"),require("../utils/logger.cjs");var t=require("../reporter/index.cjs");let s=null;function n(s,n){t.default.send({...r.default(),type:e.EventType.PV,name:s.name,message:s.url,status:e.Status.OK,extra:{url:s.url,referrer:s.referrer,entryTime:s.startedAt}},n)}function u(s,n,u){n<=100||t.default.send({...r.default(),type:e.EventType.PV,name:"PageDwell",message:s.url,status:e.Status.OK,extra:{url:s.url,referrer:s.referrer,duration:n}},u)}function a(e,r,t){return{url:e,referrer:r,name:t,startedAt:Date.now()}}exports.flushCurrentPageDwell=function(e){s&&u(s,Date.now()-s.startedAt,e)},exports.initPageView=function(){s=a(globalThis.location?.href??"",globalThis.document?.referrer??"","PageLoad"),n(s,!0)},exports.recordRoutePageView=function(e,r,t){const l=globalThis.location.href,i=new URL(e,l).href,o=new URL(r,l).href;s?.url!==i&&(s&&u(s,Date.now()-s.startedAt,!1),s=a(i,o,t),n(s,!1))},exports.resetPageView=function(){s=null};
@@ -1 +1 @@
1
- import{Status as e,EventType as r}from"../types/enums.js";import"../constants/index.js";import t from"../utils/get-base-data.js";import"../utils/sentry.js";import"../utils/is-type.js";import n from"../reporter/index.js";let s=null;function o(s,o){n.send({...t(),type:r.PV,name:s.name,message:s.url,status:e.OK,extra:{url:s.url,referrer:s.referrer,entryTime:s.startedAt}},o)}function a(s,o,a){o<=100||n.send({...t(),type:r.PV,name:"PageDwell",message:s.url,status:e.OK,extra:{url:s.url,referrer:s.referrer,duration:o}},a)}function i(e,r,t){return{url:e,referrer:r,name:t,startedAt:Date.now()}}function l(){s=i(globalThis.location?.href??"",globalThis.document?.referrer??"","PageLoad"),o(s,!0)}function u(e,r,t){const n=globalThis.location.href,l=new URL(e,n).href,u=new URL(r,n).href;s?.url!==l&&(s&&a(s,Date.now()-s.startedAt,!1),s=i(l,u,t),o(s,!1))}function f(e){s&&a(s,Date.now()-s.startedAt,e)}function m(){s=null}export{f as flushCurrentPageDwell,l as initPageView,u as recordRoutePageView,m as resetPageView};
1
+ import{Status as e,EventType as r}from"../types/enums.js";import"../constants/index.js";import t from"../utils/get-base-data.js";import"../utils/sentry.js";import"../utils/is-type.js";import"../utils/logger.js";import n from"../reporter/index.js";let s=null;function o(s,o){n.send({...t(),type:r.PV,name:s.name,message:s.url,status:e.OK,extra:{url:s.url,referrer:s.referrer,entryTime:s.startedAt}},o)}function a(s,o,a){o<=100||n.send({...t(),type:r.PV,name:"PageDwell",message:s.url,status:e.OK,extra:{url:s.url,referrer:s.referrer,duration:o}},a)}function i(e,r,t){return{url:e,referrer:r,name:t,startedAt:Date.now()}}function l(){s=i(globalThis.location?.href??"",globalThis.document?.referrer??"","PageLoad"),o(s,!0)}function u(e,r,t){const n=globalThis.location.href,l=new URL(e,n).href,u=new URL(r,n).href;s?.url!==l&&(s&&a(s,Date.now()-s.startedAt,!1),s=i(l,u,t),o(s,!1))}function f(e){s&&a(s,Date.now()-s.startedAt,e)}function m(){s=null}export{f as flushCurrentPageDwell,l as initPageView,u as recordRoutePageView,m as resetPageView};
@@ -1 +1 @@
1
- "use strict";var e=require("../constants/index.cjs");require("../types/enums.cjs");var r=require("../utils/sentry.cjs");require("../utils/is-type.cjs");var i=require("../utils/logger.cjs"),t=require("./identity.cjs"),s=require("./breadcrumb.cjs"),n=require("./options-schema.cjs"),o=require("./plugin-registry.cjs"),u=require("./setup.cjs"),a=require("./handle-code-error.cjs"),l=require("../reporter/index.cjs");let c=null;function d(){return null!==c}exports.destroy=function(){o.destroyPlugins(),c?.(),c=null,a.destroyBatchErrorManager(),l.resetReporter()},exports.enablePlugin=function(...e){for(const r of e)r.init(),o.registerPlugin(r)},exports.init=function(o){if(d())return void i.sentryLogger.info("SDK already initialized");const a=n.optionsSchema.parse({...e.DEFAULT_OPTIONS,...o});r.default.setOptions(a);const{dsn:l}=r.default.options;r.default.options.disabled?i.sentryLogger.info("SDK disabled by options"):""!==l?(i.sentryLogger.info("SDK initialized",{options:r.default.options}),s.default.capacity=r.default.options.maxBreadcrumbs,c=u.default(),t.initIdentity()):i.sentryLogger.error("Initialization failed: DSN is empty")},exports.isInitialized=d;
1
+ "use strict";var e=require("../constants/index.cjs");require("../types/enums.cjs");var r=require("../utils/sentry.cjs");require("../utils/is-type.cjs");var i=require("../utils/logger.cjs"),t=require("./identity.cjs"),s=require("./breadcrumb.cjs"),n=require("./options-schema.cjs"),o=require("./plugin-registry.cjs"),u=require("./setup.cjs"),a=require("./handle-code-error.cjs"),l=require("../reporter/index.cjs");let c=null;function d(){return null!==c}exports.destroy=function(){o.destroyPlugins(),c?.(),c=null,a.destroyBatchErrorManager(),l.resetReporter(),s.default.clear(),r.default.codeErrors.clear(),r.default.shouldScreenRecord=!1},exports.enablePlugin=function(...e){for(const r of e)r.init(),o.registerPlugin(r)},exports.init=function(o){if(d())return void i.sentryLogger.info("SDK already initialized");const a=Object.fromEntries(Object.entries(o).filter(([,e])=>void 0!==e)),l=n.optionsSchema.parse({...e.DEFAULT_OPTIONS,...a});r.default.setOptions(l);const{dsn:f}=r.default.options;r.default.options.disabled?i.sentryLogger.info("SDK disabled by options"):""!==f?(i.sentryLogger.info("SDK initialized",{options:r.default.options}),s.default.capacity=r.default.options.maxBreadcrumbs,c=u.default(),t.initIdentity()):i.sentryLogger.error("Initialization failed: DSN is empty")},exports.isInitialized=d;
@@ -1 +1 @@
1
- import{DEFAULT_OPTIONS as i}from"../constants/index.js";import"../types/enums.js";import o from"../utils/sentry.js";import"../utils/is-type.js";import{sentryLogger as t}from"../utils/logger.js";import{initIdentity as r}from"./identity.js";import n from"./breadcrumb.js";import{optionsSchema as s}from"./options-schema.js";import{destroyPlugins as e,registerPlugin as p}from"./plugin-registry.js";import m from"./setup.js";import{destroyBatchErrorManager as f}from"./handle-code-error.js";import{resetReporter as l}from"../reporter/index.js";let a=null;function d(){return null!==a}function u(){e(),a?.(),a=null,f(),l()}function c(e){if(d())return void t.info("SDK already initialized");const p=s.parse({...i,...e});o.setOptions(p);const{dsn:f}=o.options;o.options.disabled?t.info("SDK disabled by options"):""!==f?(t.info("SDK initialized",{options:o.options}),n.capacity=o.options.maxBreadcrumbs,a=m(),r()):t.error("Initialization failed: DSN is empty")}function j(...i){for(const o of i)o.init(),p(o)}export{u as destroy,j as enablePlugin,c as init,d as isInitialized};
1
+ import{DEFAULT_OPTIONS as o}from"../constants/index.js";import"../types/enums.js";import i from"../utils/sentry.js";import"../utils/is-type.js";import{sentryLogger as r}from"../utils/logger.js";import{initIdentity as t}from"./identity.js";import s from"./breadcrumb.js";import{optionsSchema as n}from"./options-schema.js";import{destroyPlugins as e,registerPlugin as m}from"./plugin-registry.js";import p from"./setup.js";import{destroyBatchErrorManager as l}from"./handle-code-error.js";import{resetReporter as f}from"../reporter/index.js";let c=null;function d(){return null!==c}function a(){e(),c?.(),c=null,l(),f(),s.clear(),i.codeErrors.clear(),i.shouldScreenRecord=!1}function u(e){if(d())return void r.info("SDK already initialized");const m=Object.fromEntries(Object.entries(e).filter(([,o])=>void 0!==o)),l=n.parse({...o,...m});i.setOptions(l);const{dsn:f}=i.options;i.options.disabled?r.info("SDK disabled by options"):""!==f?(r.info("SDK initialized",{options:i.options}),s.capacity=i.options.maxBreadcrumbs,c=p(),t()):r.error("Initialization failed: DSN is empty")}function j(...o){for(const i of o)i.init(),m(i)}export{a as destroy,j as enablePlugin,u as init,d as isInitialized};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../types/enums.cjs");require("../constants/index.cjs");var n=require("../utils/sentry.cjs");require("../utils/is-type.cjs");var t=require("../utils/logger.cjs"),r=require("./bus.cjs"),s=require("./pv-lifecycle.cjs"),a=require("./handle-error.cjs"),i=require("./handle-route.cjs"),l=require("./handle-http.cjs"),u=require("./handle-events.cjs"),o=require("./decorates.cjs");exports.default=function(){t.sentryLogger.info("Initializing SDK event subscriptions...");const c=[{enabled:n.default.options.enableXhr,type:e.EventType.Xhr,subscribe:()=>r.sub(e.EventType.Xhr,l.handleHttp),name:"Xhr"},{enabled:n.default.options.enableFetch,type:e.EventType.Fetch,subscribe:()=>r.sub(e.EventType.Fetch,l.handleHttp),name:"Fetch"},{enabled:n.default.options.enableError,type:e.EventType.Error,subscribe:()=>r.sub(e.EventType.Error,a.handleError),name:"Error"},{enabled:n.default.options.enableHistory,type:e.EventType.History,subscribe:()=>r.sub(e.EventType.History,i.handleHistory),name:"History"},{enabled:n.default.options.enableHashChange,type:e.EventType.HashChange,subscribe:()=>r.sub(e.EventType.HashChange,i.handleHashChange),name:"HashChange"},{enabled:n.default.options.enableUnhandledRejection,type:e.EventType.UnhandledRejection,subscribe:()=>r.sub(e.EventType.UnhandledRejection,u.handleUnhandledRejection),name:"UnhandledRejection"},{enabled:n.default.options.enableClick,type:e.EventType.Click,subscribe:()=>r.sub(e.EventType.Click,u.handleClick),name:"Click"},{enabled:n.default.options.enableWhiteScreen,type:e.EventType.WhiteScreen,subscribe:()=>r.sub(e.EventType.WhiteScreen,u.handleWhiteScreen),name:"WhiteScreen"}].filter(({enabled:e})=>e),p=[];c.forEach(({type:e,subscribe:n})=>{p.push(n()),p.push(o.default(e))}),s.initPageView();const b=()=>{s.flushCurrentPageDwell(!0)};return globalThis.addEventListener("beforeunload",b),p.push(()=>{globalThis.removeEventListener("beforeunload",b)}),t.sentryLogger.success("SDK setup completed",c.map(e=>({event:e.name,type:e.type}))),()=>{p.toReversed().forEach(e=>{e()}),s.resetPageView(),r.clearSubscriptions()}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../types/enums.cjs");require("../constants/index.cjs");var n=require("../utils/sentry.cjs");require("../utils/is-type.cjs");var t=require("../utils/logger.cjs"),r=require("./bus.cjs"),s=require("./pv-lifecycle.cjs"),a=require("./white-screen.cjs"),i=require("../reporter/index.cjs"),l=require("./handle-error.cjs"),u=require("./handle-route.cjs"),c=require("./handle-http.cjs"),o=require("./handle-events.cjs"),p=require("./decorates.cjs");exports.default=function(){t.sentryLogger.info("Initializing SDK event subscriptions...");const d=[{enabled:n.default.options.enableXhr,type:e.EventType.Xhr,subscribe:()=>r.sub(e.EventType.Xhr,c.handleHttp),name:"Xhr"},{enabled:n.default.options.enableFetch,type:e.EventType.Fetch,subscribe:()=>r.sub(e.EventType.Fetch,c.handleHttp),name:"Fetch"},{enabled:n.default.options.enableError,type:e.EventType.Error,subscribe:()=>r.sub(e.EventType.Error,l.handleError),name:"Error"},{enabled:n.default.options.enableHistory,type:e.EventType.History,subscribe:()=>r.sub(e.EventType.History,u.handleHistory),name:"History"},{enabled:n.default.options.enableHashChange,type:e.EventType.HashChange,subscribe:()=>r.sub(e.EventType.HashChange,u.handleHashChange),name:"HashChange"},{enabled:n.default.options.enableUnhandledRejection,type:e.EventType.UnhandledRejection,subscribe:()=>r.sub(e.EventType.UnhandledRejection,o.handleUnhandledRejection),name:"UnhandledRejection"},{enabled:n.default.options.enableClick,type:e.EventType.Click,subscribe:()=>r.sub(e.EventType.Click,o.handleClick),name:"Click"}].filter(({enabled:e})=>e),h=[];d.forEach(({type:e,subscribe:n})=>{h.push(n()),h.push(p.default(e))}),n.default.options.enableWhiteScreen&&(a.startWhiteScreenCheck(e=>{i.default.send(e)}),h.push(a.stopWhiteScreenCheck)),s.initPageView();const b=()=>{s.flushCurrentPageDwell(!0)};return globalThis.addEventListener("pagehide",b),h.push(()=>{globalThis.removeEventListener("pagehide",b)}),t.sentryLogger.success("SDK setup completed",d.map(e=>({event:e.name,type:e.type}))),()=>{h.toReversed().forEach(e=>{e()}),s.resetPageView(),r.clearSubscriptions()}};
@@ -1 +1 @@
1
- import{EventType as e}from"../types/enums.js";import"../constants/index.js";import n from"../utils/sentry.js";import"../utils/is-type.js";import{sentryLogger as t}from"../utils/logger.js";import{sub as s,clearSubscriptions as r}from"./bus.js";import{initPageView as o,flushCurrentPageDwell as i,resetPageView as a}from"./pv-lifecycle.js";import{handleError as l}from"./handle-error.js";import{handleHistory as p,handleHashChange as b}from"./handle-route.js";import{handleHttp as c}from"./handle-http.js";import{handleUnhandledRejection as h,handleClick as m,handleWhiteScreen as d}from"./handle-events.js";import u from"./decorates.js";function f(){t.info("Initializing SDK event subscriptions...");const f=[{enabled:n.options.enableXhr,type:e.Xhr,subscribe:()=>s(e.Xhr,c),name:"Xhr"},{enabled:n.options.enableFetch,type:e.Fetch,subscribe:()=>s(e.Fetch,c),name:"Fetch"},{enabled:n.options.enableError,type:e.Error,subscribe:()=>s(e.Error,l),name:"Error"},{enabled:n.options.enableHistory,type:e.History,subscribe:()=>s(e.History,p),name:"History"},{enabled:n.options.enableHashChange,type:e.HashChange,subscribe:()=>s(e.HashChange,b),name:"HashChange"},{enabled:n.options.enableUnhandledRejection,type:e.UnhandledRejection,subscribe:()=>s(e.UnhandledRejection,h),name:"UnhandledRejection"},{enabled:n.options.enableClick,type:e.Click,subscribe:()=>s(e.Click,m),name:"Click"},{enabled:n.options.enableWhiteScreen,type:e.WhiteScreen,subscribe:()=>s(e.WhiteScreen,d),name:"WhiteScreen"}].filter(({enabled:e})=>e),y=[];f.forEach(({type:e,subscribe:n})=>{y.push(n()),y.push(u(e))}),o();const j=()=>{i(!0)};return globalThis.addEventListener("beforeunload",j),y.push(()=>{globalThis.removeEventListener("beforeunload",j)}),t.success("SDK setup completed",f.map(e=>({event:e.name,type:e.type}))),()=>{y.toReversed().forEach(e=>{e()}),a(),r()}}export{f as default};
1
+ import{EventType as e}from"../types/enums.js";import"../constants/index.js";import s from"../utils/sentry.js";import"../utils/is-type.js";import{sentryLogger as t}from"../utils/logger.js";import{sub as n,clearSubscriptions as r}from"./bus.js";import{initPageView as o,flushCurrentPageDwell as i,resetPageView as a}from"./pv-lifecycle.js";import{startWhiteScreenCheck as p,stopWhiteScreenCheck as l}from"./white-screen.js";import m from"../reporter/index.js";import{handleError as h}from"./handle-error.js";import{handleHistory as b,handleHashChange as c}from"./handle-route.js";import{handleHttp as d}from"./handle-http.js";import{handleUnhandledRejection as u,handleClick as f}from"./handle-events.js";import j from"./decorates.js";function y(){t.info("Initializing SDK event subscriptions...");const y=[{enabled:s.options.enableXhr,type:e.Xhr,subscribe:()=>n(e.Xhr,d),name:"Xhr"},{enabled:s.options.enableFetch,type:e.Fetch,subscribe:()=>n(e.Fetch,d),name:"Fetch"},{enabled:s.options.enableError,type:e.Error,subscribe:()=>n(e.Error,h),name:"Error"},{enabled:s.options.enableHistory,type:e.History,subscribe:()=>n(e.History,b),name:"History"},{enabled:s.options.enableHashChange,type:e.HashChange,subscribe:()=>n(e.HashChange,c),name:"HashChange"},{enabled:s.options.enableUnhandledRejection,type:e.UnhandledRejection,subscribe:()=>n(e.UnhandledRejection,u),name:"UnhandledRejection"},{enabled:s.options.enableClick,type:e.Click,subscribe:()=>n(e.Click,f),name:"Click"}].filter(({enabled:e})=>e),g=[];y.forEach(({type:e,subscribe:s})=>{g.push(s()),g.push(j(e))}),s.options.enableWhiteScreen&&(p(e=>{m.send(e)}),g.push(l)),o();const v=()=>{i(!0)};return globalThis.addEventListener("pagehide",v),g.push(()=>{globalThis.removeEventListener("pagehide",v)}),t.success("SDK setup completed",y.map(e=>({event:e.name,type:e.type}))),()=>{g.toReversed().forEach(e=>{e()}),a(),r()}}export{y as default};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../constants/index.cjs"),t=require("../types/enums.cjs"),r=require("../utils/get-css-selectors.cjs"),i=require("../utils/get-base-data.cjs"),n=require("../utils/sentry.cjs");require("../utils/is-type.cjs");var s=require("../utils/logger.cjs");exports.default=function(o){const{hasSkeleton:l,rootCssSelectors:a}=n.default.options;let c=0;const u=new Set,d=new Set,f=e=>{const t=r.default(e),[i,n,s]=t;return l&&(1===c?t.forEach(e=>u.add(e)):t.forEach(e=>d.add(e))),a.includes(i)||a.includes(n)||a.includes(s)},m=()=>{if(c++,l&&d.clear(),c>e.MAX_WHITE_SCREEN_SAMPLE_COUNT)return void S();const{innerWidth:t,innerHeight:r}=globalThis;let i=0;for(let e=1;e<=9;e++){const n=document.elementFromPoint(t*e/10,r/2),s=document.elementFromPoint(t/2,r*e/10);n&&!f(n)||i++,s&&!f(s)||i++}if(!l){if(i>=18)return void h();S()}if(l){if(1===c)return;if(Array.from(d).sort().join(",")===Array.from(u).sort().join(","))return void h();S()}},h=()=>{const e={...i.default(),type:t.EventType.WhiteScreen,status:t.Status.Error,name:"WhiteScreen",message:`sample count ${c}`,extra:"WhiteScreen"};s.sentryLogger.error("White screen detected",e),o(e),S()},S=()=>{n.default.whiteScreenTimer&&(clearInterval(n.default.whiteScreenTimer),n.default.whiteScreenTimer=null)},T=()=>{n.default.whiteScreenTimer||(n.default.whiteScreenTimer=globalThis.setInterval(()=>{"requestIdleCallback"in globalThis?requestIdleCallback(e=>{(e.timeRemaining()>0||e.didTimeout)&&m()}):m()},e.WHITE_SCREEN_SAMPLE_INTERVAL))};return"complete"===document.readyState?T():globalThis.addEventListener("load",T,{once:!0}),{stop:S}};
1
+ "use strict";var e=require("../constants/index.cjs"),t=require("../types/enums.cjs"),r=require("../utils/get-css-selectors.cjs"),s=require("../utils/get-base-data.cjs"),n=require("../utils/sentry.cjs");require("../utils/is-type.cjs");var o=require("../utils/logger.cjs");let i=null,l=null;function c(){i&&(clearInterval(i),i=null),l?.(),l=null}exports.startWhiteScreenCheck=function(u){const{hasSkeleton:a,rootCssSelectors:d}=n.default.options;let m=0;const E=new Set,h=new Set,S=e=>{const t=r.default(e),[s,n,o]=t;if(a){const e=1===m?E:h;t.forEach(t=>e.add(t))}return d.includes(s)||d.includes(n)||d.includes(o)},f=()=>{m++,h.clear();const t=(()=>{const{innerWidth:e,innerHeight:t}=globalThis;let r=0;for(let s=1;s<=9;s++){const n=document.elementFromPoint(e*s/10,t/2),o=document.elementFromPoint(e/2,t*s/10);n&&!S(n)||r++,o&&!S(o)||r++}return r})()>=18;if(a){if(1===m)return;if(Array.from(h).sort().join(",")!==Array.from(E).sort().join(","))return void c()}else if(!t)return void c();m>=e.MAX_WHITE_SCREEN_SAMPLE_COUNT&&g()},g=()=>{const e={...s.default(),type:t.EventType.WhiteScreen,status:t.Status.Error,name:"WhiteScreen",message:`sample count ${m}`,extra:{sampleCount:m}};o.sentryLogger.error("White screen detected",e),u(e),c()},T=()=>{i||(i=globalThis.setInterval(()=>{"requestIdleCallback"in globalThis?requestIdleCallback(e=>{(e.timeRemaining()>0||e.didTimeout)&&f()},{timeout:e.WHITE_SCREEN_SAMPLE_INTERVAL}):f()},e.WHITE_SCREEN_SAMPLE_INTERVAL))};"complete"!==document.readyState?(globalThis.addEventListener("load",T,{once:!0}),l=()=>{globalThis.removeEventListener("load",T)}):T()},exports.stopWhiteScreenCheck=c;
@@ -1 +1 @@
1
- import{WHITE_SCREEN_SAMPLE_INTERVAL as e,MAX_WHITE_SCREEN_SAMPLE_COUNT as t}from"../constants/index.js";import{Status as r,EventType as i}from"../types/enums.js";import o from"../utils/get-css-selectors.js";import n from"../utils/get-base-data.js";import s from"../utils/sentry.js";import"../utils/is-type.js";import{sentryLogger as l}from"../utils/logger.js";function c(c){const{hasSkeleton:a,rootCssSelectors:m}=s.options;let d=0;const u=new Set,f=new Set,h=e=>{const t=o(e),[r,i,n]=t;return a&&(1===d?t.forEach(e=>u.add(e)):t.forEach(e=>f.add(e))),m.includes(r)||m.includes(i)||m.includes(n)},p=()=>{if(d++,a&&f.clear(),d>t)return void g();const{innerWidth:e,innerHeight:r}=globalThis;let i=0;for(let t=1;t<=9;t++){const o=document.elementFromPoint(e*t/10,r/2),n=document.elementFromPoint(e/2,r*t/10);o&&!h(o)||i++,n&&!h(n)||i++}if(!a){if(i>=18)return void S();g()}if(a){if(1===d)return;if(Array.from(f).sort().join(",")===Array.from(u).sort().join(","))return void S();g()}},S=()=>{const e={...n(),type:i.WhiteScreen,status:r.Error,name:"WhiteScreen",message:`sample count ${d}`,extra:"WhiteScreen"};l.error("White screen detected",e),c(e),g()},g=()=>{s.whiteScreenTimer&&(clearInterval(s.whiteScreenTimer),s.whiteScreenTimer=null)},T=()=>{s.whiteScreenTimer||(s.whiteScreenTimer=globalThis.setInterval(()=>{"requestIdleCallback"in globalThis?requestIdleCallback(e=>{(e.timeRemaining()>0||e.didTimeout)&&p()}):p()},e))};return"complete"===document.readyState?T():globalThis.addEventListener("load",T,{once:!0}),{stop:g}}export{c as default};
1
+ import{WHITE_SCREEN_SAMPLE_INTERVAL as e,MAX_WHITE_SCREEN_SAMPLE_COUNT as t}from"../constants/index.js";import{Status as o,EventType as r}from"../types/enums.js";import n from"../utils/get-css-selectors.js";import s from"../utils/get-base-data.js";import i from"../utils/sentry.js";import"../utils/is-type.js";import{sentryLogger as l}from"../utils/logger.js";let a=null,m=null;function c(){a&&(clearInterval(a),a=null),m?.(),m=null}function u(u){const{hasSkeleton:d,rootCssSelectors:f}=i.options;let p=0;const g=new Set,h=new Set,j=e=>{const t=n(e),[o,r,s]=t;if(d){const e=1===p?g:h;t.forEach(t=>e.add(t))}return f.includes(o)||f.includes(r)||f.includes(s)},b=()=>{p++,h.clear();const e=(()=>{const{innerWidth:e,innerHeight:t}=globalThis;let o=0;for(let r=1;r<=9;r++){const n=document.elementFromPoint(e*r/10,t/2),s=document.elementFromPoint(e/2,t*r/10);n&&!j(n)||o++,s&&!j(s)||o++}return o})()>=18;if(d){if(1===p)return;if(Array.from(h).sort().join(",")!==Array.from(g).sort().join(","))return void c()}else if(!e)return void c();p>=t&&v()},v=()=>{const e={...s(),type:r.WhiteScreen,status:o.Error,name:"WhiteScreen",message:`sample count ${p}`,extra:{sampleCount:p}};l.error("White screen detected",e),u(e),c()},y=()=>{a||(a=globalThis.setInterval(()=>{"requestIdleCallback"in globalThis?requestIdleCallback(e=>{(e.timeRemaining()>0||e.didTimeout)&&b()},{timeout:e}):b()},e))};"complete"!==document.readyState?(globalThis.addEventListener("load",y,{once:!0}),m=()=>{globalThis.removeEventListener("load",y)}):y()}export{u as startWhiteScreenCheck,c as stopWhiteScreenCheck};
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("./core/sdk-lifecycle.cjs"),r=require("./core/identity.cjs"),t=require("./core/api.cjs"),o=require("./core/framework-error.cjs"),s=require("./types/enums.cjs"),n=require("./types/plugin.cjs"),i=require("./core/ip.cjs");exports.destroy=e.destroy,exports.enablePlugin=e.enablePlugin,exports.init=e.init,exports.isInitialized=e.isInitialized,exports.getIdentity=r.getIdentity,exports.setUserId=r.setUserId,exports.setVisitorId=r.setVisitorId,exports.afterSendData=t.afterSendData,exports.beforePushEventList=t.beforePushEventList,exports.beforeSendData=t.beforeSendData,exports.getBaseInfo=t.getBaseInfo,exports.getUserId=t.getUserId,exports.sendLocal=t.sendLocal,exports.traceCustomEvent=t.traceCustomEvent,exports.traceError=t.traceError,exports.tracePageView=t.tracePageView,exports.tracePerformance=t.tracePerformance,exports.reportFrameworkError=o.reportFrameworkError,Object.defineProperty(exports,"BreadcrumbType",{enumerable:!0,get:function(){return s.BreadcrumbType}}),Object.defineProperty(exports,"EventType",{enumerable:!0,get:function(){return s.EventType}}),Object.defineProperty(exports,"HttpMethod",{enumerable:!0,get:function(){return s.HttpMethod}}),Object.defineProperty(exports,"HttpStatusCode",{enumerable:!0,get:function(){return s.HttpStatusCode}}),Object.defineProperty(exports,"Status",{enumerable:!0,get:function(){return s.Status}}),exports.SentryPlugin=n.SentryPlugin,exports.getIPs=i.getIPs;
1
+ "use strict";var e=require("./core/sdk-lifecycle.cjs"),r=require("./core/identity.cjs"),t=require("./core/api.cjs"),o=require("./core/framework-error.cjs"),s=require("./types/enums.cjs"),n=require("./types/plugin.cjs");exports.destroy=e.destroy,exports.enablePlugin=e.enablePlugin,exports.init=e.init,exports.isInitialized=e.isInitialized,exports.getIdentity=r.getIdentity,exports.setUserId=r.setUserId,exports.setVisitorId=r.setVisitorId,exports.afterSend=t.afterSend,exports.beforeSend=t.beforeSend,exports.beforeSendBatch=t.beforeSendBatch,exports.flushOfflineCache=t.flushOfflineCache,exports.traceCustomEvent=t.traceCustomEvent,exports.traceError=t.traceError,exports.tracePageView=t.tracePageView,exports.tracePerformance=t.tracePerformance,exports.reportFrameworkError=o.reportFrameworkError,Object.defineProperty(exports,"BreadcrumbType",{enumerable:!0,get:function(){return s.BreadcrumbType}}),Object.defineProperty(exports,"EventType",{enumerable:!0,get:function(){return s.EventType}}),Object.defineProperty(exports,"Status",{enumerable:!0,get:function(){return s.Status}}),exports.SentryPlugin=n.SentryPlugin;
package/dist/index.d.ts CHANGED
@@ -1,11 +1,10 @@
1
1
  export { destroy, enablePlugin, init, isInitialized } from './core/sdk-lifecycle.js';
2
2
  export { getIdentity, setUserId, setVisitorId } from './core/identity.js';
3
- export { afterSendData, beforePushEventList, beforeSendData, getBaseInfo, getUserId, sendLocal, traceCustomEvent, traceError, tracePageView, tracePerformance } from './core/api.js';
3
+ export { afterSend, beforeSend, beforeSendBatch, flushOfflineCache, traceCustomEvent, traceError, tracePageView, tracePerformance } from './core/api.js';
4
4
  export { reportFrameworkError } from './core/framework-error.js';
5
5
  export { InitOptions } from './core/options-schema.js';
6
- export { IBaseDataWithEvent, IBatchErrorData, IBreadcrumbItem, ICodeError, IDataReporter, IDeviceInfo, IExposureData, IExtendedErrorEvent, IHttpData, IPerformanceData, IPerformanceResourceTiming, IReportData, IReportPayload, IResourceError, IRouteData, IScreenRecordData, ISentry, TOnReportPerformanceData, TOnReportWhiteScreenData, TReportPayload, TUnknownError } from './types/common.js';
7
- export { BreadcrumbType, EventType, HttpMethod, HttpStatusCode, Status } from './types/enums.js';
6
+ export { IBaseDataWithEvent, IBatchErrorData, IBreadcrumbItem, ICodeError, IDataReporter, IDeviceInfo, IExposureData, IExtendedErrorEvent, IHttpData, IPerformanceData, IPerformanceResourceTiming, IReportData, IReportPayload, IResourceError, IRouteData, IScreenRecordData, ISentry, TOnReportPerformanceData, TOnReportWhiteScreenData, TReportPayload } from './types/common.js';
7
+ export { BreadcrumbType, EventType, Status } from './types/enums.js';
8
8
  export { IPub, ISub, TEventHandler } from './types/handlers.js';
9
- export { AfterSendDataHook, IOptions, ReportBatchHook, ReportDataHook } from './types/options.js';
9
+ export { AfterSendHook, BeforeBreadcrumbHook, BeforeSendBatchHook, BeforeSendHook, IOptions } from './types/options.js';
10
10
  export { SentryPlugin, WithSentry } from './types/plugin.js';
11
- export { getIPs } from './core/ip.js';
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export{destroy,enablePlugin,init,isInitialized}from"./core/sdk-lifecycle.js";export{getIdentity,setUserId,setVisitorId}from"./core/identity.js";export{afterSendData,beforePushEventList,beforeSendData,getBaseInfo,getUserId,sendLocal,traceCustomEvent,traceError,tracePageView,tracePerformance}from"./core/api.js";export{reportFrameworkError}from"./core/framework-error.js";export{BreadcrumbType,EventType,HttpMethod,HttpStatusCode,Status}from"./types/enums.js";export{SentryPlugin}from"./types/plugin.js";export{getIPs}from"./core/ip.js";
1
+ export{destroy,enablePlugin,init,isInitialized}from"./core/sdk-lifecycle.js";export{getIdentity,setUserId,setVisitorId}from"./core/identity.js";export{afterSend,beforeSend,beforeSendBatch,flushOfflineCache,traceCustomEvent,traceError,tracePageView,tracePerformance}from"./core/api.js";export{reportFrameworkError}from"./core/framework-error.js";export{BreadcrumbType,EventType,Status}from"./types/enums.js";export{SentryPlugin}from"./types/plugin.js";
@@ -0,0 +1 @@
1
+ "use strict";var e=require("node:buffer"),t=require("node:path"),r=require("node:fs");exports.DEFAULT_MOCK_DSN="/sentry",exports.closeLogStream=function(e){e.destroyed||e.close()},exports.createLogStream=function(){const e=t.join(process.cwd(),"logs");r.existsSync(e)||r.mkdirSync(e,{recursive:!0});const n=(new Date).toISOString().replace(/[-:.]/g,"").slice(0,14),o=t.join(e,`sentry_${n}.jsonl`);return{fileStream:r.createWriteStream(o,{flags:"a"}),logFile:o}},exports.createMockMiddleware=function(t,r,n){return(o,s,i)=>{if(o.url!==t||"POST"!==o.method)return void i();let c="";o.on("data",t=>{c=function(t,r){return"string"==typeof r?t+r:e.Buffer.isBuffer(r)?t+r.toString("utf8"):r instanceof Uint8Array?t+e.Buffer.from(r).toString("utf8"):t}(c,t)}),o.on("end",async()=>{if(c)try{const e=JSON.parse(c),t=n?await n(e):e;r.write(JSON.stringify(t)+"\n")}catch{r.write(c+"\n")}s.setHeader("Content-Type","application/json"),s.statusCode=200,s.end(JSON.stringify({code:0,message:"success"}))})}};
@@ -0,0 +1 @@
1
+ import{Buffer as t}from"node:buffer";import{join as e}from"node:path";import{existsSync as n,mkdirSync as r,createWriteStream as o}from"node:fs";const s="/sentry";function i(){const t=e(process.cwd(),"logs");n(t)||r(t,{recursive:!0});const s=(new Date).toISOString().replace(/[-:.]/g,"").slice(0,14),i=e(t,`sentry_${s}.jsonl`);return{fileStream:o(i,{flags:"a"}),logFile:i}}function f(t){t.destroyed||t.close()}function c(e,n,r){return(o,s,i)=>{if(o.url!==e||"POST"!==o.method)return void i();let f="";o.on("data",e=>{f=function(e,n){return"string"==typeof n?e+n:t.isBuffer(n)?e+n.toString("utf8"):n instanceof Uint8Array?e+t.from(n).toString("utf8"):e}(f,e)}),o.on("end",async()=>{if(f)try{const t=JSON.parse(f),e=r?await r(t):t;n.write(JSON.stringify(e)+"\n")}catch{n.write(f+"\n")}s.setHeader("Content-Type","application/json"),s.statusCode=200,s.end(JSON.stringify({code:0,message:"success"}))})}}export{s as DEFAULT_MOCK_DSN,f as closeLogStream,i as createLogStream,c as createMockMiddleware};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e="0.0.5",r={version:e};exports.default=r,exports.version=e;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e="0.0.7",r={version:e};exports.default=r,exports.version=e;
@@ -1 +1 @@
1
- var a="0.0.5",e={version:a};export{e as default,a as version};
1
+ var a="0.0.7",e={version:a};export{e as default,a as version};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../types/enums.cjs"),t=require("../../types/plugin.cjs"),s=require("../../reporter/index.cjs");require("../../constants/index.cjs");var r=require("../../utils/get-base-data.cjs");require("../../utils/sentry.cjs"),require("../../utils/is-type.cjs");var i=require("../../utils/logger.cjs"),a=require("zod");const o=a.z.object({target:a.z.custom(e=>"Element"in globalThis&&e instanceof globalThis.Element),threshold:a.z.number().min(0).max(1).optional(),params:a.z.record(a.z.string(),a.z.unknown()).optional()});class n extends t.SentryPlugin{ioMap=new Map;targetMap=new Map;constructor(){super(e.EventType.Exposure)}init(){i.sentryLogger.info("Exposure plugin initialized")}initObserver(e){return new IntersectionObserver(e=>{e.forEach(e=>{const t=this.targetMap.get(e.target);if(t)if(e.isIntersecting)t.showTime=Date.now();else{if(!t.showTime)return;const e=Date.now();this.sendEvent(t,e),delete t.showTime}})},{threshold:e})}sendEvent(t,i){t.showTime&&s.default.send({...r.default(),type:e.EventType.Exposure,name:"Exposure",message:"Element Exposure",status:e.Status.OK,extra:{threshold:t.threshold,observeTime:t.observeTime,showTime:t.showTime,showEndTime:i,duration:i-t.showTime,params:t.params}})}observe(e){(Array.isArray(e)?e:[e]).map(e=>o.parse(e)).forEach(e=>{const t=e.threshold||.5,s=this.ioMap.get(t)??this.initObserver(t);this.ioMap.set(t,s),this.targetMap.has(e.target)||(s.observe(e.target),this.targetMap.set(e.target,{threshold:t,observeTime:Date.now(),params:e.params??{}}))})}unobserve(e){(Array.isArray(e)?e:[e]).forEach(e=>this.unobserveOne(e))}unobserveOne(e){const t=this.targetMap.get(e);if(!t)return;const s=this.ioMap.get(t.threshold);s&&s.unobserve(e),this.targetMap.delete(e)}destroy(){this.ioMap.forEach(e=>{e.disconnect()}),this.ioMap.clear(),this.targetMap.clear()}}exports.default=n;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../types/enums.cjs"),t=require("../../types/plugin.cjs"),s=require("../../reporter/index.cjs");require("../../constants/index.cjs");var r=require("../../utils/get-base-data.cjs");require("../../utils/sentry.cjs"),require("../../utils/is-type.cjs");var i=require("../../utils/logger.cjs"),a=require("zod");const o=a.z.object({target:a.z.custom(e=>"Element"in globalThis&&e instanceof globalThis.Element),threshold:a.z.number().min(0).max(1).optional(),params:a.z.record(a.z.string(),a.z.unknown()).optional()});class n extends t.SentryPlugin{ioMap=new Map;targetMap=new Map;init(){i.sentryLogger.info("Exposure plugin initialized")}initObserver(e){return new IntersectionObserver(e=>{e.forEach(e=>{const t=this.targetMap.get(e.target);if(t)if(e.isIntersecting)t.showTime=Date.now();else{if(!t.showTime)return;const e=Date.now();this.sendEvent(t,e),delete t.showTime}})},{threshold:e})}sendEvent(t,i){t.showTime&&s.default.send({...r.default(),type:e.EventType.Exposure,name:"Exposure",message:"Element Exposure",status:e.Status.OK,extra:{threshold:t.threshold,observeTime:t.observeTime,showTime:t.showTime,showEndTime:i,duration:i-t.showTime,params:t.params}})}observe(e){(Array.isArray(e)?e:[e]).map(e=>o.parse(e)).forEach(e=>{const t=e.threshold??.5,s=this.ioMap.get(t)??this.initObserver(t);this.ioMap.set(t,s),this.targetMap.has(e.target)||(s.observe(e.target),this.targetMap.set(e.target,{threshold:t,observeTime:Date.now(),params:e.params??{}}))})}unobserve(e){(Array.isArray(e)?e:[e]).forEach(e=>this.unobserveOne(e))}unobserveOne(e){const t=this.targetMap.get(e);if(!t)return;const s=this.ioMap.get(t.threshold);s&&s.unobserve(e),this.targetMap.delete(e)}destroy(){this.ioMap.forEach(e=>{e.disconnect()}),this.ioMap.clear(),this.targetMap.clear()}}exports.default=n;
@@ -32,7 +32,6 @@ type ExposureTarget = z.infer<typeof exposureTargetSchema>;
32
32
  declare class ExposurePlugin extends SentryPlugin {
33
33
  private ioMap;
34
34
  private targetMap;
35
- constructor();
36
35
  init(): void;
37
36
  private initObserver;
38
37
  private sendEvent;
@@ -1 +1 @@
1
- import{EventType as e,Status as t}from"../../types/enums.js";import{SentryPlugin as s}from"../../types/plugin.js";import r from"../../reporter/index.js";import"../../constants/index.js";import o from"../../utils/get-base-data.js";import"../../utils/sentry.js";import"../../utils/is-type.js";import{sentryLogger as i}from"../../utils/logger.js";import{z as a}from"zod";const n=a.object({target:a.custom(e=>"Element"in globalThis&&e instanceof globalThis.Element),threshold:a.number().min(0).max(1).optional(),params:a.record(a.string(),a.unknown()).optional()});class p extends s{ioMap=new Map;targetMap=new Map;constructor(){super(e.Exposure)}init(){i.info("Exposure plugin initialized")}initObserver(e){return new IntersectionObserver(e=>{e.forEach(e=>{const t=this.targetMap.get(e.target);if(t)if(e.isIntersecting)t.showTime=Date.now();else{if(!t.showTime)return;const e=Date.now();this.sendEvent(t,e),delete t.showTime}})},{threshold:e})}sendEvent(s,i){s.showTime&&r.send({...o(),type:e.Exposure,name:"Exposure",message:"Element Exposure",status:t.OK,extra:{threshold:s.threshold,observeTime:s.observeTime,showTime:s.showTime,showEndTime:i,duration:i-s.showTime,params:s.params}})}observe(e){(Array.isArray(e)?e:[e]).map(e=>n.parse(e)).forEach(e=>{const t=e.threshold||.5,s=this.ioMap.get(t)??this.initObserver(t);this.ioMap.set(t,s),this.targetMap.has(e.target)||(s.observe(e.target),this.targetMap.set(e.target,{threshold:t,observeTime:Date.now(),params:e.params??{}}))})}unobserve(e){(Array.isArray(e)?e:[e]).forEach(e=>this.unobserveOne(e))}unobserveOne(e){const t=this.targetMap.get(e);if(!t)return;const s=this.ioMap.get(t.threshold);s&&s.unobserve(e),this.targetMap.delete(e)}destroy(){this.ioMap.forEach(e=>{e.disconnect()}),this.ioMap.clear(),this.targetMap.clear()}}export{p as default};
1
+ import{Status as e,EventType as t}from"../../types/enums.js";import{SentryPlugin as s}from"../../types/plugin.js";import r from"../../reporter/index.js";import"../../constants/index.js";import o from"../../utils/get-base-data.js";import"../../utils/sentry.js";import"../../utils/is-type.js";import{sentryLogger as i}from"../../utils/logger.js";import{z as a}from"zod";const n=a.object({target:a.custom(e=>"Element"in globalThis&&e instanceof globalThis.Element),threshold:a.number().min(0).max(1).optional(),params:a.record(a.string(),a.unknown()).optional()});class p extends s{ioMap=new Map;targetMap=new Map;init(){i.info("Exposure plugin initialized")}initObserver(e){return new IntersectionObserver(e=>{e.forEach(e=>{const t=this.targetMap.get(e.target);if(t)if(e.isIntersecting)t.showTime=Date.now();else{if(!t.showTime)return;const e=Date.now();this.sendEvent(t,e),delete t.showTime}})},{threshold:e})}sendEvent(s,i){s.showTime&&r.send({...o(),type:t.Exposure,name:"Exposure",message:"Element Exposure",status:e.OK,extra:{threshold:s.threshold,observeTime:s.observeTime,showTime:s.showTime,showEndTime:i,duration:i-s.showTime,params:s.params}})}observe(e){(Array.isArray(e)?e:[e]).map(e=>n.parse(e)).forEach(e=>{const t=e.threshold??.5,s=this.ioMap.get(t)??this.initObserver(t);this.ioMap.set(t,s),this.targetMap.has(e.target)||(s.observe(e.target),this.targetMap.set(e.target,{threshold:t,observeTime:Date.now(),params:e.params??{}}))})}unobserve(e){(Array.isArray(e)?e:[e]).forEach(e=>this.unobserveOne(e))}unobserveOne(e){const t=this.targetMap.get(e);if(!t)return;const s=this.ioMap.get(t.threshold);s&&s.unobserve(e),this.targetMap.delete(e)}destroy(){this.ioMap.forEach(e=>{e.disconnect()}),this.ioMap.clear(),this.targetMap.clear()}}export{p as default};
@@ -1 +1 @@
1
- "use strict";require("../../constants/index.cjs"),require("../../types/enums.cjs"),require("../../utils/sentry.cjs");var e=require("../../utils/is-type.cjs");let t=[],n=null,i=0;function r(e){const t=e.getBoundingClientRect();return t.right>0&&t.bottom>0&&t.left<globalThis.innerWidth&&t.top<globalThis.innerHeight}function s(e){cancelAnimationFrame(i),i=requestAnimationFrame(()=>{if("complete"===document.readyState){n?.disconnect();const i=0===t.length?0:Math.max(...t.map(e=>e.startTime));return t=[],void e(i)}s(e)})}function o(i){if(!("MutationObserver"in globalThis)||"function"!=typeof globalThis.MutationObserver)return void i(0);const o=new Set(["link","script","style"]);n=new globalThis.MutationObserver(n=>{s(i);const a=[];for(const t of n)if(e.isHTMLElement(t.target)&&t.addedNodes.length&&r(t.target))for(const n of Array.from(t.addedNodes))e.isHTMLElement(n)&&!o.has(n.tagName.toLowerCase())&&r(n)&&a.push(n);a.length&&t.push({children:a,startTime:globalThis.performance.now()})}),n.observe(document,{childList:!0,subtree:!0,characterData:!0,attributes:!0})}exports.getFirstScreenPaint=function(e){"requestIdleCallback"in globalThis?requestIdleCallback(t=>{t.timeRemaining()>0&&o(e)}):o(e)};
1
+ "use strict";require("../../constants/index.cjs"),require("../../types/enums.cjs"),require("../../utils/sentry.cjs");var e=require("../../utils/is-type.cjs"),t=require("../../utils/noop.cjs");require("../../utils/logger.cjs");const n=new Set(["link","script","style"]);function r(e){const t=e.getBoundingClientRect();return t.right>0&&t.bottom>0&&t.left<globalThis.innerWidth&&t.top<globalThis.innerHeight}exports.getFirstScreenPaint=function(i){if(!("MutationObserver"in globalThis)||"function"!=typeof globalThis.MutationObserver)return i(0),t.noop;let o=0,s=0,c=!1;const a=new globalThis.MutationObserver(t=>{(function(t){for(const i of t)if(e.isHTMLElement(i.target)&&i.addedNodes.length&&r(i.target))for(const t of Array.from(i.addedNodes))if(e.isHTMLElement(t)&&!n.has(t.tagName.toLowerCase())&&r(t))return!0;return!1})(t)&&(o=globalThis.performance.now())}),l=()=>{"complete"!==document.readyState?s=requestAnimationFrame(l):c||(c=!0,a.disconnect(),cancelAnimationFrame(s),i(o))};return a.observe(document,{childList:!0,subtree:!0}),l(),()=>{c||(c=!0,a.disconnect(),cancelAnimationFrame(s))}};
@@ -1 +1 @@
1
- import"../../constants/index.js";import"../../types/enums.js";import"../../utils/sentry.js";import{isHTMLElement as t}from"../../utils/is-type.js";let e=[],n=null,i=0;function o(t){const e=t.getBoundingClientRect();return e.right>0&&e.bottom>0&&e.left<globalThis.innerWidth&&e.top<globalThis.innerHeight}function r(t){cancelAnimationFrame(i),i=requestAnimationFrame(()=>{if("complete"===document.readyState){n?.disconnect();const i=0===e.length?0:Math.max(...e.map(t=>t.startTime));return e=[],void t(i)}r(t)})}function s(i){if(!("MutationObserver"in globalThis)||"function"!=typeof globalThis.MutationObserver)return void i(0);const s=new Set(["link","script","style"]);n=new globalThis.MutationObserver(n=>{r(i);const a=[];for(const e of n)if(t(e.target)&&e.addedNodes.length&&o(e.target))for(const n of Array.from(e.addedNodes))t(n)&&!s.has(n.tagName.toLowerCase())&&o(n)&&a.push(n);a.length&&e.push({children:a,startTime:globalThis.performance.now()})}),n.observe(document,{childList:!0,subtree:!0,characterData:!0,attributes:!0})}function a(t){"requestIdleCallback"in globalThis?requestIdleCallback(e=>{e.timeRemaining()>0&&s(t)}):s(t)}export{a as getFirstScreenPaint};
1
+ import"../../constants/index.js";import"../../types/enums.js";import"../../utils/sentry.js";import{isHTMLElement as t}from"../../utils/is-type.js";import{noop as e}from"../../utils/noop.js";import"../../utils/logger.js";const o=new Set(["link","script","style"]);function n(t){const e=t.getBoundingClientRect();return e.right>0&&e.bottom>0&&e.left<globalThis.innerWidth&&e.top<globalThis.innerHeight}function i(i){if(!("MutationObserver"in globalThis)||"function"!=typeof globalThis.MutationObserver)return i(0),e;let r=0,s=0,a=!1;const l=new globalThis.MutationObserver(e=>{(function(e){for(const i of e)if(t(i.target)&&i.addedNodes.length&&n(i.target))for(const e of Array.from(i.addedNodes))if(t(e)&&!o.has(e.tagName.toLowerCase())&&n(e))return!0;return!1})(e)&&(r=globalThis.performance.now())}),c=()=>{"complete"!==document.readyState?s=requestAnimationFrame(c):a||(a=!0,l.disconnect(),cancelAnimationFrame(s),i(r))};return l.observe(document,{childList:!0,subtree:!0}),c(),()=>{a||(a=!0,l.disconnect(),cancelAnimationFrame(s))}}export{i as getFirstScreenPaint};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../types/enums.cjs"),r=require("../../types/plugin.cjs"),s=require("../../reporter/index.cjs");require("../../constants/index.cjs");var t=require("../../utils/get-base-data.cjs");require("../../utils/sentry.cjs"),require("../../utils/is-type.cjs");var i=require("./navigation-timing.cjs"),n=require("./perf.cjs"),o=require("./performance-observer-support.cjs"),a=require("./resource-element-fallback.cjs"),c=require("./resource-timing.cjs");function u(){}class p extends r.SentryPlugin{cleanups=[];constructor(){super(e.EventType.Performance)}init(){this.startWebVitals(),this.cleanups.push(this.observeLongTasks()),this.cleanups.push(c.observeResourceTimings(e=>this.report(e))),this.cleanups.push(a.observeResourceElementFallback(e=>this.report(e))),this.cleanups.push(this.onPageReady(()=>{this.reportPageLoadTimings()})),this.reportMemory()}destroy(){this.cleanups.toReversed().forEach(e=>{e()}),this.cleanups=[]}report(e){s.default.send(e)}startWebVitals(){try{n.getWebVitals(e=>{this.report(e)})}catch{return}}observeLongTasks(){if(!o.supportsPerformanceEntryType("longtask"))return u;const r=new globalThis.PerformanceObserver(r=>{const s={...t.default(),name:"LongTask",type:e.EventType.Performance,longTasks:r.getEntries()};this.report(s)});return r.observe({entryTypes:["longtask"]}),()=>{r.disconnect()}}onPageReady(e){if("complete"===document.readyState)return queueMicrotask(e),u;const r=()=>{e()};return globalThis.addEventListener("load",r,{once:!0}),()=>{globalThis.removeEventListener("load",r)}}reportPageLoadTimings(){const e=i.getNavigationTimingData();e&&this.report(e);const r=c.getInitialResourceListData();r&&this.report(r)}async reportMemory(){if("performance"in globalThis&&"measureUserAgentSpecificMemory"in globalThis.performance&&"function"==typeof globalThis.performance.measureUserAgentSpecificMemory){const r={...t.default(),name:"Memory",type:e.EventType.Performance,message:"performance.measureUserAgentSpecificMemory",memory:await globalThis.performance.measureUserAgentSpecificMemory()};this.report(r)}}}exports.default=p;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../types/enums.cjs"),r=require("../../types/plugin.cjs"),s=require("../../reporter/index.cjs");require("../../constants/index.cjs");var t=require("../../utils/get-base-data.cjs");require("../../utils/sentry.cjs"),require("../../utils/is-type.cjs");var i=require("../../utils/noop.cjs");require("../../utils/logger.cjs");var o=require("./navigation-timing.cjs"),n=require("./perf.cjs"),a=require("./performance-observer-support.cjs"),c=require("./resource-element-fallback.cjs"),u=require("./resource-timing.cjs");class p extends r.SentryPlugin{cleanups=[];init(){this.cleanups.push(this.startWebVitals()),this.cleanups.push(this.observeLongTasks()),this.cleanups.push(u.observeResourceTimings(e=>this.report(e))),this.cleanups.push(c.observeResourceElementFallback(e=>this.report(e))),this.cleanups.push(this.onPageReady(()=>{this.reportPageLoadTimings()})),this.reportMemory()}destroy(){this.cleanups.toReversed().forEach(e=>{e()}),this.cleanups=[]}report(e){s.default.send(e)}startWebVitals(){try{return n.getWebVitals(e=>{this.report(e)})}catch{return i.noop}}observeLongTasks(){if(!a.supportsPerformanceEntryType("longtask"))return i.noop;const r=new globalThis.PerformanceObserver(r=>{const s={...t.default(),name:"LongTask",type:e.EventType.Performance,longTasks:r.getEntries()};this.report(s)});return r.observe({entryTypes:["longtask"]}),()=>{r.disconnect()}}onPageReady(e){if("complete"===document.readyState)return queueMicrotask(e),i.noop;const r=()=>{e()};return globalThis.addEventListener("load",r,{once:!0}),()=>{globalThis.removeEventListener("load",r)}}reportPageLoadTimings(){const e=o.getNavigationTimingData();e&&this.report(e),this.report(u.getInitialResourceListData())}async reportMemory(){if("performance"in globalThis&&"measureUserAgentSpecificMemory"in globalThis.performance&&"function"==typeof globalThis.performance.measureUserAgentSpecificMemory){const r={...t.default(),name:"Memory",type:e.EventType.Performance,message:"performance.measureUserAgentSpecificMemory",memory:await globalThis.performance.measureUserAgentSpecificMemory()};this.report(r)}}}exports.default=p;
@@ -24,7 +24,6 @@ import { SentryPlugin } from '../../types/plugin.js';
24
24
 
25
25
  declare class PerformancePlugin extends SentryPlugin {
26
26
  private cleanups;
27
- constructor();
28
27
  init(): void;
29
28
  destroy(): void;
30
29
  private report;
@@ -1 +1 @@
1
- import{EventType as e}from"../../types/enums.js";import{SentryPlugin as r}from"../../types/plugin.js";import s from"../../reporter/index.js";import"../../constants/index.js";import t from"../../utils/get-base-data.js";import"../../utils/sentry.js";import"../../utils/is-type.js";import{getNavigationTimingData as o}from"./navigation-timing.js";import{getWebVitals as i}from"./perf.js";import{supportsPerformanceEntryType as n}from"./performance-observer-support.js";import{observeResourceElementFallback as a}from"./resource-element-fallback.js";import{observeResourceTimings as p,getInitialResourceListData as m}from"./resource-timing.js";function c(){}class l extends r{cleanups=[];constructor(){super(e.Performance)}init(){this.startWebVitals(),this.cleanups.push(this.observeLongTasks()),this.cleanups.push(p(e=>this.report(e))),this.cleanups.push(a(e=>this.report(e))),this.cleanups.push(this.onPageReady(()=>{this.reportPageLoadTimings()})),this.reportMemory()}destroy(){this.cleanups.toReversed().forEach(e=>{e()}),this.cleanups=[]}report(e){s.send(e)}startWebVitals(){try{i(e=>{this.report(e)})}catch{return}}observeLongTasks(){if(!n("longtask"))return c;const r=new globalThis.PerformanceObserver(r=>{const s={...t(),name:"LongTask",type:e.Performance,longTasks:r.getEntries()};this.report(s)});return r.observe({entryTypes:["longtask"]}),()=>{r.disconnect()}}onPageReady(e){if("complete"===document.readyState)return queueMicrotask(e),c;const r=()=>{e()};return globalThis.addEventListener("load",r,{once:!0}),()=>{globalThis.removeEventListener("load",r)}}reportPageLoadTimings(){const e=o();e&&this.report(e);const r=m();r&&this.report(r)}async reportMemory(){if("performance"in globalThis&&"measureUserAgentSpecificMemory"in globalThis.performance&&"function"==typeof globalThis.performance.measureUserAgentSpecificMemory){const r={...t(),name:"Memory",type:e.Performance,message:"performance.measureUserAgentSpecificMemory",memory:await globalThis.performance.measureUserAgentSpecificMemory()};this.report(r)}}}export{l as default};
1
+ import{EventType as e}from"../../types/enums.js";import{SentryPlugin as r}from"../../types/plugin.js";import s from"../../reporter/index.js";import"../../constants/index.js";import t from"../../utils/get-base-data.js";import"../../utils/sentry.js";import"../../utils/is-type.js";import{noop as o}from"../../utils/noop.js";import"../../utils/logger.js";import{getNavigationTimingData as i}from"./navigation-timing.js";import{getWebVitals as n}from"./perf.js";import{supportsPerformanceEntryType as a}from"./performance-observer-support.js";import{observeResourceElementFallback as p}from"./resource-element-fallback.js";import{observeResourceTimings as m,getInitialResourceListData as c}from"./resource-timing.js";class l extends r{cleanups=[];init(){this.cleanups.push(this.startWebVitals()),this.cleanups.push(this.observeLongTasks()),this.cleanups.push(m(e=>this.report(e))),this.cleanups.push(p(e=>this.report(e))),this.cleanups.push(this.onPageReady(()=>{this.reportPageLoadTimings()})),this.reportMemory()}destroy(){this.cleanups.toReversed().forEach(e=>{e()}),this.cleanups=[]}report(e){s.send(e)}startWebVitals(){try{return n(e=>{this.report(e)})}catch{return o}}observeLongTasks(){if(!a("longtask"))return o;const r=new globalThis.PerformanceObserver(r=>{const s={...t(),name:"LongTask",type:e.Performance,longTasks:r.getEntries()};this.report(s)});return r.observe({entryTypes:["longtask"]}),()=>{r.disconnect()}}onPageReady(e){if("complete"===document.readyState)return queueMicrotask(e),o;const r=()=>{e()};return globalThis.addEventListener("load",r,{once:!0}),()=>{globalThis.removeEventListener("load",r)}}reportPageLoadTimings(){const e=i();e&&this.report(e),this.report(c())}async reportMemory(){if("performance"in globalThis&&"measureUserAgentSpecificMemory"in globalThis.performance&&"function"==typeof globalThis.performance.measureUserAgentSpecificMemory){const r={...t(),name:"Memory",type:e.Performance,message:"performance.measureUserAgentSpecificMemory",memory:await globalThis.performance.measureUserAgentSpecificMemory()};this.report(r)}}}export{l as default};
@@ -1 +1 @@
1
- "use strict";var t=require("../../types/enums.cjs");require("../../constants/index.cjs");var e=require("../../utils/get-base-data.cjs");function n(t,e){return Math.max(0,Math.round(t-e))}function r(t,e){const r=t.fetchStart;return{paintTime:e>0?n(e,r):0,domInteractive:n(t.domInteractive,r),domContentLoaded:n(t.domContentLoadedEventEnd,r),loadEvent:n(t.loadEventStart,r),firstByte:n(t.responseStart,r),dnsLookup:n(t.domainLookupEnd,t.domainLookupStart),tcpConnection:n(t.connectEnd,t.connectStart),tlsHandshake:n(t.connectEnd,t.secureConnectionStart),timeToFirstByte:n(t.responseStart,t.requestStart),contentTransfer:n(t.responseEnd,t.responseStart),domProcessing:n(t.domInteractive,t.responseEnd),resourceLoad:n(t.loadEventStart,t.domContentLoadedEventEnd),redirect:n(t.redirectEnd,t.redirectStart),unloadTime:n(t.unloadEventEnd,t.unloadEventStart),triggerPageUrl:location.href}}require("../../utils/sentry.cjs"),require("../../utils/is-type.cjs"),exports.getNavigationTimingData=function(){if(!("performance"in globalThis)||"function"!=typeof globalThis.performance.getEntriesByType)return null;const n=function(){const t=globalThis.performance.getEntriesByType("navigation")[0];return t&&function(t){return"navigation"===t.entryType&&"fetchStart"in t}(t)?t:null}();return n?{...e.default(),type:t.EventType.Performance,name:"NavigationTiming",message:"Page navigation timing",status:t.Status.OK,extra:r(n,globalThis.performance.getEntriesByType("paint").at(-1)?.startTime??0)}:null};
1
+ "use strict";var t=require("../../types/enums.cjs");require("../../constants/index.cjs");var e=require("../../utils/get-base-data.cjs");function n(t,e){return Math.max(0,Math.round(t-e))}function r(t,e){const r=t.fetchStart;return{paintTime:e>0?n(e,r):0,domInteractive:n(t.domInteractive,r),domContentLoaded:n(t.domContentLoadedEventEnd,r),loadEvent:n(t.loadEventStart,r),firstByte:n(t.responseStart,r),dnsLookup:n(t.domainLookupEnd,t.domainLookupStart),tcpConnection:n(t.connectEnd,t.connectStart),tlsHandshake:n(t.connectEnd,t.secureConnectionStart),timeToFirstByte:n(t.responseStart,t.requestStart),contentTransfer:n(t.responseEnd,t.responseStart),domProcessing:n(t.domInteractive,t.responseEnd),resourceLoad:n(t.loadEventStart,t.domContentLoadedEventEnd),redirect:n(t.redirectEnd,t.redirectStart),unloadTime:n(t.unloadEventEnd,t.unloadEventStart),triggerPageUrl:location.href}}require("../../utils/sentry.cjs"),require("../../utils/is-type.cjs"),require("../../utils/logger.cjs"),exports.getNavigationTimingData=function(){if(!("performance"in globalThis)||"function"!=typeof globalThis.performance.getEntriesByType)return null;const n=function(){const t=globalThis.performance.getEntriesByType("navigation")[0];return t&&function(t){return"navigation"===t.entryType&&"fetchStart"in t}(t)?t:null}();return n?{...e.default(),type:t.EventType.Performance,name:"NavigationTiming",message:"Page navigation timing",status:t.Status.OK,extra:r(n,globalThis.performance.getEntriesByType("paint").at(-1)?.startTime??0)}:null};
@@ -1 +1 @@
1
- import{Status as t,EventType as n}from"../../types/enums.js";import"../../constants/index.js";import e from"../../utils/get-base-data.js";import"../../utils/sentry.js";import"../../utils/is-type.js";function o(t,n){return Math.max(0,Math.round(t-n))}function r(t,n){const e=t.fetchStart;return{paintTime:n>0?o(n,e):0,domInteractive:o(t.domInteractive,e),domContentLoaded:o(t.domContentLoadedEventEnd,e),loadEvent:o(t.loadEventStart,e),firstByte:o(t.responseStart,e),dnsLookup:o(t.domainLookupEnd,t.domainLookupStart),tcpConnection:o(t.connectEnd,t.connectStart),tlsHandshake:o(t.connectEnd,t.secureConnectionStart),timeToFirstByte:o(t.responseStart,t.requestStart),contentTransfer:o(t.responseEnd,t.responseStart),domProcessing:o(t.domInteractive,t.responseEnd),resourceLoad:o(t.loadEventStart,t.domContentLoadedEventEnd),redirect:o(t.redirectEnd,t.redirectStart),unloadTime:o(t.unloadEventEnd,t.unloadEventStart),triggerPageUrl:location.href}}function a(){if(!("performance"in globalThis)||"function"!=typeof globalThis.performance.getEntriesByType)return null;const o=function(){const t=globalThis.performance.getEntriesByType("navigation")[0];return t&&function(t){return"navigation"===t.entryType&&"fetchStart"in t}(t)?t:null}();return o?{...e(),type:n.Performance,name:"NavigationTiming",message:"Page navigation timing",status:t.OK,extra:r(o,globalThis.performance.getEntriesByType("paint").at(-1)?.startTime??0)}:null}export{a as getNavigationTimingData};
1
+ import{Status as t,EventType as n}from"../../types/enums.js";import"../../constants/index.js";import e from"../../utils/get-base-data.js";import"../../utils/sentry.js";import"../../utils/is-type.js";import"../../utils/logger.js";function o(t,n){return Math.max(0,Math.round(t-n))}function r(t,n){const e=t.fetchStart;return{paintTime:n>0?o(n,e):0,domInteractive:o(t.domInteractive,e),domContentLoaded:o(t.domContentLoadedEventEnd,e),loadEvent:o(t.loadEventStart,e),firstByte:o(t.responseStart,e),dnsLookup:o(t.domainLookupEnd,t.domainLookupStart),tcpConnection:o(t.connectEnd,t.connectStart),tlsHandshake:o(t.connectEnd,t.secureConnectionStart),timeToFirstByte:o(t.responseStart,t.requestStart),contentTransfer:o(t.responseEnd,t.responseStart),domProcessing:o(t.domInteractive,t.responseEnd),resourceLoad:o(t.loadEventStart,t.domContentLoadedEventEnd),redirect:o(t.redirectEnd,t.redirectStart),unloadTime:o(t.unloadEventEnd,t.unloadEventStart),triggerPageUrl:location.href}}function a(){if(!("performance"in globalThis)||"function"!=typeof globalThis.performance.getEntriesByType)return null;const o=function(){const t=globalThis.performance.getEntriesByType("navigation")[0];return t&&function(t){return"navigation"===t.entryType&&"fetchStart"in t}(t)?t:null}();return o?{...e(),type:n.Performance,name:"NavigationTiming",message:"Page navigation timing",status:t.OK,extra:r(o,globalThis.performance.getEntriesByType("paint").at(-1)?.startTime??0)}:null}export{a as getNavigationTimingData};
@@ -1 +1 @@
1
- "use strict";var e=require("../../types/enums.cjs"),t=require("web-vitals");require("../../constants/index.cjs");var r=require("../../utils/get-base-data.cjs");require("../../utils/sentry.cjs"),require("../../utils/is-type.cjs");var s=require("../../utils/metric2perf-data.cjs"),i=require("../../utils/logger.cjs"),n=require("./first-screen-paint.cjs");exports.getWebVitals=function(u){i.sentryLogger.info("Starting web vitals monitoring...");const a=e=>{i.sentryLogger.success(`Metric: ${e.name}`,e,function(e){if("value"in e&&"number"==typeof e.value)return Math.round(e.value)}(e)),u(e)};t.onLCP(e=>{a(s.default(e))}),t.onFCP(e=>{a(s.default(e))}),t.onCLS(e=>{a(s.default(e))}),t.onINP(e=>{a(s.default(e))}),t.onTTFB(e=>{a(s.default(e))}),n.getFirstScreenPaint(t=>{const s={...r.default(),name:"FSP",value:t,type:e.EventType.Performance,message:"First screen paint"};a(s)})};
1
+ "use strict";var e=require("../../types/enums.cjs"),t=require("web-vitals");require("../../constants/index.cjs");var r=require("../../utils/get-base-data.cjs");require("../../utils/sentry.cjs"),require("../../utils/is-type.cjs");var s=require("../../utils/metric2perf-data.cjs"),n=require("../../utils/logger.cjs"),i=require("./first-screen-paint.cjs");exports.getWebVitals=function(u){n.sentryLogger.info("Starting web vitals monitoring...");const a=e=>{n.sentryLogger.success(`Metric: ${e.name}`,e,function(e){if("value"in e&&"number"==typeof e.value)return Math.round(e.value)}(e)),u(e)};return t.onLCP(e=>{a(s.default(e))}),t.onFCP(e=>{a(s.default(e))}),t.onCLS(e=>{a(s.default(e))}),t.onINP(e=>{a(s.default(e))}),t.onTTFB(e=>{a(s.default(e))}),i.getFirstScreenPaint(t=>{const s={...r.default(),name:"FSP",value:t,type:e.EventType.Performance,message:"First screen paint"};a(s)})};
@@ -1 +1 @@
1
- import{EventType as t}from"../../types/enums.js";import{onLCP as e,onFCP as r,onCLS as s,onINP as i,onTTFB as o}from"web-vitals";import"../../constants/index.js";import n from"../../utils/get-base-data.js";import"../../utils/sentry.js";import"../../utils/is-type.js";import m from"../../utils/metric2perf-data.js";import{sentryLogger as a}from"../../utils/logger.js";import{getFirstScreenPaint as p}from"./first-screen-paint.js";function u(u){a.info("Starting web vitals monitoring...");const f=t=>{a.success(`Metric: ${t.name}`,t,function(t){if("value"in t&&"number"==typeof t.value)return Math.round(t.value)}(t)),u(t)};e(t=>{f(m(t))}),r(t=>{f(m(t))}),s(t=>{f(m(t))}),i(t=>{f(m(t))}),o(t=>{f(m(t))}),p(e=>{const r={...n(),name:"FSP",value:e,type:t.Performance,message:"First screen paint"};f(r)})}export{u as getWebVitals};
1
+ import{EventType as t}from"../../types/enums.js";import{onLCP as r,onFCP as e,onCLS as s,onINP as i,onTTFB as o}from"web-vitals";import"../../constants/index.js";import n from"../../utils/get-base-data.js";import"../../utils/sentry.js";import"../../utils/is-type.js";import m from"../../utils/metric2perf-data.js";import{sentryLogger as a}from"../../utils/logger.js";import{getFirstScreenPaint as p}from"./first-screen-paint.js";function u(u){a.info("Starting web vitals monitoring...");const f=t=>{a.success(`Metric: ${t.name}`,t,function(t){if("value"in t&&"number"==typeof t.value)return Math.round(t.value)}(t)),u(t)};return r(t=>{f(m(t))}),e(t=>{f(m(t))}),s(t=>{f(m(t))}),i(t=>{f(m(t))}),o(t=>{f(m(t))}),p(r=>{const e={...n(),name:"FSP",value:r,type:t.Performance,message:"First screen paint"};f(e)})}export{u as getWebVitals};
@@ -1 +1 @@
1
- "use strict";require("../../constants/index.cjs"),require("../../types/enums.cjs");var e=require("../../utils/sentry.cjs");require("../../utils/is-type.cjs");var r=require("./resource-timing.cjs"),n=require("./performance-observer-support.cjs");const t=new Set(["IMG","SCRIPT","LINK"]);exports.observeResourceElementFallback=function(s){if(n.supportsPerformanceEntryType("resource")||!("MutationObserver"in globalThis)||"function"!=typeof globalThis.MutationObserver)return()=>{};const o=[],i=new Set,a=n=>{const t=function(e){return e instanceof HTMLImageElement?e.currentSrc||e.src:e instanceof HTMLScriptElement?e.src:e.href}(n);if(!t||i.has(t)||t.includes(e.default.options.dsn))return;i.add(t);const o=function(e){return r.getResourceList().filter(r=>r.name===e).at(-1)??null}(t)??function(e,r){const n="performance"in globalThis?Math.round(globalThis.performance.now()):Date.now();return{name:e,initiatorType:r,startTime:n,responseEnd:n,duration:0,transferSize:0,encodedBodySize:0,decodedBodySize:0,fromCache:!1}}(t,n.tagName.toLowerCase());s(r.createResourceTimingData(o))},c=new globalThis.MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{(function(e){return e instanceof HTMLElement&&t.has(e.tagName)})(e)&&(e=>{const r=()=>{a(e)};e.addEventListener("load",r,{once:!0}),e.addEventListener("error",r,{once:!0}),o.push({element:e,eventName:"load",listener:r}),o.push({element:e,eventName:"error",listener:r})})(e)})})});return c.observe(document.documentElement,{childList:!0,subtree:!0}),()=>{c.disconnect(),o.forEach(({element:e,eventName:r,listener:n})=>{e.removeEventListener(r,n)})}};
1
+ "use strict";require("../../constants/index.cjs"),require("../../types/enums.cjs"),require("../../utils/sentry.cjs"),require("../../utils/is-type.cjs");var e=require("../../utils/noop.cjs");require("../../utils/logger.cjs");var r=require("./resource-timing.cjs"),n=require("./performance-observer-support.cjs");const t=new Set(["IMG","SCRIPT","LINK"]);exports.observeResourceElementFallback=function(o){if(n.supportsPerformanceEntryType("resource")||!("MutationObserver"in globalThis)||"function"!=typeof globalThis.MutationObserver)return e.noop;const s=[],i=new Set,c=e=>{const n=function(e){return e instanceof HTMLImageElement?e.currentSrc||e.src:e instanceof HTMLScriptElement?e.src:e.href}(e);if(!n||i.has(n)||r.isSdkReportUrl(n))return;i.add(n);const t=function(e){return r.getResourceList().filter(r=>r.name===e).at(-1)??null}(n)??function(e,r){const n="performance"in globalThis?Math.round(globalThis.performance.now()):Date.now();return{name:e,initiatorType:r,startTime:n,responseEnd:n,duration:0,transferSize:0,encodedBodySize:0,decodedBodySize:0,fromCache:!1}}(n,e.tagName.toLowerCase());o(r.createResourceTimingData(t))},a=new globalThis.MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{(function(e){return e instanceof HTMLElement&&t.has(e.tagName)})(e)&&(e=>{const r=()=>{c(e)};e.addEventListener("load",r,{once:!0}),e.addEventListener("error",r,{once:!0}),s.push({element:e,eventName:"load",listener:r}),s.push({element:e,eventName:"error",listener:r})})(e)})})});return a.observe(document.documentElement,{childList:!0,subtree:!0}),()=>{a.disconnect(),s.forEach(({element:e,eventName:r,listener:n})=>{e.removeEventListener(r,n)})}};
@@ -1 +1 @@
1
- import"../../constants/index.js";import"../../types/enums.js";import e from"../../utils/sentry.js";import"../../utils/is-type.js";import{createResourceTimingData as n,getResourceList as t}from"./resource-timing.js";import{supportsPerformanceEntryType as r}from"./performance-observer-support.js";const o=new Set(["IMG","SCRIPT","LINK"]);function s(s){if(r("resource")||!("MutationObserver"in globalThis)||"function"!=typeof globalThis.MutationObserver)return()=>{};const i=[],a=new Set,c=r=>{const o=function(e){return e instanceof HTMLImageElement?e.currentSrc||e.src:e instanceof HTMLScriptElement?e.src:e.href}(r);if(!o||a.has(o)||o.includes(e.options.dsn))return;a.add(o);const i=function(e){return t().filter(n=>n.name===e).at(-1)??null}(o)??function(e,n){const t="performance"in globalThis?Math.round(globalThis.performance.now()):Date.now();return{name:e,initiatorType:n,startTime:t,responseEnd:t,duration:0,transferSize:0,encodedBodySize:0,decodedBodySize:0,fromCache:!1}}(o,r.tagName.toLowerCase());s(n(i))},m=new globalThis.MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{(function(e){return e instanceof HTMLElement&&o.has(e.tagName)})(e)&&(e=>{const n=()=>{c(e)};e.addEventListener("load",n,{once:!0}),e.addEventListener("error",n,{once:!0}),i.push({element:e,eventName:"load",listener:n}),i.push({element:e,eventName:"error",listener:n})})(e)})})});return m.observe(document.documentElement,{childList:!0,subtree:!0}),()=>{m.disconnect(),i.forEach(({element:e,eventName:n,listener:t})=>{e.removeEventListener(n,t)})}}export{s as observeResourceElementFallback};
1
+ import"../../constants/index.js";import"../../types/enums.js";import"../../utils/sentry.js";import"../../utils/is-type.js";import{noop as e}from"../../utils/noop.js";import"../../utils/logger.js";import{isSdkReportUrl as t,createResourceTimingData as n,getResourceList as r}from"./resource-timing.js";import{supportsPerformanceEntryType as o}from"./performance-observer-support.js";const s=new Set(["IMG","SCRIPT","LINK"]);function i(i){if(o("resource")||!("MutationObserver"in globalThis)||"function"!=typeof globalThis.MutationObserver)return e;const a=[],c=new Set,m=e=>{const o=function(e){return e instanceof HTMLImageElement?e.currentSrc||e.src:e instanceof HTMLScriptElement?e.src:e.href}(e);if(!o||c.has(o)||t(o))return;c.add(o);const s=function(e){return r().filter(t=>t.name===e).at(-1)??null}(o)??function(e,t){const n="performance"in globalThis?Math.round(globalThis.performance.now()):Date.now();return{name:e,initiatorType:t,startTime:n,responseEnd:n,duration:0,transferSize:0,encodedBodySize:0,decodedBodySize:0,fromCache:!1}}(o,e.tagName.toLowerCase());i(n(s))},u=new globalThis.MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{(function(e){return e instanceof HTMLElement&&s.has(e.tagName)})(e)&&(e=>{const t=()=>{m(e)};e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0}),a.push({element:e,eventName:"load",listener:t}),a.push({element:e,eventName:"error",listener:t})})(e)})})});return u.observe(document.documentElement,{childList:!0,subtree:!0}),()=>{u.disconnect(),a.forEach(({element:e,eventName:t,listener:n})=>{e.removeEventListener(t,n)})}}export{i as observeResourceElementFallback};
@@ -1 +1 @@
1
- "use strict";var e=require("../../types/enums.cjs");require("../../constants/index.cjs");var r=require("../../utils/get-base-data.cjs"),t=require("../../utils/sentry.cjs");require("../../utils/is-type.cjs");var n=require("./performance-observer-support.cjs");const s=new Set(["fetch","xmlhttprequest","beacon"]);function i(e){return"resource"===e.entryType&&"initiatorType"in e}function o(e){return!s.has(e.initiatorType)&&!function(e){return""!==t.default.options.dsn&&e.name.includes(t.default.options.dsn)}(e)}function a(e){return{name:e.name,initiatorType:e.initiatorType,startTime:Math.round(e.startTime),responseEnd:Math.round(e.responseEnd),duration:Math.round(e.duration),transferSize:e.transferSize,encodedBodySize:e.encodedBodySize,decodedBodySize:e.decodedBodySize,fromCache:c(e)}}function u(t){return{...r.default(),type:e.EventType.Performance,name:"ResourceTiming",message:t.name,status:e.Status.OK,value:t.duration,extra:{resource:t}}}function c(e){return 0===e.transferSize||0!==e.transferSize&&0===e.encodedBodySize}function d(){return"performance"in globalThis&&"function"==typeof globalThis.performance.getEntriesByType?globalThis.performance.getEntriesByType("resource").filter(i).filter(o).map(a):[]}exports.createResourceTimingData=u,exports.getInitialResourceListData=function(){return{...r.default(),name:"ResourceList",type:e.EventType.Performance,status:e.Status.OK,resourceList:d()}},exports.getResourceList=d,exports.observeResourceTimings=function(e){if(!n.supportsPerformanceEntryType("resource"))return()=>{};const r=new globalThis.PerformanceObserver(r=>{r.getEntries().filter(i).filter(o).map(a).forEach(r=>{e(u(r))})});return r.observe({entryTypes:["resource"]}),()=>{r.disconnect()}};
1
+ "use strict";var e=require("../../types/enums.cjs");require("../../constants/index.cjs");var r=require("../../utils/get-base-data.cjs"),t=require("../../utils/sentry.cjs");require("../../utils/is-type.cjs");var n=require("../../utils/noop.cjs");require("../../utils/logger.cjs");var s=require("./performance-observer-support.cjs");const o=new Set(["fetch","xmlhttprequest","beacon"]);function i(e){return"resource"===e.entryType&&"initiatorType"in e}function u(e){return""!==t.default.options.dsn&&e.includes(t.default.options.dsn)}function a(e){return!o.has(e.initiatorType)&&!u(e.name)}function c(e){return{name:e.name,initiatorType:e.initiatorType,startTime:Math.round(e.startTime),responseEnd:Math.round(e.responseEnd),duration:Math.round(e.duration),transferSize:e.transferSize,encodedBodySize:e.encodedBodySize,decodedBodySize:e.decodedBodySize,fromCache:d(e)}}function p(t){return{...r.default(),type:e.EventType.Performance,name:"ResourceTiming",message:t.name,status:e.Status.OK,value:t.duration,extra:{resource:t}}}function d(e){return 0===e.transferSize||0===e.encodedBodySize}function f(){return"performance"in globalThis&&"function"==typeof globalThis.performance.getEntriesByType?globalThis.performance.getEntriesByType("resource").filter(i).filter(a).map(c):[]}exports.createResourceTimingData=p,exports.getInitialResourceListData=function(){return{...r.default(),name:"ResourceList",type:e.EventType.Performance,status:e.Status.OK,resourceList:f()}},exports.getResourceList=f,exports.isSdkReportUrl=u,exports.observeResourceTimings=function(e){if(!s.supportsPerformanceEntryType("resource"))return n.noop;const r=new globalThis.PerformanceObserver(r=>{r.getEntries().filter(i).filter(a).map(c).forEach(r=>{e(p(r))})});return r.observe({entryTypes:["resource"]}),()=>{r.disconnect()}};