@honeybadger-io/js
Advanced tools
Comparing version 4.1.2 to 4.1.3
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Honeybadger=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e){var t=e.default;if("function"==typeof t){var n=function(){return t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})})),n}var n={},r={},o={},i={},a="<unknown>";var s=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,c=/\((\S*)(?::(\d+))(?::(\d+))\)/;var u=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;var l=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,f=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;var d=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i;var g=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;var p=Object.freeze({__proto__:null,parse:function(e){return e.split("\n").reduce((function(e,t){var n=function(e){var t=s.exec(e);if(!t)return null;var n=t[2]&&0===t[2].indexOf("native"),r=t[2]&&0===t[2].indexOf("eval"),o=c.exec(t[2]);r&&null!=o&&(t[2]=o[1],t[3]=o[2],t[4]=o[3]);return{file:n?null:t[2],methodName:t[1]||a,arguments:n?[t[2]]:[],lineNumber:t[3]?+t[3]:null,column:t[4]?+t[4]:null}}(t)||function(e){var t=u.exec(e);if(!t)return null;return{file:t[2],methodName:t[1]||a,arguments:[],lineNumber:+t[3],column:t[4]?+t[4]:null}}(t)||function(e){var t=l.exec(e);if(!t)return null;var n=t[3]&&t[3].indexOf(" > eval")>-1,r=f.exec(t[3]);n&&null!=r&&(t[3]=r[1],t[4]=r[2],t[5]=null);return{file:t[3],methodName:t[1]||a,arguments:t[2]?t[2].split(","):[],lineNumber:t[4]?+t[4]:null,column:t[5]?+t[5]:null}}(t)||function(e){var t=g.exec(e);if(!t)return null;return{file:t[2],methodName:t[1]||a,arguments:[],lineNumber:+t[3],column:t[4]?+t[4]:null}}(t)||function(e){var t=d.exec(e);if(!t)return null;return{file:t[3],methodName:t[1]||a,arguments:[],lineNumber:+t[4],column:t[5]?+t[5]:null}}(t);return n&&e.push(n),e}),[])}}),h=t(p),m=e&&e.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),b=e&&e.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),y=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&m(t,e,n);return b(t,e),t},_=e&&e.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))};Object.defineProperty(i,"__esModule",{value:!0}),i.isBrowserConfig=i.clone=i.formatCGIData=i.filterUrl=i.filter=i.generateStackTrace=i.endpoint=i.instrument=i.isErrorObject=i.makeNotice=i.logger=i.sanitize=i.shallowClone=i.runAfterNotifyHandlers=i.runBeforeNotifyHandlers=i.getSourceForBacktrace=i.getCauses=i.makeBacktrace=i.objectIsExtensible=i.objectIsEmpty=i.mergeNotice=i.merge=void 0;const v=y(h);function w(e,t){const n={};for(const t in e)n[t]=e[t];for(const e in t)n[e]=t[e];return n}function E(e,t=0){try{const n=v.parse(e).map((e=>({file:e.file,method:e.methodName,number:e.lineNumber,column:e.column})));return n.splice(0,t),n}catch(e){return[]}}function j(e){if("object"!=typeof e||null===e)return{};const t={};for(const n in e)t[n]=e[n];return t}function O(e){return e instanceof Error||"[object Error]"===Object.prototype.toString.call(e)}function k(e,t){for(let n=0;n<t.length;n++)if(-1!==e.toLowerCase().indexOf(t[n].toLowerCase()))return!0;return!1}function x(e,t){const n=Object.prototype.toString.call(t).slice(8,-1);return null!=t&&n===e}function N(e,t,n=2){if(!e)return null;const r=e.split("\n");r.unshift("");const o=t+n,i={};for(let e=t-n;e<=o;e++){const t=r[e];"string"==typeof t&&(i[e]=t)}return i}i.merge=w,i.mergeNotice=function(e,t){const n=w(e,t);return e.context&&t.context&&(n.context=w(e.context,t.context)),n},i.objectIsEmpty=function(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0},i.objectIsExtensible=function(e){return"function"!=typeof Object.isExtensible||Object.isExtensible(e)},i.makeBacktrace=E,i.getCauses=function(e){if(e.cause){const t=[];let n=e;for(;t.length<3&&(n=n.cause);)t.push({class:n.name,message:n.message,backtrace:"string"==typeof n.stack?E(n.stack):null});return t}return[]},i.getSourceForBacktrace=function(e,t){return _(this,void 0,void 0,(function*(){const n=[];if(!t||!e||!e.length)return n;let r=0;for(;e.length;){const o=e.splice(0)[r],i=yield t(o.file);n[r]=N(i,o.number),r++}return n}))},i.runBeforeNotifyHandlers=function(e,t){let n=!0;for(let r=0,o=t.length;r<o;r++){!1===(0,t[r])(e)&&(n=!1)}return n},i.runAfterNotifyHandlers=function(e,t,n){e&&e.afterNotify&&e.afterNotify(n,e);for(let r=0,o=t.length;r<o;r++)t[r](n,e);return!0},i.shallowClone=j,i.sanitize=function(e,t=8){const n=[];function r(e,r=0){if(r>=t)return"[DEPTH]";if(!function(e){const t=typeof e;return/function/.test(t)?"toJSON"===e.name:!/symbol/.test(t)&&null!==e&&("object"!=typeof e||void 0!==e.hasOwnProperty)}(e))return Object.prototype.toString.call(e);if(function(e){if(!e||"object"!=typeof e)return!1;for(let t=0;t<n.length;t++)if(n[t]===e)return!0;return n.push(e),!1}(e))return"[RECURSION]";if(Array.isArray(e))return e.map((e=>o(e,r+1)));if("object"==typeof e){const t={};for(const n in e){const i=e[n];Object.prototype.hasOwnProperty.call(e,n)&&null!=n&&null!=i&&(t[n]=o(i,r+1))}return t}return e}function o(e,t=0){try{return r(e,t)}catch(e){return`[ERROR] ${e}`}}return o(e)},i.logger=function(e){const t=t=>function(...n){if("debug"===t){if(!e.config.debug)return;t="log"}n.unshift("[Honeybadger]"),e.config.logger[t](...n)};return{log:t("log"),info:t("info"),debug:t("debug"),warn:t("warn"),error:t("error")}},i.makeNotice=function(e){let t;if(e)if(O(e)){const n=e;t=w(e,{name:n.name,message:n.message,stack:n.stack,cause:n.cause})}else if("object"==typeof e)t=j(e);else{t={message:String(e)}}else t={};return t},i.isErrorObject=O,i.instrument=function(e,t,n){if(!(e&&t&&n&&t in e))return;let r=e[t];for(;r&&r.__hb_original;)r=r.__hb_original;try{e[t]=n(r),e[t].__hb_original=r}catch(e){}},i.endpoint=function(e,t){return`${e.trim().replace(/\/$/,"")}/${t=t.trim().replace(/(^\/|\/$)/g,"")}`},i.generateStackTrace=function(){try{throw new Error("")}catch(e){if(e.stack)return e.stack}const e=10,t=[];let n=arguments.callee;for(;n&&t.length<e;){/function(?:\s+([\w$]+))+\s*\(/.test(n.toString())?t.push(RegExp.$1||"<anonymous>"):t.push("<anonymous>");try{n=n.caller}catch(e){break}}return t.join("\n")},i.filter=function(e,t){if(!x("Object",e))return;x("Array",t)||(t=[]);const n=[];return function e(r){let o,i;if(x("Object",r)||x("Array",r)){if(-1!==n.indexOf(r))return"[CIRCULAR DATA STRUCTURE]";n.push(r)}if(x("Object",r)){for(o in i={},r)k(o,t)?i[o]="[FILTERED]":i[o]=e(r[o]);return i}return x("Array",r)?r.map((function(t){return e(t)})):x("Function",r)?"[FUNC]":r}(e)},i.filterUrl=function(e,t){if(!t)return e;if("string"!=typeof e)return e;const n=e.split(/\?/,2)[1];if(!n)return e;let r=e;return n.split(/[&]\s?/).forEach((e=>{const[n,o]=e.split("=",2);k(n,t)&&(r=r.replace(`${n}=${o}`,`${n}=[FILTERED]`))})),r},i.formatCGIData=function(e,t=""){const n={};return Object.keys(e).forEach((function(r){const o=t+r.replace(/\W/g,"_").toUpperCase();n[o]=e[r]})),n},i.clone=function(e){return JSON.parse(JSON.stringify(e))},i.isBrowserConfig=function(e){return void 0!==e.async};var S={};Object.defineProperty(S,"__esModule",{value:!0}),S.GlobalStore=void 0;S.GlobalStore=class{constructor(e){this.store=e}getStore(){return this.store}run(e,t,...n){return this.store=e,t(...n)}},Object.defineProperty(o,"__esModule",{value:!0}),o.Client=void 0;const C=i,T=S,P={name:"honeybadger-js",url:"https://github.com/honeybadger-io/honeybadger-js",version:"4.1.2"},R=/,|\s+/,U=/\S/;o.Client=class{constructor(e={},t){this.__pluginsExecuted=!1,this.__store=null,this.__beforeNotifyHandlers=[],this.__afterNotifyHandlers=[],this.config=Object.assign({apiKey:null,endpoint:"https://api.honeybadger.io",environment:null,hostname:null,projectRoot:null,component:null,action:null,revision:null,reportData:null,breadcrumbsEnabled:!0,maxBreadcrumbs:40,maxObjectDepth:8,logger:console,developmentEnvironments:["dev","development","test"],debug:!1,tags:null,enableUncaught:!0,enableUnhandledRejection:!0,afterUncaught:()=>!0,filters:["creditcard","password"],__plugins:[]},e),this.__store=new T.GlobalStore({context:{},breadcrumbs:[]}),this.__transport=t,this.logger=(0,C.logger)(this)}getVersion(){return P.version}configure(e={}){for(const t in e)this.config[t]=e[t];return this.__pluginsExecuted||(this.__pluginsExecuted=!0,this.config.__plugins.forEach((e=>e.load(this)))),this}__setStore(e){this.__store=e}beforeNotify(e){return this.__beforeNotifyHandlers.push(e),this}afterNotify(e){return this.__afterNotifyHandlers.push(e),this}setContext(e){if("object"==typeof e){const t=this.__store.getStore();t.context=(0,C.merge)(t.context,e)}return this}resetContext(e){this.logger.warn("Deprecation warning: `Honeybadger.resetContext()` has been deprecated; please use `Honeybadger.clear()` instead.");const t=this.__store.getStore();return t.context="object"==typeof e&&null!==e?e:{},this}clear(){const e=this.__store.getStore();return e.context={},e.breadcrumbs=[],this}notify(e,t,n){let r=null;const o=this.makeNotice(e,t,n);o||(this.logger.debug("failed to build error report"),r=new Error("failed to build error report")),r||!1!==this.config.reportData||(this.logger.debug("skipping error report: honeybadger.js is disabled",o),r=new Error("honeybadger.js is disabled")),!r&&this.__developmentMode()&&(this.logger.log("honeybadger.js is in development mode; the following error report will be sent in production.",o),r=new Error("honeybadger.js is in development mode")),r||this.config.apiKey||(this.logger.warn("could not send error report: no API key has been configured",o),r=new Error("missing API key"));const i=o&&o.backtrace?o.backtrace.map((e=>(0,C.shallowClone)(e))):null,a=(0,C.runBeforeNotifyHandlers)(o,this.__beforeNotifyHandlers);if(r||a||(this.logger.debug("skipping error report: beforeNotify handlers returned false",o),r=new Error("beforeNotify handlers returned false")),r)return(0,C.runAfterNotifyHandlers)(o,this.__afterNotifyHandlers,r),!1;this.addBreadcrumb("Honeybadger Notice",{category:"notice",metadata:{message:o.message,name:o.name,stack:o.stack}});const s=this.__getStoreContentsOrDefault().breadcrumbs;return o.__breadcrumbs=this.config.breadcrumbsEnabled?s.slice():[],(0,C.getSourceForBacktrace)(i,this.__getSourceFileHandler).then((e=>{e.forEach(((e,t)=>{o.backtrace[t].source=e}));const t=this.__buildPayload(o);this.__transport.send({headers:{"X-API-Key":this.config.apiKey,"Content-Type":"application/json",Accept:"text/json, application/json"},method:"POST",endpoint:(0,C.endpoint)(this.config.endpoint,"/v1/notices/js"),maxObjectDepth:this.config.maxObjectDepth,logger:this.logger,async:(0,C.isBrowserConfig)(this.config)?this.config.async:void 0},t).then((e=>{if(201!==e.statusCode)return(0,C.runAfterNotifyHandlers)(o,this.__afterNotifyHandlers,new Error(`Bad HTTP response: ${e.statusCode}`)),void this.logger.warn(`Error report failed: unknown response from server. code=${e.statusCode}`);const t=JSON.parse(e.body).id;(0,C.runAfterNotifyHandlers)((0,C.merge)(o,{id:t}),this.__afterNotifyHandlers),this.logger.info(`Error report sent ⚡ https://app.honeybadger.io/notice/${t}`)})).catch((e=>{this.logger.error("Error report failed: an unknown error occurred.",`message=${e.message}`),(0,C.runAfterNotifyHandlers)(o,this.__afterNotifyHandlers,e)}))})),!0}notifyAsync(e,t,n){return new Promise(((r,o)=>{let i;i=e.afterNotify?e:t&&t.afterNotify?t:n&&n.afterNotify?n:t&&"object"==typeof t?t:n||(t={}),(e=>{const t=e.afterNotify;e.afterNotify=e=>{if(null==t||t.call(this,e),e)return o(e);r()}})(i),this.notify(e,t,n)}))}makeNotice(e,t,n){let r=(0,C.makeNotice)(e);if(t&&"object"!=typeof t){t={name:String(t)}}if(t&&(r=(0,C.mergeNotice)(r,t)),"object"==typeof n&&null!==n&&(r=(0,C.mergeNotice)(r,n)),(0,C.objectIsEmpty)(r))return null;const o=this.__getStoreContentsOrDefault().context,i=this.__constructTags(r.tags),a=this.__constructTags(o.tags),s=this.__constructTags(this.config.tags),c=i.concat(a).concat(s),u=c.filter(((e,t)=>c.indexOf(e)===t));r=(0,C.merge)(r,{name:r.name||"Error",context:(0,C.merge)(o,r.context),projectRoot:r.projectRoot||this.config.projectRoot,environment:r.environment||this.config.environment,component:r.component||this.config.component,action:r.action||this.config.action,revision:r.revision||this.config.revision,tags:u});let l=0;return"string"==typeof r.stack&&r.stack.trim()||(r.stack=(0,C.generateStackTrace)(),l=2),r.backtrace=(0,C.makeBacktrace)(r.stack,l),r}addBreadcrumb(e,t){if(!this.config.breadcrumbsEnabled)return;t=t||{};const n=(0,C.shallowClone)(t.metadata),r=t.category||"custom",o=(new Date).toISOString(),i=this.__store.getStore();let a=i.breadcrumbs;a.push({category:r,message:e,metadata:n,timestamp:o});const s=this.config.maxBreadcrumbs;return a.length>s&&(a=a.slice(a.length-s)),i.breadcrumbs=a,this}__developmentMode(){return!0!==this.config.reportData&&(this.config.environment&&this.config.developmentEnvironments.includes(this.config.environment))}__buildPayload(e){const t=(0,C.filter)(e.headers,this.config.filters)||{},n=(0,C.filter)(Object.assign(Object.assign({},e.cgiData),(0,C.formatCGIData)(t,"HTTP_")),this.config.filters);return{notifier:P,breadcrumbs:{enabled:!!this.config.breadcrumbsEnabled,trail:e.__breadcrumbs||[]},error:{class:e.name,message:e.message,backtrace:e.backtrace,fingerprint:e.fingerprint,tags:e.tags,causes:(0,C.getCauses)(e)},request:{url:(0,C.filterUrl)(e.url,this.config.filters),component:e.component,action:e.action,context:e.context,cgi_data:n,params:(0,C.filter)(e.params,this.config.filters)||{},session:(0,C.filter)(e.session,this.config.filters)||{}},server:{project_root:e.projectRoot,environment_name:e.environment,revision:e.revision,hostname:this.config.hostname,time:(new Date).toUTCString()},details:e.details||{}}}__constructTags(e){return e?e.toString().split(R).filter((e=>U.test(e))):[]}__getStoreContentsOrDefault(){const e=this.__store.getStore()||{};return Object.assign({context:{},breadcrumbs:[]},e)}};var H={};Object.defineProperty(H,"__esModule",{value:!0}),function(t){var n=e&&e.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),r=e&&e.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&n(t,e,o);return r(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.Util=t.Types=t.Store=t.Client=void 0;var s=o;Object.defineProperty(t,"Client",{enumerable:!0,get:function(){return s.Client}}),t.Store=a(S),t.Types=a(H),t.Util=a(i)}(r);var $={};function M(e){if(!e||!e.tagName)return"";let t=e.tagName.toLowerCase();if("html"===t)return"";e.id&&(t+=`#${e.id}`);const n=e.getAttribute("class");n&&n.split(/\s+/).forEach((e=>{t+=`.${e}`})),["alt","name","title","type"].forEach((n=>{const r=e.getAttribute(n);r&&(t+=`[${n}="${r}"]`)}));const r=function(e){try{const t=e.parentNode.childNodes,n=[];return Array.prototype.forEach.call(t,(t=>{t.tagName&&t.tagName===e.tagName&&n.push(t)})),n}catch(e){return[]}}(e);return r.length>1&&(t+=`:nth-child(${Array.prototype.indexOf.call(r,e)+1})`),t}function B(e){return-1!==e.toString().indexOf("native")}function A(e){const t=e.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/)||{};return{protocol:t[2],host:t[4],pathname:t[5]}}Object.defineProperty($,"__esModule",{value:!0}),$.preferCatch=$.encodeCookie=$.decodeCookie=$.localURLPathname=$.parseURL=$.nativeFetch=$.stringTextOfElement=$.stringSelectorOfElement=$.stringNameOfElement=void 0,$.stringNameOfElement=M,$.stringSelectorOfElement=function e(t){const n=M(t);if(t.parentNode&&t.parentNode.tagName){const r=e(t.parentNode);if(r.length>0)return`${r} > ${n}`}return n},$.stringTextOfElement=function(e){let t=e.textContent||e.innerText||"";return t||"submit"!==e.type&&"button"!==e.type||(t=e.value),function(e,t){e.length>t&&(e=e.substr(0,t)+"...");return e}(t.trim(),300)},$.nativeFetch=function(){if(!window.fetch)return!1;if(B(window.fetch))return!0;try{const e=document.createElement("iframe");e.style.display="none",document.head.appendChild(e);const t=e.contentWindow.fetch&&B(e.contentWindow.fetch);return document.head.removeChild(e),t}catch(e){console&&console.warn&&console.warn("failed to detect native fetch via iframe: "+e)}return!1},$.parseURL=A,$.localURLPathname=function(e){const t=A(e),n=A(document.URL);return t.host&&t.protocol?t.protocol===n.protocol&&t.host===n.host?t.pathname:`${t.protocol}://${t.host}${t.pathname}`:t.pathname},$.decodeCookie=function(e){const t={};return e.split(/[;,]\s?/).forEach((e=>{const[n,r]=e.split("=",2);t[n]=r})),t},$.encodeCookie=function(e){if("object"!=typeof e)return;const t=[];for(const n in e)t.push(n+"="+e[n]);return t.join(";")},$.preferCatch=function(){let e=!0;if(window.atob||(e=!1),window.ErrorEvent)try{0===new window.ErrorEvent("").colno&&(e=!1)}catch(e){}return e}();var D={};Object.defineProperty(D,"__esModule",{value:!0}),D.onError=D.ignoreNextOnError=void 0;const I=r,{instrument:L,makeNotice:q}=I.Util;let F,W=0;D.ignoreNextOnError=function(){W+=1,clearTimeout(F),F=setTimeout((()=>{W=0}))},D.onError=function(e=window){return{load:t=>{L(e,"onerror",(function(e){const n=function(e,n,r,o,i){if(t.logger.debug("window.onerror callback invoked",arguments),W>0)return t.logger.debug("Ignoring window.onerror (error likely reported earlier)",arguments),void(W-=1);if(0===r&&/Script error\.?/.test(e))return void(t.config.enableUncaught&&t.logger.warn("Ignoring cross-domain script error: enable CORS to track these types of errors",arguments));const a=q(i);a.name||(a.name="window.onerror"),a.message||(a.message=e),a.stack||(a.stack=[a.message,"\n at ? (",n||"unknown",":",r||0,":",o||0,")"].join("")),t.addBreadcrumb("window.onerror"!==a.name&&a.name?`window.onerror: ${a.name}`:"window.onerror",{category:"error",metadata:{name:a.name,message:a.message,stack:a.stack}}),t.config.enableUncaught&&t.notify(a)};return function(t,r,o,i,a){return n(t,r,o,i,a),"function"==typeof e&&e.apply(window,arguments)}}))}}};var G={};Object.defineProperty(G,"__esModule",{value:!0});const X=r,{instrument:K}=X.Util;G.default=function(e=window){return{load:t=>{t.config.enableUnhandledRejection&&K(e,"onunhandledrejection",(function(e){function n(e){var n;if(t.logger.debug("window.onunhandledrejection callback invoked",arguments),!t.config.enableUnhandledRejection)return;const{reason:r}=e;if(r instanceof Error){const e="unknown",n=0,o=`${r.message}\n at ? (${e}:${n})`,i=r.stack||o,a={name:r.name,message:`UnhandledPromiseRejectionWarning: ${r}`,stack:i};return t.addBreadcrumb(`window.onunhandledrejection: ${a.name}`,{category:"error",metadata:a}),void t.notify(a)}const o="string"==typeof r?r:null!==(n=JSON.stringify(r))&&void 0!==n?n:"Unspecified reason";t.notify({name:"window.onunhandledrejection",message:`UnhandledPromiseRejectionWarning: ${o}`})}return function(t){n(t),"function"==typeof e&&e.apply(this,arguments)}}))}}};var z={};Object.defineProperty(z,"__esModule",{value:!0});const J=r,V=$,{sanitize:Q,instrument:Y}=J.Util;z.default=function(e=window){return{load:t=>{function n(e){return!0===t.config.breadcrumbsEnabled||(e?!0===t.config.breadcrumbsEnabled[e]:!1!==t.config.breadcrumbsEnabled)}!function(){function r(e){return Array.isArray(e)?e.map((e=>{try{return String(e)}catch(e){return"[unknown]"}})).join(" "):""}n("console")&&["debug","info","warn","error","log"].forEach((n=>{Y(e.console,n,(function(o){return function(){const i=Array.prototype.slice.call(arguments),a=r(i),s={category:"log",metadata:{level:n,arguments:Q(i,3)}};t.addBreadcrumb(a,s),"function"==typeof o&&Function.prototype.apply.call(o,e.console,arguments)}}))}))}(),n("dom")&&e.addEventListener("click",(e=>{let n,r,o;try{n=(0,V.stringNameOfElement)(e.target),r=(0,V.stringSelectorOfElement)(e.target),o=(0,V.stringTextOfElement)(e.target)}catch(e){n="UI Click",r="[unknown]",o="[unknown]"}0!==n.length&&t.addBreadcrumb(n,{category:"ui.click",metadata:{selector:r,text:o,event:e}})}),!0),n("network")&&(Y(XMLHttpRequest.prototype,"open",(function(e){return function(){const t=this,n=arguments[1],r="string"==typeof arguments[0]?arguments[0].toUpperCase():arguments[0],o=`${r} ${(0,V.localURLPathname)(n)}`;this.__hb_xhr={type:"xhr",method:r,url:n,message:o},"function"==typeof e&&e.apply(t,arguments)}})),Y(XMLHttpRequest.prototype,"send",(function(e){return function(){const n=this;function r(){if(4===n.readyState){let e;n.__hb_xhr&&(n.__hb_xhr.status_code=n.status,e=n.__hb_xhr.message,delete n.__hb_xhr.message),t.addBreadcrumb(e||"XMLHttpRequest",{category:"request",metadata:n.__hb_xhr})}}"onreadystatechange"in n&&"function"==typeof n.onreadystatechange?Y(n,"onreadystatechange",(function(e){return function(){r(),"function"==typeof e&&e.apply(this,arguments)}})):n.onreadystatechange=r,"function"==typeof e&&e.apply(n,arguments)}}))),n("network")&&(0,V.nativeFetch)()&&Y(e,"fetch",(function(n){return function(){const r=arguments[0];let o,i="GET";"string"==typeof r?o=r:"Request"in e&&r instanceof Request?(o=r.url,r.method&&(i=r.method)):o=String(r),arguments[1]&&arguments[1].method&&(i=arguments[1].method),"string"==typeof i&&(i=i.toUpperCase());const a=`${i} ${(0,V.localURLPathname)(o)}`,s={type:"fetch",method:i,url:o};return n.apply(this,arguments).then((function(e){return s.status_code=e.status,t.addBreadcrumb(a,{category:"request",metadata:s}),e})).catch((function(e){throw t.addBreadcrumb("fetch error",{category:"error",metadata:s}),e}))}})),function(){if(!n("navigation"))return;let r=e.location.href;function o(e,n){r=n,t.addBreadcrumb("Page changed",{category:"navigation",metadata:{from:e,to:n}})}function i(e){return function(){const t=arguments.length>2?arguments[2]:void 0;return t&&o(r,String(t)),e.apply(this,arguments)}}Y(e,"onpopstate",(function(t){return function(){if(o(r,e.location.href),t)return t.apply(this,arguments)}})),Y(e.history,"pushState",i),Y(e.history,"replaceState",i)}()}}};var Z={};Object.defineProperty(Z,"__esModule",{value:!0});const ee=r,{instrument:te}=ee.Util;Z.default=function(e=window){return{load:t=>{!function(){function n(e){return function(n){return function(r,o){if("function"==typeof r){const i=Array.prototype.slice.call(arguments,2);return r=t.__wrap(r,e),n((function(){r(...i)}),o)}return n(r,o)}}}te(e,"setTimeout",n({component:"setTimeout"})),te(e,"setInterval",n({component:"setInterval"}))}()}}};var ne={};Object.defineProperty(ne,"__esModule",{value:!0});const re=r,{instrument:oe}=re.Util;ne.default=function(e=window){return{load:t=>{["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"].forEach((function(n){const r=e[n]&&e[n].prototype;r&&Object.prototype.hasOwnProperty.call(r,"addEventListener")&&(oe(r,"addEventListener",(function(e){const r={component:`${n}.prototype.addEventListener`};return function(n,o,i,a){try{o&&null!=o.handleEvent&&(o.handleEvent=t.__wrap(o.handleEvent,r))}catch(e){t.logger.error(e)}return e.call(this,n,t.__wrap(o,r),i,a)}})),oe(r,"removeEventListener",(function(e){return function(n,r,o,i){return e.call(this,n,r,o,i),e.call(this,n,t.__wrap(r),o,i)}})))}))}}};var ie={};Object.defineProperty(ie,"__esModule",{value:!0}),ie.BrowserTransport=void 0;const ae=r,{sanitize:se}=ae.Util;ie.BrowserTransport=class{send(e,t){return new Promise(((n,r)=>{try{const r=new XMLHttpRequest;if(r.open(e.method,e.endpoint,e.async),Object.keys(e.headers||[]).length)for(const t in e.headers)void 0!==e.headers[t]&&r.setRequestHeader(t,String(e.headers[t]));r.send(t?JSON.stringify(se(t,e.maxObjectDepth)):void 0),r.onload=()=>n({statusCode:r.status,body:r.response})}catch(e){r(e)}}))}};var ce=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0});const ue=r,le=$,fe=D,de=ce(G),ge=ce(z),pe=ce(Z),he=ce(ne),me=ie,{merge:be,filter:ye,objectIsExtensible:_e}=ue.Util;class ve extends ue.Client{constructor(e={}){super(Object.assign({async:!0,maxErrors:null,projectRoot:window.location.protocol+"//"+window.location.host},e),new me.BrowserTransport),this.__errorsSent=0,this.__lastWrapErr=void 0,this.__beforeNotifyHandlers=[e=>this.__exceedsMaxErrors()?(this.logger.debug("Dropping notice: max errors exceeded",e),!1):(e&&!e.url&&(e.url=document.URL),this.__incrementErrorsCount(),!0)]}configure(e={}){return super.configure(e)}resetMaxErrors(){return this.__errorsSent=0}factory(e){return new ve(e)}checkIn(e){throw new Error("Honeybadger.checkIn() is not supported on the browser")}__buildPayload(e){const t={HTTP_USER_AGENT:void 0,HTTP_REFERER:void 0,HTTP_COOKIE:void 0};let n;t.HTTP_USER_AGENT=navigator.userAgent,document.referrer.match(/\S/)&&(t.HTTP_REFERER=document.referrer),n="string"==typeof e.cookies?(0,le.decodeCookie)(e.cookies):e.cookies,n&&(t.HTTP_COOKIE=(0,le.encodeCookie)(ye(n,this.config.filters)));const r=super.__buildPayload(e);return r.request.cgi_data=be(t,r.request.cgi_data),r}__wrap(e,t={}){const n=e;t||(t={});try{if("function"!=typeof n)return n;if(!_e(n))return n;if(!n.___hb){const e=this;n.___hb=function(){if(!le.preferCatch)return n.apply(this,arguments);try{return n.apply(this,arguments)}catch(n){if(e.__lastWrapErr===n)throw n;throw e.__lastWrapErr=n,(0,fe.ignoreNextOnError)(),e.addBreadcrumb(t.component?`${t.component}: ${n.name}`:n.name,{category:"error",metadata:{message:n.message,name:n.name,stack:n.stack}}),e.config.enableUncaught&&e.notify(n),n}}}return n.___hb.___hb=n.___hb,n.___hb}catch(e){return n}}__incrementErrorsCount(){return this.__errorsSent++}__exceedsMaxErrors(){return this.config.maxErrors&&this.__errorsSent>=this.config.maxErrors}}return n.default=new ve({__plugins:[(0,fe.onError)(),(0,de.default)(),(0,pe.default)(),(0,he.default)(),(0,ge.default)()]})})); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Honeybadger=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e){var t=e.default;if("function"==typeof t){var r=function(){return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})})),r}var r={},n={},o={},i={},a="<unknown>";var c=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,u=/\((\S*)(?::(\d+))(?::(\d+))\)/;var s=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;var l=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,f=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;var d=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i;var p=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;var g=Object.freeze({__proto__:null,parse:function(e){return e.split("\n").reduce((function(e,t){var r=function(e){var t=c.exec(e);if(!t)return null;var r=t[2]&&0===t[2].indexOf("native"),n=t[2]&&0===t[2].indexOf("eval"),o=u.exec(t[2]);n&&null!=o&&(t[2]=o[1],t[3]=o[2],t[4]=o[3]);return{file:r?null:t[2],methodName:t[1]||a,arguments:r?[t[2]]:[],lineNumber:t[3]?+t[3]:null,column:t[4]?+t[4]:null}}(t)||function(e){var t=s.exec(e);if(!t)return null;return{file:t[2],methodName:t[1]||a,arguments:[],lineNumber:+t[3],column:t[4]?+t[4]:null}}(t)||function(e){var t=l.exec(e);if(!t)return null;var r=t[3]&&t[3].indexOf(" > eval")>-1,n=f.exec(t[3]);r&&null!=n&&(t[3]=n[1],t[4]=n[2],t[5]=null);return{file:t[3],methodName:t[1]||a,arguments:t[2]?t[2].split(","):[],lineNumber:t[4]?+t[4]:null,column:t[5]?+t[5]:null}}(t)||function(e){var t=p.exec(e);if(!t)return null;return{file:t[2],methodName:t[1]||a,arguments:[],lineNumber:+t[3],column:t[4]?+t[4]:null}}(t)||function(e){var t=d.exec(e);if(!t)return null;return{file:t[3],methodName:t[1]||a,arguments:[],lineNumber:+t[4],column:t[5]?+t[5]:null}}(t);return r&&e.push(r),e}),[])}}),h=t(g),m=e&&e.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),v=e&&e.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),y=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&m(t,e,r);return v(t,e),t},b=e&&e.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{u(n.next(e))}catch(e){i(e)}}function c(e){try{u(n.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,c)}u((n=n.apply(e,t||[])).next())}))},_=e&&e.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}};Object.defineProperty(i,"__esModule",{value:!0}),i.isBrowserConfig=i.clone=i.formatCGIData=i.filterUrl=i.filter=i.generateStackTrace=i.endpoint=i.instrument=i.isErrorObject=i.makeNotice=i.logger=i.sanitize=i.shallowClone=i.runAfterNotifyHandlers=i.runBeforeNotifyHandlers=i.getSourceForBacktrace=i.getCauses=i.makeBacktrace=i.objectIsExtensible=i.objectIsEmpty=i.mergeNotice=i.merge=void 0;var w=y(h);function E(e,t){var r={};for(var n in e)r[n]=e[n];for(var n in t)r[n]=t[n];return r}function j(e,t){void 0===t&&(t=0);try{var r=w.parse(e).map((function(e){return{file:e.file,method:e.methodName,number:e.lineNumber,column:e.column}}));return r.splice(0,t),r}catch(e){return[]}}function O(e){if("object"!=typeof e||null===e)return{};var t={};for(var r in e)t[r]=e[r];return t}function k(e){return e instanceof Error||"[object Error]"===Object.prototype.toString.call(e)}function x(e,t){for(var r=0;r<t.length;r++)if(-1!==e.toLowerCase().indexOf(t[r].toLowerCase()))return!0;return!1}function N(e,t){var r=Object.prototype.toString.call(t).slice(8,-1);return null!=t&&r===e}i.merge=E,i.mergeNotice=function(e,t){var r=E(e,t);return e.context&&t.context&&(r.context=E(e.context,t.context)),r},i.objectIsEmpty=function(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0},i.objectIsExtensible=function(e){return"function"!=typeof Object.isExtensible||Object.isExtensible(e)},i.makeBacktrace=j,i.getCauses=function(e){if(e.cause){for(var t=[],r=e;t.length<3&&(r=r.cause);)t.push({class:r.name,message:r.message,backtrace:"string"==typeof r.stack?j(r.stack):null});return t}return[]},i.getSourceForBacktrace=function(e,t){return b(this,void 0,void 0,(function(){var r,n,o,i;return _(this,(function(a){switch(a.label){case 0:if(r=[],!t||!e||!e.length)return[2,r];n=0,a.label=1;case 1:return e.length?(o=e.splice(0)[n],[4,t(o.file)]):[3,3];case 2:return i=a.sent(),r[n]=function(e,t,r){void 0===r&&(r=2);if(!e)return null;var n=e.split("\n");n.unshift("");for(var o=t+r,i={},a=t-r;a<=o;a++){var c=n[a];"string"==typeof c&&(i[a]=c)}return i}(i,o.number),n++,[3,1];case 3:return[2,r]}}))}))},i.runBeforeNotifyHandlers=function(e,t){for(var r=!0,n=0,o=t.length;n<o;n++){!1===(0,t[n])(e)&&(r=!1)}return r},i.runAfterNotifyHandlers=function(e,t,r){e&&e.afterNotify&&e.afterNotify(r,e);for(var n=0,o=t.length;n<o;n++)t[n](r,e);return!0},i.shallowClone=O,i.sanitize=function(e,t){void 0===t&&(t=8);var r=[];function n(e,n){if(void 0===n&&(n=0),n>=t)return"[DEPTH]";if(!function(e){var t=typeof e;return/function/.test(t)?"toJSON"===e.name:!/symbol/.test(t)&&null!==e&&("object"!=typeof e||void 0!==e.hasOwnProperty)}(e))return Object.prototype.toString.call(e);if(function(e){if(!e||"object"!=typeof e)return!1;for(var t=0;t<r.length;t++)if(r[t]===e)return!0;return r.push(e),!1}(e))return"[RECURSION]";if(Array.isArray(e))return e.map((function(e){return o(e,n+1)}));if("object"==typeof e){var i={};for(var a in e){var c=e[a];Object.prototype.hasOwnProperty.call(e,a)&&null!=a&&null!=c&&(i[a]=o(c,n+1))}return i}return e}function o(e,t){void 0===t&&(t=0);try{return n(e,t)}catch(e){return"[ERROR] ".concat(e)}}return o(e)},i.logger=function(e){var t=function(t){return function(){for(var r,n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];if("debug"===t){if(!e.config.debug)return;t="log"}n.unshift("[Honeybadger]"),(r=e.config.logger)[t].apply(r,n)}};return{log:t("log"),info:t("info"),debug:t("debug"),warn:t("warn"),error:t("error")}},i.makeNotice=function(e){var t;if(e)if(k(e)){var r=e;t=E(e,{name:r.name,message:r.message,stack:r.stack,cause:r.cause})}else if("object"==typeof e)t=O(e);else{t={message:String(e)}}else t={};return t},i.isErrorObject=k,i.instrument=function(e,t,r){if(e&&t&&r&&t in e){for(var n=e[t];n&&n.__hb_original;)n=n.__hb_original;try{e[t]=r(n),e[t].__hb_original=n}catch(e){}}},i.endpoint=function(e,t){var r=e.trim().replace(/\/$/,"");return t=t.trim().replace(/(^\/|\/$)/g,""),"".concat(r,"/").concat(t)},i.generateStackTrace=function(){try{throw new Error("")}catch(e){if(e.stack)return e.stack}for(var e=10,t=[],r=arguments.callee;r&&t.length<e;){/function(?:\s+([\w$]+))+\s*\(/.test(r.toString())?t.push(RegExp.$1||"<anonymous>"):t.push("<anonymous>");try{r=r.caller}catch(e){break}}return t.join("\n")},i.filter=function(e,t){if(N("Object",e)){N("Array",t)||(t=[]);var r=[];return function e(n){var o,i;if(N("Object",n)||N("Array",n)){if(-1!==r.indexOf(n))return"[CIRCULAR DATA STRUCTURE]";r.push(n)}if(N("Object",n)){for(o in i={},n)x(o,t)?i[o]="[FILTERED]":i[o]=e(n[o]);return i}return N("Array",n)?n.map((function(t){return e(t)})):N("Function",n)?"[FUNC]":n}(e)}},i.filterUrl=function(e,t){if(!t)return e;if("string"!=typeof e)return e;var r=e.split(/\?/,2)[1];if(!r)return e;var n=e;return r.split(/[&]\s?/).forEach((function(e){var r=e.split("=",2),o=r[0],i=r[1];x(o,t)&&(n=n.replace("".concat(o,"=").concat(i),"".concat(o,"=[FILTERED]")))})),n},i.formatCGIData=function(e,t){void 0===t&&(t="");var r={};return Object.keys(e).forEach((function(n){var o=t+n.replace(/\W/g,"_").toUpperCase();r[o]=e[n]})),r},i.clone=function(e){return JSON.parse(JSON.stringify(e))},i.isBrowserConfig=function(e){return void 0!==e.async};var S={};Object.defineProperty(S,"__esModule",{value:!0}),S.GlobalStore=void 0;var C=function(){function e(e){this.store=e}return e.prototype.getStore=function(){return this.store},e.prototype.run=function(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];return this.store=e,t.apply(void 0,r)},e}();S.GlobalStore=C;var T=e&&e.__assign||function(){return T=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},T.apply(this,arguments)};Object.defineProperty(o,"__esModule",{value:!0}),o.Client=void 0;var P=i,R=S,U={name:"honeybadger-js",url:"https://github.com/honeybadger-io/honeybadger-js",version:"4.1.3"},H=/,|\s+/,M=/\S/,B=function(){function e(e,t){void 0===e&&(e={}),this.__pluginsExecuted=!1,this.__store=null,this.__beforeNotifyHandlers=[],this.__afterNotifyHandlers=[],this.config=T({apiKey:null,endpoint:"https://api.honeybadger.io",environment:null,hostname:null,projectRoot:null,component:null,action:null,revision:null,reportData:null,breadcrumbsEnabled:!0,maxBreadcrumbs:40,maxObjectDepth:8,logger:console,developmentEnvironments:["dev","development","test"],debug:!1,tags:null,enableUncaught:!0,enableUnhandledRejection:!0,afterUncaught:function(){return!0},filters:["creditcard","password"],__plugins:[]},e),this.__store=new R.GlobalStore({context:{},breadcrumbs:[]}),this.__transport=t,this.logger=(0,P.logger)(this)}return e.prototype.getVersion=function(){return U.version},e.prototype.configure=function(e){var t=this;for(var r in void 0===e&&(e={}),e)this.config[r]=e[r];return this.__pluginsExecuted||(this.__pluginsExecuted=!0,this.config.__plugins.forEach((function(e){return e.load(t)}))),this},e.prototype.__setStore=function(e){this.__store=e},e.prototype.beforeNotify=function(e){return this.__beforeNotifyHandlers.push(e),this},e.prototype.afterNotify=function(e){return this.__afterNotifyHandlers.push(e),this},e.prototype.setContext=function(e){if("object"==typeof e){var t=this.__store.getStore();t.context=(0,P.merge)(t.context,e)}return this},e.prototype.resetContext=function(e){this.logger.warn("Deprecation warning: `Honeybadger.resetContext()` has been deprecated; please use `Honeybadger.clear()` instead.");var t=this.__store.getStore();return t.context="object"==typeof e&&null!==e?e:{},this},e.prototype.clear=function(){var e=this.__store.getStore();return e.context={},e.breadcrumbs=[],this},e.prototype.notify=function(e,t,r){var n=this;void 0===t&&(t=void 0),void 0===r&&(r=void 0);var o=null,i=this.makeNotice(e,t,r);i||(this.logger.debug("failed to build error report"),o=new Error("failed to build error report")),o||!1!==this.config.reportData||(this.logger.debug("skipping error report: honeybadger.js is disabled",i),o=new Error("honeybadger.js is disabled")),!o&&this.__developmentMode()&&(this.logger.log("honeybadger.js is in development mode; the following error report will be sent in production.",i),o=new Error("honeybadger.js is in development mode")),o||this.config.apiKey||(this.logger.warn("could not send error report: no API key has been configured",i),o=new Error("missing API key"));var a=i&&i.backtrace?i.backtrace.map((function(e){return(0,P.shallowClone)(e)})):null,c=(0,P.runBeforeNotifyHandlers)(i,this.__beforeNotifyHandlers);if(o||c||(this.logger.debug("skipping error report: beforeNotify handlers returned false",i),o=new Error("beforeNotify handlers returned false")),o)return(0,P.runAfterNotifyHandlers)(i,this.__afterNotifyHandlers,o),!1;this.addBreadcrumb("Honeybadger Notice",{category:"notice",metadata:{message:i.message,name:i.name,stack:i.stack}});var u=this.__getStoreContentsOrDefault().breadcrumbs;return i.__breadcrumbs=this.config.breadcrumbsEnabled?u.slice():[],(0,P.getSourceForBacktrace)(a,this.__getSourceFileHandler).then((function(e){e.forEach((function(e,t){i.backtrace[t].source=e}));var t=n.__buildPayload(i);n.__transport.send({headers:{"X-API-Key":n.config.apiKey,"Content-Type":"application/json",Accept:"text/json, application/json"},method:"POST",endpoint:(0,P.endpoint)(n.config.endpoint,"/v1/notices/js"),maxObjectDepth:n.config.maxObjectDepth,logger:n.logger,async:(0,P.isBrowserConfig)(n.config)?n.config.async:void 0},t).then((function(e){if(201!==e.statusCode)return(0,P.runAfterNotifyHandlers)(i,n.__afterNotifyHandlers,new Error("Bad HTTP response: ".concat(e.statusCode))),void n.logger.warn("Error report failed: unknown response from server. code=".concat(e.statusCode));var t=JSON.parse(e.body).id;(0,P.runAfterNotifyHandlers)((0,P.merge)(i,{id:t}),n.__afterNotifyHandlers),n.logger.info("Error report sent ⚡ https://app.honeybadger.io/notice/".concat(t))})).catch((function(e){n.logger.error("Error report failed: an unknown error occurred.","message=".concat(e.message)),(0,P.runAfterNotifyHandlers)(i,n.__afterNotifyHandlers,e)}))})),!0},e.prototype.notifyAsync=function(e,t,r){var n=this;return void 0===t&&(t=void 0),void 0===r&&(r=void 0),new Promise((function(o,i){var a,c,u;a=e.afterNotify?e:t&&t.afterNotify?t:r&&r.afterNotify?r:t&&"object"==typeof t?t:r||(t={}),u=(c=a).afterNotify,c.afterNotify=function(e){if(null==u||u.call(n,e),e)return i(e);o()},n.notify(e,t,r)}))},e.prototype.makeNotice=function(e,t,r){void 0===t&&(t=void 0),void 0===r&&(r=void 0);var n=(0,P.makeNotice)(e);t&&"object"!=typeof t&&(t={name:String(t)});if(t&&(n=(0,P.mergeNotice)(n,t)),"object"==typeof r&&null!==r&&(n=(0,P.mergeNotice)(n,r)),(0,P.objectIsEmpty)(n))return null;var o=this.__getStoreContentsOrDefault().context,i=this.__constructTags(n.tags),a=this.__constructTags(o.tags),c=this.__constructTags(this.config.tags),u=i.concat(a).concat(c),s=u.filter((function(e,t){return u.indexOf(e)===t})),l=0;return"string"==typeof(n=(0,P.merge)(n,{name:n.name||"Error",context:(0,P.merge)(o,n.context),projectRoot:n.projectRoot||this.config.projectRoot,environment:n.environment||this.config.environment,component:n.component||this.config.component,action:n.action||this.config.action,revision:n.revision||this.config.revision,tags:s})).stack&&n.stack.trim()||(n.stack=(0,P.generateStackTrace)(),l=2),n.backtrace=(0,P.makeBacktrace)(n.stack,l),n},e.prototype.addBreadcrumb=function(e,t){if(this.config.breadcrumbsEnabled){t=t||{};var r=(0,P.shallowClone)(t.metadata),n=t.category||"custom",o=(new Date).toISOString(),i=this.__store.getStore(),a=i.breadcrumbs;a.push({category:n,message:e,metadata:r,timestamp:o});var c=this.config.maxBreadcrumbs;return a.length>c&&(a=a.slice(a.length-c)),i.breadcrumbs=a,this}},e.prototype.__developmentMode=function(){return!0!==this.config.reportData&&(this.config.environment&&this.config.developmentEnvironments.includes(this.config.environment))},e.prototype.__buildPayload=function(e){var t=(0,P.filter)(e.headers,this.config.filters)||{},r=(0,P.filter)(T(T({},e.cgiData),(0,P.formatCGIData)(t,"HTTP_")),this.config.filters);return{notifier:U,breadcrumbs:{enabled:!!this.config.breadcrumbsEnabled,trail:e.__breadcrumbs||[]},error:{class:e.name,message:e.message,backtrace:e.backtrace,fingerprint:e.fingerprint,tags:e.tags,causes:(0,P.getCauses)(e)},request:{url:(0,P.filterUrl)(e.url,this.config.filters),component:e.component,action:e.action,context:e.context,cgi_data:r,params:(0,P.filter)(e.params,this.config.filters)||{},session:(0,P.filter)(e.session,this.config.filters)||{}},server:{project_root:e.projectRoot,environment_name:e.environment,revision:e.revision,hostname:this.config.hostname,time:(new Date).toUTCString()},details:e.details||{}}},e.prototype.__constructTags=function(e){return e?e.toString().split(H).filter((function(e){return M.test(e)})):[]},e.prototype.__getStoreContentsOrDefault=function(){var e=this.__store.getStore();return T({context:{},breadcrumbs:[]},e||{})},e}();o.Client=B;var A={};Object.defineProperty(A,"__esModule",{value:!0}),function(t){var r=e&&e.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),n=e&&e.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=e&&e.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)"default"!==o&&Object.prototype.hasOwnProperty.call(e,o)&&r(t,e,o);return n(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.Util=t.Types=t.Store=t.Client=void 0;var c=o;Object.defineProperty(t,"Client",{enumerable:!0,get:function(){return c.Client}}),t.Store=a(S),t.Types=a(A),t.Util=a(i)}(n);var D={};function I(e){if(!e||!e.tagName)return"";var t=e.tagName.toLowerCase();if("html"===t)return"";e.id&&(t+="#".concat(e.id));var r=e.getAttribute("class");r&&r.split(/\s+/).forEach((function(e){t+=".".concat(e)})),["alt","name","title","type"].forEach((function(r){var n=e.getAttribute(r);n&&(t+="[".concat(r,'="').concat(n,'"]'))}));var n=function(e){try{var t=e.parentNode.childNodes,r=[];return Array.prototype.forEach.call(t,(function(t){t.tagName&&t.tagName===e.tagName&&r.push(t)})),r}catch(e){return[]}}(e);return n.length>1&&(t+=":nth-child(".concat(Array.prototype.indexOf.call(n,e)+1,")")),t}function L(e){return-1!==e.toString().indexOf("native")}function q(e){var t=e.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/)||{};return{protocol:t[2],host:t[4],pathname:t[5]}}Object.defineProperty(D,"__esModule",{value:!0}),D.preferCatch=D.encodeCookie=D.decodeCookie=D.localURLPathname=D.parseURL=D.nativeFetch=D.stringTextOfElement=D.stringSelectorOfElement=D.stringNameOfElement=void 0,D.stringNameOfElement=I,D.stringSelectorOfElement=function e(t){var r=I(t);if(t.parentNode&&t.parentNode.tagName){var n=e(t.parentNode);if(n.length>0)return"".concat(n," > ").concat(r)}return r},D.stringTextOfElement=function(e){var t=e.textContent||e.innerText||"";return t||"submit"!==e.type&&"button"!==e.type||(t=e.value),function(e,t){e.length>t&&(e=e.substr(0,t)+"...");return e}(t.trim(),300)},D.nativeFetch=function(){if(!window.fetch)return!1;if(L(window.fetch))return!0;try{var e=document.createElement("iframe");e.style.display="none",document.head.appendChild(e);var t=e.contentWindow.fetch&&L(e.contentWindow.fetch);return document.head.removeChild(e),t}catch(e){console&&console.warn&&console.warn("failed to detect native fetch via iframe: "+e)}return!1},D.parseURL=q,D.localURLPathname=function(e){var t=q(e),r=q(document.URL);return t.host&&t.protocol?t.protocol===r.protocol&&t.host===r.host?t.pathname:"".concat(t.protocol,"://").concat(t.host).concat(t.pathname):t.pathname},D.decodeCookie=function(e){var t={};return e.split(/[;,]\s?/).forEach((function(e){var r=e.split("=",2),n=r[0],o=r[1];t[n]=o})),t},D.encodeCookie=function(e){if("object"==typeof e){var t=[];for(var r in e)t.push(r+"="+e[r]);return t.join(";")}},D.preferCatch=function(){var e=!0;if(window.atob||(e=!1),window.ErrorEvent)try{0===new window.ErrorEvent("").colno&&(e=!1)}catch(e){}return e}();var F={};Object.defineProperty(F,"__esModule",{value:!0}),F.onError=F.ignoreNextOnError=void 0;var W,G=n,$=G.Util.instrument,X=G.Util.makeNotice,K=0;F.ignoreNextOnError=function(){K+=1,clearTimeout(W),W=setTimeout((function(){K=0}))},F.onError=function(e){return void 0===e&&(e=window),{load:function(t){$(e,"onerror",(function(e){var r=function(e,r,n,o,i){if(t.logger.debug("window.onerror callback invoked",arguments),K>0)return t.logger.debug("Ignoring window.onerror (error likely reported earlier)",arguments),void(K-=1);if(0===n&&/Script error\.?/.test(e))t.config.enableUncaught&&t.logger.warn("Ignoring cross-domain script error: enable CORS to track these types of errors",arguments);else{var a=X(i);a.name||(a.name="window.onerror"),a.message||(a.message=e),a.stack||(a.stack=[a.message,"\n at ? (",r||"unknown",":",n||0,":",o||0,")"].join("")),t.addBreadcrumb("window.onerror"!==a.name&&a.name?"window.onerror: ".concat(a.name):"window.onerror",{category:"error",metadata:{name:a.name,message:a.message,stack:a.stack}}),t.config.enableUncaught&&t.notify(a)}};return function(t,n,o,i,a){return r(t,n,o,i,a),"function"==typeof e&&e.apply(window,arguments)}}))}}};var z={};Object.defineProperty(z,"__esModule",{value:!0});var J=n.Util.instrument;z.default=function(e){return void 0===e&&(e=window),{load:function(t){t.config.enableUnhandledRejection&&J(e,"onunhandledrejection",(function(e){function r(e){var r;if(t.logger.debug("window.onunhandledrejection callback invoked",arguments),t.config.enableUnhandledRejection){var n=e.reason;if(n instanceof Error){var o="unknown",i=0,a="".concat(n.message,"\n at ? (").concat(o,":").concat(i,")"),c=n.stack||a,u={name:n.name,message:"UnhandledPromiseRejectionWarning: ".concat(n),stack:c};return t.addBreadcrumb("window.onunhandledrejection: ".concat(u.name),{category:"error",metadata:u}),void t.notify(u)}var s="string"==typeof n?n:null!==(r=JSON.stringify(n))&&void 0!==r?r:"Unspecified reason";t.notify({name:"window.onunhandledrejection",message:"UnhandledPromiseRejectionWarning: ".concat(s)})}}return function(t){r(t),"function"==typeof e&&e.apply(this,arguments)}}))}}};var V={};Object.defineProperty(V,"__esModule",{value:!0});var Q=n,Y=D,Z=Q.Util.sanitize,ee=Q.Util.instrument;V.default=function(e){return void 0===e&&(e=window),{load:function(t){function r(e){return!0===t.config.breadcrumbsEnabled||(e?!0===t.config.breadcrumbsEnabled[e]:!1!==t.config.breadcrumbsEnabled)}!function(){function n(e){return Array.isArray(e)?e.map((function(e){try{return String(e)}catch(e){return"[unknown]"}})).join(" "):""}r("console")&&["debug","info","warn","error","log"].forEach((function(r){ee(e.console,r,(function(o){return function(){var i=Array.prototype.slice.call(arguments),a=n(i),c={category:"log",metadata:{level:r,arguments:Z(i,3)}};t.addBreadcrumb(a,c),"function"==typeof o&&Function.prototype.apply.call(o,e.console,arguments)}}))}))}(),r("dom")&&e.addEventListener("click",(function(e){var r,n,o;try{r=(0,Y.stringNameOfElement)(e.target),n=(0,Y.stringSelectorOfElement)(e.target),o=(0,Y.stringTextOfElement)(e.target)}catch(e){r="UI Click",n="[unknown]",o="[unknown]"}0!==r.length&&t.addBreadcrumb(r,{category:"ui.click",metadata:{selector:n,text:o,event:e}})}),!0),r("network")&&(ee(XMLHttpRequest.prototype,"open",(function(e){return function(){var t=this,r=arguments[1],n="string"==typeof arguments[0]?arguments[0].toUpperCase():arguments[0],o="".concat(n," ").concat((0,Y.localURLPathname)(r));this.__hb_xhr={type:"xhr",method:n,url:r,message:o},"function"==typeof e&&e.apply(t,arguments)}})),ee(XMLHttpRequest.prototype,"send",(function(e){return function(){var r=this;function n(){if(4===r.readyState){var e=void 0;r.__hb_xhr&&(r.__hb_xhr.status_code=r.status,e=r.__hb_xhr.message,delete r.__hb_xhr.message),t.addBreadcrumb(e||"XMLHttpRequest",{category:"request",metadata:r.__hb_xhr})}}"onreadystatechange"in r&&"function"==typeof r.onreadystatechange?ee(r,"onreadystatechange",(function(e){return function(){n(),"function"==typeof e&&e.apply(this,arguments)}})):r.onreadystatechange=n,"function"==typeof e&&e.apply(r,arguments)}}))),r("network")&&(0,Y.nativeFetch)()&&ee(e,"fetch",(function(r){return function(){var n,o=arguments[0],i="GET";"string"==typeof o?n=o:"Request"in e&&o instanceof Request?(n=o.url,o.method&&(i=o.method)):n=String(o),arguments[1]&&arguments[1].method&&(i=arguments[1].method),"string"==typeof i&&(i=i.toUpperCase());var a="".concat(i," ").concat((0,Y.localURLPathname)(n)),c={type:"fetch",method:i,url:n};return r.apply(this,arguments).then((function(e){return c.status_code=e.status,t.addBreadcrumb(a,{category:"request",metadata:c}),e})).catch((function(e){throw t.addBreadcrumb("fetch error",{category:"error",metadata:c}),e}))}})),function(){if(r("navigation")){var n=e.location.href;ee(e,"onpopstate",(function(t){return function(){if(o(n,e.location.href),t)return t.apply(this,arguments)}})),ee(e.history,"pushState",i),ee(e.history,"replaceState",i)}function o(e,r){n=r,t.addBreadcrumb("Page changed",{category:"navigation",metadata:{from:e,to:r}})}function i(e){return function(){var t=arguments.length>2?arguments[2]:void 0;return t&&o(n,String(t)),e.apply(this,arguments)}}}()}}};var te={};Object.defineProperty(te,"__esModule",{value:!0});var re=n.Util.instrument;te.default=function(e){return void 0===e&&(e=window),{load:function(t){!function(){function r(e){return function(r){return function(n,o){if("function"==typeof n){var i=Array.prototype.slice.call(arguments,2);return n=t.__wrap(n,e),r((function(){n.apply(void 0,i)}),o)}return r(n,o)}}}re(e,"setTimeout",r({component:"setTimeout"})),re(e,"setInterval",r({component:"setInterval"}))}()}}};var ne={};Object.defineProperty(ne,"__esModule",{value:!0});var oe=n.Util.instrument;ne.default=function(e){return void 0===e&&(e=window),{load:function(t){["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"].forEach((function(r){var n=e[r]&&e[r].prototype;n&&Object.prototype.hasOwnProperty.call(n,"addEventListener")&&(oe(n,"addEventListener",(function(e){var n={component:"".concat(r,".prototype.addEventListener")};return function(r,o,i,a){try{o&&null!=o.handleEvent&&(o.handleEvent=t.__wrap(o.handleEvent,n))}catch(e){t.logger.error(e)}return e.call(this,r,t.__wrap(o,n),i,a)}})),oe(n,"removeEventListener",(function(e){return function(r,n,o,i){return e.call(this,r,n,o,i),e.call(this,r,t.__wrap(n),o,i)}})))}))}}};var ie={};Object.defineProperty(ie,"__esModule",{value:!0}),ie.BrowserTransport=void 0;var ae=n.Util.sanitize,ce=function(){function e(){}return e.prototype.send=function(e,t){return new Promise((function(r,n){try{var o=new XMLHttpRequest;if(o.open(e.method,e.endpoint,e.async),Object.keys(e.headers||[]).length)for(var i in e.headers)void 0!==e.headers[i]&&o.setRequestHeader(i,String(e.headers[i]));o.send(t?JSON.stringify(ae(t,e.maxObjectDepth)):void 0),o.onload=function(){return r({statusCode:o.status,body:o.response})}}catch(e){n(e)}}))},e}();ie.BrowserTransport=ce;var ue,se=e&&e.__extends||(ue=function(e,t){return ue=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},ue(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}ue(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),le=e&&e.__assign||function(){return le=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},le.apply(this,arguments)},fe=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0});var de=n,pe=D,ge=F,he=fe(z),me=fe(V),ve=fe(te),ye=fe(ne),be=ie,_e=de.Util.merge,we=de.Util.filter,Ee=de.Util.objectIsExtensible,je=function(e){function t(t){void 0===t&&(t={});var r=e.call(this,le({async:!0,maxErrors:null,projectRoot:window.location.protocol+"//"+window.location.host},t),new be.BrowserTransport)||this;return r.__errorsSent=0,r.__lastWrapErr=void 0,r.__beforeNotifyHandlers=[function(e){return r.__exceedsMaxErrors()?(r.logger.debug("Dropping notice: max errors exceeded",e),!1):(e&&!e.url&&(e.url=document.URL),r.__incrementErrorsCount(),!0)}],r}return se(t,e),t.prototype.configure=function(t){return void 0===t&&(t={}),e.prototype.configure.call(this,t)},t.prototype.resetMaxErrors=function(){return this.__errorsSent=0},t.prototype.factory=function(e){return new t(e)},t.prototype.checkIn=function(e){throw new Error("Honeybadger.checkIn() is not supported on the browser")},t.prototype.__buildPayload=function(t){var r,n={HTTP_USER_AGENT:void 0,HTTP_REFERER:void 0,HTTP_COOKIE:void 0};n.HTTP_USER_AGENT=navigator.userAgent,document.referrer.match(/\S/)&&(n.HTTP_REFERER=document.referrer),(r="string"==typeof t.cookies?(0,pe.decodeCookie)(t.cookies):t.cookies)&&(n.HTTP_COOKIE=(0,pe.encodeCookie)(we(r,this.config.filters)));var o=e.prototype.__buildPayload.call(this,t);return o.request.cgi_data=_e(n,o.request.cgi_data),o},t.prototype.__wrap=function(e,t){void 0===t&&(t={});var r=e;t||(t={});try{if("function"!=typeof r)return r;if(!Ee(r))return r;if(!r.___hb){var n=this;r.___hb=function(){if(!pe.preferCatch)return r.apply(this,arguments);try{return r.apply(this,arguments)}catch(e){if(n.__lastWrapErr===e)throw e;throw n.__lastWrapErr=e,(0,ge.ignoreNextOnError)(),n.addBreadcrumb(t.component?"".concat(t.component,": ").concat(e.name):e.name,{category:"error",metadata:{message:e.message,name:e.name,stack:e.stack}}),n.config.enableUncaught&&n.notify(e),e}}}return r.___hb.___hb=r.___hb,r.___hb}catch(e){return r}},t.prototype.__incrementErrorsCount=function(){return this.__errorsSent++},t.prototype.__exceedsMaxErrors=function(){return this.config.maxErrors&&this.__errorsSent>=this.config.maxErrors},t}(de.Client);return r.default=new je({__plugins:[(0,ge.onError)(),(0,he.default)(),(0,ve.default)(),(0,ye.default)(),(0,me.default)()]})})); | ||
//# sourceMappingURL=honeybadger.min.js.map |
@@ -226,11 +226,38 @@ 'use strict'; | ||
}; | ||
var __generator$1 = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) throw new TypeError("Generator is already executing."); | ||
while (_) try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [op[0] & 2, t.value]; | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
}; | ||
Object.defineProperty(util$1, "__esModule", { value: true }); | ||
util$1.isBrowserConfig = util$1.clone = util$1.formatCGIData = util$1.filterUrl = util$1.filter = util$1.generateStackTrace = util$1.endpoint = util$1.instrument = util$1.isErrorObject = util$1.makeNotice = util$1.logger = util$1.sanitize = util$1.shallowClone = util$1.runAfterNotifyHandlers = util$1.runBeforeNotifyHandlers = util$1.getSourceForBacktrace = util$1.getCauses = util$1.makeBacktrace = util$1.objectIsExtensible = util$1.objectIsEmpty = util$1.mergeNotice = util$1.merge = void 0; | ||
const stackTraceParser = __importStar(require$$0); | ||
var stackTraceParser = __importStar(require$$0); | ||
function merge(obj1, obj2) { | ||
const result = {}; | ||
for (const k in obj1) { | ||
var result = {}; | ||
for (var k in obj1) { | ||
result[k] = obj1[k]; | ||
} | ||
for (const k in obj2) { | ||
for (var k in obj2) { | ||
result[k] = obj2[k]; | ||
@@ -242,3 +269,3 @@ } | ||
function mergeNotice(notice1, notice2) { | ||
const result = merge(notice1, notice2); | ||
var result = merge(notice1, notice2); | ||
if (notice1.context && notice2.context) { | ||
@@ -251,3 +278,3 @@ result.context = merge(notice1.context, notice2.context); | ||
function objectIsEmpty(obj) { | ||
for (const k in obj) { | ||
for (var k in obj) { | ||
if (Object.prototype.hasOwnProperty.call(obj, k)) { | ||
@@ -267,7 +294,8 @@ return false; | ||
util$1.objectIsExtensible = objectIsExtensible; | ||
function makeBacktrace(stack, shift = 0) { | ||
function makeBacktrace(stack, shift) { | ||
if (shift === void 0) { shift = 0; } | ||
try { | ||
const backtrace = stackTraceParser | ||
var backtrace = stackTraceParser | ||
.parse(stack) | ||
.map(line => { | ||
.map(function (line) { | ||
return { | ||
@@ -291,4 +319,4 @@ file: line.file, | ||
if (notice.cause) { | ||
const causes = []; | ||
let cause = notice; | ||
var causes = []; | ||
var cause = notice; | ||
while (causes.length < 3 && (cause = cause.cause)) { | ||
@@ -307,15 +335,25 @@ causes.push({ | ||
function getSourceForBacktrace(backtrace, getSourceFileHandler) { | ||
return __awaiter$1(this, void 0, void 0, function* () { | ||
const result = []; | ||
if (!getSourceFileHandler || !backtrace || !backtrace.length) { | ||
return result; | ||
} | ||
let index = 0; | ||
while (backtrace.length) { | ||
const trace = backtrace.splice(0)[index]; | ||
const fileContent = yield getSourceFileHandler(trace.file); | ||
result[index] = getSourceCodeSnippet(fileContent, trace.number); | ||
index++; | ||
} | ||
return result; | ||
return __awaiter$1(this, void 0, void 0, function () { | ||
var result, index, trace, fileContent; | ||
return __generator$1(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
result = []; | ||
if (!getSourceFileHandler || !backtrace || !backtrace.length) { | ||
return [2 /*return*/, result]; | ||
} | ||
index = 0; | ||
_a.label = 1; | ||
case 1: | ||
if (!backtrace.length) return [3 /*break*/, 3]; | ||
trace = backtrace.splice(0)[index]; | ||
return [4 /*yield*/, getSourceFileHandler(trace.file)]; | ||
case 2: | ||
fileContent = _a.sent(); | ||
result[index] = getSourceCodeSnippet(fileContent, trace.number); | ||
index++; | ||
return [3 /*break*/, 1]; | ||
case 3: return [2 /*return*/, result]; | ||
} | ||
}); | ||
}); | ||
@@ -325,5 +363,5 @@ } | ||
function runBeforeNotifyHandlers(notice, handlers) { | ||
let result = true; | ||
for (let i = 0, len = handlers.length; i < len; i++) { | ||
const handler = handlers[i]; | ||
var result = true; | ||
for (var i = 0, len = handlers.length; i < len; i++) { | ||
var handler = handlers[i]; | ||
if (handler(notice) === false) { | ||
@@ -340,3 +378,3 @@ result = false; | ||
} | ||
for (let i = 0, len = handlers.length; i < len; i++) { | ||
for (var i = 0, len = handlers.length; i < len; i++) { | ||
handlers[i](error, notice); | ||
@@ -352,4 +390,4 @@ } | ||
} | ||
const result = {}; | ||
for (const k in obj) { | ||
var result = {}; | ||
for (var k in obj) { | ||
result[k] = obj[k]; | ||
@@ -360,4 +398,5 @@ } | ||
util$1.shallowClone = shallowClone; | ||
function sanitize$1(obj, maxDepth = 8) { | ||
const seenObjects = []; | ||
function sanitize$1(obj, maxDepth) { | ||
if (maxDepth === void 0) { maxDepth = 8; } | ||
var seenObjects = []; | ||
function seen(obj) { | ||
@@ -367,4 +406,4 @@ if (!obj || typeof (obj) !== 'object') { | ||
} | ||
for (let i = 0; i < seenObjects.length; i++) { | ||
const value = seenObjects[i]; | ||
for (var i = 0; i < seenObjects.length; i++) { | ||
var value = seenObjects[i]; | ||
if (value === obj) { | ||
@@ -378,3 +417,3 @@ return true; | ||
function canSerialize(obj) { | ||
const typeOfObj = typeof obj; | ||
var typeOfObj = typeof obj; | ||
// Functions are TMI | ||
@@ -398,3 +437,4 @@ if (/function/.test(typeOfObj)) { | ||
} | ||
function serialize(obj, depth = 0) { | ||
function serialize(obj, depth) { | ||
if (depth === void 0) { depth = 0; } | ||
if (depth >= maxDepth) { | ||
@@ -413,9 +453,9 @@ return '[DEPTH]'; | ||
if (Array.isArray(obj)) { | ||
return obj.map(o => safeSerialize(o, depth + 1)); | ||
return obj.map(function (o) { return safeSerialize(o, depth + 1); }); | ||
} | ||
// Serialize inside objects | ||
if (typeof (obj) === 'object') { | ||
const ret = {}; | ||
for (const k in obj) { | ||
const v = obj[k]; | ||
var ret = {}; | ||
for (var k in obj) { | ||
var v = obj[k]; | ||
if (Object.prototype.hasOwnProperty.call(obj, k) && (k != null) && (v != null)) { | ||
@@ -430,3 +470,4 @@ ret[k] = safeSerialize(v, depth + 1); | ||
} | ||
function safeSerialize(obj, depth = 0) { | ||
function safeSerialize(obj, depth) { | ||
if (depth === void 0) { depth = 0; } | ||
try { | ||
@@ -436,3 +477,3 @@ return serialize(obj, depth); | ||
catch (e) { | ||
return `[ERROR] ${e}`; | ||
return "[ERROR] ".concat(e); | ||
} | ||
@@ -444,4 +485,9 @@ } | ||
function logger(client) { | ||
const log = (method) => { | ||
return function (...args) { | ||
var log = function (method) { | ||
return function () { | ||
var _a; | ||
var args = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
args[_i] = arguments[_i]; | ||
} | ||
if (method === 'debug') { | ||
@@ -456,3 +502,3 @@ if (!client.config.debug) { | ||
args.unshift('[Honeybadger]'); | ||
client.config.logger[method](...args); | ||
(_a = client.config.logger)[method].apply(_a, args); | ||
}; | ||
@@ -474,3 +520,3 @@ }; | ||
function makeNotice(thing) { | ||
let notice; | ||
var notice; | ||
if (!thing) { | ||
@@ -480,3 +526,3 @@ notice = {}; | ||
else if (isErrorObject(thing)) { | ||
const e = thing; | ||
var e = thing; | ||
notice = merge(thing, { name: e.name, message: e.message, stack: e.stack, cause: e.cause }); | ||
@@ -488,3 +534,3 @@ } | ||
else { | ||
const m = String(thing); | ||
var m = String(thing); | ||
notice = { message: m }; | ||
@@ -511,3 +557,3 @@ } | ||
} | ||
let original = object[name]; | ||
var original = object[name]; | ||
while (original && original.__hb_original) { | ||
@@ -528,5 +574,5 @@ original = original.__hb_original; | ||
function endpoint$1(base, path) { | ||
const endpoint = base.trim().replace(/\/$/, ''); | ||
var endpoint = base.trim().replace(/\/$/, ''); | ||
path = path.trim().replace(/(^\/|\/$)/g, ''); | ||
return `${endpoint}/${path}`; | ||
return "".concat(endpoint, "/").concat(path); | ||
} | ||
@@ -543,5 +589,5 @@ util$1.endpoint = endpoint$1; | ||
} | ||
const maxStackSize = 10; | ||
const stack = []; | ||
let curr = arguments.callee; | ||
var maxStackSize = 10; | ||
var stack = []; | ||
var curr = arguments.callee; | ||
while (curr && stack.length < maxStackSize) { | ||
@@ -571,5 +617,5 @@ if (/function(?:\s+([\w$]+))+\s*\(/.test(curr.toString())) { | ||
} | ||
const seen = []; | ||
var seen = []; | ||
function filter(obj) { | ||
let k, newObj; | ||
var k, newObj; | ||
if (is('Object', obj) || is('Array', obj)) { | ||
@@ -607,3 +653,3 @@ if (seen.indexOf(obj) !== -1) { | ||
function filterMatch(key, filters) { | ||
for (let i = 0; i < filters.length; i++) { | ||
for (var i = 0; i < filters.length; i++) { | ||
if (key.toLowerCase().indexOf(filters[i].toLowerCase()) !== -1) { | ||
@@ -616,3 +662,3 @@ return true; | ||
function is(type, obj) { | ||
const klass = Object.prototype.toString.call(obj).slice(8, -1); | ||
var klass = Object.prototype.toString.call(obj).slice(8, -1); | ||
return obj !== undefined && obj !== null && klass === type; | ||
@@ -627,11 +673,11 @@ } | ||
} | ||
const query = url.split(/\?/, 2)[1]; | ||
var query = url.split(/\?/, 2)[1]; | ||
if (!query) { | ||
return url; | ||
} | ||
let result = url; | ||
query.split(/[&]\s?/).forEach((pair) => { | ||
const [key, value] = pair.split('=', 2); | ||
var result = url; | ||
query.split(/[&]\s?/).forEach(function (pair) { | ||
var _a = pair.split('=', 2), key = _a[0], value = _a[1]; | ||
if (filterMatch(key, filters)) { | ||
result = result.replace(`${key}=${value}`, `${key}=[FILTERED]`); | ||
result = result.replace("".concat(key, "=").concat(value), "".concat(key, "=[FILTERED]")); | ||
} | ||
@@ -642,6 +688,7 @@ }); | ||
util$1.filterUrl = filterUrl; | ||
function formatCGIData(vars, prefix = '') { | ||
const formattedVars = {}; | ||
function formatCGIData(vars, prefix) { | ||
if (prefix === void 0) { prefix = ''; } | ||
var formattedVars = {}; | ||
Object.keys(vars).forEach(function (key) { | ||
const formattedKey = prefix + key.replace(/\W/g, '_').toUpperCase(); | ||
var formattedKey = prefix + key.replace(/\W/g, '_').toUpperCase(); | ||
formattedVars[formattedKey] = vars[key]; | ||
@@ -656,14 +703,15 @@ }); | ||
util$1.clone = clone; | ||
function getSourceCodeSnippet(fileData, lineNumber, sourceRadius = 2) { | ||
function getSourceCodeSnippet(fileData, lineNumber, sourceRadius) { | ||
if (sourceRadius === void 0) { sourceRadius = 2; } | ||
if (!fileData) { | ||
return null; | ||
} | ||
const lines = fileData.split('\n'); | ||
var lines = fileData.split('\n'); | ||
// add one empty line because array index starts from 0, but error line number is counted from 1 | ||
lines.unshift(''); | ||
const start = lineNumber - sourceRadius; | ||
const end = lineNumber + sourceRadius; | ||
const result = {}; | ||
for (let i = start; i <= end; i++) { | ||
const line = lines[i]; | ||
var start = lineNumber - sourceRadius; | ||
var end = lineNumber + sourceRadius; | ||
var result = {}; | ||
for (var i = start; i <= end; i++) { | ||
var line = lines[i]; | ||
if (typeof line === 'string') { | ||
@@ -684,31 +732,48 @@ result[i] = line; | ||
store.GlobalStore = void 0; | ||
class GlobalStore { | ||
constructor(store) { | ||
var GlobalStore = /** @class */ (function () { | ||
function GlobalStore(store) { | ||
this.store = store; | ||
} | ||
getStore() { | ||
GlobalStore.prototype.getStore = function () { | ||
return this.store; | ||
} | ||
run(store, callback, ...args) { | ||
}; | ||
GlobalStore.prototype.run = function (store, callback) { | ||
var args = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
args[_i - 2] = arguments[_i]; | ||
} | ||
this.store = store; | ||
return callback(...args); | ||
} | ||
} | ||
return callback.apply(void 0, args); | ||
}; | ||
return GlobalStore; | ||
}()); | ||
store.GlobalStore = GlobalStore; | ||
var __assign$1 = (commonjsGlobal && commonjsGlobal.__assign) || function () { | ||
__assign$1 = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign$1.apply(this, arguments); | ||
}; | ||
Object.defineProperty(client, "__esModule", { value: true }); | ||
client.Client = void 0; | ||
const util_1$4 = util$1; | ||
const store_1 = store; | ||
const notifier = { | ||
var util_1$4 = util$1; | ||
var store_1 = store; | ||
var notifier = { | ||
name: 'honeybadger-js', | ||
url: 'https://github.com/honeybadger-io/honeybadger-js', | ||
version: '4.1.2' | ||
version: '4.1.3' | ||
}; | ||
// Split at commas and spaces | ||
const TAG_SEPARATOR = /,|\s+/; | ||
var TAG_SEPARATOR = /,|\s+/; | ||
// Checks for non-blank characters | ||
const NOT_BLANK = /\S/; | ||
class Client { | ||
constructor(opts = {}, transport) { | ||
var NOT_BLANK = /\S/; | ||
var Client = /** @class */ (function () { | ||
function Client(opts, transport) { | ||
if (opts === void 0) { opts = {}; } | ||
this.__pluginsExecuted = false; | ||
@@ -718,3 +783,3 @@ this.__store = null; | ||
this.__afterNotifyHandlers = []; | ||
this.config = Object.assign({ apiKey: null, endpoint: 'https://api.honeybadger.io', environment: null, hostname: null, projectRoot: null, component: null, action: null, revision: null, reportData: null, breadcrumbsEnabled: true, maxBreadcrumbs: 40, maxObjectDepth: 8, logger: console, developmentEnvironments: ['dev', 'development', 'test'], debug: false, tags: null, enableUncaught: true, enableUnhandledRejection: true, afterUncaught: () => true, filters: ['creditcard', 'password'], __plugins: [] }, opts); | ||
this.config = __assign$1({ apiKey: null, endpoint: 'https://api.honeybadger.io', environment: null, hostname: null, projectRoot: null, component: null, action: null, revision: null, reportData: null, breadcrumbsEnabled: true, maxBreadcrumbs: 40, maxObjectDepth: 8, logger: console, developmentEnvironments: ['dev', 'development', 'test'], debug: false, tags: null, enableUncaught: true, enableUnhandledRejection: true, afterUncaught: function () { return true; }, filters: ['creditcard', 'password'], __plugins: [] }, opts); | ||
// First, we go with the global (shared) store. | ||
@@ -726,7 +791,9 @@ // Webserver middleware can then switch to the AsyncStore for async context tracking. | ||
} | ||
getVersion() { | ||
Client.prototype.getVersion = function () { | ||
return notifier.version; | ||
} | ||
configure(opts = {}) { | ||
for (const k in opts) { | ||
}; | ||
Client.prototype.configure = function (opts) { | ||
var _this = this; | ||
if (opts === void 0) { opts = {}; } | ||
for (var k in opts) { | ||
this.config[k] = opts[k]; | ||
@@ -736,27 +803,27 @@ } | ||
this.__pluginsExecuted = true; | ||
this.config.__plugins.forEach((plugin) => plugin.load(this)); | ||
this.config.__plugins.forEach(function (plugin) { return plugin.load(_this); }); | ||
} | ||
return this; | ||
} | ||
__setStore(store) { | ||
}; | ||
Client.prototype.__setStore = function (store) { | ||
this.__store = store; | ||
} | ||
beforeNotify(handler) { | ||
}; | ||
Client.prototype.beforeNotify = function (handler) { | ||
this.__beforeNotifyHandlers.push(handler); | ||
return this; | ||
} | ||
afterNotify(handler) { | ||
}; | ||
Client.prototype.afterNotify = function (handler) { | ||
this.__afterNotifyHandlers.push(handler); | ||
return this; | ||
} | ||
setContext(context) { | ||
}; | ||
Client.prototype.setContext = function (context) { | ||
if (typeof context === 'object') { | ||
const store = this.__store.getStore(); | ||
var store = this.__store.getStore(); | ||
store.context = (0, util_1$4.merge)(store.context, context); | ||
} | ||
return this; | ||
} | ||
resetContext(context) { | ||
}; | ||
Client.prototype.resetContext = function (context) { | ||
this.logger.warn('Deprecation warning: `Honeybadger.resetContext()` has been deprecated; please use `Honeybadger.clear()` instead.'); | ||
const store = this.__store.getStore(); | ||
var store = this.__store.getStore(); | ||
if (typeof context === 'object' && context !== null) { | ||
@@ -769,12 +836,15 @@ store.context = context; | ||
return this; | ||
} | ||
clear() { | ||
const store = this.__store.getStore(); | ||
}; | ||
Client.prototype.clear = function () { | ||
var store = this.__store.getStore(); | ||
store.context = {}; | ||
store.breadcrumbs = []; | ||
return this; | ||
} | ||
notify(noticeable, name = undefined, extra = undefined) { | ||
let preConditionError = null; | ||
const notice = this.makeNotice(noticeable, name, extra); | ||
}; | ||
Client.prototype.notify = function (noticeable, name, extra) { | ||
var _this = this; | ||
if (name === void 0) { name = undefined; } | ||
if (extra === void 0) { extra = undefined; } | ||
var preConditionError = null; | ||
var notice = this.makeNotice(noticeable, name, extra); | ||
if (!notice) { | ||
@@ -798,4 +868,4 @@ this.logger.debug('failed to build error report'); | ||
// in case they modify them | ||
const sourceCodeData = notice && notice.backtrace ? notice.backtrace.map(trace => (0, util_1$4.shallowClone)(trace)) : null; | ||
const beforeNotifyResult = (0, util_1$4.runBeforeNotifyHandlers)(notice, this.__beforeNotifyHandlers); | ||
var sourceCodeData = notice && notice.backtrace ? notice.backtrace.map(function (trace) { return (0, util_1$4.shallowClone)(trace); }) : null; | ||
var beforeNotifyResult = (0, util_1$4.runBeforeNotifyHandlers)(notice, this.__beforeNotifyHandlers); | ||
if (!preConditionError && !beforeNotifyResult) { | ||
@@ -817,14 +887,14 @@ this.logger.debug('skipping error report: beforeNotify handlers returned false', notice); | ||
}); | ||
const breadcrumbs = this.__getStoreContentsOrDefault().breadcrumbs; | ||
var breadcrumbs = this.__getStoreContentsOrDefault().breadcrumbs; | ||
notice.__breadcrumbs = this.config.breadcrumbsEnabled ? breadcrumbs.slice() : []; | ||
(0, util_1$4.getSourceForBacktrace)(sourceCodeData, this.__getSourceFileHandler) | ||
.then(sourcePerTrace => { | ||
sourcePerTrace.forEach((source, index) => { | ||
.then(function (sourcePerTrace) { | ||
sourcePerTrace.forEach(function (source, index) { | ||
notice.backtrace[index].source = source; | ||
}); | ||
const payload = this.__buildPayload(notice); | ||
this.__transport | ||
var payload = _this.__buildPayload(notice); | ||
_this.__transport | ||
.send({ | ||
headers: { | ||
'X-API-Key': this.config.apiKey, | ||
'X-API-Key': _this.config.apiKey, | ||
'Content-Type': 'application/json', | ||
@@ -834,26 +904,26 @@ 'Accept': 'text/json, application/json' | ||
method: 'POST', | ||
endpoint: (0, util_1$4.endpoint)(this.config.endpoint, '/v1/notices/js'), | ||
maxObjectDepth: this.config.maxObjectDepth, | ||
logger: this.logger, | ||
async: (0, util_1$4.isBrowserConfig)(this.config) ? this.config.async : undefined, | ||
endpoint: (0, util_1$4.endpoint)(_this.config.endpoint, '/v1/notices/js'), | ||
maxObjectDepth: _this.config.maxObjectDepth, | ||
logger: _this.logger, | ||
async: (0, util_1$4.isBrowserConfig)(_this.config) ? _this.config.async : undefined, | ||
}, payload) | ||
.then(res => { | ||
.then(function (res) { | ||
if (res.statusCode !== 201) { | ||
(0, util_1$4.runAfterNotifyHandlers)(notice, this.__afterNotifyHandlers, new Error(`Bad HTTP response: ${res.statusCode}`)); | ||
this.logger.warn(`Error report failed: unknown response from server. code=${res.statusCode}`); | ||
(0, util_1$4.runAfterNotifyHandlers)(notice, _this.__afterNotifyHandlers, new Error("Bad HTTP response: ".concat(res.statusCode))); | ||
_this.logger.warn("Error report failed: unknown response from server. code=".concat(res.statusCode)); | ||
return; | ||
} | ||
const uuid = JSON.parse(res.body).id; | ||
var uuid = JSON.parse(res.body).id; | ||
(0, util_1$4.runAfterNotifyHandlers)((0, util_1$4.merge)(notice, { | ||
id: uuid | ||
}), this.__afterNotifyHandlers); | ||
this.logger.info(`Error report sent ⚡ https://app.honeybadger.io/notice/${uuid}`); | ||
}), _this.__afterNotifyHandlers); | ||
_this.logger.info("Error report sent \u26A1 https://app.honeybadger.io/notice/".concat(uuid)); | ||
}) | ||
.catch(err => { | ||
this.logger.error('Error report failed: an unknown error occurred.', `message=${err.message}`); | ||
(0, util_1$4.runAfterNotifyHandlers)(notice, this.__afterNotifyHandlers, err); | ||
.catch(function (err) { | ||
_this.logger.error('Error report failed: an unknown error occurred.', "message=".concat(err.message)); | ||
(0, util_1$4.runAfterNotifyHandlers)(notice, _this.__afterNotifyHandlers, err); | ||
}); | ||
}); | ||
return true; | ||
} | ||
}; | ||
/** | ||
@@ -865,8 +935,11 @@ * An async version of {@link notify} that resolves only after the notice has been reported to Honeybadger. | ||
*/ | ||
notifyAsync(noticeable, name = undefined, extra = undefined) { | ||
return new Promise((resolve, reject) => { | ||
const applyAfterNotify = (partialNotice) => { | ||
const originalAfterNotify = partialNotice.afterNotify; | ||
partialNotice.afterNotify = (err) => { | ||
originalAfterNotify === null || originalAfterNotify === void 0 ? void 0 : originalAfterNotify.call(this, err); | ||
Client.prototype.notifyAsync = function (noticeable, name, extra) { | ||
var _this = this; | ||
if (name === void 0) { name = undefined; } | ||
if (extra === void 0) { extra = undefined; } | ||
return new Promise(function (resolve, reject) { | ||
var applyAfterNotify = function (partialNotice) { | ||
var originalAfterNotify = partialNotice.afterNotify; | ||
partialNotice.afterNotify = function (err) { | ||
originalAfterNotify === null || originalAfterNotify === void 0 ? void 0 : originalAfterNotify.call(_this, err); | ||
if (err) { | ||
@@ -879,3 +952,3 @@ return reject(err); | ||
// We have to respect any afterNotify hooks that come from the arguments | ||
let objectToOverride; | ||
var objectToOverride; | ||
if (noticeable.afterNotify) { | ||
@@ -900,9 +973,11 @@ objectToOverride = noticeable; | ||
applyAfterNotify(objectToOverride); | ||
this.notify(noticeable, name, extra); | ||
_this.notify(noticeable, name, extra); | ||
}); | ||
} | ||
makeNotice(noticeable, name = undefined, extra = undefined) { | ||
let notice = (0, util_1$4.makeNotice)(noticeable); | ||
}; | ||
Client.prototype.makeNotice = function (noticeable, name, extra) { | ||
if (name === void 0) { name = undefined; } | ||
if (extra === void 0) { extra = undefined; } | ||
var notice = (0, util_1$4.makeNotice)(noticeable); | ||
if (name && !(typeof name === 'object')) { | ||
const n = String(name); | ||
var n = String(name); | ||
name = { name: n }; | ||
@@ -919,9 +994,9 @@ } | ||
} | ||
const context = this.__getStoreContentsOrDefault().context; | ||
const noticeTags = this.__constructTags(notice.tags); | ||
const contextTags = this.__constructTags(context['tags']); | ||
const configTags = this.__constructTags(this.config.tags); | ||
var context = this.__getStoreContentsOrDefault().context; | ||
var noticeTags = this.__constructTags(notice.tags); | ||
var contextTags = this.__constructTags(context['tags']); | ||
var configTags = this.__constructTags(this.config.tags); | ||
// Turning into a Set will remove duplicates | ||
const tags = noticeTags.concat(contextTags).concat(configTags); | ||
const uniqueTags = tags.filter((item, index) => tags.indexOf(item) === index); | ||
var tags = noticeTags.concat(contextTags).concat(configTags); | ||
var uniqueTags = tags.filter(function (item, index) { return tags.indexOf(item) === index; }); | ||
notice = (0, util_1$4.merge)(notice, { | ||
@@ -937,3 +1012,3 @@ name: notice.name || 'Error', | ||
}); | ||
let backtraceShift = 0; | ||
var backtraceShift = 0; | ||
if (typeof notice.stack !== 'string' || !notice.stack.trim()) { | ||
@@ -945,4 +1020,4 @@ notice.stack = (0, util_1$4.generateStackTrace)(); | ||
return notice; | ||
} | ||
addBreadcrumb(message, opts) { | ||
}; | ||
Client.prototype.addBreadcrumb = function (message, opts) { | ||
if (!this.config.breadcrumbsEnabled) { | ||
@@ -952,7 +1027,7 @@ return; | ||
opts = opts || {}; | ||
const metadata = (0, util_1$4.shallowClone)(opts.metadata); | ||
const category = opts.category || 'custom'; | ||
const timestamp = new Date().toISOString(); | ||
const store = this.__store.getStore(); | ||
let breadcrumbs = store.breadcrumbs; | ||
var metadata = (0, util_1$4.shallowClone)(opts.metadata); | ||
var category = opts.category || 'custom'; | ||
var timestamp = new Date().toISOString(); | ||
var store = this.__store.getStore(); | ||
var breadcrumbs = store.breadcrumbs; | ||
breadcrumbs.push({ | ||
@@ -964,3 +1039,3 @@ category: category, | ||
}); | ||
const limit = this.config.maxBreadcrumbs; | ||
var limit = this.config.maxBreadcrumbs; | ||
if (breadcrumbs.length > limit) { | ||
@@ -971,4 +1046,4 @@ breadcrumbs = breadcrumbs.slice(breadcrumbs.length - limit); | ||
return this; | ||
} | ||
__developmentMode() { | ||
}; | ||
Client.prototype.__developmentMode = function () { | ||
if (this.config.reportData === true) { | ||
@@ -978,6 +1053,6 @@ return false; | ||
return (this.config.environment && this.config.developmentEnvironments.includes(this.config.environment)); | ||
} | ||
__buildPayload(notice) { | ||
const headers = (0, util_1$4.filter)(notice.headers, this.config.filters) || {}; | ||
const cgiData = (0, util_1$4.filter)(Object.assign(Object.assign({}, notice.cgiData), (0, util_1$4.formatCGIData)(headers, 'HTTP_')), this.config.filters); | ||
}; | ||
Client.prototype.__buildPayload = function (notice) { | ||
var headers = (0, util_1$4.filter)(notice.headers, this.config.filters) || {}; | ||
var cgiData = (0, util_1$4.filter)(__assign$1(__assign$1({}, notice.cgiData), (0, util_1$4.formatCGIData)(headers, 'HTTP_')), this.config.filters); | ||
return { | ||
@@ -1015,9 +1090,9 @@ notifier: notifier, | ||
}; | ||
} | ||
__constructTags(tags) { | ||
}; | ||
Client.prototype.__constructTags = function (tags) { | ||
if (!tags) { | ||
return []; | ||
} | ||
return tags.toString().split(TAG_SEPARATOR).filter((tag) => NOT_BLANK.test(tag)); | ||
} | ||
return tags.toString().split(TAG_SEPARATOR).filter(function (tag) { return NOT_BLANK.test(tag); }); | ||
}; | ||
/** | ||
@@ -1028,8 +1103,9 @@ * For ALS, the store may be uninitialized (if .run()` has not been called). | ||
*/ | ||
__getStoreContentsOrDefault() { | ||
const existingStoreContents = this.__store.getStore(); | ||
const storeContents = existingStoreContents || {}; | ||
return Object.assign({ context: {}, breadcrumbs: [] }, storeContents); | ||
} | ||
} | ||
Client.prototype.__getStoreContentsOrDefault = function () { | ||
var existingStoreContents = this.__store.getStore(); | ||
var storeContents = existingStoreContents || {}; | ||
return __assign$1({ context: {}, breadcrumbs: [] }, storeContents); | ||
}; | ||
return Client; | ||
}()); | ||
client.Client = Client; | ||
@@ -1085,2 +1161,29 @@ | ||
}; | ||
var __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) throw new TypeError("Generator is already executing."); | ||
while (_) try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [op[0] & 2, t.value]; | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
}; | ||
var __importDefault$3 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { | ||
@@ -1091,6 +1194,6 @@ return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
util.getSourceFile = util.getStats = util.fatallyLogAndExit = void 0; | ||
const os_1$1 = __importDefault$3(require$$0__default["default"]); | ||
const fs_1 = __importDefault$3(require$$1__default["default"]); | ||
const util_1$3 = require$$2__default["default"]; | ||
const readFile = (0, util_1$3.promisify)(fs_1.default.readFile); | ||
var os_1$1 = __importDefault$3(require$$0__default["default"]); | ||
var fs_1 = __importDefault$3(require$$1__default["default"]); | ||
var util_1$3 = require$$2__default["default"]; | ||
var readFile = (0, util_1$3.promisify)(fs_1.default.readFile); | ||
function fatallyLogAndExit(err) { | ||
@@ -1103,42 +1206,54 @@ console.error('[Honeybadger] Exiting process due to uncaught exception'); | ||
function getStats() { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const load = os_1$1.default.loadavg(); | ||
const stats = { | ||
load: { | ||
one: load[0], | ||
five: load[1], | ||
fifteen: load[2] | ||
}, | ||
mem: {} | ||
}; | ||
const fallback = () => { | ||
stats.mem = { | ||
free: os_1$1.default.freemem(), | ||
total: os_1$1.default.totalmem() | ||
}; | ||
}; | ||
if (!fs_1.default.existsSync('/proc/meminfo')) { | ||
fallback(); | ||
return stats; | ||
} | ||
try { | ||
const memData = yield readFile('/proc/meminfo', 'utf8'); | ||
// The first four lines, in order, are Total, Free, Buffers, Cached. | ||
// @TODO: Figure out if there's a way to only read these lines | ||
const data = memData.split('\n').slice(0, 4); | ||
const results = data.map(function (i) { | ||
return parseInt(/\s+(\d+)\skB/i.exec(i)[1], 10) / 1024.0; | ||
}); | ||
stats.mem = { | ||
total: results[0], | ||
free: results[1], | ||
buffers: results[2], | ||
cached: results[3], | ||
free_total: results[1] + results[2] + results[3] | ||
}; | ||
} | ||
catch (error) { | ||
fallback(); | ||
} | ||
return stats; | ||
return __awaiter(this, void 0, void 0, function () { | ||
var load, stats, fallback, memData, data, results; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
load = os_1$1.default.loadavg(); | ||
stats = { | ||
load: { | ||
one: load[0], | ||
five: load[1], | ||
fifteen: load[2] | ||
}, | ||
mem: {} | ||
}; | ||
fallback = function () { | ||
stats.mem = { | ||
free: os_1$1.default.freemem(), | ||
total: os_1$1.default.totalmem() | ||
}; | ||
}; | ||
if (!fs_1.default.existsSync('/proc/meminfo')) { | ||
fallback(); | ||
return [2 /*return*/, stats]; | ||
} | ||
_a.label = 1; | ||
case 1: | ||
_a.trys.push([1, 3, , 4]); | ||
return [4 /*yield*/, readFile('/proc/meminfo', 'utf8') | ||
// The first four lines, in order, are Total, Free, Buffers, Cached. | ||
// @TODO: Figure out if there's a way to only read these lines | ||
]; | ||
case 2: | ||
memData = _a.sent(); | ||
data = memData.split('\n').slice(0, 4); | ||
results = data.map(function (i) { | ||
return parseInt(/\s+(\d+)\skB/i.exec(i)[1], 10) / 1024.0; | ||
}); | ||
stats.mem = { | ||
total: results[0], | ||
free: results[1], | ||
buffers: results[2], | ||
cached: results[3], | ||
free_total: results[1] + results[2] + results[3] | ||
}; | ||
return [3 /*break*/, 4]; | ||
case 3: | ||
_a.sent(); | ||
fallback(); | ||
return [3 /*break*/, 4]; | ||
case 4: return [2 /*return*/, stats]; | ||
} | ||
}); | ||
}); | ||
@@ -1153,9 +1268,15 @@ } | ||
function getSourceFile(path) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
try { | ||
return yield readFile(path, 'utf-8'); | ||
} | ||
catch (_e) { | ||
return null; | ||
} | ||
return __awaiter(this, void 0, void 0, function () { | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
_a.trys.push([0, 2, , 3]); | ||
return [4 /*yield*/, readFile(path, 'utf-8')]; | ||
case 1: return [2 /*return*/, _a.sent()]; | ||
case 2: | ||
_a.sent(); | ||
return [2 /*return*/, null]; | ||
case 3: return [2 /*return*/]; | ||
} | ||
}); | ||
}); | ||
@@ -1173,7 +1294,7 @@ } | ||
async_store.AsyncStore = void 0; | ||
const core_1$2 = src; | ||
let Store; | ||
var core_1$2 = src; | ||
var Store; | ||
try { | ||
// eslint-disable-next-line @typescript-eslint/no-var-requires | ||
const { AsyncLocalStorage } = require('async_hooks'); | ||
var AsyncLocalStorage = require('async_hooks').AsyncLocalStorage; | ||
Store = new AsyncLocalStorage(); | ||
@@ -1188,3 +1309,3 @@ } | ||
aws_lambda.removeAwsDefaultUncaughtExceptionListener = aws_lambda.lambdaHandler = void 0; | ||
const async_store_1$1 = async_store; | ||
var async_store_1$1 = async_store; | ||
function isHandlerSync(handler) { | ||
@@ -1204,10 +1325,10 @@ return handler.length > 2; | ||
hb.__setStore(async_store_1$1.AsyncStore); | ||
return new Promise((resolve, reject) => { | ||
async_store_1$1.AsyncStore.run({ context: {}, breadcrumbs: [] }, () => { | ||
const timeoutHandler = setupTimeoutWarning(hb, context); | ||
return new Promise(function (resolve, reject) { | ||
async_store_1$1.AsyncStore.run({ context: {}, breadcrumbs: [] }, function () { | ||
var timeoutHandler = setupTimeoutWarning(hb, context); | ||
try { | ||
handler(event, context) | ||
.then(resolve) | ||
.catch(err => reportToHoneybadger(hb, err, reject)) | ||
.finally(() => clearTimeout(timeoutHandler)); | ||
.catch(function (err) { return reportToHoneybadger(hb, err, reject); }) | ||
.finally(function () { return clearTimeout(timeoutHandler); }); | ||
} | ||
@@ -1225,6 +1346,6 @@ catch (err) { | ||
hb.__setStore(async_store_1$1.AsyncStore); | ||
async_store_1$1.AsyncStore.run({ context: {}, breadcrumbs: [] }, () => { | ||
const timeoutHandler = setupTimeoutWarning(hb, context); | ||
async_store_1$1.AsyncStore.run({ context: {}, breadcrumbs: [] }, function () { | ||
var timeoutHandler = setupTimeoutWarning(hb, context); | ||
try { | ||
handler(event, context, (error, result) => { | ||
handler(event, context, function (error, result) { | ||
clearTimeout(timeoutHandler); | ||
@@ -1251,5 +1372,5 @@ if (error) { | ||
} | ||
const delay = context.getRemainingTimeInMillis() - (hb.config.timeoutWarningThresholdMs); | ||
return setTimeout(() => { | ||
hb.notify(`${context.functionName}[${context.functionVersion}] may have timed out`); | ||
var delay = context.getRemainingTimeInMillis() - (hb.config.timeoutWarningThresholdMs); | ||
return setTimeout(function () { | ||
hb.notify("".concat(context.functionName, "[").concat(context.functionVersion, "] may have timed out")); | ||
}, delay > 0 ? delay : 0); | ||
@@ -1259,3 +1380,3 @@ } | ||
// eslint-disable-next-line @typescript-eslint/no-this-alias | ||
const hb = this; | ||
var hb = this; | ||
if (isHandlerSync(handler)) { | ||
@@ -1267,3 +1388,3 @@ return syncHandler(handler, hb); | ||
aws_lambda.lambdaHandler = lambdaHandler; | ||
let listenerRemoved = false; | ||
var listenerRemoved = false; | ||
/** | ||
@@ -1278,3 +1399,3 @@ * Removes AWS Lambda default listener that | ||
listenerRemoved = true; | ||
const listeners = process.listeners('uncaughtException'); | ||
var listeners = process.listeners('uncaughtException'); | ||
if (listeners.length === 0) { | ||
@@ -1289,7 +1410,7 @@ return; | ||
Object.defineProperty(uncaught_exception, "__esModule", { value: true }); | ||
const util_1$2 = util; | ||
const aws_lambda_1$1 = aws_lambda; | ||
let count = 0; | ||
var util_1$2 = util; | ||
var aws_lambda_1$1 = aws_lambda; | ||
var count = 0; | ||
function removeAwsLambdaListener() { | ||
const isLambda = !!process.env.LAMBDA_TASK_ROOT; | ||
var isLambda = !!process.env.LAMBDA_TASK_ROOT; | ||
if (!isLambda) { | ||
@@ -1302,3 +1423,3 @@ return; | ||
return { | ||
load: (client) => { | ||
load: function (client) { | ||
if (!client.config.enableUncaught) { | ||
@@ -1315,3 +1436,3 @@ return; | ||
client.notify(uncaughtError, { | ||
afterNotify: (_err, _notice) => { | ||
afterNotify: function (_err, _notice) { | ||
count += 1; | ||
@@ -1337,3 +1458,3 @@ client.config.afterUncaught(uncaughtError); | ||
return { | ||
load: (client) => { | ||
load: function (client) { | ||
if (!client.config.enableUnhandledRejection) { | ||
@@ -1360,8 +1481,8 @@ return; | ||
middleware.errorHandler = middleware.requestHandler = void 0; | ||
const url_1$1 = __importDefault$2(require$$0__default$1["default"]); | ||
var url_1$1 = __importDefault$2(require$$0__default$1["default"]); | ||
function fullUrl(req) { | ||
const connection = req.connection; | ||
const address = connection && connection.address(); | ||
var connection = req.connection; | ||
var address = connection && connection.address(); | ||
// @ts-ignore The old @types/node incorrectly defines `address` as string|Address | ||
const port = address ? address.port : undefined; | ||
var port = address ? address.port : undefined; | ||
// @ts-ignore | ||
@@ -1404,18 +1525,21 @@ return url_1$1.default.format({ | ||
transport.ServerTransport = void 0; | ||
const core_1$1 = src; | ||
const url_1 = require$$0__default$1["default"]; | ||
const http_1 = __importDefault$1(require$$2__default$1["default"]); | ||
const https_1 = __importDefault$1(require$$3__default["default"]); | ||
const util_1$1 = util; | ||
const { sanitize } = core_1$1.Util; | ||
class ServerTransport { | ||
send(options, payload) { | ||
const { protocol, hostname, pathname } = new url_1.URL(options.endpoint); | ||
const transport = (protocol === 'http:' ? http_1.default : https_1.default); | ||
return new Promise((resolve, reject) => { | ||
let promise; | ||
var core_1$1 = src; | ||
var url_1 = require$$0__default$1["default"]; | ||
var http_1 = __importDefault$1(require$$2__default$1["default"]); | ||
var https_1 = __importDefault$1(require$$3__default["default"]); | ||
var util_1$1 = util; | ||
var sanitize = core_1$1.Util.sanitize; | ||
var ServerTransport = /** @class */ (function () { | ||
function ServerTransport() { | ||
} | ||
ServerTransport.prototype.send = function (options, payload) { | ||
var _this = this; | ||
var _a = new url_1.URL(options.endpoint), protocol = _a.protocol, hostname = _a.hostname, pathname = _a.pathname; | ||
var transport = (protocol === 'http:' ? http_1.default : https_1.default); | ||
return new Promise(function (resolve, reject) { | ||
var promise; | ||
// this should not be here. it should be done before reaching the transport layer | ||
// it could be inside a beforeNotifyHandler, but is not possible at the moment because those handlers are synchronous | ||
if (this.isNoticePayload(payload)) { | ||
promise = this.appendMetadata(payload); | ||
if (_this.isNoticePayload(payload)) { | ||
promise = _this.appendMetadata(payload); | ||
} | ||
@@ -1425,14 +1549,14 @@ else { | ||
} | ||
promise.then(() => { | ||
promise.then(function () { | ||
// | ||
// We use a httpOptions object to limit issues with libraries that may patch Node.js | ||
// See https://github.com/honeybadger-io/honeybadger-js/issues/825#issuecomment-1193113433 | ||
const httpOptions = { | ||
var httpOptions = { | ||
method: options.method, | ||
headers: options.headers, | ||
path: pathname, | ||
protocol, | ||
hostname, | ||
protocol: protocol, | ||
hostname: hostname, | ||
}; | ||
let data = undefined; | ||
var data = undefined; | ||
if (payload) { | ||
@@ -1442,11 +1566,11 @@ data = Buffer.from(JSON.stringify(sanitize(payload, options.maxObjectDepth)), 'utf8'); | ||
} | ||
const req = transport.request(httpOptions, (res) => { | ||
options.logger.debug(`statusCode: ${res.statusCode}`); | ||
let body = ''; | ||
res.on('data', (chunk) => { | ||
var req = transport.request(httpOptions, function (res) { | ||
options.logger.debug("statusCode: ".concat(res.statusCode)); | ||
var body = ''; | ||
res.on('data', function (chunk) { | ||
body += chunk; | ||
}); | ||
res.on('end', () => resolve({ statusCode: res.statusCode, body })); | ||
res.on('end', function () { return resolve({ statusCode: res.statusCode, body: body }); }); | ||
}); | ||
req.on('error', (err) => reject(err)); | ||
req.on('error', function (err) { return reject(err); }); | ||
if (data) { | ||
@@ -1458,16 +1582,43 @@ req.write(data); | ||
}); | ||
} | ||
isNoticePayload(payload) { | ||
}; | ||
ServerTransport.prototype.isNoticePayload = function (payload) { | ||
return payload && payload.error !== undefined; | ||
} | ||
appendMetadata(payload) { | ||
}; | ||
ServerTransport.prototype.appendMetadata = function (payload) { | ||
payload.server.pid = process.pid; | ||
return (0, util_1$1.getStats)() | ||
.then(stats => { | ||
.then(function (stats) { | ||
payload.server.stats = stats; | ||
}); | ||
} | ||
} | ||
}; | ||
return ServerTransport; | ||
}()); | ||
transport.ServerTransport = ServerTransport; | ||
var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () { | ||
var extendStatics = function (d, b) { | ||
extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; | ||
return extendStatics(d, b); | ||
}; | ||
return function (d, b) { | ||
if (typeof b !== "function" && b !== null) | ||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
})(); | ||
var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { | ||
@@ -1477,23 +1628,26 @@ return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
Object.defineProperty(server, "__esModule", { value: true }); | ||
const os_1 = __importDefault(require$$0__default["default"]); | ||
const domain_1 = __importDefault(require$$1__default$1["default"]); | ||
const core_1 = src; | ||
const util_1 = util; | ||
const uncaught_exception_1 = __importDefault(uncaught_exception); | ||
const unhandled_rejection_1 = __importDefault(unhandled_rejection); | ||
const middleware_1 = middleware; | ||
const aws_lambda_1 = aws_lambda; | ||
const async_store_1 = async_store; | ||
const transport_1 = transport; | ||
const { endpoint } = core_1.Util; | ||
const kHoneybadgerStore = Symbol.for('kHoneybadgerStore'); | ||
class Honeybadger extends core_1.Client { | ||
constructor(opts = {}) { | ||
var os_1 = __importDefault(require$$0__default["default"]); | ||
var domain_1 = __importDefault(require$$1__default$1["default"]); | ||
var core_1 = src; | ||
var util_1 = util; | ||
var uncaught_exception_1 = __importDefault(uncaught_exception); | ||
var unhandled_rejection_1 = __importDefault(unhandled_rejection); | ||
var middleware_1 = middleware; | ||
var aws_lambda_1 = aws_lambda; | ||
var async_store_1 = async_store; | ||
var transport_1 = transport; | ||
var endpoint = core_1.Util.endpoint; | ||
var kHoneybadgerStore = Symbol.for('kHoneybadgerStore'); | ||
var Honeybadger = /** @class */ (function (_super) { | ||
__extends(Honeybadger, _super); | ||
function Honeybadger(opts) { | ||
if (opts === void 0) { opts = {}; } | ||
var _this = this; | ||
var _a; | ||
super(Object.assign({ afterUncaught: util_1.fatallyLogAndExit, projectRoot: process.cwd(), hostname: os_1.default.hostname() }, opts), new transport_1.ServerTransport()); | ||
_this = _super.call(this, __assign({ afterUncaught: util_1.fatallyLogAndExit, projectRoot: process.cwd(), hostname: os_1.default.hostname() }, opts), new transport_1.ServerTransport()) || this; | ||
/** @internal */ | ||
this.__beforeNotifyHandlers = [ | ||
(notice) => { | ||
_this.__beforeNotifyHandlers = [ | ||
function (notice) { | ||
if (notice && notice.backtrace) { | ||
notice.backtrace.forEach((line) => { | ||
notice.backtrace.forEach(function (line) { | ||
if (line.file) { | ||
@@ -1509,32 +1663,35 @@ line.file = line.file.replace(/.*\/node_modules\/(.+)/, '[NODE_MODULES]/$1'); | ||
// serverless defaults | ||
const config = this.config; | ||
var config = _this.config; | ||
config.reportTimeoutWarning = (_a = config.reportTimeoutWarning) !== null && _a !== void 0 ? _a : true; | ||
config.timeoutWarningThresholdMs = config.timeoutWarningThresholdMs || 50; | ||
this.__getSourceFileHandler = util_1.getSourceFile.bind(this); | ||
this.errorHandler = middleware_1.errorHandler.bind(this); | ||
this.requestHandler = middleware_1.requestHandler.bind(this); | ||
this.lambdaHandler = aws_lambda_1.lambdaHandler.bind(this); | ||
_this.__getSourceFileHandler = util_1.getSourceFile.bind(_this); | ||
_this.errorHandler = middleware_1.errorHandler.bind(_this); | ||
_this.requestHandler = middleware_1.requestHandler.bind(_this); | ||
_this.lambdaHandler = aws_lambda_1.lambdaHandler.bind(_this); | ||
return _this; | ||
} | ||
factory(opts) { | ||
Honeybadger.prototype.factory = function (opts) { | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
return new Honeybadger(opts); | ||
} | ||
configure(opts = {}) { | ||
return super.configure(opts); | ||
} | ||
checkIn(id) { | ||
}; | ||
Honeybadger.prototype.configure = function (opts) { | ||
if (opts === void 0) { opts = {}; } | ||
return _super.prototype.configure.call(this, opts); | ||
}; | ||
Honeybadger.prototype.checkIn = function (id) { | ||
var _this = this; | ||
return this.__transport | ||
.send({ | ||
method: 'GET', | ||
endpoint: endpoint(this.config.endpoint, `v1/check_in/${id}`), | ||
endpoint: endpoint(this.config.endpoint, "v1/check_in/".concat(id)), | ||
logger: this.logger, | ||
}) | ||
.then(() => { | ||
this.logger.info('CheckIn sent'); | ||
.then(function () { | ||
_this.logger.info('CheckIn sent'); | ||
return Promise.resolve(); | ||
}) | ||
.catch(err => { | ||
this.logger.error('CheckIn failed: an unknown error occurred.', `message=${err.message}`); | ||
.catch(function (err) { | ||
_this.logger.error('CheckIn failed: an unknown error occurred.', "message=".concat(err.message)); | ||
}); | ||
} | ||
}; | ||
// This method is intended for web frameworks. | ||
@@ -1547,4 +1704,5 @@ // It allows us to track context for individual requests without leaking to other requests | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
withRequest(request, handler, onError) { | ||
const storeObject = (request[kHoneybadgerStore] || this.__getStoreContentsOrDefault()); | ||
Honeybadger.prototype.withRequest = function (request, handler, onError) { | ||
var _this = this; | ||
var storeObject = (request[kHoneybadgerStore] || this.__getStoreContentsOrDefault()); | ||
this.__setStore(async_store_1.AsyncStore); | ||
@@ -1561,4 +1719,4 @@ if (!request[kHoneybadgerStore]) { | ||
// See https://github.com/honeybadger-io/honeybadger-js/pull/711 | ||
const dom = domain_1.default.create(); | ||
const onErrorWithContext = (err) => this.__store.run(storeObject, () => onError(err)); | ||
var dom = domain_1.default.create(); | ||
var onErrorWithContext = function (err) { return _this.__store.run(storeObject, function () { return onError(err); }); }; | ||
dom.on('error', onErrorWithContext); | ||
@@ -1568,4 +1726,5 @@ handler = dom.bind(handler); | ||
return this.__store.run(storeObject, handler); | ||
} | ||
} | ||
}; | ||
return Honeybadger; | ||
}(core_1.Client)); | ||
var _default = server.default = new Honeybadger({ | ||
@@ -1572,0 +1731,0 @@ __plugins: [ |
{ | ||
"name": "@honeybadger-io/js", | ||
"version": "4.1.2", | ||
"version": "4.1.3", | ||
"license": "MIT", | ||
@@ -77,3 +77,3 @@ "homepage": "https://github.com/honeybadger-io/honeybadger-js", | ||
}, | ||
"gitHead": "362837b27ee55eec6dc0a13633b93d2be0cccd44" | ||
"gitHead": "cc186a1aa9dd3ff47a0039b37c40c75201003a09" | ||
} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
456798
3726