posthog-js 1.90.2 → 1.91.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array.full.js +1 -1
- package/dist/array.full.js.map +1 -1
- package/dist/array.js +1 -1
- package/dist/array.js.map +1 -1
- package/dist/es.js +1 -1
- package/dist/es.js.map +1 -1
- package/dist/exception-autocapture.js +1 -1
- package/dist/exception-autocapture.js.map +1 -1
- package/dist/module.d.ts +3 -4
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/dist/recorder-v2.js +1 -1
- package/dist/recorder-v2.js.map +1 -1
- package/dist/recorder.js +1 -1
- package/dist/recorder.js.map +1 -1
- package/dist/surveys.js +1 -1
- package/dist/surveys.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/src/autocapture-utils.js +2 -1
- package/lib/src/autocapture-utils.js.map +1 -1
- package/lib/src/autocapture.js +11 -4
- package/lib/src/autocapture.js.map +1 -1
- package/lib/src/decide.js +2 -1
- package/lib/src/decide.js.map +1 -1
- package/lib/src/extensions/exception-autocapture/index.js +6 -3
- package/lib/src/extensions/exception-autocapture/index.js.map +1 -1
- package/lib/src/extensions/replay/sessionrecording.js +8 -8
- package/lib/src/extensions/replay/sessionrecording.js.map +1 -1
- package/lib/src/extensions/replay/web-performance.js +1 -0
- package/lib/src/extensions/replay/web-performance.js.map +1 -1
- package/lib/src/extensions/surveys.js +10 -2
- package/lib/src/extensions/surveys.js.map +1 -1
- package/lib/src/extensions/toolbar.d.ts +2 -2
- package/lib/src/extensions/toolbar.js +16 -13
- package/lib/src/extensions/toolbar.js.map +1 -1
- package/lib/src/gdpr-utils.js +2 -2
- package/lib/src/gdpr-utils.js.map +1 -1
- package/lib/src/loader-exception-autocapture.js +4 -3
- package/lib/src/loader-exception-autocapture.js.map +1 -1
- package/lib/src/loader-recorder-v2.js +7 -4
- package/lib/src/loader-recorder-v2.js.map +1 -1
- package/lib/src/loader-recorder.js +6 -6
- package/lib/src/loader-recorder.js.map +1 -1
- package/lib/src/loader-surveys.js +5 -3
- package/lib/src/loader-surveys.js.map +1 -1
- package/lib/src/page-view.js +14 -11
- package/lib/src/page-view.js.map +1 -1
- package/lib/src/posthog-core.js +21 -22
- package/lib/src/posthog-core.js.map +1 -1
- package/lib/src/posthog-surveys.js +7 -4
- package/lib/src/posthog-surveys.js.map +1 -1
- package/lib/src/retry-queue.js +2 -1
- package/lib/src/retry-queue.js.map +1 -1
- package/lib/src/session-props.d.ts +1 -2
- package/lib/src/session-props.js +2 -2
- package/lib/src/session-props.js.map +1 -1
- package/lib/src/sessionid.js +1 -1
- package/lib/src/sessionid.js.map +1 -1
- package/lib/src/storage.d.ts +1 -1
- package/lib/src/storage.js +18 -8
- package/lib/src/storage.js.map +1 -1
- package/lib/src/utils/event-utils.js +16 -10
- package/lib/src/utils/event-utils.js.map +1 -1
- package/lib/src/utils/globals.d.ts +5 -4
- package/lib/src/utils/globals.js +7 -5
- package/lib/src/utils/globals.js.map +1 -1
- package/lib/src/utils/index.js +7 -4
- package/lib/src/utils/index.js.map +1 -1
- package/lib/src/utils/logger.js +5 -2
- package/lib/src/utils/logger.js.map +1 -1
- package/lib/src/uuidv7.js +1 -1
- package/lib/src/uuidv7.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(){"use strict";function e(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function n(n){for(var r=1;r<arguments.length;r++){var o=null!=arguments[r]?arguments[r]:{};r%2?e(Object(o),!0).forEach((function(e){t(n,e,o[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):e(Object(o)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}))}return n}function r(e,n){for(var r=0;r<n.length;r++){var t=n[r];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,t.key,t)}}function t(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function o(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var t,o,i=[],a=!0,c=!1;try{for(r=r.call(e);!(a=(t=r.next()).done)&&(i.push(t.value),!n||i.length!==n);a=!0);}catch(e){c=!0,o=e}finally{try{a||null==r.return||r.return()}finally{if(c)throw o}}return i}(e,n)||i(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,n){if(e){if("string"==typeof e)return a(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(e,n):void 0}}function a(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}function c(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=i(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var t=0,o=function(){};return{s:o,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return c=e.done,e},e:function(e){u=!0,a=e},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw a}}}}var u="undefined"!=typeof window?window:{},l=u.navigator||{userAgent:""};u.document,l.userAgent;var s=Array.isArray,f=Object.prototype.toString,p=s||function(e){return"[object Array]"===f.call(e)},d=function(e){try{return/^\s*\bfunction\b/.test(e)}catch(e){return!1}},v=function(e){return e===Object(e)&&!p(e)},g=function(e){return void 0===e},h=function(e){return"[object String]"==f.call(e)},y=function(e){return null===e},_=function(e){return"[object Number]"==f.call(e)};function b(e){return!g(Event)&&x(e,Event)}function x(e,n){try{return e instanceof n}catch(e){return!1}}function O(e){return y(e)||!v(e)&&!d(e)}function E(e,n){return Object.prototype.toString.call(e)==="[object ".concat(n,"]")}function m(e){return E(e,"DOMError")}var j=/\(error: (.*)\)/,w=50,$="?";function S(e,n,r,t){var o={filename:e,function:n,in_app:!0};return g(r)||(o.lineno=r),g(t)||(o.colno=t),o}var T=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,H=/\((\S*)(?::(\d+))(?::(\d+))\)/,P=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,R=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,A=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i;var D=function(){for(var e=arguments.length,r=new Array(e),t=0;t<e;t++)r[t]=arguments[t];var o=r.sort((function(e,n){return e[0]-n[0]})).map((function(e){return e[1]}));return function(e){for(var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=[],i=e.split("\n"),a=r;a<i.length;a++){var u=i[a];if(!(u.length>1024)){var l=j.test(u)?u.replace(j,"$1"):u;if(!l.match(/\S*Error: /)){var s,f=c(o);try{for(f.s();!(s=f.n()).done;){var p=(0,s.value)(l);if(p){t.push(p);break}}}catch(e){f.e(e)}finally{f.f()}if(t.length>=w)break}}}return function(e){if(!e.length)return[];var r=e.slice(0,w);return r.reverse(),r.map((function(e){return n(n({},e),{},{filename:e.filename||r[r.length-1].filename,function:e.function||"?"})}))}(t)}}.apply(void 0,[[30,function(e){var n=T.exec(e);if(n){if(n[2]&&0===n[2].indexOf("eval")){var r=H.exec(n[2]);r&&(n[2]=r[1],n[3]=r[2],n[4]=r[3])}var t=o(U(n[1]||$,n[2]),2),i=t[0];return S(t[1],i,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}}],[50,function(e){var n=P.exec(e);if(n){if(n[3]&&n[3].indexOf(" > eval")>-1){var r=R.exec(n[3]);r&&(n[1]=n[1]||"eval",n[3]=r[1],n[4]=r[2],n[5]="")}var t=n[3],i=n[1]||$,a=o(U(i,t),2);return i=a[0],S(t=a[1],i,n[4]?+n[4]:void 0,n[5]?+n[5]:void 0)}}],[40,function(e){var n=A.exec(e);return n?S(n[2],n[1]||$,+n[3],n[4]?+n[4]:void 0):void 0}]]),U=function(e,n){var r=-1!==e.indexOf("safari-extension"),t=-1!==e.indexOf("safari-web-extension");return r||t?[-1!==e.indexOf("@")?e.split("@")[0]:$,r?"safari-extension:".concat(n):"safari-web-extension:".concat(n)]:[e,n]},k=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,I=/Minified React error #\d+;/i;function M(e){var n=e.stacktrace||e.stack||"",r=function(e){if(e){if(_(e.framesToPop))return e.framesToPop;if(I.test(e.message))return 1}return 0}(e);try{return D(n,r)}catch(e){}return[]}function N(e){var n=M(e);return{$exception_type:e.name,$exception_message:e.message,$exception_stack_trace_raw:JSON.stringify(n)}}function C(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:40,r=Object.keys(e);if(r.sort(),!r.length)return"[object has no keys]";for(var t=r.length;t>0;t--){var o=r.slice(0,t).join(", ");if(!(o.length>n))return t===r.length||o.length<=n?o:"".concat(o.slice(0,n),"...")}return""}function G(e){var r=o(e,5),t=r[0],i=r[1],a=r[2],c=r[3],u=r[4],l={};if(g(u)&&h(t)){var s="Error",f=t,p=t.match(k);p&&(s=p[1],f=p[2]),l={$exception_type:s,$exception_message:f}}var d=u||t;if(m(d)||function(e){return E(e,"DOMException")}(d)){var v=d;if(function(e){return"stack"in e}(d))l=N(d);else{var y=v.name||(m(v)?"DOMError":"DOMException"),_=v.message?"".concat(y,": ").concat(v.message):y;l=function(e){return{$exception_type:"Error",$exception_message:e}}(_),l.$exception_type=m(v)?"DOMError":"DOMException",l.$exception_message=l.$exception_message||_}"code"in v&&(l.$exception_DOMException_code="".concat(v.code))}else if(function(e){return E(e,"ErrorEvent")}(d)&&d.error)l=N(d.error);else if(function(e){switch(Object.prototype.toString.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return x(e,Error)}}(d))l=N(d);else if(function(e){return E(e,"Object")}(d)||b(d)){l=function(e){return{$exception_type:b(e)?e.constructor.name:"Error",$exception_message:"Non-Error ".concat("exception"," captured with keys: ",C(e))}}(d),l.$exception_is_synthetic=!0}else l.$exception_type=l.$exception_type||"Error",l.$exception_message=l.$exception_message||d,l.$exception_is_synthetic=!0;return n(n(n(n({},l),{},{$exception_type:l.$exception_type||"UnknownErrorType",$exception_message:l.$exception_message||""},i?{$exception_source:i}:{}),a?{$exception_lineno:a}:{}),c?{$exception_colno:c}:{})}var z="[PostHog.js]",W={_log:function(e){if(u.POSTHOG_DEBUG&&!g(u.console)&&u.console){for(var n=("__rrweb_original__"in u.console[e]?u.console[e].__rrweb_original__:u.console[e]),r=arguments.length,t=new Array(r>1?r-1:0),o=1;o<r;o++)t[o-1]=arguments[o];n.apply(void 0,[z].concat(t))}},info:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];W._log.apply(W,["log"].concat(n))},warn:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];W._log.apply(W,["warn"].concat(n))},error:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];W._log.apply(W,["error"].concat(n))},critical:function(){for(var e,n=arguments.length,r=new Array(n),t=0;t<n;t++)r[t]=arguments[t];(e=console).error.apply(e,[z].concat(r))},uninitializedWarning:function(e){W.error("You must initialize PostHog before calling ".concat(e))}},B=function(e,n){var r=new J(e);return r.afterDecideResponse(n),r},J=function(){function e(n){!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),t(this,"originalOnErrorHandler",void 0),t(this,"originalOnUnhandledRejectionHandler",void 0),t(this,"errorsToIgnore",[]),this.instance=n}var i,a,c;return i=e,a=[{key:"startCapturing",value:function(){var e;if(this.isEnabled()&&(null===(e=u.onerror)||void 0===e||!e.__POSTHOG_INSTRUMENTED__))try{this.originalOnErrorHandler=u.onerror,u.onerror=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return this.captureException(n),!!this.originalOnErrorHandler&&this.originalOnErrorHandler.apply(this,n)}.bind(this),u.onerror.__POSTHOG_INSTRUMENTED__=!0,this.originalOnUnhandledRejectionHandler=u.onunhandledrejection,u.onunhandledrejection=function(){for(var e=arguments.length,r=new Array(e),t=0;t<e;t++)r[t]=arguments[t];var i=function(e){var r=o(e,1)[0],t=r;try{"reason"in r?t=r.reason:"detail"in r&&"reason"in r.detail&&(t=r.detail.reason)}catch(e){}var i={};return(i=O(t)?{$exception_message:"Non-Error promise rejection captured with value: ".concat(String(t))}:G([t])).$exception_handled=!1,n(n({},i),{},{$exception_type:i.$exception_type="UnhandledRejection",$exception_message:i.$exception_message=i.$exception_message||r.reason||String(t)})}(r);return this.sendExceptionEvent(i),!this.originalOnUnhandledRejectionHandler||this.originalOnUnhandledRejectionHandler.apply(u,r)}.bind(this),u.onunhandledrejection.__POSTHOG_INSTRUMENTED__=!0}catch(e){W.error("PostHog failed to start exception autocapture",e),this.stopCapturing()}}},{key:"stopCapturing",value:function(){var e,n;g(this.originalOnErrorHandler)||(u.onerror=this.originalOnErrorHandler,this.originalOnErrorHandler=null),null===(e=u.onerror)||void 0===e||delete e.__POSTHOG_INSTRUMENTED__,g(this.originalOnUnhandledRejectionHandler)||(u.onunhandledrejection=this.originalOnUnhandledRejectionHandler,this.originalOnUnhandledRejectionHandler=null),null===(n=u.onunhandledrejection)||void 0===n||delete n.__POSTHOG_INSTRUMENTED__}},{key:"isCapturing",value:function(){var e;return!(null===(e=u.onerror)||void 0===e||!e.__POSTHOG_INSTRUMENTED__)}},{key:"isEnabled",value:function(){var e;return null!==(e=this.remoteEnabled)&&void 0!==e&&e}},{key:"afterDecideResponse",value:function(e){var n=e.autocaptureExceptions;if(this.remoteEnabled=!!n||!1,!O(n)&&"errors_to_ignore"in n&&p(n.errors_to_ignore)){var r=n.errors_to_ignore;this.errorsToIgnore=r.map((function(e){return new RegExp(e)}))}this.isEnabled()&&(this.startCapturing(),W.info("[Exception Capture] Remote config for exception autocapture is enabled, starting with config: ",v(n)?n:{}))}},{key:"captureException",value:function(e,r){var t=G(e);if(this.errorsToIgnore.some((function(e){return e.test(t.$exception_message||"")})))W.info("[Exception Capture] Ignoring exception based on remote config",t);else{var o=n(n({},r),t),i=this.instance.config.ui_host||this.instance.config.api_host;t.$exception_personURL=i+"/person/"+this.instance.get_distinct_id(),this.sendExceptionEvent(o)}}},{key:"sendExceptionEvent",value:function(e){this.instance.capture("$exception",e,{transport:"XHR",method:"POST",endpoint:"/e/",_noTruncate:!0,_batchKey:"exceptionEvent"})}}],a&&r(i.prototype,a),c&&r(i,c),Object.defineProperty(i,"prototype",{writable:!1}),e}();(g(window)?{}:window).extendPostHogWithExceptionAutoCapture=B}();
|
|
1
|
+
!function(){"use strict";function e(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function n(n){for(var r=1;r<arguments.length;r++){var o=null!=arguments[r]?arguments[r]:{};r%2?e(Object(o),!0).forEach((function(e){t(n,e,o[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):e(Object(o)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}))}return n}function r(e,n){for(var r=0;r<n.length;r++){var t=n[r];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,t.key,t)}}function t(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function o(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var t,o,i=[],a=!0,c=!1;try{for(r=r.call(e);!(a=(t=r.next()).done)&&(i.push(t.value),!n||i.length!==n);a=!0);}catch(e){c=!0,o=e}finally{try{a||null==r.return||r.return()}finally{if(c)throw o}}return i}(e,n)||i(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,n){if(e){if("string"==typeof e)return a(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(e,n):void 0}}function a(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}function c(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=i(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var t=0,o=function(){};return{s:o,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return c=e.done,e},e:function(e){u=!0,a=e},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw a}}}}var u="undefined"!=typeof window?window:void 0,l=null==u?void 0:u.navigator;null==u||u.document,null==l||l.userAgent;var s=null!=u?u:{},f=Array.isArray,p=Object.prototype.toString,d=f||function(e){return"[object Array]"===p.call(e)},v=function(e){try{return/^\s*\bfunction\b/.test(e)}catch(e){return!1}},g=function(e){return e===Object(e)&&!d(e)},h=function(e){return void 0===e},y=function(e){return"[object String]"==p.call(e)},_=function(e){return null===e},b=function(e){return"[object Number]"==p.call(e)};function x(e){return!h(Event)&&O(e,Event)}function O(e,n){try{return e instanceof n}catch(e){return!1}}function E(e){return _(e)||!g(e)&&!v(e)}function m(e,n){return Object.prototype.toString.call(e)==="[object ".concat(n,"]")}function j(e){return m(e,"DOMError")}var w=/\(error: (.*)\)/,$=50,S="?";function T(e,n,r,t){var o={filename:e,function:n,in_app:!0};return h(r)||(o.lineno=r),h(t)||(o.colno=t),o}var H=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,P=/\((\S*)(?::(\d+))(?::(\d+))\)/,R=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,A=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,D=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i;var U=function(){for(var e=arguments.length,r=new Array(e),t=0;t<e;t++)r[t]=arguments[t];var o=r.sort((function(e,n){return e[0]-n[0]})).map((function(e){return e[1]}));return function(e){for(var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=[],i=e.split("\n"),a=r;a<i.length;a++){var u=i[a];if(!(u.length>1024)){var l=w.test(u)?u.replace(w,"$1"):u;if(!l.match(/\S*Error: /)){var s,f=c(o);try{for(f.s();!(s=f.n()).done;){var p=(0,s.value)(l);if(p){t.push(p);break}}}catch(e){f.e(e)}finally{f.f()}if(t.length>=$)break}}}return function(e){if(!e.length)return[];var r=e.slice(0,$);return r.reverse(),r.map((function(e){return n(n({},e),{},{filename:e.filename||r[r.length-1].filename,function:e.function||"?"})}))}(t)}}.apply(void 0,[[30,function(e){var n=H.exec(e);if(n){if(n[2]&&0===n[2].indexOf("eval")){var r=P.exec(n[2]);r&&(n[2]=r[1],n[3]=r[2],n[4]=r[3])}var t=o(k(n[1]||S,n[2]),2),i=t[0];return T(t[1],i,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}}],[50,function(e){var n=R.exec(e);if(n){if(n[3]&&n[3].indexOf(" > eval")>-1){var r=A.exec(n[3]);r&&(n[1]=n[1]||"eval",n[3]=r[1],n[4]=r[2],n[5]="")}var t=n[3],i=n[1]||S,a=o(k(i,t),2);return i=a[0],T(t=a[1],i,n[4]?+n[4]:void 0,n[5]?+n[5]:void 0)}}],[40,function(e){var n=D.exec(e);return n?T(n[2],n[1]||S,+n[3],n[4]?+n[4]:void 0):void 0}]]),k=function(e,n){var r=-1!==e.indexOf("safari-extension"),t=-1!==e.indexOf("safari-web-extension");return r||t?[-1!==e.indexOf("@")?e.split("@")[0]:S,r?"safari-extension:".concat(n):"safari-web-extension:".concat(n)]:[e,n]},I=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,M=/Minified React error #\d+;/i;function N(e){var n=e.stacktrace||e.stack||"",r=function(e){if(e){if(b(e.framesToPop))return e.framesToPop;if(M.test(e.message))return 1}return 0}(e);try{return U(n,r)}catch(e){}return[]}function C(e){var n=N(e);return{$exception_type:e.name,$exception_message:e.message,$exception_stack_trace_raw:JSON.stringify(n)}}function G(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:40,r=Object.keys(e);if(r.sort(),!r.length)return"[object has no keys]";for(var t=r.length;t>0;t--){var o=r.slice(0,t).join(", ");if(!(o.length>n))return t===r.length||o.length<=n?o:"".concat(o.slice(0,n),"...")}return""}function z(e){var r=o(e,5),t=r[0],i=r[1],a=r[2],c=r[3],u=r[4],l={};if(h(u)&&y(t)){var s="Error",f=t,p=t.match(I);p&&(s=p[1],f=p[2]),l={$exception_type:s,$exception_message:f}}var d=u||t;if(j(d)||function(e){return m(e,"DOMException")}(d)){var v=d;if(function(e){return"stack"in e}(d))l=C(d);else{var g=v.name||(j(v)?"DOMError":"DOMException"),_=v.message?"".concat(g,": ").concat(v.message):g;l=function(e){return{$exception_type:"Error",$exception_message:e}}(_),l.$exception_type=j(v)?"DOMError":"DOMException",l.$exception_message=l.$exception_message||_}"code"in v&&(l.$exception_DOMException_code="".concat(v.code))}else if(function(e){return m(e,"ErrorEvent")}(d)&&d.error)l=C(d.error);else if(function(e){switch(Object.prototype.toString.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return O(e,Error)}}(d))l=C(d);else if(function(e){return m(e,"Object")}(d)||x(d)){l=function(e){return{$exception_type:x(e)?e.constructor.name:"Error",$exception_message:"Non-Error ".concat("exception"," captured with keys: ",G(e))}}(d),l.$exception_is_synthetic=!0}else l.$exception_type=l.$exception_type||"Error",l.$exception_message=l.$exception_message||d,l.$exception_is_synthetic=!0;return n(n(n(n({},l),{},{$exception_type:l.$exception_type||"UnknownErrorType",$exception_message:l.$exception_message||""},i?{$exception_source:i}:{}),a?{$exception_lineno:a}:{}),c?{$exception_colno:c}:{})}var W="[PostHog.js]",B={_log:function(e){if(u&&s.POSTHOG_DEBUG&&!h(u.console)&&u.console){for(var n=("__rrweb_original__"in u.console[e]?u.console[e].__rrweb_original__:u.console[e]),r=arguments.length,t=new Array(r>1?r-1:0),o=1;o<r;o++)t[o-1]=arguments[o];n.apply(void 0,[W].concat(t))}},info:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];B._log.apply(B,["log"].concat(n))},warn:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];B._log.apply(B,["warn"].concat(n))},error:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];B._log.apply(B,["error"].concat(n))},critical:function(){for(var e,n=arguments.length,r=new Array(n),t=0;t<n;t++)r[t]=arguments[t];(e=console).error.apply(e,[W].concat(r))},uninitializedWarning:function(e){B.error("You must initialize PostHog before calling ".concat(e))}},J=function(e,n){var r=new K(e);return r.afterDecideResponse(n),r},K=function(){function e(n){!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),t(this,"originalOnErrorHandler",void 0),t(this,"originalOnUnhandledRejectionHandler",void 0),t(this,"errorsToIgnore",[]),this.instance=n}var i,a,c;return i=e,a=[{key:"startCapturing",value:function(){var e;if(u&&this.isEnabled()&&(null===(e=u.onerror)||void 0===e||!e.__POSTHOG_INSTRUMENTED__))try{this.originalOnErrorHandler=u.onerror,u.onerror=function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return this.captureException(n),!!this.originalOnErrorHandler&&this.originalOnErrorHandler.apply(this,n)}.bind(this),u.onerror.__POSTHOG_INSTRUMENTED__=!0,this.originalOnUnhandledRejectionHandler=u.onunhandledrejection,u.onunhandledrejection=function(){for(var e=arguments.length,r=new Array(e),t=0;t<e;t++)r[t]=arguments[t];var i=function(e){var r=o(e,1)[0],t=r;try{"reason"in r?t=r.reason:"detail"in r&&"reason"in r.detail&&(t=r.detail.reason)}catch(e){}var i={};return(i=E(t)?{$exception_message:"Non-Error promise rejection captured with value: ".concat(String(t))}:z([t])).$exception_handled=!1,n(n({},i),{},{$exception_type:i.$exception_type="UnhandledRejection",$exception_message:i.$exception_message=i.$exception_message||r.reason||String(t)})}(r);return this.sendExceptionEvent(i),!u||!this.originalOnUnhandledRejectionHandler||this.originalOnUnhandledRejectionHandler.apply(u,r)}.bind(this),u.onunhandledrejection.__POSTHOG_INSTRUMENTED__=!0}catch(e){B.error("PostHog failed to start exception autocapture",e),this.stopCapturing()}}},{key:"stopCapturing",value:function(){var e,n;u&&(h(this.originalOnErrorHandler)||(u.onerror=this.originalOnErrorHandler,this.originalOnErrorHandler=null),null===(e=u.onerror)||void 0===e||delete e.__POSTHOG_INSTRUMENTED__,h(this.originalOnUnhandledRejectionHandler)||(u.onunhandledrejection=this.originalOnUnhandledRejectionHandler,this.originalOnUnhandledRejectionHandler=null),null===(n=u.onunhandledrejection)||void 0===n||delete n.__POSTHOG_INSTRUMENTED__)}},{key:"isCapturing",value:function(){var e;return!(null==u||null===(e=u.onerror)||void 0===e||!e.__POSTHOG_INSTRUMENTED__)}},{key:"isEnabled",value:function(){var e;return null!==(e=this.remoteEnabled)&&void 0!==e&&e}},{key:"afterDecideResponse",value:function(e){var n=e.autocaptureExceptions;if(this.remoteEnabled=!!n||!1,!E(n)&&"errors_to_ignore"in n&&d(n.errors_to_ignore)){var r=n.errors_to_ignore;this.errorsToIgnore=r.map((function(e){return new RegExp(e)}))}this.isEnabled()&&(this.startCapturing(),B.info("[Exception Capture] Remote config for exception autocapture is enabled, starting with config: ",g(n)?n:{}))}},{key:"captureException",value:function(e,r){var t=z(e);if(this.errorsToIgnore.some((function(e){return e.test(t.$exception_message||"")})))B.info("[Exception Capture] Ignoring exception based on remote config",t);else{var o=n(n({},r),t),i=this.instance.config.ui_host||this.instance.config.api_host;t.$exception_personURL=i+"/person/"+this.instance.get_distinct_id(),this.sendExceptionEvent(o)}}},{key:"sendExceptionEvent",value:function(e){this.instance.capture("$exception",e,{transport:"XHR",method:"POST",endpoint:"/e/",_noTruncate:!0,_batchKey:"exceptionEvent"})}}],a&&r(i.prototype,a),c&&r(i,c),Object.defineProperty(i,"prototype",{writable:!1}),e}();u.extendPostHogWithExceptionAutoCapture=J}();
|
|
2
2
|
//# sourceMappingURL=exception-autocapture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exception-autocapture.js","sources":["../src/utils/globals.ts","../src/utils/type-utils.ts","../src/extensions/exception-autocapture/type-checking.ts","../src/extensions/exception-autocapture/stack-trace.ts","../src/extensions/exception-autocapture/error-conversion.ts","../src/utils/logger.ts","../src/extensions/exception-autocapture/index.ts","../src/loader-exception-autocapture.ts"],"sourcesContent":["/*\n * Saved references to long variable names, so that bundling can minimize file size.\n */\nexport const ArrayProto = Array.prototype\nexport const nativeForEach = ArrayProto.forEach\nexport const nativeIndexOf = ArrayProto.indexOf\nexport const win: Window & typeof globalThis = typeof window !== 'undefined' ? window : ({} as typeof window)\nconst navigator = win.navigator || { userAgent: '' }\nconst document = win.document || {}\nconst userAgent = navigator.userAgent\n\nexport { win as window, userAgent, document }\n","// eslint-disable-next-line posthog-js/no-direct-array-check\nconst nativeIsArray = Array.isArray\nconst ObjProto = Object.prototype\nexport const hasOwnProperty = ObjProto.hasOwnProperty\nconst toString = ObjProto.toString\n\nexport const _isArray =\n nativeIsArray ||\n function (obj: any): obj is any[] {\n return toString.call(obj) === '[object Array]'\n }\nexport const _isUint8Array = function (x: unknown): x is Uint8Array {\n return toString.call(x) === '[object Uint8Array]'\n}\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\nexport const _isFunction = function (f: any): f is (...args: any[]) => any {\n try {\n // eslint-disable-next-line posthog-js/no-direct-function-check\n return /^\\s*\\bfunction\\b/.test(f)\n } catch (x) {\n return false\n }\n}\n// Underscore Addons\nexport const _isObject = function (x: unknown): x is Record<string, any> {\n // eslint-disable-next-line posthog-js/no-direct-object-check\n return x === Object(x) && !_isArray(x)\n}\nexport const _isEmptyObject = function (x: unknown): x is Record<string, any> {\n if (_isObject(x)) {\n for (const key in x) {\n if (hasOwnProperty.call(x, key)) {\n return false\n }\n }\n return true\n }\n return false\n}\nexport const _isUndefined = function (x: unknown): x is undefined {\n return x === void 0\n}\nexport const _isString = function (x: unknown): x is string {\n // eslint-disable-next-line posthog-js/no-direct-string-check\n return toString.call(x) == '[object String]'\n}\nexport const _isNull = function (x: unknown): x is null {\n // eslint-disable-next-line posthog-js/no-direct-null-check\n return x === null\n}\nexport const _isDate = function (x: unknown): x is Date {\n // eslint-disable-next-line posthog-js/no-direct-date-check\n return toString.call(x) == '[object Date]'\n}\nexport const _isNumber = function (x: unknown): x is number {\n // eslint-disable-next-line posthog-js/no-direct-number-check\n return toString.call(x) == '[object Number]'\n}\nexport const _isBoolean = function (x: unknown): x is boolean {\n // eslint-disable-next-line posthog-js/no-direct-boolean-check\n return toString.call(x) === '[object Boolean]'\n}\n","import { _isFunction, _isNull, _isObject, _isUndefined } from '../../utils/type-utils'\n\nexport function isEvent(candidate: unknown): candidate is Event {\n return !_isUndefined(Event) && isInstanceOf(candidate, Event)\n}\n\nexport function isPlainObject(candidate: unknown): candidate is Record<string, unknown> {\n return isBuiltin(candidate, 'Object')\n}\n\nexport function isInstanceOf(candidate: unknown, base: any): boolean {\n try {\n return candidate instanceof base\n } catch (_e) {\n return false\n }\n}\n\nexport function isPrimitive(\n candidate: unknown\n): candidate is number | string | boolean | bigint | symbol | null | undefined {\n return _isNull(candidate) || (!_isObject(candidate) && !_isFunction(candidate))\n}\n\nexport function isError(candidate: unknown): candidate is Error {\n switch (Object.prototype.toString.call(candidate)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true\n default:\n return isInstanceOf(candidate, Error)\n }\n}\n\nexport function isErrorEvent(event: string | Error | Event): event is ErrorEvent {\n return isBuiltin(event, 'ErrorEvent')\n}\n\nexport function isErrorWithStack(candidate: unknown): candidate is Error {\n return 'stack' in (candidate as Error)\n}\n\nexport function isBuiltin(candidate: unknown, className: string): boolean {\n return Object.prototype.toString.call(candidate) === `[object ${className}]`\n}\n\nexport function isDOMException(candidate: unknown): boolean {\n return isBuiltin(candidate, 'DOMException')\n}\n\nexport function isDOMError(candidate: unknown): boolean {\n return isBuiltin(candidate, 'DOMError')\n}\n","// copied and adapted from https://github.com/getsentry/sentry-javascript/blob/41fef4b10f3a644179b77985f00f8696c908539f/packages/browser/src/stack-parsers.ts\n// 💖open source\n\n// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re-written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport { _isUndefined } from '../../utils/type-utils'\n\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/\nconst STACKTRACE_FRAME_LIMIT = 50\n\nconst UNKNOWN_FUNCTION = '?'\n\nconst OPERA10_PRIORITY = 10\nconst OPERA11_PRIORITY = 20\nconst CHROME_PRIORITY = 30\nconst WINJS_PRIORITY = 40\nconst GECKO_PRIORITY = 50\n\nexport interface StackFrame {\n filename?: string\n function?: string\n module?: string\n platform?: string\n lineno?: number\n colno?: number\n abs_path?: string\n context_line?: string\n pre_context?: string[]\n post_context?: string[]\n in_app?: boolean\n instruction_addr?: string\n addr_mode?: string\n vars?: { [key: string]: any }\n debug_id?: string\n}\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n in_app: true, // All browser frames are considered in_app\n }\n\n if (!_isUndefined(lineno)) {\n frame.lineno = lineno\n }\n\n if (!_isUndefined(colno)) {\n frame.colno = colno\n }\n\n return frame\n}\n\nexport type StackParser = (stack: string, skipFirst?: number) => StackFrame[]\nexport type StackLineParserFn = (line: string) => StackFrame | undefined\nexport type StackLineParser = [number, StackLineParserFn]\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/\n\nconst chrome: StackLineParserFn = (line) => {\n const parts = chromeRegex.exec(line)\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0 // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2])\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1] // url\n parts[3] = subMatch[2] // line\n parts[4] = subMatch[3] // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2])\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined)\n }\n\n return\n}\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chrome]\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i\n\nconst gecko: StackLineParserFn = (line) => {\n const parts = geckoREgex.exec(line)\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3])\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval'\n parts[3] = subMatch[1]\n parts[4] = subMatch[2]\n parts[5] = '' // no column when eval\n }\n }\n\n let filename = parts[3]\n let func = parts[1] || UNKNOWN_FUNCTION\n ;[func, filename] = extractSafariExtensionDetails(func, filename)\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined)\n }\n\n return\n}\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko]\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i\n\nconst winjs: StackLineParserFn = (line) => {\n const parts = winjsRegex.exec(line)\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined\n}\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs]\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i\n\nconst opera10: StackLineParserFn = (line) => {\n const parts = opera10Regex.exec(line)\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined\n}\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10]\n\nconst opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i\n\nconst opera11: StackLineParserFn = (line) => {\n const parts = opera11Regex.exec(line)\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined\n}\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11]\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser]\n\nexport function reverse(stack: ReadonlyArray<StackFrame>): StackFrame[] {\n if (!stack.length) {\n return []\n }\n\n const localStack = stack.slice(0, STACKTRACE_FRAME_LIMIT)\n\n localStack.reverse()\n\n return localStack.map((frame) => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }))\n}\n\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map((p) => p[1])\n\n return (stack: string, skipFirst = 0): StackFrame[] => {\n const frames: StackFrame[] = []\n const lines = stack.split('\\n')\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i]\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine)\n\n if (frame) {\n frames.push(frame)\n break\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break\n }\n }\n\n return reverse(frames)\n }\n}\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers)\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename]\n}\n","import {\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isErrorWithStack,\n isEvent,\n isPlainObject,\n isPrimitive,\n} from './type-checking'\nimport { defaultStackParser, StackFrame } from './stack-trace'\n\nimport { _isNumber, _isString, _isUndefined } from '../../utils/type-utils'\n\n/**\n * based on the very wonderful MIT licensed Sentry SDK\n */\n\nconst ERROR_TYPES_PATTERN =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i\n\nexport type ErrorEventArgs = [\n event: string | Event,\n source?: string | undefined,\n lineno?: number | undefined,\n colno?: number | undefined,\n error?: Error | undefined\n]\n\nexport interface ErrorProperties {\n $exception_type: string\n $exception_message: string\n $exception_source?: string\n $exception_lineno?: number\n $exception_colno?: number\n $exception_DOMException_code?: string\n $exception_is_synthetic?: boolean\n $exception_stack_trace_raw?: string\n $exception_handled?: boolean\n $exception_personURL?: string\n}\n\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (_isNumber(ex.framesToPop)) {\n return ex.framesToPop\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1\n }\n }\n\n return 0\n}\n\nexport function parseStackFrames(ex: Error & { framesToPop?: number; stacktrace?: string }): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || ''\n\n const popSize = getPopSize(ex)\n\n try {\n return defaultStackParser(stacktrace, popSize)\n } catch (e) {\n // no-empty\n }\n\n return []\n}\n\nfunction errorPropertiesFromError(error: Error): ErrorProperties {\n const frames = parseStackFrames(error)\n\n return {\n $exception_type: error.name,\n $exception_message: error.message,\n $exception_stack_trace_raw: JSON.stringify(frames),\n }\n}\n\nfunction errorPropertiesFromString(candidate: string): ErrorProperties {\n return {\n $exception_type: 'Error',\n $exception_message: candidate,\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception: Record<string, unknown>, maxLength = 40): string {\n const keys = Object.keys(exception)\n keys.sort()\n\n if (!keys.length) {\n return '[object has no keys]'\n }\n\n for (let i = keys.length; i > 0; i--) {\n const serialized = keys.slice(0, i).join(', ')\n if (serialized.length > maxLength) {\n continue\n }\n if (i === keys.length) {\n return serialized\n }\n return serialized.length <= maxLength ? serialized : `${serialized.slice(0, maxLength)}...`\n }\n\n return ''\n}\n\nfunction errorPropertiesFromObject(candidate: Record<string, unknown>): ErrorProperties {\n return {\n $exception_type: isEvent(candidate) ? candidate.constructor.name : 'Error',\n $exception_message: `Non-Error ${'exception'} captured with keys: ${extractExceptionKeysForMessage(candidate)}`,\n }\n}\n\nexport function errorToProperties([event, source, lineno, colno, error]: ErrorEventArgs): ErrorProperties {\n // exception type and message are not optional but, it's useful to start off without them enforced\n let errorProperties: Omit<ErrorProperties, '$exception_type' | '$exception_message'> & {\n $exception_type?: string\n $exception_message?: string\n } = {}\n\n if (_isUndefined(error) && _isString(event)) {\n let name = 'Error'\n let message = event\n const groups = event.match(ERROR_TYPES_PATTERN)\n if (groups) {\n name = groups[1]\n message = groups[2]\n }\n errorProperties = {\n $exception_type: name,\n $exception_message: message,\n }\n }\n\n const candidate = error || event\n\n if (isDOMError(candidate) || isDOMException(candidate)) {\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n\n const domException = candidate as unknown as DOMException\n\n if (isErrorWithStack(candidate)) {\n errorProperties = errorPropertiesFromError(candidate as Error)\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException')\n const message = domException.message ? `${name}: ${domException.message}` : name\n errorProperties = errorPropertiesFromString(message)\n errorProperties.$exception_type = isDOMError(domException) ? 'DOMError' : 'DOMException'\n errorProperties.$exception_message = errorProperties.$exception_message || message\n }\n if ('code' in domException) {\n errorProperties['$exception_DOMException_code'] = `${domException.code}`\n }\n } else if (isErrorEvent(candidate as ErrorEvent) && (candidate as ErrorEvent).error) {\n errorProperties = errorPropertiesFromError((candidate as ErrorEvent).error as Error)\n } else if (isError(candidate)) {\n errorProperties = errorPropertiesFromError(candidate)\n } else if (isPlainObject(candidate) || isEvent(candidate)) {\n // group these by using the keys available on the object\n const objectException = candidate as Record<string, unknown>\n errorProperties = errorPropertiesFromObject(objectException)\n errorProperties.$exception_is_synthetic = true\n } else {\n // If none of previous checks were valid, then it must be a string\n errorProperties.$exception_type = errorProperties.$exception_type || 'Error'\n errorProperties.$exception_message = errorProperties.$exception_message || candidate\n errorProperties.$exception_is_synthetic = true\n }\n\n return {\n ...errorProperties,\n // now we make sure the mandatory fields that were made optional are present\n $exception_type: errorProperties.$exception_type || 'UnknownErrorType',\n $exception_message: errorProperties.$exception_message || '',\n ...(source\n ? {\n $exception_source: source, // TODO get this from URL if not present\n }\n : {}),\n ...(lineno ? { $exception_lineno: lineno } : {}),\n ...(colno ? { $exception_colno: colno } : {}),\n }\n}\n\nexport function unhandledRejectionToProperties([ev]: [ev: PromiseRejectionEvent]): ErrorProperties {\n // dig the object of the rejection out of known event types\n let error: unknown = ev\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in ev) {\n error = ev.reason\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in ev && 'reason' in (ev as any).detail) {\n error = (ev as any).detail.reason\n }\n } catch (_oO) {\n // no-empty\n }\n\n // exception type and message are not optional but, it's useful to start off without them enforced\n let errorProperties: Omit<ErrorProperties, '$exception_type' | '$exception_message'> & {\n $exception_type?: string\n $exception_message?: string\n } = {}\n if (isPrimitive(error)) {\n errorProperties = {\n $exception_message: `Non-Error promise rejection captured with value: ${String(error)}`,\n }\n } else {\n errorProperties = errorToProperties([error as string | Event])\n }\n errorProperties.$exception_handled = false\n\n return {\n ...errorProperties,\n // now we make sure the mandatory fields that were made optional are present\n $exception_type: (errorProperties.$exception_type = 'UnhandledRejection'),\n $exception_message: (errorProperties.$exception_message =\n errorProperties.$exception_message || (ev as any).reason || String(error)),\n }\n}\n","import Config from '../config'\nimport { _isUndefined } from './type-utils'\nimport { window } from './globals'\n\nconst LOGGER_PREFIX = '[PostHog.js]'\nexport const logger = {\n _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => {\n if ((Config.DEBUG || (window as any).POSTHOG_DEBUG) && !_isUndefined(window.console) && window.console) {\n const consoleLog =\n '__rrweb_original__' in window.console[level]\n ? (window.console[level] as any)['__rrweb_original__']\n : window.console[level]\n\n // eslint-disable-next-line no-console\n consoleLog(LOGGER_PREFIX, ...args)\n }\n },\n\n info: (...args: any[]) => {\n logger._log('log', ...args)\n },\n\n warn: (...args: any[]) => {\n logger._log('warn', ...args)\n },\n\n error: (...args: any[]) => {\n logger._log('error', ...args)\n },\n\n critical: (...args: any[]) => {\n // Critical errors are always logged to the console\n // eslint-disable-next-line no-console\n console.error(LOGGER_PREFIX, ...args)\n },\n\n uninitializedWarning: (methodName: string) => {\n logger.error(`You must initialize PostHog before calling ${methodName}`)\n },\n}\n","import { window } from '../../utils/globals'\nimport { PostHog } from '../../posthog-core'\nimport { DecideResponse, Properties } from '../../types'\nimport { ErrorEventArgs, ErrorProperties, errorToProperties, unhandledRejectionToProperties } from './error-conversion'\nimport { isPrimitive } from './type-checking'\n\nimport { _isArray, _isObject, _isUndefined } from '../../utils/type-utils'\nimport { logger } from '../../utils/logger'\n\nconst EXCEPTION_INGESTION_ENDPOINT = '/e/'\n\nexport const extendPostHog = (instance: PostHog, response: DecideResponse) => {\n const exceptionObserver = new ExceptionObserver(instance)\n exceptionObserver.afterDecideResponse(response)\n return exceptionObserver\n}\n\nexport class ExceptionObserver {\n instance: PostHog\n remoteEnabled: boolean | undefined\n private originalOnErrorHandler: typeof window['onerror'] | null | undefined = undefined\n private originalOnUnhandledRejectionHandler: typeof window['onunhandledrejection'] | null | undefined = undefined\n\n private errorsToIgnore: RegExp[] = []\n\n constructor(instance: PostHog) {\n this.instance = instance\n }\n\n startCapturing() {\n if (!this.isEnabled() || (window.onerror as any)?.__POSTHOG_INSTRUMENTED__) {\n return\n }\n\n try {\n this.originalOnErrorHandler = window.onerror\n\n window.onerror = function (this: ExceptionObserver, ...args: ErrorEventArgs): boolean {\n this.captureException(args)\n\n if (this.originalOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return this.originalOnErrorHandler.apply(this, args)\n }\n\n return false\n }.bind(this)\n ;(window.onerror as any).__POSTHOG_INSTRUMENTED__ = true\n\n this.originalOnUnhandledRejectionHandler = window.onunhandledrejection\n\n window.onunhandledrejection = function (\n this: ExceptionObserver,\n ...args: [ev: PromiseRejectionEvent]\n ): boolean {\n const errorProperties: ErrorProperties = unhandledRejectionToProperties(args)\n this.sendExceptionEvent(errorProperties)\n\n if (this.originalOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return this.originalOnUnhandledRejectionHandler.apply(window, args)\n }\n\n return true\n }.bind(this)\n ;(window.onunhandledrejection as any).__POSTHOG_INSTRUMENTED__ = true\n } catch (e) {\n logger.error('PostHog failed to start exception autocapture', e)\n this.stopCapturing()\n }\n }\n\n stopCapturing() {\n if (!_isUndefined(this.originalOnErrorHandler)) {\n window.onerror = this.originalOnErrorHandler\n this.originalOnErrorHandler = null\n }\n delete (window.onerror as any)?.__POSTHOG_INSTRUMENTED__\n\n if (!_isUndefined(this.originalOnUnhandledRejectionHandler)) {\n window.onunhandledrejection = this.originalOnUnhandledRejectionHandler\n this.originalOnUnhandledRejectionHandler = null\n }\n delete (window.onunhandledrejection as any)?.__POSTHOG_INSTRUMENTED__\n }\n\n isCapturing() {\n return !!(window.onerror as any)?.__POSTHOG_INSTRUMENTED__\n }\n\n isEnabled() {\n return this.remoteEnabled ?? false\n }\n\n afterDecideResponse(response: DecideResponse) {\n const autocaptureExceptionsResponse = response.autocaptureExceptions\n this.remoteEnabled = !!autocaptureExceptionsResponse || false\n if (\n !isPrimitive(autocaptureExceptionsResponse) &&\n 'errors_to_ignore' in autocaptureExceptionsResponse &&\n _isArray(autocaptureExceptionsResponse.errors_to_ignore)\n ) {\n const dropRules = autocaptureExceptionsResponse.errors_to_ignore\n\n this.errorsToIgnore = dropRules.map((rule) => {\n return new RegExp(rule)\n })\n }\n\n if (this.isEnabled()) {\n this.startCapturing()\n logger.info(\n '[Exception Capture] Remote config for exception autocapture is enabled, starting with config: ',\n _isObject(autocaptureExceptionsResponse) ? autocaptureExceptionsResponse : {}\n )\n }\n }\n\n captureException(args: ErrorEventArgs, properties?: Properties) {\n const errorProperties = errorToProperties(args)\n\n if (this.errorsToIgnore.some((regex) => regex.test(errorProperties.$exception_message || ''))) {\n logger.info('[Exception Capture] Ignoring exception based on remote config', errorProperties)\n return\n }\n\n const propertiesToSend = { ...properties, ...errorProperties }\n\n const posthogHost = this.instance.config.ui_host || this.instance.config.api_host\n errorProperties.$exception_personURL = posthogHost + '/person/' + this.instance.get_distinct_id()\n\n this.sendExceptionEvent(propertiesToSend)\n }\n\n /**\n * :TRICKY: Make sure we batch these requests\n */\n sendExceptionEvent(properties: { [key: string]: any }) {\n this.instance.capture('$exception', properties, {\n transport: 'XHR',\n method: 'POST',\n endpoint: EXCEPTION_INGESTION_ENDPOINT,\n _noTruncate: true,\n _batchKey: 'exceptionEvent',\n })\n }\n}\n","import { extendPostHog } from './extensions/exception-autocapture'\n\nimport { _isUndefined } from './utils/type-utils'\n\nconst win: Window & typeof globalThis = _isUndefined(window) ? ({} as typeof window) : window\n\n;(win as any).extendPostHogWithExceptionAutoCapture = extendPostHog\n\nexport default extendPostHog\n"],"names":["win","window","navigator","userAgent","win$1","document","nativeIsArray","Array","isArray","toString","Object","prototype","_isArray","obj","call","_isFunction","f","test","x","_isObject","_isUndefined","_isString","_isNull","_isNumber","isEvent","candidate","Event","isInstanceOf","base","_e","isPrimitive","isBuiltin","className","isDOMError","WEBPACK_ERROR_REGEXP","STACKTRACE_FRAME_LIMIT","UNKNOWN_FUNCTION","createFrame","filename","func","lineno","colno","frame","function","in_app","chromeRegex","chromeEvalRegex","geckoREgex","geckoEvalRegex","winjsRegex","defaultStackParser","_len","arguments","length","parsers","_key","sortedParsers","sort","a","b","map","p","stack","skipFirst","frames","lines","split","i","line","cleanedLine","replace","match","_step","_iterator","_createForOfIteratorHelper","s","n","done","parser","value","push","err","e","localStack","slice","reverse","_objectSpread","apply","parts","exec","indexOf","subMatch","_extractSafariExtensi2","_slicedToArray","extractSafariExtensionDetails","undefined","_extractSafariExtensi4","isSafariExtension","isSafariWebExtension","ERROR_TYPES_PATTERN","reactMinifiedRegexp","parseStackFrames","ex","stacktrace","popSize","framesToPop","message","getPopSize","errorPropertiesFromError","error","$exception_type","name","$exception_message","$exception_stack_trace_raw","JSON","stringify","extractExceptionKeysForMessage","exception","maxLength","keys","serialized","join","concat","errorToProperties","_ref","_ref2","event","source","errorProperties","groups","isDOMException","domException","isErrorWithStack","errorPropertiesFromString","code","isErrorEvent","Error","isError","isPlainObject","constructor","errorPropertiesFromObject","$exception_is_synthetic","$exception_source","$exception_lineno","$exception_colno","LOGGER_PREFIX","logger","_log","level","console","consoleLog","args","info","_len2","_key2","warn","_len3","_key3","_len4","_key4","critical","_console","_len5","_key5","uninitializedWarning","methodName","extendPostHog","instance","response","exceptionObserver","ExceptionObserver","afterDecideResponse","_classCallCheck","this","_defineProperty","key","_window$onerror","isEnabled","onerror","__POSTHOG_INSTRUMENTED__","originalOnErrorHandler","captureException","bind","originalOnUnhandledRejectionHandler","onunhandledrejection","_ref3","ev","reason","detail","_oO","String","$exception_handled","unhandledRejectionToProperties","sendExceptionEvent","stopCapturing","_window$onerror2","_window$onunhandledre","_window$onerror3","_this$remoteEnabled","remoteEnabled","autocaptureExceptionsResponse","autocaptureExceptions","errors_to_ignore","dropRules","errorsToIgnore","rule","RegExp","startCapturing","properties","some","regex","propertiesToSend","posthogHost","config","ui_host","api_host","$exception_personURL","get_distinct_id","capture","transport","method","endpoint","_noTruncate","_batchKey","extendPostHogWithExceptionAutoCapture"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exception-autocapture.js","sources":["../src/utils/globals.ts","../src/utils/type-utils.ts","../src/extensions/exception-autocapture/type-checking.ts","../src/extensions/exception-autocapture/stack-trace.ts","../src/extensions/exception-autocapture/error-conversion.ts","../src/utils/logger.ts","../src/extensions/exception-autocapture/index.ts","../src/loader-exception-autocapture.ts"],"sourcesContent":["/*\n * Saved references to long variable names, so that bundling can minimize file size.\n */\nexport const ArrayProto = Array.prototype\nexport const nativeForEach = ArrayProto.forEach\nexport const nativeIndexOf = ArrayProto.indexOf\n// eslint-disable-next-line no-restricted-globals\nexport const win: (Window & typeof globalThis) | undefined = typeof window !== 'undefined' ? window : undefined\nconst navigator = win?.navigator\nexport const document = win?.document\nexport const userAgent = navigator?.userAgent\nexport const assignableWindow: Window & typeof globalThis & Record<string, any> = win ?? ({} as any)\n\nexport { win as window }\n","// eslint-disable-next-line posthog-js/no-direct-array-check\nconst nativeIsArray = Array.isArray\nconst ObjProto = Object.prototype\nexport const hasOwnProperty = ObjProto.hasOwnProperty\nconst toString = ObjProto.toString\n\nexport const _isArray =\n nativeIsArray ||\n function (obj: any): obj is any[] {\n return toString.call(obj) === '[object Array]'\n }\nexport const _isUint8Array = function (x: unknown): x is Uint8Array {\n return toString.call(x) === '[object Uint8Array]'\n}\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\nexport const _isFunction = function (f: any): f is (...args: any[]) => any {\n try {\n // eslint-disable-next-line posthog-js/no-direct-function-check\n return /^\\s*\\bfunction\\b/.test(f)\n } catch (x) {\n return false\n }\n}\n// Underscore Addons\nexport const _isObject = function (x: unknown): x is Record<string, any> {\n // eslint-disable-next-line posthog-js/no-direct-object-check\n return x === Object(x) && !_isArray(x)\n}\nexport const _isEmptyObject = function (x: unknown): x is Record<string, any> {\n if (_isObject(x)) {\n for (const key in x) {\n if (hasOwnProperty.call(x, key)) {\n return false\n }\n }\n return true\n }\n return false\n}\nexport const _isUndefined = function (x: unknown): x is undefined {\n return x === void 0\n}\nexport const _isString = function (x: unknown): x is string {\n // eslint-disable-next-line posthog-js/no-direct-string-check\n return toString.call(x) == '[object String]'\n}\nexport const _isNull = function (x: unknown): x is null {\n // eslint-disable-next-line posthog-js/no-direct-null-check\n return x === null\n}\nexport const _isDate = function (x: unknown): x is Date {\n // eslint-disable-next-line posthog-js/no-direct-date-check\n return toString.call(x) == '[object Date]'\n}\nexport const _isNumber = function (x: unknown): x is number {\n // eslint-disable-next-line posthog-js/no-direct-number-check\n return toString.call(x) == '[object Number]'\n}\nexport const _isBoolean = function (x: unknown): x is boolean {\n // eslint-disable-next-line posthog-js/no-direct-boolean-check\n return toString.call(x) === '[object Boolean]'\n}\n","import { _isFunction, _isNull, _isObject, _isUndefined } from '../../utils/type-utils'\n\nexport function isEvent(candidate: unknown): candidate is Event {\n return !_isUndefined(Event) && isInstanceOf(candidate, Event)\n}\n\nexport function isPlainObject(candidate: unknown): candidate is Record<string, unknown> {\n return isBuiltin(candidate, 'Object')\n}\n\nexport function isInstanceOf(candidate: unknown, base: any): boolean {\n try {\n return candidate instanceof base\n } catch (_e) {\n return false\n }\n}\n\nexport function isPrimitive(\n candidate: unknown\n): candidate is number | string | boolean | bigint | symbol | null | undefined {\n return _isNull(candidate) || (!_isObject(candidate) && !_isFunction(candidate))\n}\n\nexport function isError(candidate: unknown): candidate is Error {\n switch (Object.prototype.toString.call(candidate)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true\n default:\n return isInstanceOf(candidate, Error)\n }\n}\n\nexport function isErrorEvent(event: string | Error | Event): event is ErrorEvent {\n return isBuiltin(event, 'ErrorEvent')\n}\n\nexport function isErrorWithStack(candidate: unknown): candidate is Error {\n return 'stack' in (candidate as Error)\n}\n\nexport function isBuiltin(candidate: unknown, className: string): boolean {\n return Object.prototype.toString.call(candidate) === `[object ${className}]`\n}\n\nexport function isDOMException(candidate: unknown): boolean {\n return isBuiltin(candidate, 'DOMException')\n}\n\nexport function isDOMError(candidate: unknown): boolean {\n return isBuiltin(candidate, 'DOMError')\n}\n","// copied and adapted from https://github.com/getsentry/sentry-javascript/blob/41fef4b10f3a644179b77985f00f8696c908539f/packages/browser/src/stack-parsers.ts\n// 💖open source\n\n// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re-written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport { _isUndefined } from '../../utils/type-utils'\n\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/\nconst STACKTRACE_FRAME_LIMIT = 50\n\nconst UNKNOWN_FUNCTION = '?'\n\nconst OPERA10_PRIORITY = 10\nconst OPERA11_PRIORITY = 20\nconst CHROME_PRIORITY = 30\nconst WINJS_PRIORITY = 40\nconst GECKO_PRIORITY = 50\n\nexport interface StackFrame {\n filename?: string\n function?: string\n module?: string\n platform?: string\n lineno?: number\n colno?: number\n abs_path?: string\n context_line?: string\n pre_context?: string[]\n post_context?: string[]\n in_app?: boolean\n instruction_addr?: string\n addr_mode?: string\n vars?: { [key: string]: any }\n debug_id?: string\n}\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n in_app: true, // All browser frames are considered in_app\n }\n\n if (!_isUndefined(lineno)) {\n frame.lineno = lineno\n }\n\n if (!_isUndefined(colno)) {\n frame.colno = colno\n }\n\n return frame\n}\n\nexport type StackParser = (stack: string, skipFirst?: number) => StackFrame[]\nexport type StackLineParserFn = (line: string) => StackFrame | undefined\nexport type StackLineParser = [number, StackLineParserFn]\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/\n\nconst chrome: StackLineParserFn = (line) => {\n const parts = chromeRegex.exec(line)\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0 // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2])\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1] // url\n parts[3] = subMatch[2] // line\n parts[4] = subMatch[3] // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2])\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined)\n }\n\n return\n}\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chrome]\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i\n\nconst gecko: StackLineParserFn = (line) => {\n const parts = geckoREgex.exec(line)\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3])\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval'\n parts[3] = subMatch[1]\n parts[4] = subMatch[2]\n parts[5] = '' // no column when eval\n }\n }\n\n let filename = parts[3]\n let func = parts[1] || UNKNOWN_FUNCTION\n ;[func, filename] = extractSafariExtensionDetails(func, filename)\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined)\n }\n\n return\n}\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko]\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i\n\nconst winjs: StackLineParserFn = (line) => {\n const parts = winjsRegex.exec(line)\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined\n}\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs]\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i\n\nconst opera10: StackLineParserFn = (line) => {\n const parts = opera10Regex.exec(line)\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined\n}\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10]\n\nconst opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i\n\nconst opera11: StackLineParserFn = (line) => {\n const parts = opera11Regex.exec(line)\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined\n}\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11]\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser]\n\nexport function reverse(stack: ReadonlyArray<StackFrame>): StackFrame[] {\n if (!stack.length) {\n return []\n }\n\n const localStack = stack.slice(0, STACKTRACE_FRAME_LIMIT)\n\n localStack.reverse()\n\n return localStack.map((frame) => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }))\n}\n\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map((p) => p[1])\n\n return (stack: string, skipFirst = 0): StackFrame[] => {\n const frames: StackFrame[] = []\n const lines = stack.split('\\n')\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i]\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine)\n\n if (frame) {\n frames.push(frame)\n break\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break\n }\n }\n\n return reverse(frames)\n }\n}\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers)\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename]\n}\n","import {\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isErrorWithStack,\n isEvent,\n isPlainObject,\n isPrimitive,\n} from './type-checking'\nimport { defaultStackParser, StackFrame } from './stack-trace'\n\nimport { _isNumber, _isString, _isUndefined } from '../../utils/type-utils'\n\n/**\n * based on the very wonderful MIT licensed Sentry SDK\n */\n\nconst ERROR_TYPES_PATTERN =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i\n\nexport type ErrorEventArgs = [\n event: string | Event,\n source?: string | undefined,\n lineno?: number | undefined,\n colno?: number | undefined,\n error?: Error | undefined\n]\n\nexport interface ErrorProperties {\n $exception_type: string\n $exception_message: string\n $exception_source?: string\n $exception_lineno?: number\n $exception_colno?: number\n $exception_DOMException_code?: string\n $exception_is_synthetic?: boolean\n $exception_stack_trace_raw?: string\n $exception_handled?: boolean\n $exception_personURL?: string\n}\n\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (_isNumber(ex.framesToPop)) {\n return ex.framesToPop\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1\n }\n }\n\n return 0\n}\n\nexport function parseStackFrames(ex: Error & { framesToPop?: number; stacktrace?: string }): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || ''\n\n const popSize = getPopSize(ex)\n\n try {\n return defaultStackParser(stacktrace, popSize)\n } catch (e) {\n // no-empty\n }\n\n return []\n}\n\nfunction errorPropertiesFromError(error: Error): ErrorProperties {\n const frames = parseStackFrames(error)\n\n return {\n $exception_type: error.name,\n $exception_message: error.message,\n $exception_stack_trace_raw: JSON.stringify(frames),\n }\n}\n\nfunction errorPropertiesFromString(candidate: string): ErrorProperties {\n return {\n $exception_type: 'Error',\n $exception_message: candidate,\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception: Record<string, unknown>, maxLength = 40): string {\n const keys = Object.keys(exception)\n keys.sort()\n\n if (!keys.length) {\n return '[object has no keys]'\n }\n\n for (let i = keys.length; i > 0; i--) {\n const serialized = keys.slice(0, i).join(', ')\n if (serialized.length > maxLength) {\n continue\n }\n if (i === keys.length) {\n return serialized\n }\n return serialized.length <= maxLength ? serialized : `${serialized.slice(0, maxLength)}...`\n }\n\n return ''\n}\n\nfunction errorPropertiesFromObject(candidate: Record<string, unknown>): ErrorProperties {\n return {\n $exception_type: isEvent(candidate) ? candidate.constructor.name : 'Error',\n $exception_message: `Non-Error ${'exception'} captured with keys: ${extractExceptionKeysForMessage(candidate)}`,\n }\n}\n\nexport function errorToProperties([event, source, lineno, colno, error]: ErrorEventArgs): ErrorProperties {\n // exception type and message are not optional but, it's useful to start off without them enforced\n let errorProperties: Omit<ErrorProperties, '$exception_type' | '$exception_message'> & {\n $exception_type?: string\n $exception_message?: string\n } = {}\n\n if (_isUndefined(error) && _isString(event)) {\n let name = 'Error'\n let message = event\n const groups = event.match(ERROR_TYPES_PATTERN)\n if (groups) {\n name = groups[1]\n message = groups[2]\n }\n errorProperties = {\n $exception_type: name,\n $exception_message: message,\n }\n }\n\n const candidate = error || event\n\n if (isDOMError(candidate) || isDOMException(candidate)) {\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n\n const domException = candidate as unknown as DOMException\n\n if (isErrorWithStack(candidate)) {\n errorProperties = errorPropertiesFromError(candidate as Error)\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException')\n const message = domException.message ? `${name}: ${domException.message}` : name\n errorProperties = errorPropertiesFromString(message)\n errorProperties.$exception_type = isDOMError(domException) ? 'DOMError' : 'DOMException'\n errorProperties.$exception_message = errorProperties.$exception_message || message\n }\n if ('code' in domException) {\n errorProperties['$exception_DOMException_code'] = `${domException.code}`\n }\n } else if (isErrorEvent(candidate as ErrorEvent) && (candidate as ErrorEvent).error) {\n errorProperties = errorPropertiesFromError((candidate as ErrorEvent).error as Error)\n } else if (isError(candidate)) {\n errorProperties = errorPropertiesFromError(candidate)\n } else if (isPlainObject(candidate) || isEvent(candidate)) {\n // group these by using the keys available on the object\n const objectException = candidate as Record<string, unknown>\n errorProperties = errorPropertiesFromObject(objectException)\n errorProperties.$exception_is_synthetic = true\n } else {\n // If none of previous checks were valid, then it must be a string\n errorProperties.$exception_type = errorProperties.$exception_type || 'Error'\n errorProperties.$exception_message = errorProperties.$exception_message || candidate\n errorProperties.$exception_is_synthetic = true\n }\n\n return {\n ...errorProperties,\n // now we make sure the mandatory fields that were made optional are present\n $exception_type: errorProperties.$exception_type || 'UnknownErrorType',\n $exception_message: errorProperties.$exception_message || '',\n ...(source\n ? {\n $exception_source: source, // TODO get this from URL if not present\n }\n : {}),\n ...(lineno ? { $exception_lineno: lineno } : {}),\n ...(colno ? { $exception_colno: colno } : {}),\n }\n}\n\nexport function unhandledRejectionToProperties([ev]: [ev: PromiseRejectionEvent]): ErrorProperties {\n // dig the object of the rejection out of known event types\n let error: unknown = ev\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in ev) {\n error = ev.reason\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in ev && 'reason' in (ev as any).detail) {\n error = (ev as any).detail.reason\n }\n } catch (_oO) {\n // no-empty\n }\n\n // exception type and message are not optional but, it's useful to start off without them enforced\n let errorProperties: Omit<ErrorProperties, '$exception_type' | '$exception_message'> & {\n $exception_type?: string\n $exception_message?: string\n } = {}\n if (isPrimitive(error)) {\n errorProperties = {\n $exception_message: `Non-Error promise rejection captured with value: ${String(error)}`,\n }\n } else {\n errorProperties = errorToProperties([error as string | Event])\n }\n errorProperties.$exception_handled = false\n\n return {\n ...errorProperties,\n // now we make sure the mandatory fields that were made optional are present\n $exception_type: (errorProperties.$exception_type = 'UnhandledRejection'),\n $exception_message: (errorProperties.$exception_message =\n errorProperties.$exception_message || (ev as any).reason || String(error)),\n }\n}\n","import Config from '../config'\nimport { _isUndefined } from './type-utils'\nimport { assignableWindow, window } from './globals'\n\nconst LOGGER_PREFIX = '[PostHog.js]'\nexport const logger = {\n _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => {\n if (\n window &&\n (Config.DEBUG || assignableWindow.POSTHOG_DEBUG) &&\n !_isUndefined(window.console) &&\n window.console\n ) {\n const consoleLog =\n '__rrweb_original__' in window.console[level]\n ? (window.console[level] as any)['__rrweb_original__']\n : window.console[level]\n\n // eslint-disable-next-line no-console\n consoleLog(LOGGER_PREFIX, ...args)\n }\n },\n\n info: (...args: any[]) => {\n logger._log('log', ...args)\n },\n\n warn: (...args: any[]) => {\n logger._log('warn', ...args)\n },\n\n error: (...args: any[]) => {\n logger._log('error', ...args)\n },\n\n critical: (...args: any[]) => {\n // Critical errors are always logged to the console\n // eslint-disable-next-line no-console\n console.error(LOGGER_PREFIX, ...args)\n },\n\n uninitializedWarning: (methodName: string) => {\n logger.error(`You must initialize PostHog before calling ${methodName}`)\n },\n}\n","import { window } from '../../utils/globals'\nimport { PostHog } from '../../posthog-core'\nimport { DecideResponse, Properties } from '../../types'\nimport { ErrorEventArgs, ErrorProperties, errorToProperties, unhandledRejectionToProperties } from './error-conversion'\nimport { isPrimitive } from './type-checking'\n\nimport { _isArray, _isObject, _isUndefined } from '../../utils/type-utils'\nimport { logger } from '../../utils/logger'\n\nconst EXCEPTION_INGESTION_ENDPOINT = '/e/'\n\nexport const extendPostHog = (instance: PostHog, response: DecideResponse) => {\n const exceptionObserver = new ExceptionObserver(instance)\n exceptionObserver.afterDecideResponse(response)\n return exceptionObserver\n}\n\nexport class ExceptionObserver {\n instance: PostHog\n remoteEnabled: boolean | undefined\n private originalOnErrorHandler: Window['onerror'] | null | undefined = undefined\n private originalOnUnhandledRejectionHandler: Window['onunhandledrejection'] | null | undefined = undefined\n\n private errorsToIgnore: RegExp[] = []\n\n constructor(instance: PostHog) {\n this.instance = instance\n }\n\n startCapturing() {\n if (!window || !this.isEnabled() || (window.onerror as any)?.__POSTHOG_INSTRUMENTED__) {\n return\n }\n\n try {\n this.originalOnErrorHandler = window.onerror\n\n window.onerror = function (this: ExceptionObserver, ...args: ErrorEventArgs): boolean {\n this.captureException(args)\n\n if (this.originalOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return this.originalOnErrorHandler.apply(this, args)\n }\n\n return false\n }.bind(this)\n ;(window.onerror as any).__POSTHOG_INSTRUMENTED__ = true\n\n this.originalOnUnhandledRejectionHandler = window.onunhandledrejection\n\n window.onunhandledrejection = function (\n this: ExceptionObserver,\n ...args: [ev: PromiseRejectionEvent]\n ): boolean {\n const errorProperties: ErrorProperties = unhandledRejectionToProperties(args)\n this.sendExceptionEvent(errorProperties)\n\n if (window && this.originalOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return this.originalOnUnhandledRejectionHandler.apply(window, args)\n }\n\n return true\n }.bind(this)\n ;(window.onunhandledrejection as any).__POSTHOG_INSTRUMENTED__ = true\n } catch (e) {\n logger.error('PostHog failed to start exception autocapture', e)\n this.stopCapturing()\n }\n }\n\n stopCapturing() {\n if (!window) {\n return\n }\n if (!_isUndefined(this.originalOnErrorHandler)) {\n window.onerror = this.originalOnErrorHandler\n this.originalOnErrorHandler = null\n }\n delete (window.onerror as any)?.__POSTHOG_INSTRUMENTED__\n\n if (!_isUndefined(this.originalOnUnhandledRejectionHandler)) {\n window.onunhandledrejection = this.originalOnUnhandledRejectionHandler\n this.originalOnUnhandledRejectionHandler = null\n }\n delete (window.onunhandledrejection as any)?.__POSTHOG_INSTRUMENTED__\n }\n\n isCapturing() {\n return !!(window?.onerror as any)?.__POSTHOG_INSTRUMENTED__\n }\n\n isEnabled() {\n return this.remoteEnabled ?? false\n }\n\n afterDecideResponse(response: DecideResponse) {\n const autocaptureExceptionsResponse = response.autocaptureExceptions\n this.remoteEnabled = !!autocaptureExceptionsResponse || false\n if (\n !isPrimitive(autocaptureExceptionsResponse) &&\n 'errors_to_ignore' in autocaptureExceptionsResponse &&\n _isArray(autocaptureExceptionsResponse.errors_to_ignore)\n ) {\n const dropRules = autocaptureExceptionsResponse.errors_to_ignore\n\n this.errorsToIgnore = dropRules.map((rule) => {\n return new RegExp(rule)\n })\n }\n\n if (this.isEnabled()) {\n this.startCapturing()\n logger.info(\n '[Exception Capture] Remote config for exception autocapture is enabled, starting with config: ',\n _isObject(autocaptureExceptionsResponse) ? autocaptureExceptionsResponse : {}\n )\n }\n }\n\n captureException(args: ErrorEventArgs, properties?: Properties) {\n const errorProperties = errorToProperties(args)\n\n if (this.errorsToIgnore.some((regex) => regex.test(errorProperties.$exception_message || ''))) {\n logger.info('[Exception Capture] Ignoring exception based on remote config', errorProperties)\n return\n }\n\n const propertiesToSend = { ...properties, ...errorProperties }\n\n const posthogHost = this.instance.config.ui_host || this.instance.config.api_host\n errorProperties.$exception_personURL = posthogHost + '/person/' + this.instance.get_distinct_id()\n\n this.sendExceptionEvent(propertiesToSend)\n }\n\n /**\n * :TRICKY: Make sure we batch these requests\n */\n sendExceptionEvent(properties: { [key: string]: any }) {\n this.instance.capture('$exception', properties, {\n transport: 'XHR',\n method: 'POST',\n endpoint: EXCEPTION_INGESTION_ENDPOINT,\n _noTruncate: true,\n _batchKey: 'exceptionEvent',\n })\n }\n}\n","import { extendPostHog } from './extensions/exception-autocapture'\n\nimport { window } from './utils/globals'\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nwindow.extendPostHogWithExceptionAutoCapture = extendPostHog\n\nexport default extendPostHog\n"],"names":["win","window","undefined","navigator","document","userAgent","assignableWindow","nativeIsArray","Array","isArray","toString","Object","prototype","_isArray","obj","call","_isFunction","f","test","x","_isObject","_isUndefined","_isString","_isNull","_isNumber","isEvent","candidate","Event","isInstanceOf","base","_e","isPrimitive","isBuiltin","className","isDOMError","WEBPACK_ERROR_REGEXP","STACKTRACE_FRAME_LIMIT","UNKNOWN_FUNCTION","createFrame","filename","func","lineno","colno","frame","function","in_app","chromeRegex","chromeEvalRegex","geckoREgex","geckoEvalRegex","winjsRegex","defaultStackParser","_len","arguments","length","parsers","_key","sortedParsers","sort","a","b","map","p","stack","skipFirst","frames","lines","split","i","line","cleanedLine","replace","match","_step","_iterator","_createForOfIteratorHelper","s","n","done","parser","value","push","err","e","localStack","slice","reverse","_objectSpread","apply","parts","exec","indexOf","subMatch","_extractSafariExtensi2","_slicedToArray","extractSafariExtensionDetails","_extractSafariExtensi4","isSafariExtension","isSafariWebExtension","ERROR_TYPES_PATTERN","reactMinifiedRegexp","parseStackFrames","ex","stacktrace","popSize","framesToPop","message","getPopSize","errorPropertiesFromError","error","$exception_type","name","$exception_message","$exception_stack_trace_raw","JSON","stringify","extractExceptionKeysForMessage","exception","maxLength","keys","serialized","join","concat","errorToProperties","_ref","_ref2","event","source","errorProperties","groups","isDOMException","domException","isErrorWithStack","errorPropertiesFromString","code","isErrorEvent","Error","isError","isPlainObject","constructor","errorPropertiesFromObject","$exception_is_synthetic","$exception_source","$exception_lineno","$exception_colno","LOGGER_PREFIX","logger","_log","level","console","consoleLog","args","info","_len2","_key2","warn","_len3","_key3","_len4","_key4","critical","_console","_len5","_key5","uninitializedWarning","methodName","extendPostHog","instance","response","exceptionObserver","ExceptionObserver","afterDecideResponse","_classCallCheck","this","_defineProperty","key","_window$onerror","isEnabled","onerror","__POSTHOG_INSTRUMENTED__","originalOnErrorHandler","captureException","bind","originalOnUnhandledRejectionHandler","onunhandledrejection","_ref3","ev","reason","detail","_oO","String","$exception_handled","unhandledRejectionToProperties","sendExceptionEvent","stopCapturing","_window$onerror2","_window$onunhandledre","_window$onerror3","_this$remoteEnabled","remoteEnabled","autocaptureExceptionsResponse","autocaptureExceptions","errors_to_ignore","dropRules","errorsToIgnore","rule","RegExp","startCapturing","properties","some","regex","propertiesToSend","posthogHost","config","ui_host","api_host","$exception_personURL","get_distinct_id","capture","transport","method","endpoint","_noTruncate","_batchKey","extendPostHogWithExceptionAutoCapture"],"mappings":"87EAOO,IAAMA,EAAkE,oBAAXC,OAAyBA,YAASC,EAChGC,EAAYH,aAAAA,EAAAA,EAAKG,UACCH,SAAAA,EAAKI,SACJD,SAAAA,EAAWE,UAC7B,IAAMC,EAAqEN,QAAAA,EAAQ,CAAnF,ECVDO,EAAgBC,MAAMC,QAGtBC,EAFWC,OAAOC,UAEEF,SAEbG,EACTN,GACA,SAAUO,GACN,MAA8B,mBAAvBJ,EAASK,KAAKD,EACxB,EAOQE,EAAc,SAAUC,GACjC,IAEI,MAAO,mBAAmBC,KAAKD,EAFnC,CAGE,MAAOE,GACL,OAAO,CACV,CACJ,EAEYC,EAAY,SAAUD,GAE/B,OAAOA,IAAMR,OAAOQ,KAAON,EAASM,EACvC,EAYYE,EAAe,SAAUF,GAClC,YAAa,IAANA,CACV,EACYG,EAAY,SAAUH,GAE/B,MAA2B,mBAApBT,EAASK,KAAKI,EACxB,EACYI,EAAU,SAAUJ,GAE7B,OAAa,OAANA,CACV,EAKYK,EAAY,SAAUL,GAE/B,MAA2B,mBAApBT,EAASK,KAAKI,EACxB,ECzDM,SAASM,EAAQC,GACpB,OAAQL,EAAaM,QAAUC,EAAaF,EAAWC,MAC1D,CAMM,SAASC,EAAaF,EAAoBG,GAC7C,IACI,OAAOH,aAAqBG,CADhC,CAEE,MAAOC,GACL,OAAO,CACV,CACJ,CAEM,SAASC,EACZL,GAEA,OAAOH,EAAQG,KAAgBN,EAAUM,KAAeV,EAAYU,EACvE,CAqBM,SAASM,EAAUN,EAAoBO,GAC1C,OAAOtB,OAAOC,UAAUF,SAASK,KAAKW,KAA0BO,WAAAA,OAAAA,EAAhE,IACH,CAMM,SAASC,EAAWR,GACvB,OAAOM,EAAUN,EAAW,WAC/B,CCvBD,IAAMS,EAAuB,kBACvBC,EAAyB,GAEzBC,EAAmB,IA0BzB,SAASC,EAAYC,EAAkBC,EAAcC,EAAiBC,GAClE,IAAMC,EAAoB,CACtBJ,SAAAA,EACAK,SAAUJ,EACVK,QAAQ,GAWZ,OARKxB,EAAaoB,KACdE,EAAMF,OAASA,GAGdpB,EAAaqB,KACdC,EAAMD,MAAQA,GAGXC,CACV,CAOD,IAAMG,EACF,6IACEC,EAAkB,gCAkClBC,EACF,uIACEC,EAAiB,gDA+BjBC,EAAa,uFA6FZ,IAAMC,EA7CN,WAAuE,IAAA,IAAAC,EAAAC,UAAAC,OAAzCC,EAAyC,IAAA/C,MAAA4C,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAzCD,EAAyCC,GAAAH,UAAAG,GAC1E,IAAMC,EAAgBF,EAAQG,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAE,GAAKC,EAAE,EAAnB,IAAuBC,KAAI,SAACC,GAAD,OAAOA,EAAE,EAAT,IAE9D,OAAO,SAACC,GAIJ,IAJmD,IAAhCC,yDAAY,EACzBC,EAAuB,GACvBC,EAAQH,EAAMI,MAAM,MAEjBC,EAAIJ,EAAWI,EAAIF,EAAMZ,OAAQc,IAAK,CAC3C,IAAMC,EAAOH,EAAME,GAKnB,KAAIC,EAAKf,OAAS,MAAlB,CAMA,IAAMgB,EAAcnC,EAAqBjB,KAAKmD,GAAQA,EAAKE,QAAQpC,EAAsB,MAAQkC,EAIjG,IAAIC,EAAYE,MAAM,cAAtB,CAhB2C,IAAAC,EAAAC,EAAAC,EAoBtBlB,GApBsB,IAoB3C,IAAoCiB,EAAAE,MAAAH,EAAAC,EAAAG,KAAAC,MAAA,CAAA,IAC1BnC,GAAQoC,EADkBN,EAAAO,OACXV,GAErB,GAAI3B,EAAO,CACPsB,EAAOgB,KAAKtC,GACZ,KACH,CACJ,CA3B0C,CAAA,MAAAuC,GAAAR,EAAAS,EAAAD,EAAA,CAAA,QAAAR,EAAAzD,GAAA,CA6B3C,GAAIgD,EAAOX,QAAUlB,EACjB,KAZH,CAlB0C,CAgC9C,CAED,OAzDD,SAAiB2B,GACpB,IAAKA,EAAMT,OACP,MAAO,GAGX,IAAM8B,EAAarB,EAAMsB,MAAM,EAAGjD,GAIlC,OAFAgD,EAAWE,UAEJF,EAAWvB,KAAI,SAAClB,GAAD,OAAA4C,EAAAA,EAAA,CAAA,EACf5C,GADe,CAAA,EAAA,CAElBJ,SAAUI,EAAMJ,UAAY6C,EAAWA,EAAW9B,OAAS,GAAGf,SAC9DK,SAAUD,EAAMC,UAAY,KAHV,GAKzB,CA2Cc0C,CAAQrB,GAEtB,EAEiCuB,WAAA,EA/DK,CApEe,CA5E9B,GAiDU,SAACnB,GAC/B,IAAMoB,EAAQ3C,EAAY4C,KAAKrB,GAE/B,GAAIoB,EAAO,CAGP,GAFeA,EAAM,IAAmC,IAA7BA,EAAM,GAAGE,QAAQ,QAEhC,CACR,IAAMC,EAAW7C,EAAgB2C,KAAKD,EAAM,IAExCG,IAEAH,EAAM,GAAKG,EAAS,GACpBH,EAAM,GAAKG,EAAS,GACpBH,EAAM,GAAKG,EAAS,GAVrB,CAgBP,IAAAC,EAAAC,EAAyBC,EAA8BN,EAAM,IAAMpD,EAAkBoD,EAAM,IAA3F,GAAOjD,EAAPqD,EAAA,GAEA,OAAOvD,EAFPuD,EAAA,GAE6BrD,EAAMiD,EAAM,IAAMA,EAAM,QAAKvF,EAAWuF,EAAM,IAAMA,EAAM,QAAKvF,EAC/F,CAGJ,GAsCoD,CA9G9B,GAmFU,SAACmE,GAC9B,IAAMoB,EAAQzC,EAAW0C,KAAKrB,GAE9B,GAAIoB,EAAO,CAEP,GADeA,EAAM,IAAMA,EAAM,GAAGE,QAAQ,YAAc,EAC9C,CACR,IAAMC,EAAW3C,EAAeyC,KAAKD,EAAM,IAEvCG,IAEAH,EAAM,GAAKA,EAAM,IAAM,OACvBA,EAAM,GAAKG,EAAS,GACpBH,EAAM,GAAKG,EAAS,GACpBH,EAAM,GAAK,GAElB,CAED,IAAIlD,EAAWkD,EAAM,GACjBjD,EAAOiD,EAAM,IAAMpD,EAfhB2D,EAAAF,EAgBaC,EAA8BvD,EAAMD,GAhBjD,GAkBP,OAFEC,EAhBKwD,EAAA,GAkBA1D,EAFCC,EAhBDyD,EAAA,GAkBsBxD,EAAMiD,EAAM,IAAMA,EAAM,QAAKvF,EAAWuF,EAAM,IAAMA,EAAM,QAAKvF,EAC/F,CAGJ,GAcoD,CA3H9B,GAmHU,SAACmE,GAC9B,IAAMoB,EAAQvC,EAAWwC,KAAKrB,GAE9B,OAAOoB,EACDnD,EAAYmD,EAAM,GAAIA,EAAM,IAAMpD,GAAmBoD,EAAM,GAAIA,EAAM,IAAMA,EAAM,QAAKvF,QACtFA,CACT,KA2GK6F,EAAgC,SAACvD,EAAcD,GACjD,IAAM0D,GAA0D,IAAtCzD,EAAKmD,QAAQ,oBACjCO,GAAiE,IAA1C1D,EAAKmD,QAAQ,wBAE1C,OAAOM,GAAqBC,EACtB,EAC2B,IAAvB1D,EAAKmD,QAAQ,KAAcnD,EAAK2B,MAAM,KAAK,GAAK9B,EAChD4D,EAAwC1D,oBAAAA,OAAAA,GAAqCA,wBAAAA,OAAAA,IAEjF,CAACC,EAAMD,EAChB,EClQK4D,EACF,2GAuBEC,EAAsB,8BAgBrB,SAASC,EAAiBC,GAI7B,IAAMC,EAAaD,EAAGC,YAAcD,EAAGvC,OAAS,GAE1CyC,EApBV,SAAoBF,GAChB,GAAIA,EAAI,CACJ,GAAI9E,EAAU8E,EAAGG,aACb,OAAOH,EAAGG,YAGd,GAAIL,EAAoBlF,KAAKoF,EAAGI,SAC5B,OAAO,CAEd,CAED,OAAO,CACV,CAQmBC,CAAWL,GAE3B,IACI,OAAOnD,EAAmBoD,EAAYC,EAD1C,CAEE,MAAOrB,GAER,CAED,MAAO,EACV,CAED,SAASyB,EAAyBC,GAC9B,IAAM5C,EAASoC,EAAiBQ,GAEhC,MAAO,CACHC,gBAAiBD,EAAME,KACvBC,mBAAoBH,EAAMH,QAC1BO,2BAA4BC,KAAKC,UAAUlD,GAElD,CAcD,SAASmD,EAA+BC,GAA4D,IAAxBC,yDAAY,GAC9EC,EAAO5G,OAAO4G,KAAKF,GAGzB,GAFAE,EAAK7D,QAEA6D,EAAKjE,OACN,MAAO,uBAGX,IAAK,IAAIc,EAAImD,EAAKjE,OAAQc,EAAI,EAAGA,IAAK,CAClC,IAAMoD,EAAaD,EAAKlC,MAAM,EAAGjB,GAAGqD,KAAK,MACzC,KAAID,EAAWlE,OAASgE,GAGxB,OAAIlD,IAAMmD,EAAKjE,QAGRkE,EAAWlE,QAAUgE,EAFjBE,EAEJ,GAAAE,OAAiDF,EAAWnC,MAAM,EAAGiC,GAA5E,MACH,CAED,MAAO,EACV,CASM,SAASK,EAA0FC,GAAA,IAAAC,EAAA/B,EAAA8B,EAAA,GAAvEE,EAAuED,EAAA,GAAhEE,EAAgEF,EAAA,GAAxDpF,EAAwDoF,EAAA,GAAhDnF,EAAgDmF,EAAA,GAAzChB,EAAyCgB,EAAA,GAElGG,EAGA,CAAA,EAEJ,GAAI3G,EAAawF,IAAUvF,EAAUwG,GAAQ,CACzC,IAAIf,EAAO,QACPL,EAAUoB,EACRG,EAASH,EAAMtD,MAAM2B,GACvB8B,IACAlB,EAAOkB,EAAO,GACdvB,EAAUuB,EAAO,IAErBD,EAAkB,CACdlB,gBAAiBC,EACjBC,mBAAoBN,EAE3B,CAED,IAAMhF,EAAYmF,GAASiB,EAE3B,GAAI5F,EAAWR,IFtGZ,SAAwBA,GAC3B,OAAOM,EAAUN,EAAW,eAC/B,CEoGgCwG,CAAexG,GAAY,CAIpD,IAAMyG,EAAezG,EAErB,GFpHD,SAA0BA,GAC7B,MAAO,UAAYA,CACtB,CEkHW0G,CAAiB1G,GACjBsG,EAAkBpB,EAAyBlF,OACxC,CACH,IAAMqF,EAAOoB,EAAapB,OAAS7E,EAAWiG,GAAgB,WAAa,gBACrEzB,EAAUyB,EAAazB,QAAb,GAAAgB,OAA0BX,EAA1B,MAAAW,OAAmCS,EAAazB,SAAYK,EAC5EiB,EA3EZ,SAAmCtG,GAC/B,MAAO,CACHoF,gBAAiB,QACjBE,mBAAoBtF,EAE3B,CAsE6B2G,CAA0B3B,GAC5CsB,EAAgBlB,gBAAkB5E,EAAWiG,GAAgB,WAAa,eAC1EH,EAAgBhB,mBAAqBgB,EAAgBhB,oBAAsBN,CAC9E,CACG,SAAUyB,IACVH,EAAe,6BAAsCG,GAAAA,OAAAA,EAAaG,MAhB1E,MAkBO,GFpIJ,SAAsBR,GACzB,OAAO9F,EAAU8F,EAAO,aAC3B,CEkIcS,CAAa7G,IAA6BA,EAAyBmF,MAC1EmB,EAAkBpB,EAA0BlF,EAAyBmF,YAClE,GFjJJ,SAAiBnF,GACpB,OAAQf,OAAOC,UAAUF,SAASK,KAAKW,IACnC,IAAK,iBACL,IAAK,qBACL,IAAK,wBACD,OAAO,EACX,QACI,OAAOE,EAAaF,EAAW8G,OAE1C,CEwIcC,CAAQ/G,GACfsG,EAAkBpB,EAAyBlF,QACxC,GFrKJ,SAAuBA,GAC1B,OAAOM,EAAUN,EAAW,SAC/B,CEmKcgH,CAAchH,IAAcD,EAAQC,GAAY,CAGvDsG,EAvDR,SAAmCtG,GAC/B,MAAO,CACHoF,gBAAiBrF,EAAQC,GAAaA,EAAUiH,YAAY5B,KAAO,QACnEC,uCAAiC,YAAf,wBAAkDI,EAA+B1F,IAE1G,CAkDyBkH,CADMlH,GAExBsG,EAAgBa,yBAA0B,CAC7C,MAEGb,EAAgBlB,gBAAkBkB,EAAgBlB,iBAAmB,QACrEkB,EAAgBhB,mBAAqBgB,EAAgBhB,oBAAsBtF,EAC3EsG,EAAgBa,yBAA0B,EAG9C,OAAAtD,EAAAA,EAAAA,EAAAA,EAAA,GACOyC,GADP,GAAA,CAGIlB,gBAAiBkB,EAAgBlB,iBAAmB,mBACpDE,mBAAoBgB,EAAgBhB,oBAAsB,IACtDe,EACE,CACIe,kBAAmBf,GAEvB,CAAA,GACFtF,EAAS,CAAEsG,kBAAmBtG,GAAW,CAAA,GACzCC,EAAQ,CAAEsG,iBAAkBtG,GAAU,CAX9C,EAaH,CChMD,IAAMuG,EAAgB,eACTC,EAAS,CAClBC,KAAM,SAACC,GACH,GACInJ,GACiBK,EADX,gBAELe,EAAapB,EAAOoJ,UACrBpJ,EAAOoJ,QACT,CAAA,IACE,IAAMC,GACF,uBAAwBrJ,EAAOoJ,QAAQD,GAChCnJ,EAAOoJ,QAAQD,GAAhB,mBACAnJ,EAAOoJ,QAAQD,IAJ3BhG,EAAAC,UAAAC,OANqCiG,EAMrC,IAAA/I,MAAA4C,EAAA,EAAAA,EAAA,EAAA,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IANqC+F,EAMrC/F,EAAA,GAAAH,UAAAG,GAOE8F,EAAA9D,WAAA,EAAA,CAAWyD,GAAXvB,OAA6B6B,GAChC,CAfa,EAkBlBC,KAAM,WAAoB,IAAA,IAAAC,EAAApG,UAAAC,OAAhBiG,EAAgB,IAAA/I,MAAAiJ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAhBH,EAAgBG,GAAArG,UAAAqG,GACtBR,EAAOC,KAAPD,MAAAA,GAAY,OAANxB,OAAgB6B,GAnBR,EAsBlBI,KAAM,WAAoB,IAAA,IAAAC,EAAAvG,UAAAC,OAAhBiG,EAAgB,IAAA/I,MAAAoJ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAhBN,EAAgBM,GAAAxG,UAAAwG,GACtBX,EAAOC,KAAPD,MAAAA,GAAY,QAANxB,OAAiB6B,GAvBT,EA0BlB1C,MAAO,WAAoB,IAAA,IAAAiD,EAAAzG,UAAAC,OAAhBiG,EAAgB,IAAA/I,MAAAsJ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAhBR,EAAgBQ,GAAA1G,UAAA0G,GACvBb,EAAOC,KAAPD,MAAAA,GAAY,SAANxB,OAAkB6B,GA3BV,EA8BlBS,SAAU,WAAoB,IAAA,IAAAC,EAAAC,EAAA7G,UAAAC,OAAhBiG,EAAgB,IAAA/I,MAAA0J,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAhBZ,EAAgBY,GAAA9G,UAAA8G,IAG1BF,EAAAZ,SAAQxC,MAAMoC,MAAAA,EAAAA,CAAAA,UAAkBM,GAjClB,EAoClBa,qBAAsB,SAACC,GACnBnB,EAAOrC,MAAP,8CAAAa,OAA2D2C,GAC9D,GChCQC,EAAgB,SAACC,EAAmBC,GAC7C,IAAMC,EAAoB,IAAIC,EAAkBH,GAEhD,OADAE,EAAkBE,oBAAoBH,GAC/BC,CACV,EAEYC,EAAb,WAQI,SAAAA,EAAYH,gGAAmBK,CAAAC,KAAAH,GAAAI,EAAAD,KAAA,8BALwC3K,GAKxC4K,EAAAD,KAAA,2CAJkE3K,GAIlE4K,EAAAD,KAAA,iBAFI,IAG/BA,KAAKN,SAAWA,CACnB,WAVL,SAAAG,IAAA,CAAA,CAAAK,IAAA,iBAAA/F,MAYI,WAAiB,IAAAgG,EACb,GAAK/K,GAAW4K,KAAKI,cAAe,QAAChL,EAAAA,EAAOiL,eAAR,IAAAF,IAAAA,EAAyBG,0BAI7D,IACIN,KAAKO,uBAAyBnL,EAAOiL,QAErCjL,EAAOiL,QAAU,WAAqE,IAAA,IAAA9H,EAAAC,UAAAC,OAA/BiG,EAA+B,IAAA/I,MAAA4C,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAA/B+F,EAA+B/F,GAAAH,UAAAG,GAGlF,OAFAqH,KAAKQ,iBAAiB9B,KAElBsB,KAAKO,wBAEEP,KAAKO,uBAAuB5F,MAAMqF,KAAMtB,EAItD,EAAC+B,KAAKT,MACL5K,EAAOiL,QAAgBC,0BAA2B,EAEpDN,KAAKU,oCAAsCtL,EAAOuL,qBAElDvL,EAAOuL,qBAAuB,WAGnB,IAAA,IAAA/B,EAAApG,UAAAC,OADJiG,EACI,IAAA/I,MAAAiJ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IADJH,EACIG,GAAArG,UAAAqG,GACP,IAAM1B,EF+If,SAA4FyD,GAAA,IAAnDC,EAAmD5F,EAAA2F,EAAA,GAAA,GAE3F5E,EAAiB6E,EACrB,IAGQ,WAAYA,EACZ7E,EAAQ6E,EAAGC,OAON,WAAYD,GAAM,WAAaA,EAAWE,SAC/C/E,EAAS6E,EAAWE,OAAOD,OAZnC,CAcE,MAAOE,GAjBsF,CAsB/F,IAAI7D,EAGA,CAAA,EAUJ,OARIA,EADAjG,EAAY8E,GACM,CACdG,mBAAwE8E,oDAAAA,OAAAA,OAAOjF,KAGjEc,EAAkB,CAACd,KAEzBkF,oBAAqB,EAErCxG,EAAAA,EAAA,CAAA,EACOyC,GADP,CAAA,EAAA,CAGIlB,gBAAkBkB,EAAgBlB,gBAAkB,qBACpDE,mBAAqBgB,EAAgBhB,mBACjCgB,EAAgBhB,oBAAuB0E,EAAWC,QAAUG,OAAOjF,IAE9E,CEzLwDmF,CAA+BzC,GAGxE,OAFAsB,KAAKoB,mBAAmBjE,IAEpB/H,IAAU4K,KAAKU,qCAERV,KAAKU,oCAAoC/F,MAAMvF,EAAQsJ,EAIrE,EAAC+B,KAAKT,MACL5K,EAAOuL,qBAA6BL,0BAA2B,CA/BrE,CAgCE,MAAOhG,GACL+D,EAAOrC,MAAM,gDAAiD1B,GAC9D0F,KAAKqB,eACR,CACJ,GArDL,CAAAnB,IAAA,gBAAA/F,MAuDI,WAAgB,IAAAmH,EAAAC,EACPnM,IAGAoB,EAAawJ,KAAKO,0BACnBnL,EAAOiL,QAAUL,KAAKO,uBACtBP,KAAKO,uBAAyB,MAElC,QAAAe,EAAQlM,EAAOiL,eAAf,IAAAiB,UAAOA,EAAyBhB,yBAE3B9J,EAAawJ,KAAKU,uCACnBtL,EAAOuL,qBAAuBX,KAAKU,oCACnCV,KAAKU,oCAAsC,MAE/C,QAAAa,EAAQnM,EAAOuL,4BAAf,IAAAY,UAAOA,EAAsCjB,yBAChD,GAtEL,CAAAJ,IAAA,cAAA/F,MAwEI,WAAc,IAAAqH,EACV,QAAUpM,SAAF,QAAAoM,EAAEpM,EAAQiL,eAAV,IAAAmB,IAACA,EAA0BlB,yBACtC,GA1EL,CAAAJ,IAAA,YAAA/F,MA4EI,WAAY,IAAAsH,EACR,OAAA,QAAOA,EAAAzB,KAAK0B,qBAAZ,IAAAD,GAAAA,CACH,GA9EL,CAAAvB,IAAA,sBAAA/F,MAgFI,SAAoBwF,GAChB,IAAMgC,EAAgChC,EAASiC,sBAE/C,GADA5B,KAAK0B,gBAAkBC,IAAiC,GAEnDzK,EAAYyK,IACb,qBAAsBA,GACtB3L,EAAS2L,EAA8BE,kBACzC,CACE,IAAMC,EAAYH,EAA8BE,iBAEhD7B,KAAK+B,eAAiBD,EAAU9I,KAAI,SAACgJ,GACjC,OAAO,IAAIC,OAAOD,EACrB,GACJ,CAEGhC,KAAKI,cACLJ,KAAKkC,iBACL7D,EAAOM,KACH,iGACApI,EAAUoL,GAAiCA,EAAgC,CAAA,GAGtF,GAtGL,CAAAzB,IAAA,mBAAA/F,MAwGI,SAAiBuE,EAAsByD,GACnC,IAAMhF,EAAkBL,EAAkB4B,GAE1C,GAAIsB,KAAK+B,eAAeK,MAAK,SAACC,GAAD,OAAWA,EAAMhM,KAAK8G,EAAgBhB,oBAAsB,GAA5D,IACzBkC,EAAOM,KAAK,gEAAiExB,OADjF,CAKA,IAAMmF,EAAgB5H,EAAAA,EAAA,CAAA,EAAQyH,GAAehF,GAEvCoF,EAAcvC,KAAKN,SAAS8C,OAAOC,SAAWzC,KAAKN,SAAS8C,OAAOE,SACzEvF,EAAgBwF,qBAAuBJ,EAAc,WAAavC,KAAKN,SAASkD,kBAEhF5C,KAAKoB,mBAAmBkB,EAPvB,CAQJ,GAtHL,CAAApC,IAAA,qBAAA/F,MA2HI,SAAmBgI,GACfnC,KAAKN,SAASmD,QAAQ,aAAcV,EAAY,CAC5CW,UAAW,MACXC,OAAQ,OACRC,SAvIyB,MAwIzBC,aAAa,EACbC,UAAW,kBAElB,qFAnILrD,CAAA,CAAA,GCXM1K,EAACgO,sCAAwC1D"}
|
package/dist/module.d.ts
CHANGED
|
@@ -941,12 +941,12 @@ declare class Toolbar {
|
|
|
941
941
|
* 1. In the URL hash params
|
|
942
942
|
* 2. From session storage under the key `toolbarParams` if the toolbar was initialized on a previous page
|
|
943
943
|
*/
|
|
944
|
-
maybeLoadToolbar(location?: Location, localStorage?: Storage | undefined, history?: History): boolean;
|
|
944
|
+
maybeLoadToolbar(location?: Location | undefined, localStorage?: Storage | undefined, history?: History | undefined): boolean;
|
|
945
945
|
loadToolbar(params?: ToolbarParams): boolean;
|
|
946
946
|
/** @deprecated Use "loadToolbar" instead. */
|
|
947
947
|
_loadEditor(params: ToolbarParams): boolean;
|
|
948
948
|
/** @deprecated Use "maybeLoadToolbar" instead. */
|
|
949
|
-
maybeLoadEditor(location?: Location, localStorage?: Storage | undefined, history?: History): boolean;
|
|
949
|
+
maybeLoadEditor(location?: Location | undefined, localStorage?: Storage | undefined, history?: History | undefined): boolean;
|
|
950
950
|
}
|
|
951
951
|
|
|
952
952
|
declare class RequestQueue extends RequestQueueScaffold {
|
|
@@ -1160,12 +1160,11 @@ interface StoredSessionSourceProps {
|
|
|
1160
1160
|
sessionId: string;
|
|
1161
1161
|
props: SessionSourceProps;
|
|
1162
1162
|
}
|
|
1163
|
-
declare const generateSessionSourceParams: () => SessionSourceProps;
|
|
1164
1163
|
declare class SessionPropsManager {
|
|
1165
1164
|
private readonly _sessionIdManager;
|
|
1166
1165
|
private readonly _persistence;
|
|
1167
1166
|
private readonly _sessionSourceParamGenerator;
|
|
1168
|
-
constructor(sessionIdManager: SessionIdManager, persistence: PostHogPersistence, sessionSourceParamGenerator?:
|
|
1167
|
+
constructor(sessionIdManager: SessionIdManager, persistence: PostHogPersistence, sessionSourceParamGenerator?: () => SessionSourceProps);
|
|
1169
1168
|
_getStoredProps(): StoredSessionSourceProps | undefined;
|
|
1170
1169
|
_onSessionIdCallback: (sessionId: string) => void;
|
|
1171
1170
|
getSessionProps(): {
|