From 0535fab865b43570095f6e20dcba50e9f4cb8414 Mon Sep 17 00:00:00 2001 From: Rishabh Date: Mon, 21 Jun 2021 19:45:42 +0530 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Added=20Sentry=20for=20error=20trac?= =?UTF-8?q?king?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no refs - adds sentry setup if Sentry DSN is available via Ghost config for better error tracking --- ghost/portal/package.json | 2 + ghost/portal/src/App.js | 26 +++++++++--- ghost/portal/yarn.lock | 86 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 107 insertions(+), 7 deletions(-) diff --git a/ghost/portal/package.json b/ghost/portal/package.json index 55e0379b27..d5a42869ce 100644 --- a/ghost/portal/package.json +++ b/ghost/portal/package.json @@ -18,6 +18,8 @@ "registry": "https://registry.npmjs.org/" }, "dependencies": { + "@sentry/react": "^6.7.2", + "@sentry/tracing": "^6.7.2", "@testing-library/jest-dom": "5.14.1", "@testing-library/react": "11.2.7", "@testing-library/user-event": "13.1.9", diff --git a/ghost/portal/src/App.js b/ghost/portal/src/App.js index a5d71ee85d..29e1f7ea07 100644 --- a/ghost/portal/src/App.js +++ b/ghost/portal/src/App.js @@ -1,3 +1,4 @@ +import * as Sentry from '@sentry/react'; import TriggerButton from './components/TriggerButton'; import Notification from './components/Notification'; import PopupModal from './components/PopupModal'; @@ -365,6 +366,7 @@ export default class App extends React.Component { } this.setupFirstPromoter({site, member}); + this.setupSentry({site}); return {site, member}; } catch (e) { if (hasMode(['dev', 'test'])) { @@ -374,6 +376,18 @@ export default class App extends React.Component { } } + /** Setup Sentry */ + setupSentry({site}) { + const {portal_sentry: portalSentry, portal_version: portalVersion, version: ghostVersion} = site; + if (portalSentry && portalSentry.dsn) { + Sentry.init({ + dsn: portalSentry.dsn, + environment: portalSentry.env || 'development', + release: `portal@${portalVersion}|ghost@${ghostVersion}` + }); + } + } + /** Setup Firstpromoter script */ setupFirstPromoter({site, member}) { const firstPromoterId = getFirstpromoterId({site}); @@ -591,11 +605,13 @@ export default class App extends React.Component { render() { if (this.state.initStatus === 'success') { return ( - - - - - + + + + + + + ); } return null; diff --git a/ghost/portal/yarn.lock b/ghost/portal/yarn.lock index 0fe1cdc68a..01537b6d96 100644 --- a/ghost/portal/yarn.lock +++ b/ghost/portal/yarn.lock @@ -1536,6 +1536,81 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@sentry/browser@6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.7.2.tgz#cfbe060de5a9694617f175a6bde469e5e266792e" + integrity sha512-Lv0Ne1QcesyGAhVcQDfQa3hDPR/MhPSDTMg3xFi+LxqztchVc4w/ynzR0wCZFb8KIHpTj5SpJHfxpDhXYMtS9g== + dependencies: + "@sentry/core" "6.7.2" + "@sentry/types" "6.7.2" + "@sentry/utils" "6.7.2" + tslib "^1.9.3" + +"@sentry/core@6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.7.2.tgz#1d294fac6e62744bce3b9dfbcd90b14e93620480" + integrity sha512-NTZqwN5nR94yrXmSfekoPs1mIFuKvf8esdIW/DadwSKWAdLJwQTJY9xK/8PQv+SEzd7wiitPAx+mCw2By1xiNQ== + dependencies: + "@sentry/hub" "6.7.2" + "@sentry/minimal" "6.7.2" + "@sentry/types" "6.7.2" + "@sentry/utils" "6.7.2" + tslib "^1.9.3" + +"@sentry/hub@6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.7.2.tgz#31b250e74aa303877620dfa500aa89e4411e2dec" + integrity sha512-05qVW6ymChJsXag4+fYCQokW3AcABIgcqrVYZUBf6GMU/Gbz5SJqpV7y1+njwWvnPZydMncP9LaDVpMKbE7UYQ== + dependencies: + "@sentry/types" "6.7.2" + "@sentry/utils" "6.7.2" + tslib "^1.9.3" + +"@sentry/minimal@6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.7.2.tgz#9e6c0c587daea64a9042041694a4ad5d559d16cd" + integrity sha512-jkpwFv2GFHoVl5vnK+9/Q+Ea8eVdbJ3hn3/Dqq9MOLFnVK7ED6MhdHKLT79puGSFj+85OuhM5m2Q44mIhyS5mw== + dependencies: + "@sentry/hub" "6.7.2" + "@sentry/types" "6.7.2" + tslib "^1.9.3" + +"@sentry/react@^6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-6.7.2.tgz#68edb082ea42cabcf86939f254457436b82b4a0a" + integrity sha512-gjXRuhgd3l2s18Y4dw9ZMWCiFKyeAU79fBiYdv8lqu9EFPFquU0qkZbgep8D37Xq2GWjQM0qEBmD758L6bUwvQ== + dependencies: + "@sentry/browser" "6.7.2" + "@sentry/minimal" "6.7.2" + "@sentry/types" "6.7.2" + "@sentry/utils" "6.7.2" + hoist-non-react-statics "^3.3.2" + tslib "^1.9.3" + +"@sentry/tracing@^6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.7.2.tgz#78a6934837143ae5e200b49bd256bc8a917477bc" + integrity sha512-juKlI7FICKONWJFJxDxerj0A+8mNRhmtrdR+OXFqOkqSAy/QXlSFZcA/j//O19k2CfwK1BrvoMcQ/4gnffUOVg== + dependencies: + "@sentry/hub" "6.7.2" + "@sentry/minimal" "6.7.2" + "@sentry/types" "6.7.2" + "@sentry/utils" "6.7.2" + tslib "^1.9.3" + +"@sentry/types@6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.7.2.tgz#8108272c98ad7784ddf9ddda0b7bdc6880ed6e50" + integrity sha512-h21Go/PfstUN+ZV6SbwRSZVg9GXRJWdLfHoO5PSVb3TVEMckuxk8tAE57/u+UZDwX8wu+Xyon2TgsKpiWKxqUg== + +"@sentry/utils@6.7.2": + version "6.7.2" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.7.2.tgz#c7f957ebe16de3e701a0c5477ac2dba04e7b4b68" + integrity sha512-9COL7aaBbe61Hp5BlArtXZ1o/cxli1NGONLPrVT4fMyeQFmLonhUiy77NdsW19XnvhvaA+2IoV5dg3dnFiF/og== + dependencies: + "@sentry/types" "6.7.2" + tslib "^1.9.3" + "@sinonjs/commons@^1.7.0": version "1.8.3" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" @@ -5810,6 +5885,13 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -9510,7 +9592,7 @@ react-error-overlay@^6.0.9: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== -react-is@^16.8.1: +react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -11169,7 +11251,7 @@ tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==