diff --git a/.gitignore b/.gitignore index 956f56f..61976d1 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ node_modules *.log .next app -dist \ No newline at end of file +dist +# Sentry +.sentryclirc diff --git a/README.md b/README.md index e593282..d4f2034 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,7 @@ ![image](https://user-images.githubusercontent.com/30301026/136669993-0219904e-c967-4b4f-8903-df43fb35f44b.png) ![React Badge](https://img.shields.io/badge/react%20-%2320232a.svg?&style=for-the-badge&logo=react&logoColor=%2361DAFB) - ---- +[![D](https://img.shields.io/badge/Join%20our%20Server%20-%237289DA.svg?&style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/Z7ybzt2KRr) Welcome to Discord Bot Creator, a **free** open source discord bot creator which is much more powerful than current alternatives. Currently, it's still in development but you can check out the early version using the instructions below. Also feel free to join us on [Discord](https://discord.gg/yB4BnAHt). diff --git a/main/background.ts b/main/background.ts index 1b9ddeb..7ea0399 100644 --- a/main/background.ts +++ b/main/background.ts @@ -1,12 +1,13 @@ +import * as Sentry from '@sentry/electron'; import { app, globalShortcut, ipcMain, shell } from 'electron'; import serve from 'electron-serve'; import { createMenu, createWindow, Loader } from './helpers'; import './helpers/ipc'; import { addLog, getLogs } from './helpers/logs'; -try { - require('electron-reloader')(module); -} catch (e) {} +Sentry.init({ + dsn: 'https://c2f332451a0d4d9c8054ee6ff67405a9@o1252972.ingest.sentry.io/6419301', +}); const isProd = process.env.NODE_ENV === 'production'; diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..6b43f13 --- /dev/null +++ b/next.config.js @@ -0,0 +1,26 @@ +// This file sets a custom webpack configuration to use your Next.js app +// with Sentry. +// https://nextjs.org/docs/api-reference/next.config.js/introduction +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +const { withSentryConfig } = require('@sentry/nextjs'); + +const moduleExports = { + // Your existing module.exports +}; + +const sentryWebpackPluginOptions = { + // Additional config options for the Sentry Webpack plugin. Keep in mind that + // the following options are set automatically, and overriding them is not + // recommended: + // release, url, org, project, authToken, configFile, stripPrefix, + // urlPrefix, include, ignore + + silent: true, // Suppresses all logs + // For all available options, see: + // https://github.com/getsentry/sentry-webpack-plugin#options. +}; + +// Make sure adding Sentry options is the last code to run before exporting, to +// ensure that your source maps include changes from all other Webpack plugins +module.exports = withSentryConfig(moduleExports, sentryWebpackPluginOptions); diff --git a/package-lock.json b/package-lock.json index b689a19..3b81e77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,8 @@ "hasInstallScript": true, "dependencies": { "@heroicons/react": "^1.0.3", + "@sentry/electron": "^3.0.7", + "@sentry/nextjs": "^6.19.7", "@stitches/react": "^1.2.6", "@types/react-beautiful-dnd": "^13.1.2", "@types/webpack-merge": "^5.0.0", @@ -2060,8 +2062,7 @@ "node_modules/@next/env": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.0.tgz", - "integrity": "sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ==", - "dev": true + "integrity": "sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ==" }, "node_modules/@next/swc-android-arm64": { "version": "12.1.0", @@ -2070,7 +2071,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "android" @@ -2086,7 +2086,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -2102,7 +2101,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -2118,7 +2116,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -2134,7 +2131,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -2150,7 +2146,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -2166,7 +2161,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -2182,7 +2176,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -2198,7 +2191,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -2214,7 +2206,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "win32" @@ -2230,7 +2221,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -2280,6 +2270,492 @@ "npm": ">=7.0.0" } }, + "node_modules/@sentry/browser": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.19.2.tgz", + "integrity": "sha512-5VC44p5Vu2eJhVT39nLAJFgha5MjHDYCyZRR1ieeZt3a++otojPGBBAKNAtrEMGV+A2Z9AoneD6ZnDVlyb3GKg==", + "dependencies": { + "@sentry/core": "6.19.2", + "@sentry/types": "6.19.2", + "@sentry/utils": "6.19.2", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/cli": { + "version": "1.74.4", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-1.74.4.tgz", + "integrity": "sha512-BMfzYiedbModsNBJlKeBOLVYUtwSi99LJ8gxxE4Bp5N8hyjNIN0WVrozAVZ27mqzAuy6151Za3dpmOLO86YlGw==", + "hasInstallScript": true, + "dependencies": { + "https-proxy-agent": "^5.0.0", + "mkdirp": "^0.5.5", + "node-fetch": "^2.6.7", + "npmlog": "^4.1.2", + "progress": "^2.0.3", + "proxy-from-env": "^1.1.0", + "which": "^2.0.2" + }, + "bin": { + "sentry-cli": "bin/sentry-cli" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sentry/core": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.2.tgz", + "integrity": "sha512-yu1R3ewBT4udmB4v7sc4biQZ0Z0rfB9+TzB5ZKoCftbe6kqXjFMMaFRYNUF9HicVldKAsBktgkWw3+yfqGkw/A==", + "dependencies": { + "@sentry/hub": "6.19.2", + "@sentry/minimal": "6.19.2", + "@sentry/types": "6.19.2", + "@sentry/utils": "6.19.2", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/electron": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-3.0.7.tgz", + "integrity": "sha512-Rahi1jgvjHnx1jGkkPPvDCxSCAME7xc2eBcFCLb4R/WDuNblR7tgJUuAtzv9JpxUgRHy1oLNct0wcvIu1mcXoA==", + "dependencies": { + "@sentry/browser": "6.19.2", + "@sentry/core": "6.19.2", + "@sentry/node": "6.19.2", + "@sentry/types": "6.19.2", + "@sentry/utils": "6.19.2", + "deepmerge": "^4.2.2", + "tslib": "^2.3.1" + } + }, + "node_modules/@sentry/hub": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.2.tgz", + "integrity": "sha512-W7KCgNBgdBIMagOxy5J5KQPe+maYxSqfE8a5ncQ3R8BcZDQEKnkW/1FplNbfRLZqA/tL/ndKb7pTPqVtzsbARw==", + "dependencies": { + "@sentry/types": "6.19.2", + "@sentry/utils": "6.19.2", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/integrations": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-6.19.7.tgz", + "integrity": "sha512-yNeeFyuygJaV7Mdc5qWuDa13xVj5mVdECaaw2Xs4pfeHaXmRfRzZY17N8ypWFegKWxKBHynyQRMD10W5pBwJvA==", + "dependencies": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "localforage": "^1.8.1", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/integrations/node_modules/@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/integrations/node_modules/@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "dependencies": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/integrations/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/minimal": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.2.tgz", + "integrity": "sha512-ClwxKm77iDHET7kpzv1JvzDx1er5DoNu+EUjst0kQzARIrXvu9xuZuE2/CnBWycQWqw8o3HoGoKz65uIhsUCzQ==", + "dependencies": { + "@sentry/hub": "6.19.2", + "@sentry/types": "6.19.2", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/nextjs": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-6.19.7.tgz", + "integrity": "sha512-029gpqhR6gHF7zfE9oxFOf3Zm68CShDu8/6azC8mwfIfJtyLC9dqztJJi48j0Uxs+sR1TEkN5Dw3wZbfWtFd8g==", + "dependencies": { + "@sentry/core": "6.19.7", + "@sentry/hub": "6.19.7", + "@sentry/integrations": "6.19.7", + "@sentry/node": "6.19.7", + "@sentry/react": "6.19.7", + "@sentry/tracing": "6.19.7", + "@sentry/utils": "6.19.7", + "@sentry/webpack-plugin": "1.18.8", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "next": "^10.0.8 || ^11.0 || ^12.0", + "react": "15.x || 16.x || 17.x || 18.x", + "webpack": ">= 4.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/@sentry/nextjs/node_modules/@sentry/core": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", + "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/nextjs/node_modules/@sentry/hub": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", + "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", + "dependencies": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/nextjs/node_modules/@sentry/minimal": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", + "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/nextjs/node_modules/@sentry/node": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", + "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", + "dependencies": { + "@sentry/core": "6.19.7", + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/nextjs/node_modules/@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/nextjs/node_modules/@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "dependencies": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/nextjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/node": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.2.tgz", + "integrity": "sha512-Z1qREpTpYHxaeWjc1zMUk8ZTAp1WbxMiI2TVNc+a14DVT19Z2xNXb06MiRfeLgNc9lVGdmzR62dPmMBjVgPJYg==", + "dependencies": { + "@sentry/core": "6.19.2", + "@sentry/hub": "6.19.2", + "@sentry/types": "6.19.2", + "@sentry/utils": "6.19.2", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/react": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-6.19.7.tgz", + "integrity": "sha512-VzJeBg/v41jfxUYPkH2WYrKjWc4YiMLzDX0f4Zf6WkJ4v3IlDDSkX6DfmWekjTKBho6wiMkSNy2hJ1dHfGZ9jA==", + "dependencies": { + "@sentry/browser": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "hoist-non-react-statics": "^3.3.2", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "react": "15.x || 16.x || 17.x || 18.x" + } + }, + "node_modules/@sentry/react/node_modules/@sentry/browser": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.19.7.tgz", + "integrity": "sha512-oDbklp4O3MtAM4mtuwyZLrgO1qDVYIujzNJQzXmi9YzymJCuzMLSRDvhY83NNDCRxf0pds4DShgYeZdbSyKraA==", + "dependencies": { + "@sentry/core": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/react/node_modules/@sentry/core": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", + "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/react/node_modules/@sentry/hub": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", + "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", + "dependencies": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/react/node_modules/@sentry/minimal": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", + "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/react/node_modules/@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/react/node_modules/@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "dependencies": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/react/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/tracing": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.19.7.tgz", + "integrity": "sha512-ol4TupNnv9Zd+bZei7B6Ygnr9N3Gp1PUrNI761QSlHtPC25xXC5ssSD3GMhBgyQrcvpuRcCFHVNNM97tN5cZiA==", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing/node_modules/@sentry/hub": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", + "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", + "dependencies": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing/node_modules/@sentry/minimal": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", + "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing/node_modules/@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing/node_modules/@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "dependencies": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/types": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.2.tgz", + "integrity": "sha512-XO5qmVBdTs+7PdCz7fAwn1afWxSnRE2KLBFg5/vOdKosPSSHsSHUURSkxiEZc2QsR+JpRB4AeQ26AkIRX38qTg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.2.tgz", + "integrity": "sha512-2DQQ2OJaxjtyxGq5FmMlqb6hptsqMs2xoBiVRMkTS/rvyTrk1oQdKZ8ePwjtgX3nJ728ni3IXIyXV+vfGp4EBw==", + "dependencies": { + "@sentry/types": "6.19.2", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/webpack-plugin": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-1.18.8.tgz", + "integrity": "sha512-PtKr0NL62b5L3kPFGjwSNbIUwwcW5E5G6bQxAYZGpkgL1MFPnS4ND0SAsySuX0byQJRFFium5A19LpzyvQZSlQ==", + "dependencies": { + "@sentry/cli": "^1.73.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -2766,7 +3242,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, "dependencies": { "debug": "4" }, @@ -2989,6 +3464,20 @@ "node": ">= 10.0.0" } }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "node_modules/arg": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", @@ -3957,6 +4446,14 @@ "mimic-response": "^1.0.0" } }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -4151,6 +4648,11 @@ "node": ">=8" } }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "node_modules/convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -4159,6 +4661,14 @@ "safe-buffer": "~5.1.1" } }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/core-js-compat": { "version": "3.21.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", @@ -4346,6 +4856,14 @@ "node": ">=4.0.0" } }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/defer-to-connect": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", @@ -4383,6 +4901,11 @@ "node": ">=0.4.0" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "node_modules/detect-indent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", @@ -5593,6 +6116,64 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -5890,6 +6471,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, "node_modules/has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -6144,7 +6730,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, "dependencies": { "agent-base": "6", "debug": "4" @@ -6212,6 +6797,11 @@ ], "optional": true }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, "node_modules/immutable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", @@ -6641,8 +7231,7 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "node_modules/isbinaryfile": { "version": "4.0.8", @@ -7493,6 +8082,14 @@ "node": ">=6" } }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -7530,6 +8127,14 @@ "node": ">=8.9.0" } }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dependencies": { + "lie": "3.1.1" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -7588,6 +8193,11 @@ "node": ">=0.10.0" } }, + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=" + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -7749,7 +8359,6 @@ "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, "dependencies": { "minimist": "^1.2.6" }, @@ -8080,7 +8689,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -8097,7 +8705,6 @@ "version": "12.1.0", "resolved": "https://registry.npmjs.org/next/-/next-12.1.0.tgz", "integrity": "sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q==", - "dev": true, "dependencies": { "@next/env": "12.1.0", "caniuse-lite": "^1.0.30001283", @@ -8428,6 +9035,25 @@ "node": ">=8" } }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -8914,7 +9540,6 @@ "version": "8.4.5", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", - "dev": true, "dependencies": { "nanoid": "^3.1.30", "picocolors": "^1.0.0", @@ -8947,14 +9572,12 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, "engines": { "node": ">=0.4.0" } @@ -9001,6 +9624,11 @@ "dev": true, "optional": true }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -9264,7 +9892,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9279,7 +9906,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -10088,7 +10714,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.0.tgz", "integrity": "sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==", - "dev": true, "engines": { "node": ">= 12.0.0" }, @@ -11070,7 +11695,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==", - "dev": true, "dependencies": { "object-assign": "^4.1.1" }, @@ -11109,8 +11733,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "node_modules/validate-npm-package-name": { "version": "3.0.0", @@ -11378,6 +12001,14 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -13009,84 +13640,72 @@ "@next/env": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/env/-/env-12.1.0.tgz", - "integrity": "sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ==", - "dev": true + "integrity": "sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ==" }, "@next/swc-android-arm64": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.0.tgz", "integrity": "sha512-/280MLdZe0W03stA69iL+v6I+J1ascrQ6FrXBlXGCsGzrfMaGr7fskMa0T5AhQIVQD4nA/46QQWxG//DYuFBcA==", - "dev": true, "optional": true }, "@next/swc-darwin-arm64": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.0.tgz", "integrity": "sha512-R8vcXE2/iONJ1Unf5Ptqjk6LRW3bggH+8drNkkzH4FLEQkHtELhvcmJwkXcuipyQCsIakldAXhRbZmm3YN1vXg==", - "dev": true, "optional": true }, "@next/swc-darwin-x64": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.0.tgz", "integrity": "sha512-ieAz0/J0PhmbZBB8+EA/JGdhRHBogF8BWaeqR7hwveb6SYEIJaDNQy0I+ZN8gF8hLj63bEDxJAs/cEhdnTq+ug==", - "dev": true, "optional": true }, "@next/swc-linux-arm-gnueabihf": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.0.tgz", "integrity": "sha512-njUd9hpl6o6A5d08dC0cKAgXKCzm5fFtgGe6i0eko8IAdtAPbtHxtpre3VeSxdZvuGFh+hb0REySQP9T1ttkog==", - "dev": true, "optional": true }, "@next/swc-linux-arm64-gnu": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.0.tgz", "integrity": "sha512-OqangJLkRxVxMhDtcb7Qn1xjzFA3s50EIxY7mljbSCLybU+sByPaWAHY4px97ieOlr2y4S0xdPKkQ3BCAwyo6Q==", - "dev": true, "optional": true }, "@next/swc-linux-arm64-musl": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.0.tgz", "integrity": "sha512-hB8cLSt4GdmOpcwRe2UzI5UWn6HHO/vLkr5OTuNvCJ5xGDwpPXelVkYW/0+C3g5axbDW2Tym4S+MQCkkH9QfWA==", - "dev": true, "optional": true }, "@next/swc-linux-x64-gnu": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.0.tgz", "integrity": "sha512-OKO4R/digvrVuweSw/uBM4nSdyzsBV5EwkUeeG4KVpkIZEe64ZwRpnFB65bC6hGwxIBnTv5NMSnJ+0K/WmG78A==", - "dev": true, "optional": true }, "@next/swc-linux-x64-musl": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.0.tgz", "integrity": "sha512-JohhgAHZvOD3rQY7tlp7NlmvtvYHBYgY0x5ZCecUT6eCCcl9lv6iV3nfu82ErkxNk1H893fqH0FUpznZ/H3pSw==", - "dev": true, "optional": true }, "@next/swc-win32-arm64-msvc": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.0.tgz", "integrity": "sha512-T/3gIE6QEfKIJ4dmJk75v9hhNiYZhQYAoYm4iVo1TgcsuaKLFa+zMPh4056AHiG6n9tn2UQ1CFE8EoybEsqsSw==", - "dev": true, "optional": true }, "@next/swc-win32-ia32-msvc": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.0.tgz", "integrity": "sha512-iwnKgHJdqhIW19H9PRPM9j55V6RdcOo6rX+5imx832BCWzkDbyomWnlzBfr6ByUYfhohb8QuH4hSGEikpPqI0Q==", - "dev": true, "optional": true }, "@next/swc-win32-x64-msvc": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.0.tgz", "integrity": "sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg==", - "dev": true, "optional": true }, "@nodelib/fs.scandir": { @@ -13117,6 +13736,402 @@ "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.0.tgz", "integrity": "sha512-z+CDw5X4UgIEpZL8KM+ThVx1i8V60HBg0l/oFewTNbQQeRDJHdVxHyJykv+SF1H+Rc8EkMS81VTWo95jVYgO/g==" }, + "@sentry/browser": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.19.2.tgz", + "integrity": "sha512-5VC44p5Vu2eJhVT39nLAJFgha5MjHDYCyZRR1ieeZt3a++otojPGBBAKNAtrEMGV+A2Z9AoneD6ZnDVlyb3GKg==", + "requires": { + "@sentry/core": "6.19.2", + "@sentry/types": "6.19.2", + "@sentry/utils": "6.19.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/cli": { + "version": "1.74.4", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-1.74.4.tgz", + "integrity": "sha512-BMfzYiedbModsNBJlKeBOLVYUtwSi99LJ8gxxE4Bp5N8hyjNIN0WVrozAVZ27mqzAuy6151Za3dpmOLO86YlGw==", + "requires": { + "https-proxy-agent": "^5.0.0", + "mkdirp": "^0.5.5", + "node-fetch": "^2.6.7", + "npmlog": "^4.1.2", + "progress": "^2.0.3", + "proxy-from-env": "^1.1.0", + "which": "^2.0.2" + } + }, + "@sentry/core": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.2.tgz", + "integrity": "sha512-yu1R3ewBT4udmB4v7sc4biQZ0Z0rfB9+TzB5ZKoCftbe6kqXjFMMaFRYNUF9HicVldKAsBktgkWw3+yfqGkw/A==", + "requires": { + "@sentry/hub": "6.19.2", + "@sentry/minimal": "6.19.2", + "@sentry/types": "6.19.2", + "@sentry/utils": "6.19.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/electron": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-3.0.7.tgz", + "integrity": "sha512-Rahi1jgvjHnx1jGkkPPvDCxSCAME7xc2eBcFCLb4R/WDuNblR7tgJUuAtzv9JpxUgRHy1oLNct0wcvIu1mcXoA==", + "requires": { + "@sentry/browser": "6.19.2", + "@sentry/core": "6.19.2", + "@sentry/node": "6.19.2", + "@sentry/types": "6.19.2", + "@sentry/utils": "6.19.2", + "deepmerge": "^4.2.2", + "tslib": "^2.3.1" + } + }, + "@sentry/hub": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.2.tgz", + "integrity": "sha512-W7KCgNBgdBIMagOxy5J5KQPe+maYxSqfE8a5ncQ3R8BcZDQEKnkW/1FplNbfRLZqA/tL/ndKb7pTPqVtzsbARw==", + "requires": { + "@sentry/types": "6.19.2", + "@sentry/utils": "6.19.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/integrations": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-6.19.7.tgz", + "integrity": "sha512-yNeeFyuygJaV7Mdc5qWuDa13xVj5mVdECaaw2Xs4pfeHaXmRfRzZY17N8ypWFegKWxKBHynyQRMD10W5pBwJvA==", + "requires": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "localforage": "^1.8.1", + "tslib": "^1.9.3" + }, + "dependencies": { + "@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==" + }, + "@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "requires": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/minimal": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.2.tgz", + "integrity": "sha512-ClwxKm77iDHET7kpzv1JvzDx1er5DoNu+EUjst0kQzARIrXvu9xuZuE2/CnBWycQWqw8o3HoGoKz65uIhsUCzQ==", + "requires": { + "@sentry/hub": "6.19.2", + "@sentry/types": "6.19.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/nextjs": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-6.19.7.tgz", + "integrity": "sha512-029gpqhR6gHF7zfE9oxFOf3Zm68CShDu8/6azC8mwfIfJtyLC9dqztJJi48j0Uxs+sR1TEkN5Dw3wZbfWtFd8g==", + "requires": { + "@sentry/core": "6.19.7", + "@sentry/hub": "6.19.7", + "@sentry/integrations": "6.19.7", + "@sentry/node": "6.19.7", + "@sentry/react": "6.19.7", + "@sentry/tracing": "6.19.7", + "@sentry/utils": "6.19.7", + "@sentry/webpack-plugin": "1.18.8", + "tslib": "^1.9.3" + }, + "dependencies": { + "@sentry/core": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", + "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", + "requires": { + "@sentry/hub": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + } + }, + "@sentry/hub": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", + "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", + "requires": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + } + }, + "@sentry/minimal": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", + "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", + "requires": { + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + } + }, + "@sentry/node": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", + "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", + "requires": { + "@sentry/core": "6.19.7", + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==" + }, + "@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "requires": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/node": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.2.tgz", + "integrity": "sha512-Z1qREpTpYHxaeWjc1zMUk8ZTAp1WbxMiI2TVNc+a14DVT19Z2xNXb06MiRfeLgNc9lVGdmzR62dPmMBjVgPJYg==", + "requires": { + "@sentry/core": "6.19.2", + "@sentry/hub": "6.19.2", + "@sentry/types": "6.19.2", + "@sentry/utils": "6.19.2", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/react": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-6.19.7.tgz", + "integrity": "sha512-VzJeBg/v41jfxUYPkH2WYrKjWc4YiMLzDX0f4Zf6WkJ4v3IlDDSkX6DfmWekjTKBho6wiMkSNy2hJ1dHfGZ9jA==", + "requires": { + "@sentry/browser": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "hoist-non-react-statics": "^3.3.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "@sentry/browser": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.19.7.tgz", + "integrity": "sha512-oDbklp4O3MtAM4mtuwyZLrgO1qDVYIujzNJQzXmi9YzymJCuzMLSRDvhY83NNDCRxf0pds4DShgYeZdbSyKraA==", + "requires": { + "@sentry/core": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + } + }, + "@sentry/core": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", + "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", + "requires": { + "@sentry/hub": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + } + }, + "@sentry/hub": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", + "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", + "requires": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + } + }, + "@sentry/minimal": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", + "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", + "requires": { + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==" + }, + "@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "requires": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/tracing": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.19.7.tgz", + "integrity": "sha512-ol4TupNnv9Zd+bZei7B6Ygnr9N3Gp1PUrNI761QSlHtPC25xXC5ssSD3GMhBgyQrcvpuRcCFHVNNM97tN5cZiA==", + "requires": { + "@sentry/hub": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "dependencies": { + "@sentry/hub": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", + "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", + "requires": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + } + }, + "@sentry/minimal": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", + "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", + "requires": { + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==" + }, + "@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "requires": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/types": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.2.tgz", + "integrity": "sha512-XO5qmVBdTs+7PdCz7fAwn1afWxSnRE2KLBFg5/vOdKosPSSHsSHUURSkxiEZc2QsR+JpRB4AeQ26AkIRX38qTg==" + }, + "@sentry/utils": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.2.tgz", + "integrity": "sha512-2DQQ2OJaxjtyxGq5FmMlqb6hptsqMs2xoBiVRMkTS/rvyTrk1oQdKZ8ePwjtgX3nJ728ni3IXIyXV+vfGp4EBw==", + "requires": { + "@sentry/types": "6.19.2", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/webpack-plugin": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-1.18.8.tgz", + "integrity": "sha512-PtKr0NL62b5L3kPFGjwSNbIUwwcW5E5G6bQxAYZGpkgL1MFPnS4ND0SAsySuX0byQJRFFium5A19LpzyvQZSlQ==", + "requires": { + "@sentry/cli": "^1.73.0" + } + }, "@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -13561,7 +14576,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, "requires": { "debug": "4" } @@ -13731,6 +14745,20 @@ } } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "arg": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", @@ -14428,6 +15456,11 @@ "mimic-response": "^1.0.0" } }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -14582,6 +15615,11 @@ } } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -14590,6 +15628,11 @@ "safe-buffer": "~5.1.1" } }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + }, "core-js-compat": { "version": "3.21.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", @@ -14728,6 +15771,11 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, "defer-to-connect": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", @@ -14753,6 +15801,11 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "detect-indent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", @@ -15695,6 +16748,54 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -15916,6 +17017,11 @@ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, "has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -16100,7 +17206,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, "requires": { "agent-base": "6", "debug": "4" @@ -16139,6 +17244,11 @@ "dev": true, "optional": true }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, "immutable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", @@ -16423,8 +17533,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isbinaryfile": { "version": "4.0.8", @@ -17077,6 +18186,14 @@ } } }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "requires": { + "immediate": "~3.0.5" + } + }, "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -17102,6 +18219,14 @@ "json5": "^2.1.2" } }, + "localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "requires": { + "lie": "3.1.1" + } + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -17145,6 +18270,11 @@ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, + "lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=" + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -17263,7 +18393,6 @@ "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, "requires": { "minimist": "^1.2.6" } @@ -17510,8 +18639,7 @@ "nanoid": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==" }, "neo-async": { "version": "2.6.2", @@ -17522,7 +18650,6 @@ "version": "12.1.0", "resolved": "https://registry.npmjs.org/next/-/next-12.1.0.tgz", "integrity": "sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q==", - "dev": true, "requires": { "@next/env": "12.1.0", "@next/swc-android-arm64": "12.1.0", @@ -17760,6 +18887,22 @@ "path-key": "^3.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -18102,7 +19245,6 @@ "version": "8.4.5", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", - "dev": true, "requires": { "nanoid": "^3.1.30", "picocolors": "^1.0.0", @@ -18122,14 +19264,12 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "prop-ini": { "version": "0.0.2", @@ -18171,6 +19311,11 @@ "dev": true, "optional": true }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -18372,7 +19517,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -18387,7 +19531,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -19002,7 +20145,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.0.tgz", "integrity": "sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==", - "dev": true, "requires": {} }, "stylis": { @@ -19706,7 +20848,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==", - "dev": true, "requires": { "object-assign": "^4.1.1" } @@ -19736,8 +20877,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "validate-npm-package-name": { "version": "3.0.0", @@ -19929,6 +21069,14 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", diff --git a/package.json b/package.json index 6e4d9d4..6ac09a2 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,8 @@ }, "dependencies": { "@heroicons/react": "^1.0.3", + "@sentry/electron": "^3.0.7", + "@sentry/nextjs": "^6.19.7", "@stitches/react": "^1.2.6", "@types/react-beautiful-dnd": "^13.1.2", "@types/webpack-merge": "^5.0.0", diff --git a/renderer/components/dashboard/actions/ActionDropdown/index.tsx b/renderer/components/dashboard/actions/ActionDropdown/index.tsx index 5d80ba2..fd04ba5 100644 --- a/renderer/components/dashboard/actions/ActionDropdown/index.tsx +++ b/renderer/components/dashboard/actions/ActionDropdown/index.tsx @@ -28,9 +28,17 @@ export default function ActionDropdown({ create }: Props) { if (!selected) return; const newAction = { name: selected.name }; - selected.fields.forEach((field) => { - newAction[field] = ''; - }); + // Clear all values to insert a fresh action + if (selected.fields) { + selected.fields.forEach((field) => { + newAction[field] = ''; + }); + } else if (selected.form) { + const keys = Object.keys(selected.form); + keys.forEach((key) => { + newAction[key] = ''; + }); + } if (create) { addAction(newAction); diff --git a/renderer/next.config.js b/renderer/next.config.js index 3411e02..310a7ee 100644 --- a/renderer/next.config.js +++ b/renderer/next.config.js @@ -1,21 +1,24 @@ const path = require('path'); const removeImports = require('next-remove-imports')(); +const { withSentryConfig } = require('@sentry/nextjs'); -module.exports = removeImports({ - webpack: (config, { isServer }) => { - if (!isServer) { - config.target = 'electron-renderer'; - } +module.exports = withSentryConfig( + removeImports({ + webpack: (config, { isServer }) => { + if (!isServer) { + config.target = 'electron-renderer'; + } - if (config?.node) { - config.node.__dirname = true; - } + if (config?.node) { + config.node.__dirname = true; + } - return config; - }, - sassOptions: { - includePaths: [path.join(__dirname, 'styles')], - }, - reactStrictMode: false, - experimental: { esmExternals: true }, -}); + return config; + }, + sassOptions: { + includePaths: [path.join(__dirname, 'styles')], + }, + reactStrictMode: false, + experimental: { esmExternals: true }, + }) +); diff --git a/renderer/sentry.client.config.js b/renderer/sentry.client.config.js new file mode 100644 index 0000000..cf888e1 --- /dev/null +++ b/renderer/sentry.client.config.js @@ -0,0 +1,17 @@ +// This file configures the initialization of Sentry on the browser. +// The config you add here will be used whenever a page is visited. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from '@sentry/nextjs'; + +const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN; + +Sentry.init({ + dsn: SENTRY_DSN || 'https://191e8458118045e2b4f6da2691e91d25@o1252972.ingest.sentry.io/6419308', + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 1.0, + // ... + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps +}); diff --git a/renderer/sentry.server.config.js b/renderer/sentry.server.config.js new file mode 100644 index 0000000..d8aaf57 --- /dev/null +++ b/renderer/sentry.server.config.js @@ -0,0 +1,19 @@ +// This file configures the initialization of Sentry on the server. +// The config you add here will be used whenever the server handles a request. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from '@sentry/nextjs'; + +const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN; + +Sentry.init({ + dsn: + SENTRY_DSN || + 'https://191e8458118045e2b4f6da2691e91d25@o1252972.ingest.sentry.io/6419308', + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 1.0, + // ... + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps +}); diff --git a/resources/actions/action_list_comment.js b/resources/actions/action_list_comment.js deleted file mode 100644 index 4d38f80..0000000 --- a/resources/actions/action_list_comment.js +++ /dev/null @@ -1,28 +0,0 @@ -module.exports = { - name: "Comment", - section: "Other Stuff", - - subtitle(data) { - return `${data.comment}`; - }, - - fields: ["comment", "color"], - - html() { - return ` -
- Text Color:
-
- Comment To Show: (Supports some HTML Tags)
-
-
`; - }, - - init() {}, - - action(cache) { - this.callNextAction(cache); - }, - - mod() {}, -}; diff --git a/resources/actions/add_embed_field.js b/resources/actions/add_embed_field.js index cd49bc8..373193d 100644 --- a/resources/actions/add_embed_field.js +++ b/resources/actions/add_embed_field.js @@ -7,13 +7,18 @@ module.exports = { type: 'storage', title: 'Storage', placeholder: 'Enter a name for the variable.', + inline: true, }, varName: { type: 'variable', variableType: 'embed', title: 'Variable Name', - description: 'Name of the variable to store the embed in.', placeholder: 'Variable Name', + inline: true, + if: { + field: 'storage', + greaterThan: 0, + }, }, fieldName: { type: 'text', @@ -38,42 +43,6 @@ module.exports = { fields: ['storage', 'varName', 'fieldName', 'message', 'inline'], - html(_isEvent, data) { - return ` -

Use [Title](Link) to mask links here.


-
-
- Source Embed Object:
- -
-
- Variable Name:
-
-
-



-
-
- Field Name:
- -
-
- Display Inline:
- -
-



-
- Field Description:
- -
`; - }, - - init() {}, - action(cache) { const data = cache.actions[cache.index]; const storage = parseInt(data.storage, 10); @@ -88,6 +57,4 @@ module.exports = { } this.callNextAction(cache); }, - - mod() {}, }; diff --git a/resources/actions/attach_image_to_embed.js b/resources/actions/attach_image_to_embed.js deleted file mode 100644 index b08008d..0000000 --- a/resources/actions/attach_image_to_embed.js +++ /dev/null @@ -1,80 +0,0 @@ -module.exports = { - name: "Attach Image To Embed", - section: "Embed Message", - - subtitle(data) { - const array = ["Temp Variable", "Server Variable", "Global Variable"]; - return `Attach (${array[data.imagestorage - 1]} ${ - data.imagevarName - }) to Embed (${array[data.embedstorage - 1]} ${data.embedvarName}) (${ - data.filename || "image.png" - })`; - }, - - fields: [ - "embedstorage", - "embedvarName", - "imagestorage", - "imagevarName", - "filename", - ], - - html(_isEvent, data) { - return ` -
-
- Source Embed Object:
- -
-
- Variable Name:
-
-
-



-

-
- Image Object to Attach:
- -
-
- Variable Name:
-
-



-
- Image File Name:
-
-
-
`; - }, - - init() {}, - - action(cache) { - const data = cache.actions[cache.index]; - - const embedstorage = parseInt(data.embedstorage, 10); - const embedvarName = this.evalMessage(data.embedvarName, cache); - const embed = this.getVariable(embedstorage, embedvarName, cache); - - const imagestorage = parseInt(data.imagestorage, 10); - const imagevarName = this.evalMessage(data.imagevarName, cache); - const image = this.getVariable(imagestorage, imagevarName, cache); - - const filename = data.filename || "image.png"; - - const DBM = this.getDBM(); - const { Images } = DBM; - - Images.createBuffer(image).then((buffer) => { - const attachment = new DBM.DiscordJS.MessageAttachment(buffer, filename); - embed.attachFiles([attachment]); - this.callNextAction(cache); - }); - }, - - mod() {}, -}; diff --git a/resources/actions/create_embed_message.js b/resources/actions/create_embed_message.js index 75eed0b..490cc1f 100644 --- a/resources/actions/create_embed_message.js +++ b/resources/actions/create_embed_message.js @@ -1,335 +1,153 @@ module.exports = { - name: "Create Embed Message", - section: "Embed Message", - - subtitle(data) { - return `${data.title}`; - }, + name: 'Create Embed Message', + section: 'Embed Message', variableStorage(data, varType) { if (parseInt(data.storage, 10) !== varType) return; - return [data.varName, "Embed Object"]; + return [data.varName, 'Embed Object']; }, - fields: [ - "title", - "author", - "color", - "url", - "authorIcon", - "authorUrl", - "imageUrl", - "thumbUrl", - "timestamp", - "debug", - "timestamp1", - "timestamp2", - "text", - "year", - "month", - "day", - "hour", - "minute", - "second", - "note1", - "note2", - "storage", - "varName", - ], - - html(_isEvent, data) { - return ` -
-
-

- -

-
-
- Title:
-
- Author Name:
-
- Author URL:
-
- Author Icon URL:
-
-
-
- Color:
-
- URL:
-
- Image URL:
-
- Thumbnail URL:
-
-
- - -
- Debug:
- -
- -
-
- Year:
- -
-
- Month:
- -
-
- Day:
- -
-
- Hour:
- -
-
- Minute:
- -
-
- Second:
- -
-
-
-
-
Store In:
- -
-
-
Variable Name:
-
-
-
- - -
`; + form: { + storage: { + type: 'storage', + title: 'Storage', + inline: true, + required: true, + }, + varName: { + type: 'text', + title: 'Variable Name', + placeholder: 'The name of the variable to store the embed in.', + required: true, + inline: true, + if: { + field: 'storage', + greaterThan: 0, + }, + }, + title: { + type: 'text', + title: 'Title', + placeholder: 'Empty for no title', + }, + author: { + type: 'text', + title: 'Author Name', + placeholder: 'Empty for no author', + }, + color: { + type: 'color', + title: 'Embed Color', + }, + url: { + type: 'text', + title: 'URL', + placeholder: 'Blank for none', + }, + authorUrl: { + type: 'text', + title: 'Author Link URL', + placeholder: 'Blank for none', + }, + authorIcon: { + type: 'text', + title: 'Author Icon URL', + placeholder: 'Blank for none', + }, + imageUrl: { + type: 'text', + title: 'Image URL', + placeholder: 'Blank for none', + }, + thumbUrl: { + type: 'text', + title: 'Thumbnail URL', + placeholder: 'Blank for none', + }, + timestamp: { + type: 'select', + title: 'Timestamp', + options: [ + { label: 'No Timestamp', value: 0 }, + { label: 'Current Timestamp', value: 1 }, + { label: 'String Timestamp', value: 2 }, + { label: 'Custom Timestamp', value: 3 }, + ], + }, + year: { + type: 'text', + title: 'Year', + inline: true, + if: { + field: 'timestamp', + equals: 3, + }, + }, + month: { + type: 'text', + title: 'Month', + inline: true, + if: { + field: 'timestamp', + equals: 3, + }, + }, + day: { + type: 'text', + title: 'Day', + inline: true, + if: { + field: 'timestamp', + equals: 3, + }, + }, + hour: { + type: 'text', + title: 'Hour', + inline: true, + if: { + field: 'timestamp', + equals: 3, + }, + }, + minute: { + type: 'text', + title: 'Minute', + inline: true, + if: { + field: 'timestamp', + equals: 3, + }, + }, + second: { + type: 'text', + title: 'Second', + inline: true, + if: { + field: 'timestamp', + equals: 3, + }, + }, + text: { + type: 'text', + title: 'String Timestamp', + inline: false, + if: { + field: 'timestamp', + equals: 2, + }, + }, + note1: { + type: 'note', + value: + 'This setting works with time formats like "March 3, 2020" or "3600000" (1 hour in ms).', + }, + note2: { + type: 'note', + value: `Correct input: +Year: [2019] Month: [1] Day: [1] Hour: [ ] Minute: [ ] Second: [ ] +Incorrect input: +Year: [2019] Month: [1] Day: [1] Hour: [ ] Minute: [1] Second: [ ]`, + }, }, - - init() { - const { glob, document } = this; - const timestampDiv = document.getElementById("timestampDiv"); - const timestamp = document.getElementById("timestamp"); - const timestampDivDebug = document.getElementById("timestampDivDebug"); - const debug = document.getElementById("debug"); - const timestamp1 = document.getElementById("timestamp1"); - const timestamp2 = document.getElementById("timestamp2"); - const note = document.getElementById("note1"); - const note2 = document.getElementById("note2"); - const authorUrl = document.getElementById("authorUrl"); - - glob.onChange1 = function onChange1() { - if (debug.value === "false") { - authorUrl.placeholder = "Leave blank for none!"; - switch (timestamp.value) { - case "false": - case "true": - timestamp1.style.display = "none"; - timestamp2.style.display = "none"; - note.style.display = "none"; - note2.style.display = "none"; - break; - case "string": - timestamp1.style.display = "table"; - timestamp2.style.display = "none"; - note.style.display = null; - note2.style.display = "none"; - break; - case "custom": - timestamp1.style.display = "none"; - timestamp2.style.display = "table"; - note.style.display = "none"; - note2.style.display = null; - break; - } - } - }; - - glob.onChange2 = function onChange2() { - switch (debug.value) { - case "false": - timestampDiv.style.display = null; - timestampDivDebug.style.display = "none"; - break; - case "true": - timestampDiv.style.display = "none"; - timestampDivDebug.style.display = null; - timestamp1.style.display = "none"; - timestamp2.style.display = "none"; - note.style.display = "none"; - note2.style.display = "none"; - authorUrl.placeholder = "Unavailable!"; - break; - } - glob.onChange1(); - }; - - document.getElementById("timestamp"); - document.getElementById("debug"); - - glob.onChange1(document.getElementById("timestamp")); - glob.onChange2(document.getElementById("debug")); - }, - - action(cache) { - const data = cache.actions[cache.index]; - const { DiscordJS } = this.getDBM(); - const embed = new DiscordJS.MessageEmbed(); - const text = this.evalMessage(data.text, cache); - const year = parseInt(this.evalMessage(data.year, cache), 10); - const month = parseInt(this.evalMessage(data.month, cache) - 1, 10); - const day = parseInt(this.evalMessage(data.day, cache), 10); - const hour = parseInt(this.evalMessage(data.hour, cache), 10); - const minute = parseInt(this.evalMessage(data.minute, cache), 10); - const second = parseInt(this.evalMessage(data.second, cache), 10); - const timestamp = this.evalMessage(data.timestamp, cache); - const timestampDebug = this.evalMessage(data.timestampDebug, cache); - const debug = this.evalMessage(data.debug); - const storage = parseInt(data.storage, 10); - const varName = this.evalMessage(data.varName, cache); - - if (!varName) return this.callNextAction(cache); - - if (debug !== "true") { - // Title - if (data.title) { - embed.setTitle(this.evalMessage(data.title, cache)); - } - // URL - if (data.url) { - embed.setURL(this.evalMessage(data.url, cache)); - } - // Author Name - if (data.author) { - embed.setAuthor( - this.evalMessage(data.author, cache), - this.evalMessage(data.authorIcon, cache), - this.evalMessage(data.authorUrl, cache) - ); - } - // Color - if (data.color) { - embed.setColor(this.evalMessage(data.color, cache)); - } - // Image URL - if (data.imageUrl) { - embed.setImage(this.evalMessage(data.imageUrl, cache)); - } - // Thumbnail URL - if (data.thumbUrl) { - embed.setThumbnail(this.evalMessage(data.thumbUrl, cache)); - } - // Timestamp - switch (timestamp) { - case "false": - break; - case "true": - embed.setTimestamp(); - break; - case "string": - if (text.length > 0) { - embed.setTimestamp(new Date(`${text}`)); - } else { - embed.setTimestamp(); - console.log( - "Invalid UTC timestamp! Changed from [String Timestamp] to [Current Timestamp]." - ); - } - break; - case "custom": - embed.setTimestamp( - new Date( - year || null, - month || null, - day || null, - hour || null, - minute || null, - second || null - ) - ); - break; - default: - embed.setTimestamp(); - break; - } - - this.storeValue(embed, storage, varName, cache); - this.callNextAction(cache); - } else { - if (data.title) { - embed.setTitle(this.evalMessage(data.title, cache)); - } - if (data.url) { - embed.setURL(this.evalMessage(data.url, cache)); - } - if (data.author && data.authorIcon) { - embed.setAuthor( - this.evalMessage(data.author, cache), - this.evalMessage(data.authorIcon, cache) - ); - } - if (data.color) { - embed.setColor(this.evalMessage(data.color, cache)); - } - if (data.imageUrl) { - embed.setImage(this.evalMessage(data.imageUrl, cache)); - } - if (data.thumbUrl) { - embed.setThumbnail(this.evalMessage(data.thumbUrl, cache)); - } - if (timestampDebug === "true") { - embed.setTimestamp(); - } - this.storeValue(embed, storage, varName, cache); - this.callNextAction(cache); - } - }, - - mod() {}, }; diff --git a/resources/actions/create_image.js b/resources/actions/create_image.js index fbff050..ca35825 100644 --- a/resources/actions/create_image.js +++ b/resources/actions/create_image.js @@ -1,129 +1,27 @@ module.exports = { - //--------------------------------------------------------------------- - // Action Name - // - // This is the name of the action displayed in the editor. - //--------------------------------------------------------------------- - - name: "Create Image", - - //--------------------------------------------------------------------- - // Action Section - // - // This is the section the action will fall into. - //--------------------------------------------------------------------- - - section: "Image Editing", - - //--------------------------------------------------------------------- - // Action Subtitle - // - // This function generates the subtitle displayed next to the name. - //--------------------------------------------------------------------- - - subtitle: function (data) { - return `${data.url}`; + name: 'Create Image', + section: 'Image Editing', + form: { + url: { + type: 'text', + title: 'Local / Web URL', + placeholder: 'resources/', + }, + storage: { + type: 'storage', + title: 'Store In', + variant: 1, + inline: true, + }, + varName: { + type: 'text', + title: 'Variable Name', + placeholder: 'image', + inline: true, + if: { + field: 'storage', + greaterThan: 0, + }, + }, }, - - //--------------------------------------------------------------------- - // Action Storage Function - // - // Stores the relevant variable info for the editor. - //--------------------------------------------------------------------- - - variableStorage: function (data, varType) { - const type = parseInt(data.storage); - if (type !== varType) return; - return [data.varName, "Image"]; - }, - - //--------------------------------------------------------------------- - // Action Fields - // - // These are the fields for the action. These fields are customized - // by creating elements with corresponding IDs in the HTML. These - // are also the names of the fields stored in the action's JSON data. - //--------------------------------------------------------------------- - - fields: ["url", "storage", "varName"], - - //--------------------------------------------------------------------- - // Command HTML - // - // This function returns a string containing the HTML used for - // editting actions. - // - // The "isEvent" parameter will be true if this action is being used - // for an event. Due to their nature, events lack certain information, - // so edit the HTML to reflect this. - // - // The "data" parameter stores constants for select elements to use. - // Each is an array: index 0 for commands, index 1 for events. - // The names are: sendTargets, members, roles, channels, - // messages, servers, variables - //--------------------------------------------------------------------- - - html: function (isEvent, data) { - return ` -
- Local/Web URL:
-
-
-
-
- Store In:
- -
-
- Variable Name:
-
-
-
`; - }, - - //--------------------------------------------------------------------- - // Action Editor Init Code - // - // When the HTML is first applied to the action editor, this code - // is also run. This helps add modifications or setup reactionary - // functions for the DOM elements. - //--------------------------------------------------------------------- - - init: function () {}, - - //--------------------------------------------------------------------- - // Action Bot Function - // - // This is the function for the action within the Bot's Action class. - // Keep in mind event calls won't have access to the "msg" parameter, - // so be sure to provide checks for variable existance. - //--------------------------------------------------------------------- - - action: function (cache) { - const data = cache.actions[cache.index]; - const Images = this.getDBM().Images; - Images.getImage(this.evalMessage(data.url, cache)) - .then( - function (image) { - const varName = this.evalMessage(data.varName, cache); - const storage = parseInt(data.storage); - this.storeValue(image, storage, varName, cache); - this.callNextAction(cache); - }.bind(this) - ) - .catch(this.displayError.bind(this, data, cache)); - }, - - //--------------------------------------------------------------------- - // Action Bot Mod - // - // Upon initialization of the bot, this code is run. Using the bot's - // DBM namespace, one can add/modify existing functions if necessary. - // In order to reduce conflictions between mods, be sure to alias - // functions you wish to overwrite. - //--------------------------------------------------------------------- - - mod: function () {}, }; // End of module diff --git a/resources/actions/create_image_attachment.js b/resources/actions/create_image_attachment.js new file mode 100644 index 0000000..65a0520 --- /dev/null +++ b/resources/actions/create_image_attachment.js @@ -0,0 +1,34 @@ +module.exports = { + name: 'Create Image Attachment', + section: 'Embed Message', + + fields: [], + form: { + url: { + type: 'text', + title: 'Image URL', + }, + filename: { + type: 'text', + title: 'Image Name', + placeholder: 'image.png', + description: 'The name with which the image will be saved in the server.', + }, + storage: { + type: 'storage', + variant: 1, + title: 'Storage', + inline: true, + }, + varName: { + type: 'text', + title: 'Variable Name', + placeholder: 'Embed Variable Name', + inline: true, + if: { + field: 'embedstorage', + greaterThan: 0, + }, + }, + }, +}; diff --git a/resources/actions/send_embed_message.js b/resources/actions/send_embed_message.js index 69fb35a..e997563 100644 --- a/resources/actions/send_embed_message.js +++ b/resources/actions/send_embed_message.js @@ -1,128 +1,68 @@ module.exports = { - name: "Send Embed Message", - section: "Embed Message", + name: 'Send Embed Message', + section: 'Embed Message', - subtitle(data) { - const channels = [ - "Same Channel", - "Command Author", - "Mentioned User", - "Mentioned Channel", - "Default Channel (Top Channel)", - "Temp Variable", - "Server Variable", - "Global Variable", - ]; - return `${channels[parseInt(data.channel, 10)]}: ${data.varName}`; + form: { + storage: { + type: 'storage', + title: 'Source Embed Object', + inline: true, + }, + varName: { + type: 'variable', + title: 'Variable Name', + inline: 'true', + }, + channel: { + type: 'channel', + title: 'Send To', + inline: true, + }, + varName2: { + type: 'variable', + title: 'Variable Name', + placeholder: 'Variable Name', + inline: true, + if: { + field: 'channel', + greaterThan: 1, + }, + }, + storage3: { + type: 'storage', + title: 'Store Message', + inline: true, + }, + varName3: { + type: 'variable', + title: 'Variable Name', + placeholder: 'Variable Name', + inline: true, + if: { + field: 'storage3', + greaterThan: 0, + }, + }, + messageContent: { + type: 'textarea', + title: 'Message Content', + }, + attachmentStorage: { + type: 'storage', + title: 'Attachment Storage', + inline: true, + }, + attachmentVarName: { + type: 'text', + title: 'Variable Name', + placeholder: 'Storage Variable Name', + inline: true, + }, }, variableStorage(data, varType) { if (parseInt(data.storage3, 10) !== varType) return; - return [data.varName3, "Message"]; - }, - - fields: [ - "storage", - "varName", - "channel", - "varName2", - "storage3", - "varName3", - "iffalse", - "iffalseVal", - "messageContent", - ], - - html(isEvent, data) { - return ` -

-
-
- Source Embed Object:
- -
-
- Variable Name:
- -



-
- Message Content:
- -



-
- Send To:
- -
-



-
- Store Message Object In:
- -
-
- Storage Variable Name:
- -



-
-
- If Message Delivery Fails:
- -
- -
-
`; - }, - - init() { - const { glob, document } = this; - glob.onChangeFalse = function onChangeFalse(event) { - switch (parseInt(event.value, 10)) { - case 0: - case 1: - document.getElementById("iffalseContainer").style.display = "none"; - break; - case 2: - document.getElementById("iffalseName").innerHTML = "Action Number"; - document.getElementById("iffalseContainer").style.display = null; - break; - case 3: - document.getElementById("iffalseName").innerHTML = - "Number of Actions to Skip"; - document.getElementById("iffalseContainer").style.display = null; - break; - case 4: - document.getElementById("iffalseName").innerHTML = "Anchor ID"; - document.getElementById("iffalseContainer").style.display = null; - break; - default: - break; - } - }; - glob.sendTargetChange( - document.getElementById("channel"), - "varNameContainer2" - ); - glob.variableChange( - document.getElementById("storage3"), - "varNameContainer3" - ); - glob.onChangeFalse(document.getElementById("iffalse")); + return [data.varName3, 'Message']; }, action(cache) { diff --git a/resources/actions/set_embed_description.js b/resources/actions/set_embed_description.js index 2780caa..d16503a 100644 --- a/resources/actions/set_embed_description.js +++ b/resources/actions/set_embed_description.js @@ -1,117 +1,25 @@ module.exports = { - //--------------------------------------------------------------------- - // Action Name - // - // This is the name of the action displayed in the editor. - //--------------------------------------------------------------------- - - name: "Set Embed Description", - - //--------------------------------------------------------------------- - // Action Section - // - // This is the section the action will fall into. - //--------------------------------------------------------------------- - - section: "Embed Message", - - //--------------------------------------------------------------------- - // Action Subtitle - // - // This function generates the subtitle displayed next to the name. - //--------------------------------------------------------------------- - - subtitle: function (data) { - return `${data.message}`; - }, - - //--------------------------------------------------------------------- - // Action Fields - // - // These are the fields for the action. These fields are customized - // by creating elements with corresponding IDs in the HTML. These - // are also the names of the fields stored in the action's JSON data. - //--------------------------------------------------------------------- - - fields: ["storage", "varName", "message"], - - //--------------------------------------------------------------------- - // Command HTML - // - // This function returns a string containing the HTML used for - // editting actions. - // - // The "isEvent" parameter will be true if this action is being used - // for an event. Due to their nature, events lack certain information, - // so edit the HTML to reflect this. - // - // The "data" parameter stores constants for select elements to use. - // Each is an array: index 0 for commands, index 1 for events. - // The names are: sendTargets, members, roles, channels, - // messages, servers, variables - //--------------------------------------------------------------------- - - html: function (isEvent, data) { - return ` -
-
- Source Embed Object:
- -
-
- Variable Name:
-
-
-



-
- Description:
- -
`; + name: 'Set Embed Description', + section: 'Embed Message', + + form: { + storage: { + type: 'storage', + title: 'Storage', + inline: true, + }, + varName: { + type: 'text', + title: 'Variable Name', + inline: true, + if: { + field: 'storage', + greaterThan: 0, + }, + }, + message: { + type: 'text', + title: 'Description', + }, }, - - //--------------------------------------------------------------------- - // Action Editor Init Code - // - // When the HTML is first applied to the action editor, this code - // is also run. This helps add modifications or setup reactionary - // functions for the DOM elements. - //--------------------------------------------------------------------- - - init: function () { - const { glob, document } = this; - - glob.refreshVariableList(document.getElementById("storage")); - }, - - //--------------------------------------------------------------------- - // Action Bot Function - // - // This is the function for the action within the Bot's Action class. - // Keep in mind event calls won't have access to the "msg" parameter, - // so be sure to provide checks for variable existance. - //--------------------------------------------------------------------- - - action: function (cache) { - const data = cache.actions[cache.index]; - const storage = parseInt(data.storage); - const varName = this.evalMessage(data.varName, cache); - const embed = this.getVariable(storage, varName, cache); - if (embed && embed.setDescription) { - embed.setDescription(this.evalMessage(data.message, cache)); - } - this.callNextAction(cache); - }, - - //--------------------------------------------------------------------- - // Action Bot Mod - // - // Upon initialization of the bot, this code is run. Using the bot's - // DBM namespace, one can add/modify existing functions if necessary. - // In order to reduce conflictions between mods, be sure to alias - // functions you wish to overwrite. - //--------------------------------------------------------------------- - - mod: function () {}, -}; // End of module +}; diff --git a/resources/actions/set_embed_footer.js b/resources/actions/set_embed_footer.js index f3d4d2a..111c48f 100644 --- a/resources/actions/set_embed_footer.js +++ b/resources/actions/set_embed_footer.js @@ -1,124 +1,31 @@ module.exports = { - //--------------------------------------------------------------------- - // Action Name - // - // This is the name of the action displayed in the editor. - //--------------------------------------------------------------------- - - name: "Set Embed Footer", - - //--------------------------------------------------------------------- - // Action Section - // - // This is the section the action will fall into. - //--------------------------------------------------------------------- - - section: "Embed Message", - - //--------------------------------------------------------------------- - // Action Subtitle - // - // This function generates the subtitle displayed next to the name. - //--------------------------------------------------------------------- - - subtitle: function (data) { - return `${data.message}`; - }, - - //--------------------------------------------------------------------- - // Action Fields - // - // These are the fields for the action. These fields are customized - // by creating elements with corresponding IDs in the HTML. These - // are also the names of the fields stored in the action's JSON data. - //--------------------------------------------------------------------- - - fields: ["storage", "varName", "message", "footerIcon"], - - //--------------------------------------------------------------------- - // Command HTML - // - // This function returns a string containing the HTML used for - // editting actions. - // - // The "isEvent" parameter will be true if this action is being used - // for an event. Due to their nature, events lack certain information, - // so edit the HTML to reflect this. - // - // The "data" parameter stores constants for select elements to use. - // Each is an array: index 0 for commands, index 1 for events. - // The names are: sendTargets, members, roles, channels, - // messages, servers, variables - //--------------------------------------------------------------------- - - html: function (isEvent, data) { - return ` -
-
- Source Embed Object:
- -
-
- Variable Name:
-
-
-



-
- Footer:
- -

-
- Footer Icon URL:
-
-
`; + name: 'Set Embed Footer', + section: 'Embed Message', + + form: { + storage: { + type: 'storage', + title: 'Storage', + inline: true, + }, + varName: { + type: 'text', + title: 'Variable Name', + inline: true, + if: { + field: 'storage', + greaterThan: 0, + }, + }, + message: { + type: 'text', + title: 'Footer Text', + placeholder: 'Footer Text', + }, + footerIcon: { + type: 'text', + title: 'Footer Icon URL', + placeholder: 'https://.../icon.png', + }, }, - - //--------------------------------------------------------------------- - // Action Editor Init Code - // - // When the HTML is first applied to the action editor, this code - // is also run. This helps add modifications or setup reactionary - // functions for the DOM elements. - //--------------------------------------------------------------------- - - init: function () { - const { glob, document } = this; - - glob.refreshVariableList(document.getElementById("storage")); - }, - - //--------------------------------------------------------------------- - // Action Bot Function - // - // This is the function for the action within the Bot's Action class. - // Keep in mind event calls won't have access to the "msg" parameter, - // so be sure to provide checks for variable existance. - //--------------------------------------------------------------------- - - action: function (cache) { - const data = cache.actions[cache.index]; - const storage = parseInt(data.storage); - const varName = this.evalMessage(data.varName, cache); - const embed = this.getVariable(storage, varName, cache); - if (embed && embed.setFooter) { - embed.setFooter( - this.evalMessage(data.message, cache), - this.evalMessage(data.footerIcon, cache) - ); - } - this.callNextAction(cache); - }, - - //--------------------------------------------------------------------- - // Action Bot Mod - // - // Upon initialization of the bot, this code is run. Using the bot's - // DBM namespace, one can add/modify existing functions if necessary. - // In order to reduce conflictions between mods, be sure to alias - // functions you wish to overwrite. - //--------------------------------------------------------------------- - - mod: function () {}, -}; // End of module +}; diff --git a/resources/actions/set_embed_footer_MOD.js b/resources/actions/set_embed_footer_MOD.js deleted file mode 100644 index d495dac..0000000 --- a/resources/actions/set_embed_footer_MOD.js +++ /dev/null @@ -1,57 +0,0 @@ -module.exports = { - name: "Set Embed Footer", - section: "Embed Message", - - subtitle(data) { - return `${data.message}`; - }, - - fields: ["storage", "varName", "message", "footerIcon"], - - html(_isEvent, data) { - return ` -
-
- Source Embed Object:
- -
-
- Variable Name:
-
-
-



-
- Footer:
- -

-
- Footer Icon URL:
-
-
`; - }, - - init() { - const { glob, document } = this; - - glob.refreshVariableList(document.getElementById("storage")); - }, - - action(cache) { - const data = cache.actions[cache.index]; - const storage = parseInt(data.storage, 10); - const varName = this.evalMessage(data.varName, cache); - const embed = this.getVariable(storage, varName, cache); - - if (embed && embed.setFooter) { - embed.setFooter( - this.evalMessage(data.message, cache), - this.evalMessage(data.footerIcon, cache) - ); - } - this.callNextAction(cache); - }, - - mod() {}, -}; diff --git a/resources/bot/actions/add_embed_field.js b/resources/bot/actions/add_embed_field.js index db1085c..67c3544 100644 --- a/resources/bot/actions/add_embed_field.js +++ b/resources/bot/actions/add_embed_field.js @@ -1,8 +1,8 @@ export default { - name: "Add Embed Field", - section: "Embed Message", + name: 'Add Embed Field', + section: 'Embed Message', - fields: ["storage", "varName", "fieldName", "message", "inline"], + fields: ['storage', 'varName', 'fieldName', 'message', 'inline'], /** @this {import("../utils/Actions.js").default} */ action(cache) { @@ -12,10 +12,15 @@ export default { const embed = this.getVariable(storage, varName, cache); const name = this.evalMessage(data.fieldName, cache); const message = this.evalMessage(data.message, cache); + console.log(varName, storage); - const inline = Boolean(data.inline === "0"); + const inline = Boolean(data.inline === '0'); if (embed && embed.addField) { - embed.addField(name || "\u200B", message || "\u200B", inline); + embed.addField(name || '\u200B', message || '\u200B', inline); + } else if (!embed) { + throw new Error('No embed object found.'); + } else if (!embed.addField) { + throw new Error('No addField method found on variable.'); } this.callNextAction(cache); }, diff --git a/resources/bot/actions/attach_image_to_embed_MOD.js b/resources/bot/actions/attach_image_to_embed_MOD.js deleted file mode 100644 index 3a01ca2..0000000 --- a/resources/bot/actions/attach_image_to_embed_MOD.js +++ /dev/null @@ -1,37 +0,0 @@ -export default { - name: "Attach Image To Embed", - section: "Embed Message", - fields: [ - "embedstorage", - "embedvarName", - "imagestorage", - "imagevarName", - "filename", - ], - - /** @this {import("../utils/Actions.js").default} */ - action(cache) { - const data = cache.actions[cache.index]; - - const embedstorage = parseInt(data.embedstorage, 10); - const embedvarName = this.evalMessage(data.embedvarName, cache); - const embed = this.getVariable(embedstorage, embedvarName, cache); - - const imagestorage = parseInt(data.imagestorage, 10); - const imagevarName = this.evalMessage(data.imagevarName, cache); - const image = this.getVariable(imagestorage, imagevarName, cache); - - const filename = data.filename || "image.png"; - - const DBM = this.getDBM(); - const { Images } = DBM; - - Images.createBuffer(image).then((buffer) => { - const attachment = new DBM.DiscordJS.MessageAttachment(buffer, filename); - embed.attachFiles([attachment]); - this.callNextAction(cache); - }); - }, - - mod() {}, -}; diff --git a/resources/bot/actions/create_embed_message.js b/resources/bot/actions/create_embed_message.js index 4fe912f..2480a99 100644 --- a/resources/bot/actions/create_embed_message.js +++ b/resources/bot/actions/create_embed_message.js @@ -1,268 +1,100 @@ export default { - name: "Create Embed Message", - section: "Embed Message", + name: 'Create Embed Message', + section: 'Embed Message', variableStorage(data, varType) { if (parseInt(data.storage, 10) !== varType) return; - return [data.varName, "Embed Object"]; - }, - - fields: [ - "title", - "author", - "color", - "url", - "authorIcon", - "authorUrl", - "imageUrl", - "thumbUrl", - "timestamp", - "debug", - "timestamp1", - "timestamp2", - "text", - "year", - "month", - "day", - "hour", - "minute", - "second", - "note1", - "note2", - "storage", - "varName", - ], - - html(_isEvent, data) { - return ` -
-
-

- This action has been modified by DBM Mods. -

-
-
- Title:
-
- Author Name:
-
- Author URL:
-
- Author Icon URL:
-
-
-
- Color:
-
- URL:
-
- Image URL:
-
- Thumbnail URL:
-
-
- - -
- Debug:
- -
- -
-
- Year:
- -
-
- Month:
- -
-
- Day:
- -
-
- Hour:
- -
-
- Minute:
- -
-
- Second:
- -
-
-
-
-
Store In:
- -
-
-
Variable Name:
-
-
-
- - -
`; + return [data.varName, 'Embed Object']; }, /** @this {import("../utils/Actions.js").default} */ action(cache) { + const evalMessage = (s) => this.evalMessage(s, cache); const data = cache.actions[cache.index]; const { DiscordJS } = this.getDBM(); const embed = new DiscordJS.MessageEmbed(); - const text = this.evalMessage(data.text, cache); - const year = parseInt(this.evalMessage(data.year, cache), 10); - const month = parseInt(this.evalMessage(data.month, cache) - 1, 10); - const day = parseInt(this.evalMessage(data.day, cache), 10); - const hour = parseInt(this.evalMessage(data.hour, cache), 10); - const minute = parseInt(this.evalMessage(data.minute, cache), 10); - const second = parseInt(this.evalMessage(data.second, cache), 10); - const timestamp = this.evalMessage(data.timestamp, cache); - const timestampDebug = this.evalMessage(data.timestampDebug, cache); - const debug = this.evalMessage(data.debug); - const storage = parseInt(data.storage, 10); - const varName = this.evalMessage(data.varName, cache); + const text = evalMessage(data.text); + const year = +evalMessage(data.year); + const month = +evalMessage(data.month); + const day = +evalMessage(data.day); + const hour = +evalMessage(data.hour); + const minute = +evalMessage(data.minute); + const second = +evalMessage(data.second); + const timestamp = +evalMessage(data.timestamp); + const storage = +data.storage; + const varName = evalMessage(data.varName); - if (!varName) return this.callNextAction(cache); + if (!varName) { + this.displayError(data, cache, 'No variable name provided!'); + return callNextAction(cache); + } - if (debug !== "true") { - if (data.title) { - embed.setTitle(this.evalMessage(data.title, cache)); - } + if (data.title) { + embed.setTitle(evalMessage(data.title)); + } - if (data.url) { - embed.setURL(this.evalMessage(data.url, cache)); - } + if (data.url) { + embed.setURL(evalMessage(data.url)); + } - if (data.author) { - embed.setAuthor( - this.evalMessage(data.author, cache), - this.evalMessage(data.authorIcon, cache), - this.evalMessage(data.authorUrl, cache) - ); - } + if (data.author) { + embed.setAuthor({ + name: evalMessage(data.author), + iconURL: evalMessage(data.authorIcon), + url: evalMessage(data.authorUrl), + }); + } - if (data.color) { - embed.setColor(this.evalMessage(data.color, cache)); - } + if (data.color) { + embed.setColor(evalMessage(data.color)); + } - if (data.imageUrl) { - embed.setImage(this.evalMessage(data.imageUrl, cache)); - } + if (data.imageUrl) { + embed.setImage(evalMessage(data.imageUrl)); + } - if (data.thumbUrl) { - embed.setThumbnail(this.evalMessage(data.thumbUrl, cache)); - } + if (data.thumbUrl) { + embed.setThumbnail(evalMessage(data.thumbUrl)); + } - switch (timestamp) { - case "false": - break; - case "true": + switch (timestamp) { + // No Timestamp + case 0: + break; + // Current Timestamp + case 1: + embed.setTimestamp(); + break; + // String Timestamp + case 2: + if (text.length > 0) { + embed.setTimestamp(new Date(`${text}`)); + } else { embed.setTimestamp(); - break; - case "string": - if (text.length > 0) { - embed.setTimestamp(new Date(`${text}`)); - } else { - embed.setTimestamp(); - console.log( - "Invalid UTC timestamp! Changed from [String Timestamp] to [Current Timestamp]." - ); - } - break; - case "custom": - embed.setTimestamp( - new Date( - year || null, - month || null, - day || null, - hour || null, - minute || null, - second || null - ) + console.log( + 'Invalid UTC timestamp! Changed from [String Timestamp] to [Current Timestamp].' ); - break; - default: - embed.setTimestamp(); - break; - } - - this.storeValue(embed, storage, varName, cache); - console.log(this.callNextAction); - this.callNextAction(cache); - console.log("Test"); - } else { - if (data.title) { - embed.setTitle(this.evalMessage(data.title, cache)); - } - if (data.url) { - embed.setURL(this.evalMessage(data.url, cache)); - } - if (data.author && data.authorIcon) { - embed.setAuthor( - this.evalMessage(data.author, cache), - this.evalMessage(data.authorIcon, cache) + } + break; + // Custom Timestamp + case 3: + embed.setTimestamp( + new Date( + year || null, + month || null, + day || null, + hour || null, + minute || null, + second || null + ) ); - } - if (data.color) { - embed.setColor(this.evalMessage(data.color, cache)); - } - if (data.imageUrl) { - embed.setImage(this.evalMessage(data.imageUrl, cache)); - } - if (data.thumbUrl) { - embed.setThumbnail(this.evalMessage(data.thumbUrl, cache)); - } - if (timestampDebug === "true") { + break; + default: embed.setTimestamp(); - } - this.storeValue(embed, storage, varName, cache); - this.callNextAction(cache); + break; } - }, - mod() {}, + this.storeValue(embed, storage, varName, cache); + this.callNextAction(cache); + }, }; diff --git a/resources/bot/actions/create_image.js b/resources/bot/actions/create_image.js index 14d8465..5f06ff8 100644 --- a/resources/bot/actions/create_image.js +++ b/resources/bot/actions/create_image.js @@ -1,7 +1,7 @@ export default { - name: "Create Image", + name: 'Create Image', - section: "Image Editing", + section: 'Image Editing', subtitle: function (data) { return `${data.url}`; @@ -10,47 +10,25 @@ export default { variableStorage: function (data, varType) { const type = parseInt(data.storage); if (type !== varType) return; - return [data.varName, "Image"]; + return [data.varName, 'Image']; }, - fields: ["url", "storage", "varName"], - - html: function (isEvent, data) { - return ` -
- Local/Web URL:
-
-
-
-
- Store In:
- -
-
- Variable Name:
-
-
-
`; - }, + fields: ['url', 'storage', 'varName'], init: function () {}, /** @this {import("../utils/Actions.js").default} */ - action(cache) { + async action(cache) { const data = cache.actions[cache.index]; const Images = this.getDBM().Images; - Images.getImage(this.evalMessage(data.url, cache)) - .then( - function (image) { - const varName = this.evalMessage(data.varName, cache); - const storage = parseInt(data.storage); - this.storeValue(image, storage, varName, cache); - this.callNextAction(cache); - }.bind(this) - ) - .catch(this.displayError.bind(this, data, cache)); + + const url = this.evalMessage(data.url, cache); + const image = await Images.getImage(url); + const varName = this.evalMessage(data.varName, cache); + const storage = +data.storage; + + this.storeValue(image, storage, varName, cache); + this.callNextAction(cache); }, mod: function () {}, diff --git a/resources/bot/actions/create_image_attachment.js b/resources/bot/actions/create_image_attachment.js new file mode 100644 index 0000000..aa17ef8 --- /dev/null +++ b/resources/bot/actions/create_image_attachment.js @@ -0,0 +1,26 @@ +export default { + name: 'Create Image Attachment', + section: 'Embed Message', + + /** @this {import("../utils/Actions.js").default} */ + async action(cache) { + const data = cache.actions[cache.index]; + + const url = this.evalMessage(data.url, data.url, cache); + + const filename = data.filename || 'image.png'; + + const DBM = this.getDBM(); + const { Images } = DBM; + + const image = await Images.getImage(url); + const buffer = await Images.createBuffer(image); + const attachment = new DBM.DiscordJS.MessageAttachment(buffer, filename); + + const storage = +data.storage; + const varName = this.evalMessage(data.varName, cache); + + this.storeValue(attachment, storage, varName, cache); + this.callNextAction(cache); + }, +}; diff --git a/resources/bot/actions/send_embed_message.js b/resources/bot/actions/send_embed_message.js index 459e027..1f76a0d 100644 --- a/resources/bot/actions/send_embed_message.js +++ b/resources/bot/actions/send_embed_message.js @@ -1,128 +1,10 @@ export default { - name: "Send Embed Message", - section: "Embed Message", - - subtitle(data) { - const channels = [ - "Same Channel", - "Command Author", - "Mentioned User", - "Mentioned Channel", - "Default Channel (Top Channel)", - "Temp Variable", - "Server Variable", - "Global Variable", - ]; - return `${channels[parseInt(data.channel, 10)]}: ${data.varName}`; - }, + name: 'Send Embed Message', + section: 'Embed Message', variableStorage(data, varType) { if (parseInt(data.storage3, 10) !== varType) return; - return [data.varName3, "Message"]; - }, - - fields: [ - "storage", - "varName", - "channel", - "varName2", - "storage3", - "varName3", - "iffalse", - "iffalseVal", - "messageContent", - ], - - html(isEvent, data) { - return ` -

This action has been modified by DBM Mods.


-
-
- Source Embed Object:
- -
-
- Variable Name:
- -



-
- Message Content:
- -



-
- Send To:
- -
-



-
- Store Message Object In:
- -
-
- Storage Variable Name:
- -



-
-
- If Message Delivery Fails:
- -
- -
-
`; - }, - - init() { - const { glob, document } = this; - glob.onChangeFalse = function onChangeFalse(event) { - switch (parseInt(event.value, 10)) { - case 0: - case 1: - document.getElementById("iffalseContainer").style.display = "none"; - break; - case 2: - document.getElementById("iffalseName").innerHTML = "Action Number"; - document.getElementById("iffalseContainer").style.display = null; - break; - case 3: - document.getElementById("iffalseName").innerHTML = - "Number of Actions to Skip"; - document.getElementById("iffalseContainer").style.display = null; - break; - case 4: - document.getElementById("iffalseName").innerHTML = "Anchor ID"; - document.getElementById("iffalseContainer").style.display = null; - break; - default: - break; - } - }; - glob.sendTargetChange( - document.getElementById("channel"), - "varNameContainer2" - ); - glob.variableChange( - document.getElementById("storage3"), - "varNameContainer3" - ); - glob.onChangeFalse(document.getElementById("iffalse")); + return [data.varName3, 'Message']; }, /** @this {import("../utils/Actions.js").default} */ @@ -132,11 +14,22 @@ export default { const varName = this.evalMessage(data.varName, cache); const embed = this.getVariable(storage, varName, cache); if (!embed) { - this.displayError(data, cache, "Embed Object Not Found"); + this.displayError(data, cache, 'Embed Object Not Found'); return this.callNextAction(cache); } + const attachmentStorage = +data.attachmentStorage; + const attachmentVarName = data.attachmentVarName; + const attachment = this.getVariable( + attachmentStorage, + attachmentVarName, + cache + ); + if (attachmentStorage && !attachment) { + this.displayError(data, cache, 'Attachment Not Found'); + } + const messageContent = this.evalMessage(data.messageContent, cache); const channel = parseInt(data.channel, 10); const varName2 = this.evalMessage(data.varName2, cache); @@ -146,7 +39,11 @@ export default { if (target?.send) { target - .send({ content: messageContent || undefined, embeds: [embed] }) + .send({ + content: messageContent || undefined, + embeds: [embed], + files: [attachment], + }) .then((msg) => { if (msg && varName3) this.storeValue(msg, storage3, varName3, cache); this.callNextAction(cache); @@ -156,7 +53,7 @@ export default { this.executeResults(false, data, cache); }); } else { - this.displayError(data, cache, "Send Target Not Found"); + this.displayError(data, cache, 'Send Target Not Found'); this.callNextAction(cache); } }, diff --git a/resources/bot/actions/set_embed_description.js b/resources/bot/actions/set_embed_description.js index bf12476..e6c5803 100644 --- a/resources/bot/actions/set_embed_description.js +++ b/resources/bot/actions/set_embed_description.js @@ -1,38 +1,11 @@ export default { - name: "Set Embed Description", - - section: "Embed Message", - - subtitle: function (data) { - return `${data.message}`; - }, - - fields: ["storage", "varName", "message"], - - html: function (isEvent, data) { - return ` -
-
- Source Embed Object:
- -
-
- Variable Name:
-
-
-



-
- Description:
- -
`; - }, + name: 'Set Embed Description', + section: 'Embed Message', init: function () { const { glob, document } = this; - glob.refreshVariableList(document.getElementById("storage")); + glob.refreshVariableList(document.getElementById('storage')); }, /** @this {import("../utils/Actions.js").default} */ @@ -43,6 +16,14 @@ export default { const embed = this.getVariable(storage, varName, cache); if (embed && embed.setDescription) { embed.setDescription(this.evalMessage(data.message, cache)); + } else if (!embed) { + this.displayError(data, cache, `Embed not found.`); + } else if (!embed.setDescription) { + this.displayError( + data, + cache, + `Variable does not have "setDescription" option.` + ); } this.callNextAction(cache); }, diff --git a/resources/bot/actions/set_embed_footer.js b/resources/bot/actions/set_embed_footer.js index 1b73516..1169089 100644 --- a/resources/bot/actions/set_embed_footer.js +++ b/resources/bot/actions/set_embed_footer.js @@ -1,24 +1,28 @@ export default { - name: "Set Embed Footer", - section: "Embed Message", - fields: ["storage", "varName", "message", "footerIcon"], + name: 'Set Embed Footer', + section: 'Embed Message', /** @this {import("../utils/Actions.js").default} */ action(cache) { const data = cache.actions[cache.index]; - const storage = parseInt(data.storage); + const storage = parseInt(data.storage, 10); const varName = this.evalMessage(data.varName, cache); const embed = this.getVariable(storage, varName, cache); - if (embed?.setFooter) { + + if (embed && embed.setFooter) { embed.setFooter( this.evalMessage(data.message, cache), this.evalMessage(data.footerIcon, cache) ); - } else { - this.displayError(data, cache, "Embed not found"); + } else if (!embed) { + this.displayError(data, cache, 'No embed found.'); + } else if (!embed.setFooter) { + this.displayError( + data, + cache, + 'No "setFooter" method found on variable.' + ); } this.callNextAction(cache); }, - - mod: function () {}, }; diff --git a/resources/bot/actions/set_embed_footer_MOD.js b/resources/bot/actions/set_embed_footer_MOD.js deleted file mode 100644 index d7eeff9..0000000 --- a/resources/bot/actions/set_embed_footer_MOD.js +++ /dev/null @@ -1,54 +0,0 @@ -export default { - name: "Set Embed Footer", - section: "Embed Message", - - fields: ["storage", "varName", "message", "footerIcon"], - - html(_isEvent, data) { - return ` -
-
- Source Embed Object:
- -
-
- Variable Name:
-
-
-



-
- Footer:
- -

-
- Footer Icon URL:
-
-
`; - }, - - init() { - const { glob, document } = this; - - glob.refreshVariableList(document.getElementById("storage")); - }, - - /** @this {import("../utils/Actions.js").default} */ - action(cache) { - const data = cache.actions[cache.index]; - const storage = parseInt(data.storage, 10); - const varName = this.evalMessage(data.varName, cache); - const embed = this.getVariable(storage, varName, cache); - - if (embed && embed.setFooter) { - embed.setFooter( - this.evalMessage(data.message, cache), - this.evalMessage(data.footerIcon, cache) - ); - } - this.callNextAction(cache); - }, - - mod() {}, -}; diff --git a/resources/bot/utils/Actions.js b/resources/bot/utils/Actions.js index 7322a4f..dcc34b5 100644 --- a/resources/bot/utils/Actions.js +++ b/resources/bot/utils/Actions.js @@ -114,6 +114,7 @@ export default class Actions extends Logger { */ evalMessage(content, cache) { if (!content) return ''; + if (typeof content !== 'string') return content; // If it doesn't have a variable in it, just return the content if (!content.match(/\$\{.*\}/im)) return content; // Escape backticks for eval diff --git a/resources/bot/utils/Bot.js b/resources/bot/utils/Bot.js index 68cd4aa..89cb638 100644 --- a/resources/bot/utils/Bot.js +++ b/resources/bot/utils/Bot.js @@ -16,6 +16,9 @@ export default class Bot { /** @type {import("./Audio").default} */ this.Audio = null; + + /** @type {import("discord.js")} */ + this.DiscordJS = DiscordJS; } init() { diff --git a/sentry.properties b/sentry.properties new file mode 100644 index 0000000..01f9c2c --- /dev/null +++ b/sentry.properties @@ -0,0 +1,4 @@ +defaults.url=https://sentry.io/ +defaults.org=discord-bot-creator +defaults.project=electron-renderer +cli.executable=..\\..\\..\\AppData\\Local\\npm-cache\\_npx\\a8388072043b4cbc\\node_modules\\@sentry\\cli\\bin\\sentry-cli