From 807ecff471072d68d27c101cb3bedb1e1c9347fb Mon Sep 17 00:00:00 2001 From: Danny Coates Date: Fri, 9 Aug 2019 11:06:21 -0700 Subject: [PATCH] updated sentry libs from raven to @sentry --- android/android.js | 4 +- android/stores/state.js | 2 +- app/controller.js | 18 +++--- app/main.js | 8 +-- package-lock.json | 127 +++++++++++++++++++++++++--------------- package.json | 4 +- server/bin/prod.js | 4 +- server/initScript.js | 9 +-- webpack.config.js | 1 + 9 files changed, 106 insertions(+), 71 deletions(-) diff --git a/android/android.js b/android/android.js index 9280a599..0a1e4d24 100644 --- a/android/android.js +++ b/android/android.js @@ -1,7 +1,7 @@ import 'intl-pluralrules'; import choo from 'choo'; import html from 'choo/html'; -import Raven from 'raven-js'; +import * as Sentry from '@sentry/browser'; import { setApiUrlPrefix, getConstants } from '../app/api'; import metrics from '../app/metrics'; @@ -82,7 +82,7 @@ function body(main) { state.archive = new Archive([], DEFAULTS.EXPIRE_SECONDS); state.storage = storage; state.user = new User(storage, LIMITS); - state.raven = Raven; + state.sentry = Sentry; }); app.use(metrics); app.route('/', body(home)); diff --git a/android/stores/state.js b/android/stores/state.js index d4368f35..a11058b5 100644 --- a/android/stores/state.js +++ b/android/stores/state.js @@ -12,7 +12,7 @@ export default function initialState(state, emitter) { getAsset(name) { return `${state.prefix}/${name}`; }, - raven: { + sentry: { captureException: e => { console.error('ERROR ' + e + ' ' + e.stack); } diff --git a/app/controller.js b/app/controller.js index d6ec9375..2107a8f1 100644 --- a/app/controller.js +++ b/app/controller.js @@ -76,7 +76,7 @@ export default function(state, emitter) { state.storage.remove(ownedFile.id); await ownedFile.del(); } catch (e) { - state.raven.captureException(e); + state.sentry.captureException(e); } render(); }); @@ -181,9 +181,10 @@ export default function(state, emitter) { } else { // eslint-disable-next-line no-console console.error(err); - state.raven.captureException(err, { - duration: err.duration, - size: err.size + state.sentry.withScope(scope => { + scope.setExtra('duration', err.duration); + scope.setExtra('size', err.size); + state.sentry.captureException(err); }); metrics.stoppedUpload(archive, err.duration); emitter.emit('pushState', '/error'); @@ -264,10 +265,11 @@ export default function(state, emitter) { state.transfer = null; const location = err.message === '404' ? '/404' : '/error'; if (location === '/error') { - state.raven.captureException(err, { - duration: err.duration, - size: err.size, - progress: err.progress + state.sentry.withScope(scope => { + scope.setExtra('duration', err.duration); + scope.setExtra('size', err.size); + scope.setExtra('progress', err.progress); + state.sentry.captureException(err); }); const duration = Date.now() - start; metrics.stoppedDownload({ diff --git a/app/main.js b/app/main.js index c49e8565..c3daef0d 100644 --- a/app/main.js +++ b/app/main.js @@ -12,15 +12,15 @@ import pasteManager from './pasteManager'; import storage from './storage'; import metrics from './metrics'; import experiments from './experiments'; -import Raven from 'raven-js'; +import * as Sentry from '@sentry/browser'; import './main.css'; import User from './user'; import { getTranslator } from './locale'; import Archive from './archive'; import { setTranslate, locale } from './utils'; -if (navigator.doNotTrack !== '1' && window.RAVEN_CONFIG) { - Raven.config(window.SENTRY_ID, window.RAVEN_CONFIG).install(); +if (navigator.doNotTrack !== '1' && window.SENTRY_CONFIG) { + Sentry.init(window.SENTRY_CONFIG); } if (process.env.NODE_ENV === 'production') { @@ -56,7 +56,7 @@ if (process.env.NODE_ENV === 'production') { capabilities, translate, storage, - raven: Raven, + sentry: Sentry, user: new User(storage, LIMITS, window.AUTH_CONFIG), transfer: null, fileInfo: null diff --git a/package-lock.json b/package-lock.json index b01bf3fd..bb250d9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1508,6 +1508,79 @@ "any-observable": "^0.3.0" } }, + "@sentry/browser": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-5.6.1.tgz", + "integrity": "sha512-EtuI3YUIXfSzbF2Z7c5UXcdkcjZj83Y0vj73kMXBxxYsmDkyU+KtJFFvonSUrLILMqYBNZXTgCrfglLfFkl7kA==", + "dev": true, + "requires": { + "@sentry/core": "5.6.1", + "@sentry/types": "5.6.1", + "@sentry/utils": "5.6.1", + "tslib": "^1.9.3" + } + }, + "@sentry/core": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.6.1.tgz", + "integrity": "sha512-gK8XfkJIZLsBEQehkr2q2fdHI50B3yo4RXiixSZiNBVIzQ+1z3JcMssDzGwhbY81NHUzHZ7of3oQ4Ab4OGRI/g==", + "requires": { + "@sentry/hub": "5.6.1", + "@sentry/minimal": "5.6.1", + "@sentry/types": "5.6.1", + "@sentry/utils": "5.6.1", + "tslib": "^1.9.3" + } + }, + "@sentry/hub": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.6.1.tgz", + "integrity": "sha512-m+OhkIV5yTAL3R1+XfCwzUQka0UF/xG4py8sEfPXyYIcoOJ2ZTX+1kQJLy8QQJ4RzOBwZA+DzRKP0cgzPJ3+oQ==", + "requires": { + "@sentry/types": "5.6.1", + "@sentry/utils": "5.6.1", + "tslib": "^1.9.3" + } + }, + "@sentry/minimal": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.6.1.tgz", + "integrity": "sha512-ercCKuBWHog6aS6SsJRuKhJwNdJ2oRQVWT2UAx1zqvsbHT9mSa8ZRjdPHYOtqY3DoXKk/pLUFW/fkmAnpdMqRw==", + "requires": { + "@sentry/hub": "5.6.1", + "@sentry/types": "5.6.1", + "tslib": "^1.9.3" + } + }, + "@sentry/node": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.6.1.tgz", + "integrity": "sha512-8gNjFRrTOG3vu2RpWZnUSxNx6Ui2Dthq2VHeVImt7PYtVaSddlYZvt0xl8L/fJC/TvFZEPfX0d8Is9v8yvsgRQ==", + "requires": { + "@sentry/core": "5.6.1", + "@sentry/hub": "5.6.1", + "@sentry/types": "5.6.1", + "@sentry/utils": "5.6.1", + "cookie": "0.3.1", + "https-proxy-agent": "2.2.1", + "lru_map": "0.3.3", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.6.1.tgz", + "integrity": "sha512-Kub8TETefHpdhvtnDj3kKfhCj0u/xn3Zi2zIC7PB11NJHvvPXENx97tciz4roJGp7cLRCJsFqCg4tHXniqDSnQ==" + }, + "@sentry/utils": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.6.1.tgz", + "integrity": "sha512-rfgha+UsHW816GqlSRPlniKqAZylOmQWML2JsujoUP03nPu80zdN43DK9Poy/d9OxBxv0gd5K2n+bFdM2kqLQQ==", + "requires": { + "@sentry/types": "5.6.1", + "tslib": "^1.9.3" + } + }, "@sinonjs/commons": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.4.0.tgz", @@ -3168,11 +3241,6 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" - }, "chokidar": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", @@ -4028,11 +4096,6 @@ "which": "^1.2.9" } }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" - }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -8550,7 +8613,8 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-builtin-module": { "version": "1.0.0", @@ -9856,6 +9920,11 @@ "yallist": "^3.0.2" } }, + "lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=" + }, "magic-string": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.23.2.tgz", @@ -9951,16 +10020,6 @@ "tiny-lru": "^1.6.1" } }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", - "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" - } - }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -13420,24 +13479,6 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, - "raven": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/raven/-/raven-2.6.4.tgz", - "integrity": "sha512-6PQdfC4+DQSFncowthLf+B6Hr0JpPsFBgTVYTAOq7tCmx/kR4SXbeawtPch20+3QfUcQDoJBLjWW1ybvZ4kXTw==", - "requires": { - "cookie": "0.3.1", - "md5": "^2.2.1", - "stack-trace": "0.0.10", - "timed-out": "4.0.1", - "uuid": "3.3.2" - } - }, - "raven-js": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/raven-js/-/raven-js-3.27.2.tgz", - "integrity": "sha512-mFWQcXnhRFEQe5HeFroPaEghlnqy7F5E2J3Fsab189ondqUzcjwSVi7el7F36cr6PvQYXoZ1P2F5CSF2/azeMQ==", - "dev": true - }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", @@ -16030,11 +16071,6 @@ "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", "dev": true }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - }, "timers-browserify": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", @@ -16199,8 +16235,7 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "tty-browserify": { "version": "0.0.0", diff --git a/package.json b/package.json index d7b2cdcd..9499d5ac 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "@dannycoates/webcrypto-liner": "^0.1.37", "@fullhuman/postcss-purgecss": "^1.2.0", "@mattiasbuelens/web-streams-polyfill": "0.2.1", + "@sentry/browser": "^5.6.1", "asmcrypto.js": "^0.22.0", "babel-loader": "^8.0.6", "babel-plugin-istanbul": "^5.2.0", @@ -107,7 +108,6 @@ "prettier": "^1.18.2", "proxyquire": "^2.1.1", "puppeteer": "^1.19.0", - "raven-js": "^3.27.2", "raw-loader": "^3.1.0", "redis-mock": "^0.45.0", "rimraf": "^2.6.3", @@ -141,6 +141,7 @@ "@fluent/bundle": "^0.13.0", "@fluent/langneg": "^0.3.0", "@google-cloud/storage": "^3.0.4", + "@sentry/node": "^5.6.1", "aws-sdk": "^2.506.0", "body-parser": "^1.19.0", "choo": "^6.13.3", @@ -152,7 +153,6 @@ "mkdirp": "^0.5.1", "mozlog": "^2.2.0", "node-fetch": "^2.6.0", - "raven": "^2.6.4", "redis": "^2.8.0", "selenium-standalone": "^6.15.6", "ua-parser-js": "^0.7.20" diff --git a/server/bin/prod.js b/server/bin/prod.js index 5f509dc3..f1baa37b 100644 --- a/server/bin/prod.js +++ b/server/bin/prod.js @@ -1,13 +1,13 @@ const express = require('express'); const path = require('path'); -const Raven = require('raven'); +const Sentry = require('@sentry/node'); const config = require('../config'); const routes = require('../routes'); const pages = require('../routes/pages'); const expressWs = require('@dannycoates/express-ws'); if (config.sentry_dsn) { - Raven.config(config.sentry_dsn).install(); + Sentry.init({ dsn: config.sentry_dsn }); } const app = express(); diff --git a/server/initScript.js b/server/initScript.js index e76f931a..2c4ae413 100644 --- a/server/initScript.js +++ b/server/initScript.js @@ -8,12 +8,10 @@ if (config.sentry_id) { //eslint-disable-next-line node/no-missing-require const version = require('../dist/version.json'); sentry = ` -var RAVEN_CONFIG = { +var SENTRY_CONFIG = { + dsn: '${config.sentry_id}', release: '${version.version}', - tags: { - commit: '${version.commit}' - }, - dataCallback: function (data) { + beforeSend: function (data) { var hash = window.location.hash; if (hash) { return JSON.parse(JSON.stringify(data).replace(new RegExp(hash.slice(1), 'g'), '')); @@ -21,7 +19,6 @@ var RAVEN_CONFIG = { return data; } } -var SENTRY_ID = '${config.sentry_id}'; `; } diff --git a/webpack.config.js b/webpack.config.js index 0321dc09..59bd140c 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -114,6 +114,7 @@ const web = { exclude: [ path.resolve(__dirname, 'node_modules/crc'), path.resolve(__dirname, 'node_modules/@fluent'), + path.resolve(__dirname, 'node_modules/@sentry'), path.resolve(__dirname, 'node_modules/tslib'), path.resolve(__dirname, 'node_modules/webcrypto-core') ],