diff --git a/index.js b/index.js index cdb30f1df..60515192d 100755 --- a/index.js +++ b/index.js @@ -28,7 +28,13 @@ import { info } from "./scripts/info.js"; import { removeModules } from "./scripts/remove.js"; import { commitModules } from "./scripts/commit-module.js"; import { upgradeScaffold } from "./scripts/upgrade.js"; -import { valid, invalid, isNameValid, section, isUserEnvironment } from "./utils.js"; +import { + valid, + invalid, + isNameValid, + section, + isUserEnvironment +} from "./utils.js"; import { createModule } from "./scripts/create.js"; import { login } from "./scripts/login.js"; import { configFile } from "./scripts/utils/configFile.js"; @@ -41,6 +47,7 @@ import { analytics } from "./scripts/analytics/wrapper.js"; import { HAS_ASKED_OPT_IN_NAME } from "./scripts/analytics/config.js"; import { EVENT } from "./scripts/analytics/constants.js"; import { askOptIn } from "./scripts/analytics/scripts.js"; +import { sentryMonitoring } from "./scripts/utils/sentry.js"; const pkg = JSON.parse( fs.readFileSync(new URL("package.json", import.meta.url), "utf8") @@ -83,6 +90,8 @@ async function dispatcher() { invalid(`command doesn't exist: ${command}`); } + sentryMonitoring.registerCommandName(command); + await commands[command](); if (!analytics.event.name) { diff --git a/package.json b/package.json index 17cf182d6..46c3cd13b 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ }, "type": "module", "engines": { - "node": ">16.0" + "node": ">18.0" }, "scripts": { "demo": "npx . demo", @@ -37,6 +37,7 @@ "@babel/template": "^7.16.7", "@babel/types": "^7.18.8", "@segment/analytics-node": "^2.0.0", + "@sentry/node": "^7.103.0", "ajv": "^8.11.0", "ajv-formats": "^2.1.1", "arg": "^5.0.2", diff --git a/scripts/utils/sentry.js b/scripts/utils/sentry.js new file mode 100644 index 000000000..954df5c44 --- /dev/null +++ b/scripts/utils/sentry.js @@ -0,0 +1,25 @@ +import * as Sentry from "@sentry/node"; + +class SentryMonitoring { + constructor() { + try { + Sentry.init({ + dsn: "https://9a87cf40be32750e4fc2a1b3246349e6@o263664.ingest.sentry.io/4506825798647808", + // Don't log the name of our users computers. Feels a bit much? + serverName: "-" + }); + } catch { + // Do nothing, but prevent any sentry errors from blocking commands from executing + } + } + + registerCommandName(commandName) { + try { + Sentry.setTag("command", commandName); + } catch { + // Do nothing, but prevent any sentry errors from blocking commands from executing + } + } +} + +export const sentryMonitoring = new SentryMonitoring(); diff --git a/yarn.lock b/yarn.lock index 15b41cbc4..ba9f03648 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1573,6 +1573,45 @@ node-fetch "^2.6.7" tslib "^2.4.1" +"@sentry-internal/tracing@7.103.0": + version "7.103.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.103.0.tgz#b18ef65f610099ee2fc74f91f9ccfdb0353580c4" + integrity sha512-sZ/Wao8HOvGaBs7WlOdflMpHGAFkOBWL6hBiirHaOy5d+IDm7n7et5U6zhvcfiyYBO4nY36gy1Tg5mw+aNO0Vw== + dependencies: + "@sentry/core" "7.103.0" + "@sentry/types" "7.103.0" + "@sentry/utils" "7.103.0" + +"@sentry/core@7.103.0": + version "7.103.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.103.0.tgz#8f626362c96f9aa4b4a52042c431d16372491dc1" + integrity sha512-LCI+PIDoF/RLqN41fNXum3ilmS6ukni6L7t38vSdibbe2G0804EbPLtOIpv2PkS8E6CFuRW5zOb+8OwEAAtZWw== + dependencies: + "@sentry/types" "7.103.0" + "@sentry/utils" "7.103.0" + +"@sentry/node@^7.103.0": + version "7.103.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.103.0.tgz#9cf488086717c2920c43568432d14232b6783a9e" + integrity sha512-/bS/WNeO+PEd0r3o3LN0XGJV+l7hLNy1dTcn61VRgWGVs8SqMBb3uAvXAibZ9zGTCkaX/Ky3JumMcOOoxmNCtg== + dependencies: + "@sentry-internal/tracing" "7.103.0" + "@sentry/core" "7.103.0" + "@sentry/types" "7.103.0" + "@sentry/utils" "7.103.0" + +"@sentry/types@7.103.0": + version "7.103.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.103.0.tgz#f413f922216c97ec86bae39f9d527669d8afedbd" + integrity sha512-NCvKyx8d2AGBQKPARrJemZmZ16DiMo688OEikZg4BbvFNDUzK5Egm2BH0vfLDhbNkU19o3maJowrYo42m8r9Zw== + +"@sentry/utils@7.103.0": + version "7.103.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.103.0.tgz#803b76e2adfdcec0d4ab6369cc8990dde19b55f4" + integrity sha512-phkUJt3F0UOkVq+M4GfdAh2ewI3ASrNiJddx9aO7GnT0aDwwVBHZltnqt95qgAB8W+BipTSt1dAh8yUbbq1Ceg== + dependencies: + "@sentry/types" "7.103.0" + "@sideway/address@^4.1.3": version "4.1.4" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0"