const Raven = require('raven-js') const METAMASK_DEBUG = process.env.METAMASK_DEBUG const extractEthjsErrorMessage = require('./extractEthjsErrorMessage') const PROD = 'https://3567c198f8a8412082d32655da2961d0@sentry.io/273505' const DEV = 'https://f59f3dd640d2429d9d0e2445a87ea8e1@sentry.io/273496' module.exports = setupRaven // Setup raven / sentry remote error reporting function setupRaven(opts) { const { release } = opts let ravenTarget if (METAMASK_DEBUG) { console.log('Setting up Sentry Remote Error Reporting: DEV') ravenTarget = DEV } else { console.log('Setting up Sentry Remote Error Reporting: PROD') ravenTarget = PROD } const client = Raven.config(ravenTarget, { release, transport: function(opts) { const report = opts.data try { // handle error-like non-error exceptions rewriteErrorLikeExceptions(report) // simplify certain complex error messages (e.g. Ethjs) simplifyErrorMessages(report) // modify report urls rewriteReportUrls(report) } catch (err) { console.warn(err) } // make request normally client._makeRequest(opts) }, }) client.install() return Raven } function rewriteErrorLikeExceptions(report) { // handle errors that lost their error-ness in serialization (e.g. dnode) rewriteErrorMessages(report, (errorMessage) => { if (!errorMessage.includes('Non-Error exception captured with keys:')) return errorMessage if (!(report.extra && report.extra.__serialized__ && report.extra.__serialized__.message)) return errorMessage return `Non-Error Exception: ${report.extra.__serialized__.message}` }) } function simplifyErrorMessages(report) { rewriteErrorMessages(report, (errorMessage) => { // simplify ethjs error messages errorMessage = extractEthjsErrorMessage(errorMessage) // simplify 'Transaction Failed: known transaction' if (errorMessage.indexOf('Transaction Failed: known transaction') === 0) { // cut the hash from the error message errorMessage = 'Transaction Failed: known transaction' } return errorMessage }) } function rewriteErrorMessages(report, rewriteFn) { // rewrite top level message report.message = rewriteFn(report.message) // rewrite each exception message if (report.exception && report.exception.values) { report.exception.values.forEach(item => { item.value = rewriteFn(item.value) }) } } function rewriteReportUrls(report) { // update request url report.request.url = toMetamaskUrl(report.request.url) // update exception stack trace if (report.exception && report.exception.values) { report.exception.values.forEach(item => { item.stacktrace.frames.forEach(frame => { frame.filename = toMetamaskUrl(frame.filename) }) }) } } function toMetamaskUrl(origUrl) { const filePath = origUrl.split(location.origin)[1] if (!filePath) return origUrl const metamaskUrl = `metamask${filePath}` return metamaskUrl } ption> <option value='2025Q3'>2025Q3</option> <option value='branches/2014Q1'>branches/2014Q1</option> <option value='branches/2014Q2'>branches/2014Q2</option> <option value='branches/2014Q3'>branches/2014Q3</option> <option value='branches/2014Q4'>branches/2014Q4</option> <option value='branches/2015Q1'>branches/2015Q1</option> <option value='branches/2015Q2'>branches/2015Q2</option> <option value='branches/2015Q3'>branches/2015Q3</option> <option value='branches/2015Q4'>branches/2015Q4</option> <option value='branches/2016Q1'>branches/2016Q1</option> <option value='branches/2016Q2'>branches/2016Q2</option> <option value='branches/2016Q3'>branches/2016Q3</option> <option value='branches/2016Q4'>branches/2016Q4</option> <option value='branches/2017Q1'>branches/2017Q1</option> <option value='branches/2017Q2'>branches/2017Q2</option> <option value='branches/2017Q3'>branches/2017Q3</option> <option value='branches/2017Q4'>branches/2017Q4</option> <option value='branches/2018Q1'>branches/2018Q1</option> <option value='branches/2018Q2'>branches/2018Q2</option> <option value='branches/2018Q3'>branches/2018Q3</option> <option value='branches/2018Q4'>branches/2018Q4</option> <option value='branches/2019Q1'>branches/2019Q1</option> <option value='branches/2019Q2'>branches/2019Q2</option> <option value='branches/2019Q3'>branches/2019Q3</option> <option value='branches/2019Q4'>branches/2019Q4</option> <option value='branches/2020Q1'>branches/2020Q1</option> <option value='branches/2020Q2'>branches/2020Q2</option> <option value='branches/2020Q3'>branches/2020Q3</option> <option value='branches/2020Q4'>branches/2020Q4</option> <option value='branches/2021Q1'>branches/2021Q1</option> <option value='branches/RELEASE_8_4_0'>branches/RELEASE_8_4_0</option> <option value='branches/RELENG_2_1_0'>branches/RELENG_2_1_0</option> <option value='branches/RELENG_2_2'>branches/RELENG_2_2</option> <option value='branches/RELENG_9_1_0'>branches/RELENG_9_1_0</option> <option value='branches/RELENG_9_2_0'>branches/RELENG_9_2_0</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/eslint-utils-1.4.3'>dependabot/npm_and_yarn/devel/electron4/files/eslint-utils-1.4.3</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/lodash-4.17.15'>dependabot/npm_and_yarn/devel/electron4/files/lodash-4.17.15</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/lodash.merge-4.6.2'>dependabot/npm_and_yarn/devel/electron4/files/lodash.merge-4.6.2</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/lodash.template-4.5.0'>dependabot/npm_and_yarn/devel/electron4/files/lodash.template-4.5.0</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/minimist-1.2.2'>dependabot/npm_and_yarn/devel/electron4/files/minimist-1.2.2</option> <option value='dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2'>dependabot/npm_and_yarn/devel/electron4/files/mixin-deep-1.3.2</option> <option value='main' selected='selected'>main</option> <option value='master'>master</option> <option value='svn_head'>svn_head</option> </select> <input type='submit' value='switch'/></form></td></tr> <tr><td class='sub'>FreeBSD Ports (https://github.com/freebsd/freebsd-ports)</td><td class='sub right'></td></tr></table> <table class='tabs'><tr><td> <a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/about/'>about</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/'>summary</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/refs/?id=f871c6efabc784eb6ddb4c3ee2ad116afc94800d'>refs</a><a class='active' href='/~lantw44/cgit/cgit.cgi/freebsd-ports/log/lang/gleam'>log</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/tree/lang/gleam?id=f871c6efabc784eb6ddb4c3ee2ad116afc94800d'>tree</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=f871c6efabc784eb6ddb4c3ee2ad116afc94800d'>commit</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/diff/lang/gleam?id=f871c6efabc784eb6ddb4c3ee2ad116afc94800d'>diff</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/stats/lang/gleam'>stats</a></td><td class='form'><form class='right' method='get' action='/~lantw44/cgit/cgit.cgi/freebsd-ports/log/lang/gleam'> <input type='hidden' name='id' value='f871c6efabc784eb6ddb4c3ee2ad116afc94800d'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/log/?id=f871c6efabc784eb6ddb4c3ee2ad116afc94800d'>root</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/log/lang?id=f871c6efabc784eb6ddb4c3ee2ad116afc94800d'>lang</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/log/lang/gleam?id=f871c6efabc784eb6ddb4c3ee2ad116afc94800d'>gleam</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th></th><th class='left'>Commit message (<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/log/lang/gleam?id=f871c6efabc784eb6ddb4c3ee2ad116afc94800d&showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Age</th><th class='left'>Files</th><th class='left'>Lines</th></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=e9a35a1c5016dde2e50c722753b048dfeb7093be'>lang/rust: Bump revisions after 1.61.0</a></td><td>Mikael Urankar</td><td><span title='2022-05-31 21:06:17 +0800'>2022-05-31</span></td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+1</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=480c6ba42b381efe2f7db002cf1c82b9ee1a4e57'>lang/gleam: update to 0.21.0</a></td><td>Dave Cottlehuber</td><td><span title='2022-05-17 22:07:51 +0800'>2022-05-17</span></td><td>3</td><td><span class='deletions'>-303</span>/<span class='insertions'>+302</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=57c3caaa6c71fac422a82aa252be380179d3c042'>lang/rust: Relink ports after the Rust 1.60.0 update</a></td><td>Tobias Kortkamp</td><td><span title='2022-05-03 16:00:34 +0800'>2022-05-03</span></td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=e255ac5487b4968237729e953a156c2be8914617'>lang/rust: Bump revisions after 1.59.0</a></td><td>Mikael Urankar</td><td><span title='2022-03-15 17:51:58 +0800'>2022-03-15</span></td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+1</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=8dc8b7224bce38d334924304eeecb9f866cbfe73'>lang/gleam: update to 0.20.1</a></td><td>Dave Cottlehuber</td><td><span title='2022-03-09 16:42:53 +0800'>2022-03-09</span></td><td>3</td><td><span class='deletions'>-8</span>/<span class='insertions'>+19</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=d64a2a380f88ceec8264db6bbc94805f58112ee7'>lang/rust: Relink consumers</a></td><td>Tobias Kortkamp</td><td><span title='2022-02-03 22:02:32 +0800'>2022-02-03</span></td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=835bd573300a74e379d8f37fefec3a0e9d24e391'>lang/rust: Bump revisions after 1.58.0</a></td><td>Tobias Kortkamp</td><td><span title='2022-01-17 19:57:45 +0800'>2022-01-17</span></td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+1</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=bf49a06b0e408f652d579c839e8f38a0e9c4aca0'>lang/gleam: update to 0.19.0</a></td><td>Dave Cottlehuber</td><td><span title='2022-01-14 05:00:30 +0800'>2022-01-14</span></td><td>3</td><td><span class='deletions'>-139</span>/<span class='insertions'>+133</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=95a444db3579ffacd8c13602db0cea83f6e6dfc8'>lang/gleam: update to 0.18.2</a></td><td>Dave Cottlehuber</td><td><span title='2021-12-14 15:01:33 +0800'>2021-12-14</span></td><td>3</td><td><span class='deletions'>-46</span>/<span class='insertions'>+46</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=f60da0973d3432a3899b8a46e748441eea5c0dee'>lang/gleam: update to 0.18.0</a></td><td>Dave Cottlehuber</td><td><span title='2021-12-09 17:38:20 +0800'>2021-12-09</span></td><td>4</td><td><span class='deletions'>-259</span>/<span class='insertions'>+321</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=5a7f23c69df040ff8b38bb1c0d25db96cc1c2605'>lang/rust: Rebuild consumers for Rust 1.57.0</a></td><td>Tobias Kortkamp</td><td><span title='2021-12-05 20:35:42 +0800'>2021-12-05</span></td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=ad90fc634b9923b6fb3b5072b30bc104175a0061'>*: Rebuild for Rust 1.56.0</a></td><td>Tobias Kortkamp</td><td><span title='2021-10-25 16:55:19 +0800'>2021-10-25</span></td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+1</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=727a23e5771c5e10959873cfeff536cb8b9d7bd1'>lang/gleam: update to 0.17.0</a></td><td>Dave Cottlehuber</td><td><span title='2021-09-21 03:00:59 +0800'>2021-09-21</span></td><td>3</td><td><span class='deletions'>-328</span>/<span class='insertions'>+392</span></td></tr> <tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports/commit/lang/gleam?id=7059b437276adb3724a01c87aa54da081f71c94b'>*: Rebuild lang/rust consumers after the 1.55.0 update</a></td><td>Tobias Kortkamp</td><td><span title='2021-09-19 17:03:23 +0800'>2021-09-19</span>