diff --git a/package-lock.json b/package-lock.json index 46cd3d6..3e3c7a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1880,6 +1880,106 @@ "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.1.tgz", "integrity": "sha512-kqdrZRvTLFfvgPTeMgj8DpREYZXU+sz4/kdX2825zMNGmiaEUzM6u7A4YBoI4WzqXX4q123VftkllAw1C/4rMg==" }, + "@sentry/apm": { + "version": "5.21.4", + "resolved": "https://registry.npmjs.org/@sentry/apm/-/apm-5.21.4.tgz", + "integrity": "sha512-JkBfBKBXZifDI9CsKU+XHzNWkubM7U9dXDW4c6/kU3lURYGXpiR/WI+f3IQG5Vbd2t+cukYhG7BeMkhG8Tj+cA==", + "requires": { + "@sentry/browser": "5.21.4", + "@sentry/hub": "5.21.4", + "@sentry/minimal": "5.21.4", + "@sentry/types": "5.21.4", + "@sentry/utils": "5.21.4", + "tslib": "^1.9.3" + } + }, + "@sentry/browser": { + "version": "5.21.4", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-5.21.4.tgz", + "integrity": "sha512-/bRGMNjJc4Qt9Me9qLobZe0pREUAMFQAR7GOF9HbgzxUc49qVvmPRglvwzwhPJ6XKPg0NH/C6MOn+yuIRjfMag==", + "requires": { + "@sentry/core": "5.21.4", + "@sentry/types": "5.21.4", + "@sentry/utils": "5.21.4", + "tslib": "^1.9.3" + } + }, + "@sentry/core": { + "version": "5.21.4", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.21.4.tgz", + "integrity": "sha512-2hB0shKL6RUuLqqmnDUPvwiV25OSnchxkJ6NbLqnn2DYLqLARfZuVcw2II4wb/Jlw7SDnbkQIPs0/ax7GPe1Nw==", + "requires": { + "@sentry/hub": "5.21.4", + "@sentry/minimal": "5.21.4", + "@sentry/types": "5.21.4", + "@sentry/utils": "5.21.4", + "tslib": "^1.9.3" + } + }, + "@sentry/electron": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-2.0.1.tgz", + "integrity": "sha512-7jWkM0EHdkOkMFg5duCNXWzh6Jn5+eC2PztoGhQf5iJwLrZUpr0Q6FrX1J2uaswnNFJNOFIk2hQe2vcP8CLCzw==", + "requires": { + "@sentry/browser": "~5.21.1", + "@sentry/core": "~5.21.1", + "@sentry/minimal": "~5.21.1", + "@sentry/node": "~5.21.1", + "@sentry/types": "~5.21.1", + "@sentry/utils": "~5.21.1", + "tslib": "^1.9.3" + } + }, + "@sentry/hub": { + "version": "5.21.4", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.21.4.tgz", + "integrity": "sha512-bgEgBHK6OWoAkrnYwVsIOw+sR4MWpe5/CB7H7r+GBJsSnBysncbSaBgndKmtb1GTWdzMxMlvXU16zC6TR5JX5Q==", + "requires": { + "@sentry/types": "5.21.4", + "@sentry/utils": "5.21.4", + "tslib": "^1.9.3" + } + }, + "@sentry/minimal": { + "version": "5.21.4", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.21.4.tgz", + "integrity": "sha512-pIpIH2ZTwdijGTw6VwfkTETAEoc9k/Aejz6mAjFDMzlOPb3bCx+W8EbGzFOxuwOsiE84bysd2UPVgFY4YSLV/g==", + "requires": { + "@sentry/hub": "5.21.4", + "@sentry/types": "5.21.4", + "tslib": "^1.9.3" + } + }, + "@sentry/node": { + "version": "5.21.4", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.21.4.tgz", + "integrity": "sha512-8XnEIwWZyvCSawjMyf6d7bm4lat3bv54SwWrxWqNr6akxbfVI/cV8DsWC045g2Gx799mbXBo4hMaTGJYW6CrWg==", + "requires": { + "@sentry/apm": "5.21.4", + "@sentry/core": "5.21.4", + "@sentry/hub": "5.21.4", + "@sentry/types": "5.21.4", + "@sentry/utils": "5.21.4", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "5.21.4", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.21.4.tgz", + "integrity": "sha512-uJTRxW//NPO0UJJzRQOtYHg5tiSBvn1dRk5FvURXmeXt9d9XtwmRhHWDwI51uAkyv+51tun3v+0OZQfLvAI+gQ==" + }, + "@sentry/utils": { + "version": "5.21.4", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.21.4.tgz", + "integrity": "sha512-zY8OvaE/lU+DCzTSFrDZNXZmBLM/0URUlyYD4RubqzrgKY/eP1pSbEsDzYYhc+OrBr8TjG66N+5T3gMZX0BfNg==", + "requires": { + "@sentry/types": "5.21.4", + "tslib": "^1.9.3" + } + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -2462,6 +2562,14 @@ "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", "dev": true }, + "agent-base": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz", + "integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==", + "requires": { + "debug": "4" + } + }, "aggregate-error": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", @@ -3703,6 +3811,11 @@ "safe-buffer": "~5.1.1" } }, + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + }, "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", @@ -5873,6 +5986,15 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", @@ -8551,6 +8673,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=" + }, "make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", @@ -11650,8 +11777,7 @@ "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" }, "tsscmp": { "version": "1.0.6", diff --git a/package.json b/package.json index 8d1c616..949632b 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "dependencies": { "@iarna/toml": "^2.2.5", "@repeaterjs/repeater": "^3.0.1", + "@sentry/electron": "^2.0.1", "base-x": "^3.0.8", "chokidar": "^3.4.0", "color": "^3.1.2", diff --git a/src/node/index.js b/src/node/index.js index cb2e2f7..5dc7f4d 100644 --- a/src/node/index.js +++ b/src/node/index.js @@ -4,6 +4,7 @@ import yargs from 'yargs' import TOML from '@iarna/toml' import * as Y from 'yjs' import { Repeater } from '@repeaterjs/repeater' +import * as Sentry from '@sentry/electron' import { app, shell, session, BrowserWindow } from 'electron' import { ensureValidURL } from '../util' @@ -21,6 +22,9 @@ import TwitchBot from './TwitchBot' import StreamdelayClient from './StreamdelayClient' import initWebServer from './server' +const SENTRY_DSN = + 'https://e630a21dcf854d1a9eb2a7a8584cbd0b@o459879.ingest.sentry.io/5459505' + function parseArgs() { return yargs .config('config', (configPath) => { @@ -186,6 +190,12 @@ function parseArgs() { describe: 'Streamdelay API key', default: null, }) + .group(['telemetry.sentry'], 'Telemetry') + .option('telemetry.sentry', { + describe: 'Enable error reporting to Sentry', + boolean: true, + default: true, + }) .help().argv } @@ -195,6 +205,10 @@ async function main() { return } + if (argv.telemetry.sentry) { + Sentry.init({ dsn: SENTRY_DSN }) + } + // Reject all permission requests from web content. session .fromPartition('persist:session')