Browse Source

[web] [desktop] Remove Sentry (#1057)

Sentry has a measurable impact on page load, a metric that I'm keen to
improve. Apparently by default it loses us 8-9 page speed points, though
that can be reduced to 3-4
(https://github.com/getsentry/sentry-javascript/issues/9179).

All of this is doable, but there are bigger tasks to deal with. This is
not to say that Sentry won't be useful again at some point, when we have
time to deal with it better. But right now, we discussed that it's just
better to remove Sentry instead of piling on to the sunk cost.
Manav Rathi 1 year ago
parent
commit
22b744aa96
61 changed files with 56 additions and 1009 deletions
  1. 0 3
      desktop/.github/workflows/build.yml
  2. 0 2
      desktop/package.json
  3. 0 3
      desktop/sentry.properties
  4. 1 6
      desktop/src/api/common.ts
  5. 0 2
      desktop/src/api/electronStore.ts
  6. 0 20
      desktop/src/config/index.ts
  7. 0 17
      desktop/src/main.ts
  8. 0 4
      desktop/src/preload.ts
  9. 2 1
      desktop/src/services/fs.ts
  10. 0 8
      desktop/src/services/logging.ts
  11. 2 52
      desktop/src/services/sentry.ts
  12. 0 8
      desktop/src/services/userPreference.ts
  13. 0 3
      desktop/src/stores/userPreferences.store.ts
  14. 0 1
      desktop/src/types/index.ts
  15. 1 10
      desktop/src/utils/ipcComms.ts
  16. 2 16
      desktop/src/utils/logging.ts
  17. 3 1
      desktop/src/utils/main.ts
  18. 8 236
      desktop/yarn.lock
  19. 0 3
      web/apps/accounts/sentry.client.config.ts
  20. 0 0
      web/apps/accounts/sentry.edge.config.ts
  21. 0 6
      web/apps/accounts/sentry.properties
  22. 0 0
      web/apps/accounts/sentry.server.config.ts
  23. 1 3
      web/apps/auth/next.config.js
  24. 0 3
      web/apps/auth/sentry.client.config.ts
  25. 0 0
      web/apps/auth/sentry.edge.config.ts
  26. 0 6
      web/apps/auth/sentry.properties
  27. 0 0
      web/apps/auth/sentry.server.config.ts
  28. 0 17
      web/apps/auth/src/pages/_error.tsx
  29. 1 3
      web/apps/cast/next.config.js
  30. 0 3
      web/apps/cast/sentry.client.config.ts
  31. 0 0
      web/apps/cast/sentry.edge.config.ts
  32. 0 6
      web/apps/cast/sentry.properties
  33. 0 0
      web/apps/cast/sentry.server.config.ts
  34. 0 1
      web/apps/cast/src/services/InMemoryStore.ts
  35. 0 1
      web/apps/photos/.env.development
  36. 1 3
      web/apps/photos/next.config.js
  37. 0 1
      web/apps/photos/public/locales/en-US/translation.json
  38. 0 3
      web/apps/photos/sentry.client.config.ts
  39. 0 0
      web/apps/photos/sentry.edge.config.ts
  40. 0 6
      web/apps/photos/sentry.properties
  41. 0 0
      web/apps/photos/sentry.server.config.ts
  42. 1 36
      web/apps/photos/src/components/Sidebar/Preferences/index.tsx
  43. 0 17
      web/apps/photos/src/pages/_error.tsx
  44. 4 5
      web/apps/photos/src/services/upload/thumbnailService.ts
  45. 0 1
      web/package.json
  46. 2 31
      web/packages/next/next.config.base.js
  47. 1 9
      web/packages/shared/electron/service.ts
  48. 0 2
      web/packages/shared/electron/types.ts
  49. 0 5
      web/packages/shared/electron/worker/client.ts
  50. 0 9
      web/packages/shared/error/index.ts
  51. 1 3
      web/packages/shared/logging/web.ts
  52. 0 17
      web/packages/shared/next/pages/_error.tsx
  53. 0 1
      web/packages/shared/package.json
  54. 0 38
      web/packages/shared/sentry/config/sentry.config.base.ts
  55. 10 42
      web/packages/shared/sentry/index.ts
  56. 0 46
      web/packages/shared/sentry/utils.ts
  57. 0 1
      web/packages/shared/storage/InMemoryStore.ts
  58. 0 12
      web/packages/shared/storage/localStorage/helpers.ts
  59. 0 2
      web/packages/shared/storage/localStorage/index.ts
  60. 3 1
      web/packages/utils/logging.ts
  61. 12 273
      web/yarn.lock

+ 0 - 3
desktop/.github/workflows/build.yml

@@ -52,7 +52,4 @@ jobs:
                   # macOS notarization API key
                   # macOS notarization API key
                   API_KEY_ID: ${{ secrets.api_key_id }}
                   API_KEY_ID: ${{ secrets.api_key_id }}
                   API_KEY_ISSUER_ID: ${{ secrets.api_key_issuer_id}}
                   API_KEY_ISSUER_ID: ${{ secrets.api_key_issuer_id}}
-                  # setry crash reporting token
-                  SENTRY_AUTH_TOKEN: ${{secrets.sentry_auth_token}}
-                  NEXT_PUBLIC_DISABLE_SENTRY: ${{secrets.next_public_disable_sentry}}
                   USE_HARD_LINKS: false
                   USE_HARD_LINKS: false

+ 0 - 2
desktop/package.json

@@ -18,7 +18,6 @@
         "watch": "tsc -w"
         "watch": "tsc -w"
     },
     },
     "dependencies": {
     "dependencies": {
-        "@sentry/electron": "^2.5.1",
         "any-shell-escape": "^0.1.1",
         "any-shell-escape": "^0.1.1",
         "auto-launch": "^5.0.5",
         "auto-launch": "^5.0.5",
         "chokidar": "^3.5.3",
         "chokidar": "^3.5.3",
@@ -38,7 +37,6 @@
         "promise-fs": "^2.1.1"
         "promise-fs": "^2.1.1"
     },
     },
     "devDependencies": {
     "devDependencies": {
-        "@sentry/cli": "^1.68.0",
         "@types/auto-launch": "^5.0.2",
         "@types/auto-launch": "^5.0.2",
         "@types/ffmpeg-static": "^3.0.1",
         "@types/ffmpeg-static": "^3.0.1",
         "@types/get-folder-size": "^2.0.0",
         "@types/get-folder-size": "^2.0.0",

+ 0 - 3
desktop/sentry.properties

@@ -1,3 +0,0 @@
-defaults.url=https://sentry.ente.io/
-defaults.org=ente
-defaults.project=desktop-photos

+ 1 - 6
desktop/src/api/common.ts

@@ -36,9 +36,4 @@ export const getPlatform = async (): Promise<"mac" | "windows" | "linux"> => {
     }
     }
 };
 };
 
 
-export {
-    getSentryUserID,
-    logToDisk,
-    openLogDirectory,
-    updateOptOutOfCrashReports,
-} from "../services/logging";
+export { logToDisk, openLogDirectory } from "../services/logging";

+ 0 - 2
desktop/src/api/electronStore.ts

@@ -2,7 +2,6 @@ import { logError } from "../services/logging";
 import { keysStore } from "../stores/keys.store";
 import { keysStore } from "../stores/keys.store";
 import { safeStorageStore } from "../stores/safeStorage.store";
 import { safeStorageStore } from "../stores/safeStorage.store";
 import { uploadStatusStore } from "../stores/upload.store";
 import { uploadStatusStore } from "../stores/upload.store";
-import { userPreferencesStore } from "../stores/userPreferences.store";
 import { watchStore } from "../stores/watch.store";
 import { watchStore } from "../stores/watch.store";
 
 
 export const clearElectronStore = () => {
 export const clearElectronStore = () => {
@@ -11,7 +10,6 @@ export const clearElectronStore = () => {
         keysStore.clear();
         keysStore.clear();
         safeStorageStore.clear();
         safeStorageStore.clear();
         watchStore.clear();
         watchStore.clear();
-        userPreferencesStore.delete("optOutOfCrashReports");
     } catch (e) {
     } catch (e) {
         logError(e, "error while clearing electron store");
         logError(e, "error while clearing electron store");
         throw e;
         throw e;

+ 0 - 20
desktop/src/config/index.ts

@@ -1,20 +0,0 @@
-const PROD_HOST_URL: string = "ente://app";
-const RENDERER_OUTPUT_DIR: string = "./out";
-const LOG_FILENAME = "ente.log";
-const MAX_LOG_SIZE = 50 * 1024 * 1024; // 50MB
-
-const FILE_STREAM_CHUNK_SIZE: number = 4 * 1024 * 1024;
-
-const SENTRY_DSN = "https://759d8498487a81ac33a0c2efa2a42c4f@sentry.ente.io/9";
-
-const RELEASE_VERSION = require("../../package.json").version;
-
-export {
-    PROD_HOST_URL,
-    RENDERER_OUTPUT_DIR,
-    FILE_STREAM_CHUNK_SIZE,
-    LOG_FILENAME,
-    MAX_LOG_SIZE,
-    SENTRY_DSN,
-    RELEASE_VERSION,
-};

+ 0 - 17
desktop/src/main.ts

@@ -1,7 +1,5 @@
 import { app, BrowserWindow } from "electron";
 import { app, BrowserWindow } from "electron";
 import { initWatcher } from "./services/chokidar";
 import { initWatcher } from "./services/chokidar";
-import { initSentry } from "./services/sentry";
-import { getOptOutOfCrashReports } from "./services/userPreference";
 import { isDev } from "./utils/common";
 import { isDev } from "./utils/common";
 import { addAllowOriginHeader } from "./utils/cors";
 import { addAllowOriginHeader } from "./utils/cors";
 import { createWindow } from "./utils/createWindow";
 import { createWindow } from "./utils/createWindow";
@@ -29,8 +27,6 @@ let appIsQuitting = false;
 
 
 let updateIsAvailable = false;
 let updateIsAvailable = false;
 
 
-let optedOutOfCrashReports = false;
-
 export const isAppQuitting = (): boolean => {
 export const isAppQuitting = (): boolean => {
     return appIsQuitting;
     return appIsQuitting;
 };
 };
@@ -46,14 +42,6 @@ export const setIsUpdateAvailable = (value: boolean): void => {
     updateIsAvailable = value;
     updateIsAvailable = value;
 };
 };
 
 
-export const hasOptedOutOfCrashReports = (): boolean => {
-    return optedOutOfCrashReports;
-};
-
-export const updateOptOutOfCrashReports = (value: boolean): void => {
-    optedOutOfCrashReports = value;
-};
-
 setupMainHotReload();
 setupMainHotReload();
 
 
 setupNextElectronServe();
 setupNextElectronServe();
@@ -83,11 +71,6 @@ if (!gotTheLock) {
     app.on("ready", async () => {
     app.on("ready", async () => {
         logSystemInfo();
         logSystemInfo();
         setupMainProcessStatsLogger();
         setupMainProcessStatsLogger();
-        const hasOptedOutOfCrashReports = getOptOutOfCrashReports();
-        updateOptOutOfCrashReports(hasOptedOutOfCrashReports);
-        if (!hasOptedOutOfCrashReports) {
-            initSentry();
-        }
         mainWindow = await createWindow();
         mainWindow = await createWindow();
         const tray = setupTrayItem(mainWindow);
         const tray = setupTrayItem(mainWindow);
         const watcher = initWatcher(mainWindow);
         const watcher = initWatcher(mainWindow);

+ 0 - 4
desktop/src/preload.ts

@@ -8,12 +8,10 @@ import { computeImageEmbedding, computeTextEmbedding } from "./api/clip";
 import {
 import {
     getAppVersion,
     getAppVersion,
     getPlatform,
     getPlatform,
-    getSentryUserID,
     logToDisk,
     logToDisk,
     openDirectory,
     openDirectory,
     openLogDirectory,
     openLogDirectory,
     selectDirectory,
     selectDirectory,
-    updateOptOutOfCrashReports,
 } from "./api/common";
 } from "./api/common";
 import { clearElectronStore } from "./api/electronStore";
 import { clearElectronStore } from "./api/electronStore";
 import {
 import {
@@ -108,7 +106,6 @@ windowObject["ElectronAPIs"] = {
     registerUpdateEventListener,
     registerUpdateEventListener,
     updateAndRestart,
     updateAndRestart,
     skipAppUpdate,
     skipAppUpdate,
-    getSentryUserID,
     getAppVersion,
     getAppVersion,
     runFFmpegCmd,
     runFFmpegCmd,
     muteUpdateNotification,
     muteUpdateNotification,
@@ -120,7 +117,6 @@ windowObject["ElectronAPIs"] = {
     deleteFolder,
     deleteFolder,
     rename,
     rename,
     deleteFile,
     deleteFile,
-    updateOptOutOfCrashReports,
     computeImageEmbedding,
     computeImageEmbedding,
     computeTextEmbedding,
     computeTextEmbedding,
     getPlatform,
     getPlatform,

+ 2 - 1
desktop/src/services/fs.ts

@@ -3,10 +3,11 @@ import StreamZip from "node-stream-zip";
 import path from "path";
 import path from "path";
 import * as fs from "promise-fs";
 import * as fs from "promise-fs";
 import { Readable } from "stream";
 import { Readable } from "stream";
-import { FILE_STREAM_CHUNK_SIZE } from "../config";
 import { ElectronFile } from "../types";
 import { ElectronFile } from "../types";
 import { logError } from "./logging";
 import { logError } from "./logging";
 
 
+const FILE_STREAM_CHUNK_SIZE: number = 4 * 1024 * 1024;
+
 // https://stackoverflow.com/a/63111390
 // https://stackoverflow.com/a/63111390
 export const getDirFilePaths = async (dirPath: string) => {
 export const getDirFilePaths = async (dirPath: string) => {
     if (!(await fs.stat(dirPath)).isDirectory()) {
     if (!(await fs.stat(dirPath)).isDirectory()) {

+ 0 - 8
desktop/src/services/logging.ts

@@ -12,11 +12,3 @@ export function openLogDirectory() {
 export function logError(error: Error, message: string, info?: string): void {
 export function logError(error: Error, message: string, info?: string): void {
     ipcRenderer.invoke("log-error", error, message, info);
     ipcRenderer.invoke("log-error", error, message, info);
 }
 }
-
-export function getSentryUserID(): Promise<string> {
-    return ipcRenderer.invoke("get-sentry-id");
-}
-
-export function updateOptOutOfCrashReports(optOut: boolean) {
-    return ipcRenderer.invoke("update-opt-out-crash-reports", optOut);
-}

+ 2 - 52
desktop/src/services/sentry.ts

@@ -1,68 +1,18 @@
-import * as Sentry from "@sentry/electron/dist/main";
-import { RELEASE_VERSION, SENTRY_DSN } from "../config";
-import { hasOptedOutOfCrashReports } from "../main";
-import { keysStore } from "../stores/keys.store";
 import { isDev } from "../utils/common";
 import { isDev } from "../utils/common";
-import { makeID } from "../utils/logging";
 import { logToDisk } from "./logging";
 import { logToDisk } from "./logging";
 
 
-const ENV_DEVELOPMENT = "development";
-
-const isDEVSentryENV = () =>
-    process.env.NEXT_PUBLIC_SENTRY_ENV === ENV_DEVELOPMENT;
-
-export function initSentry(): void {
-    Sentry.init({
-        dsn: SENTRY_DSN,
-        release: RELEASE_VERSION,
-        environment: isDev ? "development" : "production",
-    });
-    Sentry.setUser({ id: getSentryUserID() });
-}
-
+/** Deprecated, but no alternative yet */
 export function logErrorSentry(
 export function logErrorSentry(
     error: any,
     error: any,
     msg: string,
     msg: string,
     info?: Record<string, unknown>
     info?: Record<string, unknown>
 ) {
 ) {
-    const err = errorWithContext(error, msg);
     logToDisk(
     logToDisk(
         `error: ${error?.name} ${error?.message} ${
         `error: ${error?.name} ${error?.message} ${
             error?.stack
             error?.stack
         } msg: ${msg} info: ${JSON.stringify(info)}`
         } msg: ${msg} info: ${JSON.stringify(info)}`
     );
     );
-    if (isDEVSentryENV()) {
+    if (isDev) {
         console.log(error, { msg, info });
         console.log(error, { msg, info });
     }
     }
-    if (hasOptedOutOfCrashReports()) {
-        return;
-    }
-    Sentry.captureException(err, {
-        level: Sentry.Severity.Info,
-        user: { id: getSentryUserID() },
-        contexts: {
-            ...(info && {
-                info: info,
-            }),
-            rootCause: { message: error?.message },
-        },
-    });
-}
-
-function errorWithContext(originalError: Error, context: string) {
-    const errorWithContext = new Error(context);
-    errorWithContext.stack =
-        errorWithContext.stack.split("\n").slice(2, 4).join("\n") +
-        "\n" +
-        originalError.stack;
-    return errorWithContext;
-}
-
-export function getSentryUserID() {
-    let anonymizeUserID = keysStore.get("AnonymizeUserID")?.id;
-    if (!anonymizeUserID) {
-        anonymizeUserID = makeID(6);
-        keysStore.set("AnonymizeUserID", { id: anonymizeUserID });
-    }
-    return anonymizeUserID;
 }
 }

+ 0 - 8
desktop/src/services/userPreference.ts

@@ -24,14 +24,6 @@ export function setMuteUpdateNotificationVersion(version: string) {
     userPreferencesStore.set("muteUpdateNotificationVersion", version);
     userPreferencesStore.set("muteUpdateNotificationVersion", version);
 }
 }
 
 
-export function getOptOutOfCrashReports() {
-    return userPreferencesStore.get("optOutOfCrashReports") ?? false;
-}
-
-export function setOptOutOfCrashReports(optOut: boolean) {
-    userPreferencesStore.set("optOutOfCrashReports", optOut);
-}
-
 export function clearSkipAppVersion() {
 export function clearSkipAppVersion() {
     userPreferencesStore.delete("skipAppVersion");
     userPreferencesStore.delete("skipAppVersion");
 }
 }

+ 0 - 3
desktop/src/stores/userPreferences.store.ts

@@ -11,9 +11,6 @@ const userPreferencesSchema: Schema<UserPreferencesType> = {
     muteUpdateNotificationVersion: {
     muteUpdateNotificationVersion: {
         type: "string",
         type: "string",
     },
     },
-    optOutOfCrashReports: {
-        type: "boolean",
-    },
     customCacheDirectory: {
     customCacheDirectory: {
         type: "string",
         type: "string",
     },
     },

+ 0 - 1
desktop/src/types/index.ts

@@ -58,7 +58,6 @@ export interface UserPreferencesType {
     hideDockIcon: boolean;
     hideDockIcon: boolean;
     skipAppVersion: string;
     skipAppVersion: string;
     muteUpdateNotificationVersion: string;
     muteUpdateNotificationVersion: string;
-    optOutOfCrashReports: boolean;
     customCacheDirectory: string;
     customCacheDirectory: string;
 }
 }
 
 

+ 1 - 10
desktop/src/utils/ipcComms.ts

@@ -10,7 +10,6 @@ import {
     Tray,
     Tray,
 } from "electron";
 } from "electron";
 import path from "path";
 import path from "path";
-import { updateOptOutOfCrashReports } from "../main";
 import {
 import {
     getAppVersion,
     getAppVersion,
     muteUpdateNotification,
     muteUpdateNotification,
@@ -27,11 +26,10 @@ import {
     convertToJPEG,
     convertToJPEG,
     generateImageThumbnail,
     generateImageThumbnail,
 } from "../services/imageProcessor";
 } from "../services/imageProcessor";
-import { getSentryUserID, logErrorSentry } from "../services/sentry";
+import { logErrorSentry } from "../services/sentry";
 import {
 import {
     getCustomCacheDirectory,
     getCustomCacheDirectory,
     setCustomCacheDirectory,
     setCustomCacheDirectory,
-    setOptOutOfCrashReports,
 } from "../services/userPreference";
 } from "../services/userPreference";
 import { getPlatform } from "./common/platform";
 import { getPlatform } from "./common/platform";
 import { createWindow } from "./createWindow";
 import { createWindow } from "./createWindow";
@@ -146,9 +144,6 @@ export default function setupIpcComs(
     ipcMain.on("mute-update-notification", (_, version) => {
     ipcMain.on("mute-update-notification", (_, version) => {
         muteUpdateNotification(version);
         muteUpdateNotification(version);
     });
     });
-    ipcMain.handle("get-sentry-id", () => {
-        return getSentryUserID();
-    });
 
 
     ipcMain.handle("get-app-version", () => {
     ipcMain.handle("get-app-version", () => {
         return getAppVersion();
         return getAppVersion();
@@ -179,10 +174,6 @@ export default function setupIpcComs(
         }
         }
     );
     );
 
 
-    ipcMain.handle("update-opt-out-crash-reports", (_, optOut) => {
-        setOptOutOfCrashReports(optOut);
-        updateOptOutOfCrashReports(optOut);
-    });
     ipcMain.handle("compute-image-embedding", (_, model, inputFilePath) => {
     ipcMain.handle("compute-image-embedding", (_, model, inputFilePath) => {
         return computeImageEmbedding(model, inputFilePath);
         return computeImageEmbedding(model, inputFilePath);
     });
     });

+ 2 - 16
desktop/src/utils/logging.ts

@@ -1,9 +1,8 @@
 import log from "electron-log";
 import log from "electron-log";
-import { LOG_FILENAME, MAX_LOG_SIZE } from "../config";
 
 
 export function setupLogging(isDev?: boolean) {
 export function setupLogging(isDev?: boolean) {
-    log.transports.file.fileName = LOG_FILENAME;
-    log.transports.file.maxSize = MAX_LOG_SIZE;
+    log.transports.file.fileName = "ente.log";
+    log.transports.file.maxSize = 50 * 1024 * 1024; // 50MB;
     if (!isDev) {
     if (!isDev) {
         log.transports.console.level = false;
         log.transports.console.level = false;
     }
     }
@@ -11,19 +10,6 @@ export function setupLogging(isDev?: boolean) {
         "[{y}-{m}-{d}T{h}:{i}:{s}{z}] [{level}]{scope} {text}";
         "[{y}-{m}-{d}T{h}:{i}:{s}{z}] [{level}]{scope} {text}";
 }
 }
 
 
-export function makeID(length: number) {
-    let result = "";
-    const characters =
-        "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
-    const charactersLength = characters.length;
-    for (let i = 0; i < length; i++) {
-        result += characters.charAt(
-            Math.floor(Math.random() * charactersLength)
-        );
-    }
-    return result;
-}
-
 export function convertBytesToHumanReadable(
 export function convertBytesToHumanReadable(
     bytes: number,
     bytes: number,
     precision = 2
     precision = 2

+ 3 - 1
desktop/src/utils/main.ts

@@ -6,7 +6,6 @@ import os from "os";
 import path from "path";
 import path from "path";
 import { existsSync } from "promise-fs";
 import { existsSync } from "promise-fs";
 import util from "util";
 import util from "util";
-import { PROD_HOST_URL, RENDERER_OUTPUT_DIR } from "../config";
 import { setupAutoUpdater } from "../services/appUpdater";
 import { setupAutoUpdater } from "../services/appUpdater";
 import autoLauncher from "../services/autoLauncher";
 import autoLauncher from "../services/autoLauncher";
 import { getHideDockIconPreference } from "../services/userPreference";
 import { getHideDockIconPreference } from "../services/userPreference";
@@ -15,6 +14,9 @@ import { isPlatform } from "./common/platform";
 import { buildContextMenu, buildMenuBar } from "./menu";
 import { buildContextMenu, buildMenuBar } from "./menu";
 const execAsync = util.promisify(require("child_process").exec);
 const execAsync = util.promisify(require("child_process").exec);
 
 
+const PROD_HOST_URL: string = "ente://app";
+const RENDERER_OUTPUT_DIR: string = "./out";
+
 export async function handleUpdates(mainWindow: BrowserWindow) {
 export async function handleUpdates(mainWindow: BrowserWindow) {
     const isInstalledViaBrew = await checkIfInstalledViaBrew();
     const isInstalledViaBrew = await checkIfInstalledViaBrew();
     if (!isDev && !isInstalledViaBrew) {
     if (!isDev && !isInstalledViaBrew) {

+ 8 - 236
desktop/yarn.lock

@@ -188,110 +188,6 @@
   resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31"
   resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31"
   integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==
   integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==
 
 
-"@sentry/browser@6.7.1":
-  version "6.7.1"
-  resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.7.1.tgz#e01144a08984a486ecc91d7922cc457e9c9bd6b7"
-  integrity sha512-R5PYx4TTvifcU790XkK6JVGwavKaXwycDU0MaAwfc4Vf7BLm5KCNJCsDySu1RPAap/017MVYf54p6dWvKiRviA==
-  dependencies:
-    "@sentry/core" "6.7.1"
-    "@sentry/types" "6.7.1"
-    "@sentry/utils" "6.7.1"
-    tslib "^1.9.3"
-
-"@sentry/cli@^1.68.0":
-  version "1.74.4"
-  resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.74.4.tgz#7df82f68045a155e1885bfcbb5d303e5259eb18e"
-  integrity sha512-BMfzYiedbModsNBJlKeBOLVYUtwSi99LJ8gxxE4Bp5N8hyjNIN0WVrozAVZ27mqzAuy6151Za3dpmOLO86YlGw==
-  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"
-
-"@sentry/core@6.7.1":
-  version "6.7.1"
-  resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.7.1.tgz#c3aaa6415d06bec65ac446b13b84f073805633e3"
-  integrity sha512-VAv8OR/7INn2JfiLcuop4hfDcyC7mfL9fdPndQEhlacjmw8gRrgXjR7qyhnCTgzFLkHI7V5bcdIzA83TRPYQpA==
-  dependencies:
-    "@sentry/hub" "6.7.1"
-    "@sentry/minimal" "6.7.1"
-    "@sentry/types" "6.7.1"
-    "@sentry/utils" "6.7.1"
-    tslib "^1.9.3"
-
-"@sentry/electron@^2.5.1":
-  version "2.5.4"
-  resolved "https://registry.yarnpkg.com/@sentry/electron/-/electron-2.5.4.tgz#337b2f7e228e805a3e4eb3611c7b12c6cf87c618"
-  integrity sha512-tCCK+P581TmdjsDpHBQz7qYcldzGdUk1Fd6FPxPy1JKGzeY4uf/uSLKzR80Lzs5kTpEZFOwiMHSA8yjwFp5qoA==
-  dependencies:
-    "@sentry/browser" "6.7.1"
-    "@sentry/core" "6.7.1"
-    "@sentry/minimal" "6.7.1"
-    "@sentry/node" "6.7.1"
-    "@sentry/types" "6.7.1"
-    "@sentry/utils" "6.7.1"
-    tslib "^2.2.0"
-
-"@sentry/hub@6.7.1":
-  version "6.7.1"
-  resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.7.1.tgz#d46d24deec67f0731a808ca16796e6765b371bc1"
-  integrity sha512-eVCTWvvcp6xa0A5GGNHMQEWslmKPlisE5rGmsV/kjvSUv3zSrI0eIDfb51ikdnCiBjHpK2NBWP8Vy8cZOEJegg==
-  dependencies:
-    "@sentry/types" "6.7.1"
-    "@sentry/utils" "6.7.1"
-    tslib "^1.9.3"
-
-"@sentry/minimal@6.7.1":
-  version "6.7.1"
-  resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.7.1.tgz#babf85ee2f167e9dcf150d750d7a0b250c98449c"
-  integrity sha512-HDDPEnQRD6hC0qaHdqqKDStcdE1KhkFh0RCtJNMCDn0zpav8Dj9AteF70x6kLSlliAJ/JFwi6AmQrLz+FxPexw==
-  dependencies:
-    "@sentry/hub" "6.7.1"
-    "@sentry/types" "6.7.1"
-    tslib "^1.9.3"
-
-"@sentry/node@6.7.1":
-  version "6.7.1"
-  resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.7.1.tgz#b09e2eca8e187168feba7bd865a23935bf0f5cc0"
-  integrity sha512-rtZo1O8ROv4lZwuljQz3iFZW89oXSlgXCG2VqkxQyRspPWu89abROpxLjYzsWwQ8djnur1XjFv51kOLDUTS6Qw==
-  dependencies:
-    "@sentry/core" "6.7.1"
-    "@sentry/hub" "6.7.1"
-    "@sentry/tracing" "6.7.1"
-    "@sentry/types" "6.7.1"
-    "@sentry/utils" "6.7.1"
-    cookie "^0.4.1"
-    https-proxy-agent "^5.0.0"
-    lru_map "^0.3.3"
-    tslib "^1.9.3"
-
-"@sentry/tracing@6.7.1":
-  version "6.7.1"
-  resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.7.1.tgz#b11f0c17a6c5dc14ef44733e5436afb686683268"
-  integrity sha512-wyS3nWNl5mzaC1qZ2AIp1hjXnfO9EERjMIJjCihs2LWBz1r3efxrHxJHs8wXlNWvrT3KLhq/7vvF5CdU82uPeQ==
-  dependencies:
-    "@sentry/hub" "6.7.1"
-    "@sentry/minimal" "6.7.1"
-    "@sentry/types" "6.7.1"
-    "@sentry/utils" "6.7.1"
-    tslib "^1.9.3"
-
-"@sentry/types@6.7.1":
-  version "6.7.1"
-  resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.7.1.tgz#c8263e1886df5e815570c4668eb40a1cfaa1c88b"
-  integrity sha512-9AO7HKoip2MBMNQJEd6+AKtjj2+q9Ze4ooWUdEvdOVSt5drg7BGpK221/p9JEOyJAZwEPEXdcMd3VAIMiOb4MA==
-
-"@sentry/utils@6.7.1":
-  version "6.7.1"
-  resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.7.1.tgz#909184ad580f0f6375e1e4d4a6ffd33dfe64a4d1"
-  integrity sha512-Tq2otdbWlHAkctD+EWTYKkEx6BL1Qn3Z/imkO06/PvzpWvVhJWQ5qHAzz5XnwwqNHyV03KVzYB6znq1Bea9HuA==
-  dependencies:
-    "@sentry/types" "6.7.1"
-    tslib "^1.9.3"
-
 "@sindresorhus/is@^4.0.0":
 "@sindresorhus/is@^4.0.0":
   version "4.6.0"
   version "4.6.0"
   resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
   resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
@@ -662,19 +558,6 @@ applescript@^1.0.0:
   resolved "https://registry.yarnpkg.com/applescript/-/applescript-1.0.0.tgz#bb87af568cad034a4e48c4bdaf6067a3a2701317"
   resolved "https://registry.yarnpkg.com/applescript/-/applescript-1.0.0.tgz#bb87af568cad034a4e48c4bdaf6067a3a2701317"
   integrity sha512-yvtNHdWvtbYEiIazXAdp/NY+BBb65/DAseqlNiJQjOx9DynuzOYDbVLBJvuc0ve0VL9x6B3OHF6eH52y9hCBtQ==
   integrity sha512-yvtNHdWvtbYEiIazXAdp/NY+BBb65/DAseqlNiJQjOx9DynuzOYDbVLBJvuc0ve0VL9x6B3OHF6eH52y9hCBtQ==
 
 
-aproba@^1.0.3:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
-  integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
-
-are-we-there-yet@~1.1.2:
-  version "1.1.7"
-  resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146"
-  integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==
-  dependencies:
-    delegates "^1.0.0"
-    readable-stream "^2.0.6"
-
 argparse@^1.0.7:
 argparse@^1.0.7:
   version "1.0.10"
   version "1.0.10"
   resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
   resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -1090,16 +973,6 @@ config-file-ts@^0.2.4:
     glob "^7.1.6"
     glob "^7.1.6"
     typescript "^4.0.2"
     typescript "^4.0.2"
 
 
-console-control-strings@^1.0.0, console-control-strings@~1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
-  integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
-
-cookie@^0.4.1:
-  version "0.4.2"
-  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
-  integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
-
 core-util-is@1.0.2:
 core-util-is@1.0.2:
   version "1.0.2"
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@@ -1201,11 +1074,6 @@ delayed-stream@~1.0.0:
   resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
   resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
   integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
   integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
 
 
-delegates@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
-  integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==
-
 detect-indent@^7.0.1:
 detect-indent@^7.0.1:
   version "7.0.1"
   version "7.0.1"
   resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-7.0.1.tgz#cbb060a12842b9c4d333f1cac4aa4da1bb66bc25"
   resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-7.0.1.tgz#cbb060a12842b9c4d333f1cac4aa4da1bb66bc25"
@@ -1848,20 +1716,6 @@ gar@^1.0.4:
   resolved "https://registry.yarnpkg.com/gar/-/gar-1.0.4.tgz#f777bc7db425c0572fdeb52676172ca1ae9888b8"
   resolved "https://registry.yarnpkg.com/gar/-/gar-1.0.4.tgz#f777bc7db425c0572fdeb52676172ca1ae9888b8"
   integrity sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==
   integrity sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==
 
 
-gauge@~2.7.3:
-  version "2.7.4"
-  resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
-  integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==
-  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"
-
 get-caller-file@^2.0.5:
 get-caller-file@^2.0.5:
   version "2.0.5"
   version "2.0.5"
   resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
   resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
@@ -2033,11 +1887,6 @@ has-symbols@^1.0.3:
   resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
   resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
   integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
   integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
 
 
-has-unicode@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-  integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==
-
 has@^1.0.3:
 has@^1.0.3:
   version "1.0.3"
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
   resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
@@ -2164,7 +2013,7 @@ inflight@^1.0.4:
     once "^1.3.0"
     once "^1.3.0"
     wrappy "1"
     wrappy "1"
 
 
-inherits@2, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
+inherits@2, inherits@^2.0.3, inherits@~2.0.1:
   version "2.0.4"
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -2249,11 +2098,6 @@ isarray@0.0.1:
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
   integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
   integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
 
 
-isarray@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-  integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
-
 isbinaryfile@^4.0.8:
 isbinaryfile@^4.0.8:
   version "4.0.10"
   version "4.0.10"
   resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3"
   resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3"
@@ -2462,11 +2306,6 @@ lru-cache@^6.0.0:
   dependencies:
   dependencies:
     yallist "^4.0.0"
     yallist "^4.0.0"
 
 
-lru_map@^0.3.3:
-  version "0.3.3"
-  resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd"
-  integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==
-
 matcher@^3.0.0:
 matcher@^3.0.0:
   version "3.0.0"
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca"
   resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca"
@@ -2570,7 +2409,7 @@ minizlib@^2.1.1:
     minipass "^3.0.0"
     minipass "^3.0.0"
     yallist "^4.0.0"
     yallist "^4.0.0"
 
 
-mkdirp@^0.5.1, mkdirp@^0.5.5:
+mkdirp@^0.5.1:
   version "0.5.6"
   version "0.5.6"
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
   integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
   integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
@@ -2642,16 +2481,6 @@ normalize-url@^6.0.1:
   resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
   resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
   integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
   integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
 
 
-npmlog@^4.1.2:
-  version "4.1.2"
-  resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
-  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"
-
 nugget@^2.0.1:
 nugget@^2.0.1:
   version "2.0.2"
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.2.tgz#398b591377b740b3dd308fabecd5ea09cf3443da"
   resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.2.tgz#398b591377b740b3dd308fabecd5ea09cf3443da"
@@ -2675,11 +2504,6 @@ oauth-sign@~0.9.0:
   resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
   resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
   integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
   integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
 
 
-object-assign@^4.1.0:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-  integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
-
 object-keys@^1.1.1:
 object-keys@^1.1.1:
   version "1.1.1"
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
   resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
@@ -2883,11 +2707,6 @@ pretty-bytes@^4.0.2:
   resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
   resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
   integrity sha512-yJAF+AjbHKlxQ8eezMd/34Mnj/YTQ3i6kLzvVsH4l/BfIFtp444n0wVbnsn66JimZ9uBofv815aRp1zCppxlWw==
   integrity sha512-yJAF+AjbHKlxQ8eezMd/34Mnj/YTQ3i6kLzvVsH4l/BfIFtp444n0wVbnsn66JimZ9uBofv815aRp1zCppxlWw==
 
 
-process-nextick-args@~2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
-  integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-
 progress-stream@^1.1.0:
 progress-stream@^1.1.0:
   version "1.2.0"
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77"
   resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77"
@@ -2916,11 +2735,6 @@ promise-retry@^2.0.1:
     err-code "^2.0.2"
     err-code "^2.0.2"
     retry "^0.12.0"
     retry "^0.12.0"
 
 
-proxy-from-env@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
-  integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
-
 psl@^1.1.28:
 psl@^1.1.28:
   version "1.9.0"
   version "1.9.0"
   resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
   resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
@@ -2995,19 +2809,6 @@ read-pkg@^5.2.0:
     parse-json "^5.0.0"
     parse-json "^5.0.0"
     type-fest "^0.6.0"
     type-fest "^0.6.0"
 
 
-readable-stream@^2.0.6:
-  version "2.3.7"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
-  integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.3"
-    isarray "~1.0.0"
-    process-nextick-args "~2.0.0"
-    safe-buffer "~5.1.1"
-    string_decoder "~1.1.1"
-    util-deprecate "~1.0.1"
-
 readable-stream@^3.0.2:
 readable-stream@^3.0.2:
   version "3.6.0"
   version "3.6.0"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
@@ -3149,11 +2950,6 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
   integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
   integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
 
 
-safe-buffer@~5.1.0, safe-buffer@~5.1.1:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
-  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
 "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
 "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
   version "2.1.2"
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
@@ -3207,11 +3003,6 @@ serialize-error@^7.0.1:
   dependencies:
   dependencies:
     type-fest "^0.13.1"
     type-fest "^0.13.1"
 
 
-set-blocking@~2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-  integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
-
 shebang-command@^2.0.0:
 shebang-command@^2.0.0:
   version "2.0.0"
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
   resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@@ -3229,11 +3020,6 @@ shell-quote@^1.7.3:
   resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
   resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
   integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
   integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
 
 
-signal-exit@^3.0.0:
-  version "3.0.7"
-  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
-  integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
-
 simple-update-notifier@2.0.0:
 simple-update-notifier@2.0.0:
   version "2.0.0"
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb"
   resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb"
@@ -3387,7 +3173,7 @@ string-width@^1.0.1:
     is-fullwidth-code-point "^1.0.0"
     is-fullwidth-code-point "^1.0.0"
     strip-ansi "^3.0.0"
     strip-ansi "^3.0.0"
 
 
-"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
   version "4.2.3"
   version "4.2.3"
   resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
   resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
   integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
   integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -3408,14 +3194,7 @@ string_decoder@~0.10.x:
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
   integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==
   integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==
 
 
-string_decoder@~1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
-  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
-  dependencies:
-    safe-buffer "~5.1.0"
-
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+strip-ansi@^3.0.0:
   version "3.0.1"
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
   resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
   integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==
   integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==
@@ -3587,12 +3366,12 @@ truncate-utf8-bytes@^1.0.0:
   dependencies:
   dependencies:
     utf8-byte-length "^1.0.1"
     utf8-byte-length "^1.0.1"
 
 
-tslib@^1.8.1, tslib@^1.9.3:
+tslib@^1.8.1:
   version "1.14.1"
   version "1.14.1"
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
   integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
   integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
 
 
-tslib@^2.1.0, tslib@^2.2.0:
+tslib@^2.1.0:
   version "2.4.0"
   version "2.4.0"
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
   integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
   integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
@@ -3695,7 +3474,7 @@ utf8-byte-length@^1.0.1:
   resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61"
   resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61"
   integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==
   integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==
 
 
-util-deprecate@^1.0.1, util-deprecate@~1.0.1:
+util-deprecate@^1.0.1:
   version "1.0.2"
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
   resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
   integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
   integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
@@ -3749,20 +3528,13 @@ whatwg-url@^5.0.0:
     tr46 "~0.0.3"
     tr46 "~0.0.3"
     webidl-conversions "^3.0.0"
     webidl-conversions "^3.0.0"
 
 
-which@^2.0.1, which@^2.0.2:
+which@^2.0.1:
   version "2.0.2"
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
   resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
   integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
   integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
   dependencies:
   dependencies:
     isexe "^2.0.0"
     isexe "^2.0.0"
 
 
-wide-align@^1.1.0:
-  version "1.1.5"
-  resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
-  integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
-  dependencies:
-    string-width "^1.0.2 || 2 || 3 || 4"
-
 winreg@1.2.4:
 winreg@1.2.4:
   version "1.2.4"
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/winreg/-/winreg-1.2.4.tgz#ba065629b7a925130e15779108cf540990e98d1b"
   resolved "https://registry.yarnpkg.com/winreg/-/winreg-1.2.4.tgz#ba065629b7a925130e15779108cf540990e98d1b"

+ 0 - 3
web/apps/accounts/sentry.client.config.ts

@@ -1,3 +0,0 @@
-import { initSentry } from "@ente/shared/sentry/config/sentry.config.base";
-
-initSentry("https://0f7214c7feb9b1dd2fed5db09b42fa1b@sentry.ente.io/5");

+ 0 - 0
web/apps/accounts/sentry.edge.config.ts


+ 0 - 6
web/apps/accounts/sentry.properties

@@ -1,6 +0,0 @@
-# This file is used by the SentryWebpackPlugin to upload sourcemaps when the
-# SENTRY_AUTH_TOKEN environment variable is defined.
-
-defaults.url = https://sentry.ente.io/
-defaults.org = ente
-defaults.project = web-photos

+ 0 - 0
web/apps/accounts/sentry.server.config.ts


+ 1 - 3
web/apps/auth/next.config.js

@@ -1,3 +1 @@
-const nextConfigBase = require("@/next/next.config.base.js");
-
-module.exports = nextConfigBase;
+module.exports = require("@/next/next.config.base.js");

+ 0 - 3
web/apps/auth/sentry.client.config.ts

@@ -1,3 +0,0 @@
-import { initSentry } from "@ente/shared/sentry/config/sentry.config.base";
-
-initSentry("https://5d344112b570b1a368b6f5c1d0bb798b@sentry.ente.io/8");

+ 0 - 0
web/apps/auth/sentry.edge.config.ts


+ 0 - 6
web/apps/auth/sentry.properties

@@ -1,6 +0,0 @@
-# This file is used by the SentryWebpackPlugin to upload sourcemaps when the
-# SENTRY_AUTH_TOKEN environment variable is defined.
-
-defaults.url = https://sentry.ente.io/
-defaults.org = ente
-defaults.project = web-auth

+ 0 - 0
web/apps/auth/sentry.server.config.ts


+ 0 - 17
web/apps/auth/src/pages/_error.tsx

@@ -1,17 +0,0 @@
-import { APPS } from "@ente/shared/apps/constants";
-import ErrorPage from "@ente/shared/next/pages/_error";
-import { useRouter } from "next/router";
-import { AppContext } from "pages/_app";
-import { useContext } from "react";
-
-export default function Error() {
-    const appContext = useContext(AppContext);
-    const router = useRouter();
-    return (
-        <ErrorPage
-            appContext={appContext}
-            router={router}
-            appName={APPS.AUTH}
-        />
-    );
-}

+ 1 - 3
web/apps/cast/next.config.js

@@ -1,3 +1 @@
-const nextConfigBase = require("@/next/next.config.base.js");
-
-module.exports = nextConfigBase;
+module.exports = require("@/next/next.config.base.js");

+ 0 - 3
web/apps/cast/sentry.client.config.ts

@@ -1,3 +0,0 @@
-import { initSentry } from "@ente/shared/sentry/config/sentry.config.base";
-
-initSentry("https://0f7214c7feb9b1dd2fed5db09b42fa1b@sentry.ente.io/5");

+ 0 - 0
web/apps/cast/sentry.edge.config.ts


+ 0 - 6
web/apps/cast/sentry.properties

@@ -1,6 +0,0 @@
-# This file is used by the SentryWebpackPlugin to upload sourcemaps when the
-# SENTRY_AUTH_TOKEN environment variable is defined.
-
-defaults.url = https://sentry.ente.io/
-defaults.org = ente
-defaults.project = web-photos

+ 0 - 0
web/apps/cast/sentry.server.config.ts


+ 0 - 1
web/apps/cast/src/services/InMemoryStore.ts

@@ -1,5 +1,4 @@
 export enum MS_KEYS {
 export enum MS_KEYS {
-    OPT_OUT_OF_CRASH_REPORTS = "optOutOfCrashReports",
     SRP_CONFIGURE_IN_PROGRESS = "srpConfigureInProgress",
     SRP_CONFIGURE_IN_PROGRESS = "srpConfigureInProgress",
     REDIRECT_URL = "redirectUrl",
     REDIRECT_URL = "redirectUrl",
 }
 }

+ 0 - 1
web/apps/photos/.env.development

@@ -22,7 +22,6 @@
 #
 #
 # - Logs go to the browser console (in addition to the log file)
 # - Logs go to the browser console (in addition to the log file)
 # - There is some additional logging
 # - There is some additional logging
-# - Sentry is not initialized
 # - ... (search for isDevBuild to see all impacts)
 # - ... (search for isDevBuild to see all impacts)
 #
 #
 # Note that even in development build, the app still connects to the production
 # Note that even in development build, the app still connects to the production

+ 1 - 3
web/apps/photos/next.config.js

@@ -1,3 +1 @@
-const nextConfigBase = require("@/next/next.config.base.js");
-
-module.exports = nextConfigBase;
+module.exports = require("@/next/next.config.base.js");

+ 0 - 1
web/apps/photos/public/locales/en-US/translation.json

@@ -588,7 +588,6 @@
     "DOWNLOADING_COLLECTION": "Downloading {{name}}",
     "DOWNLOADING_COLLECTION": "Downloading {{name}}",
     "DOWNLOAD_FAILED": "Download failed",
     "DOWNLOAD_FAILED": "Download failed",
     "DOWNLOAD_PROGRESS": "{{progress.current}} / {{progress.total}} files",
     "DOWNLOAD_PROGRESS": "{{progress.current}} / {{progress.total}} files",
-    "CRASH_REPORTING": "Crash reporting",
     "CHRISTMAS": "Christmas",
     "CHRISTMAS": "Christmas",
     "CHRISTMAS_EVE": "Christmas Eve",
     "CHRISTMAS_EVE": "Christmas Eve",
     "NEW_YEAR": "New Year",
     "NEW_YEAR": "New Year",

+ 0 - 3
web/apps/photos/sentry.client.config.ts

@@ -1,3 +0,0 @@
-import { initSentry } from "@ente/shared/sentry/config/sentry.config.base";
-
-initSentry("https://0f7214c7feb9b1dd2fed5db09b42fa1b@sentry.ente.io/5");

+ 0 - 0
web/apps/photos/sentry.edge.config.ts


+ 0 - 6
web/apps/photos/sentry.properties

@@ -1,6 +0,0 @@
-# This file is used by the SentryWebpackPlugin to upload sourcemaps when the
-# SENTRY_AUTH_TOKEN environment variable is defined.
-
-defaults.url = https://sentry.ente.io/
-defaults.org = ente
-defaults.project = web-photos

+ 0 - 0
web/apps/photos/sentry.server.config.ts


+ 1 - 36
web/apps/photos/src/components/Sidebar/Preferences/index.tsx

@@ -1,17 +1,10 @@
 import ChevronRight from "@mui/icons-material/ChevronRight";
 import ChevronRight from "@mui/icons-material/ChevronRight";
 import { Box, DialogProps, Stack } from "@mui/material";
 import { Box, DialogProps, Stack } from "@mui/material";
 import { EnteDrawer } from "components/EnteDrawer";
 import { EnteDrawer } from "components/EnteDrawer";
+import { EnteMenuItem } from "components/Menu/EnteMenuItem";
 import Titlebar from "components/Titlebar";
 import Titlebar from "components/Titlebar";
 import { t } from "i18next";
 import { t } from "i18next";
-import isElectron from "is-electron";
 import { useState } from "react";
 import { useState } from "react";
-
-import ElectronAPIs from "@ente/shared/electron";
-import { useLocalState } from "@ente/shared/hooks/useLocalState";
-import { logError } from "@ente/shared/sentry";
-import InMemoryStore, { MS_KEYS } from "@ente/shared/storage/InMemoryStore";
-import { LS_KEYS } from "@ente/shared/storage/localStorage";
-import { EnteMenuItem } from "components/Menu/EnteMenuItem";
 import AdvancedSettings from "../AdvancedSettings";
 import AdvancedSettings from "../AdvancedSettings";
 import MapSettings from "../MapSetting";
 import MapSettings from "../MapSetting";
 import { LanguageSelector } from "./LanguageSelector";
 import { LanguageSelector } from "./LanguageSelector";
@@ -19,10 +12,6 @@ import { LanguageSelector } from "./LanguageSelector";
 export default function Preferences({ open, onClose, onRootClose }) {
 export default function Preferences({ open, onClose, onRootClose }) {
     const [advancedSettingsView, setAdvancedSettingsView] = useState(false);
     const [advancedSettingsView, setAdvancedSettingsView] = useState(false);
     const [mapSettingsView, setMapSettingsView] = useState(false);
     const [mapSettingsView, setMapSettingsView] = useState(false);
-    const [optOutOfCrashReports, setOptOutOfCrashReports] = useLocalState(
-        LS_KEYS.OPT_OUT_OF_CRASH_REPORTS,
-        false,
-    );
 
 
     const openAdvancedSettings = () => setAdvancedSettingsView(true);
     const openAdvancedSettings = () => setAdvancedSettingsView(true);
     const closeAdvancedSettings = () => setAdvancedSettingsView(false);
     const closeAdvancedSettings = () => setAdvancedSettingsView(false);
@@ -43,23 +32,6 @@ export default function Preferences({ open, onClose, onRootClose }) {
         }
         }
     };
     };
 
 
-    const toggleOptOutOfCrashReports = async () => {
-        try {
-            if (isElectron()) {
-                await ElectronAPIs.updateOptOutOfCrashReports(
-                    !optOutOfCrashReports,
-                );
-            }
-            setOptOutOfCrashReports(!optOutOfCrashReports);
-            InMemoryStore.set(
-                MS_KEYS.OPT_OUT_OF_CRASH_REPORTS,
-                !optOutOfCrashReports,
-            );
-        } catch (e) {
-            logError(e, "toggleOptOutOfCrashReports failed");
-        }
-    };
-
     return (
     return (
         <EnteDrawer
         <EnteDrawer
             transitionDuration={0}
             transitionDuration={0}
@@ -78,13 +50,6 @@ export default function Preferences({ open, onClose, onRootClose }) {
                 <Box px={"8px"}>
                 <Box px={"8px"}>
                     <Stack py="20px" spacing="24px">
                     <Stack py="20px" spacing="24px">
                         <LanguageSelector />
                         <LanguageSelector />
-                        <EnteMenuItem
-                            variant="toggle"
-                            checked={!optOutOfCrashReports}
-                            onClick={toggleOptOutOfCrashReports}
-                            label={t("CRASH_REPORTING")}
-                        />
-
                         <EnteMenuItem
                         <EnteMenuItem
                             onClick={openMapSettings}
                             onClick={openMapSettings}
                             endIcon={<ChevronRight />}
                             endIcon={<ChevronRight />}

+ 0 - 17
web/apps/photos/src/pages/_error.tsx

@@ -1,17 +0,0 @@
-import { APPS } from "@ente/shared/apps/constants";
-import ErrorPage from "@ente/shared/next/pages/_error";
-import { useRouter } from "next/router";
-import { AppContext } from "pages/_app";
-import { useContext } from "react";
-
-export default function Error() {
-    const appContext = useContext(AppContext);
-    const router = useRouter();
-    return (
-        <ErrorPage
-            appContext={appContext}
-            router={router}
-            appName={APPS.AUTH}
-        />
-    );
-}

+ 4 - 5
web/apps/photos/src/services/upload/thumbnailService.ts

@@ -1,4 +1,4 @@
-import { CustomError, errorWithContext } from "@ente/shared/error";
+import { CustomError } from "@ente/shared/error";
 import { addLogLine } from "@ente/shared/logging";
 import { addLogLine } from "@ente/shared/logging";
 import { getFileNameSize } from "@ente/shared/logging/web";
 import { getFileNameSize } from "@ente/shared/logging/web";
 import { logError } from "@ente/shared/sentry";
 import { logError } from "@ente/shared/sentry";
@@ -145,10 +145,9 @@ export async function generateImageThumbnailUsingCanvas(
                 clearTimeout(timeout);
                 clearTimeout(timeout);
                 resolve(null);
                 resolve(null);
             } catch (e) {
             } catch (e) {
-                const err = errorWithContext(
-                    e,
-                    `${CustomError.THUMBNAIL_GENERATION_FAILED} err: ${e}`,
-                );
+                const err = new Error(CustomError.THUMBNAIL_GENERATION_FAILED, {
+                    cause: e,
+                });
                 reject(err);
                 reject(err);
             }
             }
         };
         };

+ 0 - 1
web/package.json

@@ -26,7 +26,6 @@
         "lint-fix": "yarn prettier --write . && yarn workspaces run eslint --fix ."
         "lint-fix": "yarn prettier --write . && yarn workspaces run eslint --fix ."
     },
     },
     "resolutions": {
     "resolutions": {
-        "@sentry/cli": "1.75.0",
         "libsodium": "0.7.9"
         "libsodium": "0.7.9"
     },
     },
     "devDependencies": {
     "devDependencies": {

+ 2 - 31
web/packages/next/next.config.base.js

@@ -10,7 +10,6 @@
  * https://nextjs.org/docs/pages/api-reference/next-config-js
  * https://nextjs.org/docs/pages/api-reference/next-config-js
  */
  */
 
 
-const { withSentryConfig } = require("@sentry/nextjs");
 const cp = require("child_process");
 const cp = require("child_process");
 
 
 const gitSHA = cp
 const gitSHA = cp
@@ -21,8 +20,7 @@ const gitSHA = cp
     .trimEnd();
     .trimEnd();
 
 
 /**
 /**
- * The base Next.js config. Before exporting this, we wrap this in
- * {@link withSentryConfig}.
+ * Configuration for the Next.js build
  *
  *
  * @type {import("next").NextConfig}
  * @type {import("next").NextConfig}
  */
  */
@@ -54,33 +52,6 @@ const nextConfig = {
         }
         }
         return config;
         return config;
     },
     },
-
-    // Build time Sentry configuration
-    // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
-    sentry: {
-        widenClientFileUpload: true,
-        disableServerWebpackPlugin: true,
-    },
-};
-
-const sentryWebpackPluginOptions = {
-    // The same release value needs to be used both:
-    // 1. here to create a new release on Sentry and upload sourcemaps to it,
-    // 2. and when initializing Sentry in the browser (`Sentry.init`).
-    release: gitSHA,
 };
 };
 
 
-// withSentryConfig extends the default Next.js usage of webpack to:
-//
-// 1. Initialize the SDK on client page load (See `sentry.client.config.ts`)
-//
-// 2. Upload sourcemaps, using the settings defined in `sentry.properties`.
-//
-// Sourcemaps are only uploaded to Sentry if SENTRY_AUTH_TOKEN is defined. Note
-// that sourcemaps are always generated in the static export; the Sentry Webpack
-// plugin behavies as if the `productionBrowserSourceMaps` Next.js configuration
-// setting is `true`.
-//
-// Irritatingly, Sentry insists that we create empty sentry.server.config.ts and
-// sentry.edge.config.ts files, even though we are not using those parts.
-module.exports = withSentryConfig(nextConfig, sentryWebpackPluginOptions);
+module.exports = nextConfig;

+ 1 - 9
web/packages/shared/electron/service.ts

@@ -12,11 +12,7 @@ import { deserializeToResponse, serializeResponse } from "./worker/utils/proxy";
 export interface LimitedElectronAPIs
 export interface LimitedElectronAPIs
     extends Pick<
     extends Pick<
         ElectronAPIsType,
         ElectronAPIsType,
-        | "openDiskCache"
-        | "deleteDiskCache"
-        | "getSentryUserID"
-        | "convertToJPEG"
-        | "logToDisk"
+        "openDiskCache" | "deleteDiskCache" | "convertToJPEG" | "logToDisk"
     > {}
     > {}
 
 
 class WorkerSafeElectronServiceImpl implements LimitedElectronAPIs {
 class WorkerSafeElectronServiceImpl implements LimitedElectronAPIs {
@@ -56,10 +52,6 @@ class WorkerSafeElectronServiceImpl implements LimitedElectronAPIs {
         return await this.proxiedElectron.deleteDiskCache(cacheName);
         return await this.proxiedElectron.deleteDiskCache(cacheName);
     }
     }
 
 
-    async getSentryUserID() {
-        await this.ready;
-        return this.proxiedElectron.getSentryUserID();
-    }
     async convertToJPEG(
     async convertToJPEG(
         inputFileData: Uint8Array,
         inputFileData: Uint8Array,
         filename: string,
         filename: string,

+ 0 - 2
web/packages/shared/electron/types.ts

@@ -80,7 +80,6 @@ export interface ElectronAPIsType {
     ) => void;
     ) => void;
     updateAndRestart: () => void;
     updateAndRestart: () => void;
     skipAppUpdate: (version: string) => void;
     skipAppUpdate: (version: string) => void;
-    getSentryUserID: () => Promise<string>;
     getAppVersion: () => Promise<string>;
     getAppVersion: () => Promise<string>;
     runFFmpegCmd: (
     runFFmpegCmd: (
         cmd: string[],
         cmd: string[],
@@ -101,7 +100,6 @@ export interface ElectronAPIsType {
     deleteFolder: (path: string) => Promise<void>;
     deleteFolder: (path: string) => Promise<void>;
     deleteFile: (path: string) => void;
     deleteFile: (path: string) => void;
     rename: (oldPath: string, newPath: string) => Promise<void>;
     rename: (oldPath: string, newPath: string) => Promise<void>;
-    updateOptOutOfCrashReports: (optOut: boolean) => Promise<void>;
     computeImageEmbedding: (
     computeImageEmbedding: (
         model: Model,
         model: Model,
         imageData: Uint8Array,
         imageData: Uint8Array,

+ 0 - 5
web/packages/shared/electron/worker/client.ts

@@ -9,7 +9,6 @@ export interface ProxiedLimitedElectronAPIs {
         cacheLimitInBytes?: number,
         cacheLimitInBytes?: number,
     ) => Promise<ProxiedWorkerLimitedCache>;
     ) => Promise<ProxiedWorkerLimitedCache>;
     deleteDiskCache: (cacheName: string) => Promise<boolean>;
     deleteDiskCache: (cacheName: string) => Promise<boolean>;
-    getSentryUserID: () => Promise<string>;
     convertToJPEG: (
     convertToJPEG: (
         inputFileData: Uint8Array,
         inputFileData: Uint8Array,
         filename: string,
         filename: string,
@@ -42,10 +41,6 @@ export class WorkerSafeElectronClient implements ProxiedLimitedElectronAPIs {
         return await ElectronAPIs.deleteDiskCache(cacheName);
         return await ElectronAPIs.deleteDiskCache(cacheName);
     }
     }
 
 
-    async getSentryUserID() {
-        return await ElectronAPIs.getSentryUserID();
-    }
-
     async convertToJPEG(
     async convertToJPEG(
         inputFileData: Uint8Array,
         inputFileData: Uint8Array,
         filename: string,
         filename: string,

+ 0 - 9
web/packages/shared/error/index.ts

@@ -109,15 +109,6 @@ export function handleUploadError(error: any): Error {
     return parsedError;
     return parsedError;
 }
 }
 
 
-export function errorWithContext(originalError: Error, context: string) {
-    const errorWithContext = new Error(context);
-    errorWithContext.stack =
-        errorWithContext.stack?.split("\n").slice(2, 4).join("\n") +
-        "\n" +
-        originalError.stack;
-    return errorWithContext;
-}
-
 export function parseUploadErrorCodes(error: any) {
 export function parseUploadErrorCodes(error: any) {
     let parsedMessage = null;
     let parsedMessage = null;
     if (error instanceof ApiError) {
     if (error instanceof ApiError) {

+ 1 - 3
web/packages/shared/logging/web.ts

@@ -7,7 +7,6 @@ import {
     setData,
     setData,
 } from "@ente/shared/storage/localStorage";
 } from "@ente/shared/storage/localStorage";
 import { addLogLine } from ".";
 import { addLogLine } from ".";
-import { getSentryUserID } from "../sentry/utils";
 import { formatDateTimeShort } from "../time/format";
 import { formatDateTimeShort } from "../time/format";
 import { ElectronFile } from "../upload/types";
 import { ElectronFile } from "../upload/types";
 import type { User } from "../user/types";
 import type { User } from "../user/types";
@@ -75,10 +74,9 @@ export const logStartupMessage = async (appId: string) => {
     // TODO (MR): Remove the need to lowercase it, change the enum itself.
     // TODO (MR): Remove the need to lowercase it, change the enum itself.
     const appIdL = appId.toLowerCase();
     const appIdL = appId.toLowerCase();
     const userID = (getData(LS_KEYS.USER) as User)?.id;
     const userID = (getData(LS_KEYS.USER) as User)?.id;
-    const sentryID = await getSentryUserID();
     const buildId = isDevBuild ? "dev" : `git ${process.env.GIT_SHA}`;
     const buildId = isDevBuild ? "dev" : `git ${process.env.GIT_SHA}`;
 
 
-    addLogLine(`ente-${appIdL}-web ${buildId} uid ${userID} sid ${sentryID}`);
+    addLogLine(`ente-${appIdL}-web ${buildId} uid ${userID}`);
 };
 };
 
 
 function getLogs(): Log[] {
 function getLogs(): Log[] {

+ 0 - 17
web/packages/shared/next/pages/_error.tsx

@@ -1,17 +0,0 @@
-import * as Sentry from "@sentry/nextjs";
-import NextErrorComponent from "next/error";
-
-const CustomErrorComponent = (props) => (
-    <NextErrorComponent statusCode={props.statusCode} />
-);
-
-CustomErrorComponent.getInitialProps = async (contextData) => {
-    // In case this is running in a serverless function, await this in order to give Sentry
-    // time to send the error before the lambda exits
-    await Sentry.captureUnderscoreErrorException(contextData);
-
-    // This will contain the status code of the response
-    return NextErrorComponent.getInitialProps(contextData);
-};
-
-export default CustomErrorComponent;

+ 0 - 1
web/packages/shared/package.json

@@ -5,7 +5,6 @@
     "dependencies": {
     "dependencies": {
         "@/next": "*",
         "@/next": "*",
         "@ente/eslint-config": "*",
         "@ente/eslint-config": "*",
-        "@sentry/nextjs": "7.77.0",
         "axios": "^1.6.7"
         "axios": "^1.6.7"
     }
     }
 }
 }

+ 0 - 38
web/packages/shared/sentry/config/sentry.config.base.ts

@@ -1,38 +0,0 @@
-import { isDevBuild } from "@/utils/env";
-import { runningInBrowser } from "@ente/shared/platform";
-import { getSentryUserID } from "@ente/shared/sentry/utils";
-import { getHasOptedOutOfCrashReports } from "@ente/shared/storage/localStorage/helpers";
-import * as Sentry from "@sentry/nextjs";
-
-export const initSentry = async (dsn: string) => {
-    // Don't initialize Sentry for dev builds
-    if (isDevBuild) return;
-
-    // Don't initialize Sentry if the user has opted out of crash reporting
-    if (optedOut()) return;
-
-    Sentry.init({
-        dsn,
-        release: process.env.GIT_SHA,
-        attachStacktrace: true,
-        autoSessionTracking: false,
-        tunnel: "https://sentry-reporter.ente.io",
-        beforeSend(event) {
-            event.request = event.request || {};
-            const currentURL = new URL(document.location.href);
-            currentURL.hash = "";
-            event.request.url = currentURL.href;
-            return event;
-        },
-        integrations: function (i) {
-            return i.filter(function (i) {
-                return i.name !== "Breadcrumbs";
-            });
-        },
-    });
-
-    Sentry.setUser({ id: await getSentryUserID() });
-};
-
-/** Return true if the user has opted out of crash reporting */
-const optedOut = () => runningInBrowser() && getHasOptedOutOfCrashReports();

+ 10 - 42
web/packages/shared/sentry/index.ts

@@ -1,59 +1,27 @@
-import { ApiError, errorWithContext } from "@ente/shared/error";
-import { addLocalLog, addLogLine } from "@ente/shared/logging";
-import {
-    getSentryUserID,
-    isErrorUnnecessaryForSentry,
-} from "@ente/shared/sentry/utils";
-import InMemoryStore, { MS_KEYS } from "@ente/shared/storage/InMemoryStore";
-import { getHasOptedOutOfCrashReports } from "@ente/shared/storage/localStorage/helpers";
-import * as Sentry from "@sentry/nextjs";
+import { ApiError } from "@ente/shared/error";
+import { addLogLine } from "@ente/shared/logging";
 
 
+/** Deprecated: Use `logError` from `@/utils/logging` */
 export const logError = async (
 export const logError = async (
     error: any,
     error: any,
     msg: string,
     msg: string,
     info?: Record<string, unknown>,
     info?: Record<string, unknown>,
     skipAddLogLine = false,
     skipAddLogLine = false,
 ) => {
 ) => {
-    const err = errorWithContext(error, msg);
-    if (!skipAddLogLine) {
-        if (error instanceof ApiError) {
-            addLogLine(`error: ${error?.name} ${error?.message} 
+    if (skipAddLogLine) return;
+
+    if (error instanceof ApiError) {
+        addLogLine(`error: ${error?.name} ${error?.message}
             msg: ${msg} errorCode: ${JSON.stringify(error?.errCode)}
             msg: ${msg} errorCode: ${JSON.stringify(error?.errCode)}
             httpStatusCode: ${JSON.stringify(error?.httpStatusCode)} ${
             httpStatusCode: ${JSON.stringify(error?.httpStatusCode)} ${
                 info ? `info: ${JSON.stringify(info)}` : ""
                 info ? `info: ${JSON.stringify(info)}` : ""
             }
             }
             ${error?.stack}`);
             ${error?.stack}`);
-        } else {
-            addLogLine(
-                `error: ${error?.name} ${error?.message} 
+    } else {
+        addLogLine(
+            `error: ${error?.name} ${error?.message}
                 msg: ${msg} ${info ? `info: ${JSON.stringify(info)}` : ""}
                 msg: ${msg} ${info ? `info: ${JSON.stringify(info)}` : ""}
                 ${error?.stack}`,
                 ${error?.stack}`,
-            );
-        }
-    }
-    if (!InMemoryStore.has(MS_KEYS.OPT_OUT_OF_CRASH_REPORTS)) {
-        const optedOutOfCrashReports = getHasOptedOutOfCrashReports();
-        InMemoryStore.set(
-            MS_KEYS.OPT_OUT_OF_CRASH_REPORTS,
-            optedOutOfCrashReports,
         );
         );
     }
     }
-    if (InMemoryStore.get(MS_KEYS.OPT_OUT_OF_CRASH_REPORTS)) {
-        addLocalLog(() => `skipping sentry error: ${error?.name}`);
-        return;
-    }
-    if (isErrorUnnecessaryForSentry(error)) {
-        return;
-    }
-
-    Sentry.captureException(err, {
-        level: "info",
-        user: { id: await getSentryUserID() },
-        contexts: {
-            ...(info && {
-                info: info,
-            }),
-            rootCause: { message: error?.message, completeError: error },
-        },
-    });
 };
 };

+ 0 - 46
web/packages/shared/sentry/utils.ts

@@ -1,46 +0,0 @@
-import { WorkerSafeElectronService } from "@ente/shared/electron/service";
-import {
-    getLocalSentryUserID,
-    setLocalSentryUserID,
-} from "@ente/shared/storage/localStorage/helpers";
-import { HttpStatusCode } from "axios";
-import isElectron from "is-electron";
-import { ApiError } from "../error";
-
-export async function getSentryUserID() {
-    if (isElectron()) {
-        return await WorkerSafeElectronService.getSentryUserID();
-    } else {
-        let anonymizeUserID = getLocalSentryUserID();
-        if (!anonymizeUserID) {
-            anonymizeUserID = makeID(6);
-            setLocalSentryUserID(anonymizeUserID);
-        }
-        return anonymizeUserID;
-    }
-}
-
-function makeID(length) {
-    let result = "";
-    const characters =
-        "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
-    const charactersLength = characters.length;
-    for (let i = 0; i < length; i++) {
-        result += characters.charAt(
-            Math.floor(Math.random() * charactersLength),
-        );
-    }
-    return result;
-}
-
-export function isErrorUnnecessaryForSentry(error: any) {
-    if (error?.message?.includes("Network Error")) {
-        return true;
-    } else if (
-        error instanceof ApiError &&
-        error.httpStatusCode === HttpStatusCode.Unauthorized
-    ) {
-        return true;
-    }
-    return false;
-}

+ 0 - 1
web/packages/shared/storage/InMemoryStore.ts

@@ -1,5 +1,4 @@
 export enum MS_KEYS {
 export enum MS_KEYS {
-    OPT_OUT_OF_CRASH_REPORTS = "optOutOfCrashReports",
     SRP_CONFIGURE_IN_PROGRESS = "srpConfigureInProgress",
     SRP_CONFIGURE_IN_PROGRESS = "srpConfigureInProgress",
     REDIRECT_URL = "redirectUrl",
     REDIRECT_URL = "redirectUrl",
 }
 }

+ 0 - 12
web/packages/shared/storage/localStorage/helpers.ts

@@ -37,18 +37,6 @@ export function setLocalMapEnabled(value: boolean) {
     setData(LS_KEYS.MAP_ENABLED, { value });
     setData(LS_KEYS.MAP_ENABLED, { value });
 }
 }
 
 
-export function getHasOptedOutOfCrashReports(): boolean {
-    return getData(LS_KEYS.OPT_OUT_OF_CRASH_REPORTS)?.value ?? false;
-}
-
-export function getLocalSentryUserID() {
-    return getData(LS_KEYS.AnonymizedUserID)?.id;
-}
-
-export function setLocalSentryUserID(id: string) {
-    setData(LS_KEYS.AnonymizedUserID, { id });
-}
-
 export function getLocalReferralSource() {
 export function getLocalReferralSource() {
     return getData(LS_KEYS.REFERRAL_SOURCE)?.source;
     return getData(LS_KEYS.REFERRAL_SOURCE)?.source;
 }
 }

+ 0 - 2
web/packages/shared/storage/localStorage/index.ts

@@ -12,7 +12,6 @@ export enum LS_KEYS {
     JUST_SIGNED_UP = "justSignedUp",
     JUST_SIGNED_UP = "justSignedUp",
     SHOW_BACK_BUTTON = "showBackButton",
     SHOW_BACK_BUTTON = "showBackButton",
     EXPORT = "export",
     EXPORT = "export",
-    AnonymizedUserID = "anonymizedUserID",
     THUMBNAIL_FIX_STATE = "thumbnailFixState",
     THUMBNAIL_FIX_STATE = "thumbnailFixState",
     LIVE_PHOTO_INFO_SHOWN_COUNT = "livePhotoInfoShownCount",
     LIVE_PHOTO_INFO_SHOWN_COUNT = "livePhotoInfoShownCount",
     LOGS = "logs",
     LOGS = "logs",
@@ -26,7 +25,6 @@ export enum LS_KEYS {
     MAP_ENABLED = "mapEnabled",
     MAP_ENABLED = "mapEnabled",
     SRP_SETUP_ATTRIBUTES = "srpSetupAttributes",
     SRP_SETUP_ATTRIBUTES = "srpSetupAttributes",
     SRP_ATTRIBUTES = "srpAttributes",
     SRP_ATTRIBUTES = "srpAttributes",
-    OPT_OUT_OF_CRASH_REPORTS = "optOutOfCrashReports",
     CF_PROXY_DISABLED = "cfProxyDisabled",
     CF_PROXY_DISABLED = "cfProxyDisabled",
     REFERRAL_SOURCE = "referralSource",
     REFERRAL_SOURCE = "referralSource",
     CLIENT_PACKAGE = "clientPackage",
     CLIENT_PACKAGE = "clientPackage",

+ 3 - 1
web/packages/utils/logging.ts

@@ -17,7 +17,7 @@
  *
  *
  * TODO (MR): Currently this is a placeholder function to funnel error logs
  * TODO (MR): Currently this is a placeholder function to funnel error logs
  * through. This needs to do what the existing logError in @ente/shared does,
  * through. This needs to do what the existing logError in @ente/shared does,
- * but it cannot have a direct Electron/Sentry dependency here. For now, we just
+ * but it cannot have a direct Electron dependency here. For now, we just
  * log on the console.
  * log on the console.
  */
  */
 export const logError = (message: string, e?: unknown) => {
 export const logError = (message: string, e?: unknown) => {
@@ -35,5 +35,7 @@ export const logError = (message: string, e?: unknown) => {
         // For the rest rare cases, use the default string serialization of e.
         // For the rest rare cases, use the default string serialization of e.
         es = String(e);
         es = String(e);
     }
     }
+
+    // TODO(MR): Use addLogLine
     console.error(`${message}: ${es}`);
     console.error(`${message}: ${es}`);
 };
 };

+ 12 - 273
web/yarn.lock

@@ -302,11 +302,6 @@
     wrap-ansi "^8.1.0"
     wrap-ansi "^8.1.0"
     wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
     wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
 
 
-"@jridgewell/sourcemap-codec@^1.4.13":
-  version "1.4.15"
-  resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
-  integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
-
 "@mui/base@5.0.0-beta.36":
 "@mui/base@5.0.0-beta.36":
   version "5.0.0-beta.36"
   version "5.0.0-beta.36"
   resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.36.tgz#29ca2de9d387f6d3943b6f18a84415c43e5f206c"
   resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.36.tgz#29ca2de9d387f6d3943b6f18a84415c43e5f206c"
@@ -538,161 +533,11 @@
   dependencies:
   dependencies:
     dequal "^2.0.3"
     dequal "^2.0.3"
 
 
-"@rollup/plugin-commonjs@24.0.0":
-  version "24.0.0"
-  resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.0.tgz#fb7cf4a6029f07ec42b25daa535c75b05a43f75c"
-  integrity sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==
-  dependencies:
-    "@rollup/pluginutils" "^5.0.1"
-    commondir "^1.0.1"
-    estree-walker "^2.0.2"
-    glob "^8.0.3"
-    is-reference "1.2.1"
-    magic-string "^0.27.0"
-
-"@rollup/pluginutils@^5.0.1":
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0"
-  integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==
-  dependencies:
-    "@types/estree" "^1.0.0"
-    estree-walker "^2.0.2"
-    picomatch "^2.3.1"
-
 "@rushstack/eslint-patch@^1.3.3":
 "@rushstack/eslint-patch@^1.3.3":
   version "1.7.2"
   version "1.7.2"
   resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz#2d4260033e199b3032a08b41348ac10de21c47e9"
   resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz#2d4260033e199b3032a08b41348ac10de21c47e9"
   integrity sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==
   integrity sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==
 
 
-"@sentry-internal/tracing@7.77.0":
-  version "7.77.0"
-  resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.77.0.tgz#f3d82486f8934a955b3dd2aa54c8d29586e42a37"
-  integrity sha512-8HRF1rdqWwtINqGEdx8Iqs9UOP/n8E0vXUu3Nmbqj4p5sQPA7vvCfq+4Y4rTqZFc7sNdFpDsRION5iQEh8zfZw==
-  dependencies:
-    "@sentry/core" "7.77.0"
-    "@sentry/types" "7.77.0"
-    "@sentry/utils" "7.77.0"
-
-"@sentry/browser@7.77.0":
-  version "7.77.0"
-  resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.77.0.tgz#155440f1a0d3a1bbd5d564c28d6b0c9853a51d72"
-  integrity sha512-nJ2KDZD90H8jcPx9BysQLiQW+w7k7kISCWeRjrEMJzjtge32dmHA8G4stlUTRIQugy5F+73cOayWShceFP7QJQ==
-  dependencies:
-    "@sentry-internal/tracing" "7.77.0"
-    "@sentry/core" "7.77.0"
-    "@sentry/replay" "7.77.0"
-    "@sentry/types" "7.77.0"
-    "@sentry/utils" "7.77.0"
-
-"@sentry/cli@1.75.0", "@sentry/cli@^1.74.6":
-  version "1.75.0"
-  resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.75.0.tgz#4a5e71b5619cd4e9e6238cc77857c66f6b38d86a"
-  integrity sha512-vT8NurHy00GcN8dNqur4CMIYvFH3PaKdkX3qllVvi4syybKqjwoz+aWRCvprbYv0knweneFkLt1SmBWqazUMfA==
-  dependencies:
-    https-proxy-agent "^5.0.0"
-    mkdirp "^0.5.5"
-    node-fetch "^2.6.7"
-    progress "^2.0.3"
-    proxy-from-env "^1.1.0"
-    which "^2.0.2"
-
-"@sentry/core@7.77.0":
-  version "7.77.0"
-  resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.77.0.tgz#21100843132beeeff42296c8370cdcc7aa1d8510"
-  integrity sha512-Tj8oTYFZ/ZD+xW8IGIsU6gcFXD/gfE+FUxUaeSosd9KHwBQNOLhZSsYo/tTVf/rnQI/dQnsd4onPZLiL+27aTg==
-  dependencies:
-    "@sentry/types" "7.77.0"
-    "@sentry/utils" "7.77.0"
-
-"@sentry/integrations@7.77.0":
-  version "7.77.0"
-  resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.77.0.tgz#f2717e05cb7c69363316ccd34096b2ea07ae4c59"
-  integrity sha512-P055qXgBHeZNKnnVEs5eZYLdy6P49Zr77A1aWJuNih/EenzMy922GOeGy2mF6XYrn1YJSjEwsNMNsQkcvMTK8Q==
-  dependencies:
-    "@sentry/core" "7.77.0"
-    "@sentry/types" "7.77.0"
-    "@sentry/utils" "7.77.0"
-    localforage "^1.8.1"
-
-"@sentry/nextjs@7.77.0":
-  version "7.77.0"
-  resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-7.77.0.tgz#036b1c45dd106e01d44967c97985464e108922be"
-  integrity sha512-8tYPBt5luFjrng1sAMJqNjM9sq80q0jbt6yariADU9hEr7Zk8YqFaOI2/Q6yn9dZ6XyytIRtLEo54kk2AO94xw==
-  dependencies:
-    "@rollup/plugin-commonjs" "24.0.0"
-    "@sentry/core" "7.77.0"
-    "@sentry/integrations" "7.77.0"
-    "@sentry/node" "7.77.0"
-    "@sentry/react" "7.77.0"
-    "@sentry/types" "7.77.0"
-    "@sentry/utils" "7.77.0"
-    "@sentry/vercel-edge" "7.77.0"
-    "@sentry/webpack-plugin" "1.20.0"
-    chalk "3.0.0"
-    resolve "1.22.8"
-    rollup "2.78.0"
-    stacktrace-parser "^0.1.10"
-
-"@sentry/node@7.77.0":
-  version "7.77.0"
-  resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.77.0.tgz#a247452779a5bcb55724457707286e3e4a29dbbe"
-  integrity sha512-Ob5tgaJOj0OYMwnocc6G/CDLWC7hXfVvKX/ofkF98+BbN/tQa5poL+OwgFn9BA8ud8xKzyGPxGU6LdZ8Oh3z/g==
-  dependencies:
-    "@sentry-internal/tracing" "7.77.0"
-    "@sentry/core" "7.77.0"
-    "@sentry/types" "7.77.0"
-    "@sentry/utils" "7.77.0"
-    https-proxy-agent "^5.0.0"
-
-"@sentry/react@7.77.0":
-  version "7.77.0"
-  resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.77.0.tgz#9da14e4b21eae4b5a6306d39bb7c42ef0827d2c2"
-  integrity sha512-Q+htKzib5em0MdaQZMmPomaswaU3xhcVqmLi2CxqQypSjbYgBPPd+DuhrXKoWYLDDkkbY2uyfe4Lp3yLRWeXYw==
-  dependencies:
-    "@sentry/browser" "7.77.0"
-    "@sentry/types" "7.77.0"
-    "@sentry/utils" "7.77.0"
-    hoist-non-react-statics "^3.3.2"
-
-"@sentry/replay@7.77.0":
-  version "7.77.0"
-  resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.77.0.tgz#21d242c9cd70a7235237216174873fd140b6eb80"
-  integrity sha512-M9Ik2J5ekl+C1Och3wzLRZVaRGK33BlnBwfwf3qKjgLDwfKW+1YkwDfTHbc2b74RowkJbOVNcp4m8ptlehlSaQ==
-  dependencies:
-    "@sentry-internal/tracing" "7.77.0"
-    "@sentry/core" "7.77.0"
-    "@sentry/types" "7.77.0"
-    "@sentry/utils" "7.77.0"
-
-"@sentry/types@7.77.0":
-  version "7.77.0"
-  resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.77.0.tgz#c5d00fe547b89ccde59cdea59143bf145cee3144"
-  integrity sha512-nfb00XRJVi0QpDHg+JkqrmEBHsqBnxJu191Ded+Cs1OJ5oPXEW6F59LVcBScGvMqe+WEk1a73eH8XezwfgrTsA==
-
-"@sentry/utils@7.77.0":
-  version "7.77.0"
-  resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.77.0.tgz#1f88501f0b8777de31b371cf859d13c82ebe1379"
-  integrity sha512-NmM2kDOqVchrey3N5WSzdQoCsyDkQkiRxExPaNI2oKQ/jMWHs9yt0tSy7otPBcXs0AP59ihl75Bvm1tDRcsp5g==
-  dependencies:
-    "@sentry/types" "7.77.0"
-
-"@sentry/vercel-edge@7.77.0":
-  version "7.77.0"
-  resolved "https://registry.yarnpkg.com/@sentry/vercel-edge/-/vercel-edge-7.77.0.tgz#6a90a869878e4e78803c4331c30aea841fcc6a73"
-  integrity sha512-ffddPCgxVeAccPYuH5sooZeHBqDuJ9OIhIRYKoDi4TvmwAzWo58zzZWhRpkHqHgIQdQvhLVZ5F+FSQVWnYSOkw==
-  dependencies:
-    "@sentry/core" "7.77.0"
-    "@sentry/types" "7.77.0"
-    "@sentry/utils" "7.77.0"
-
-"@sentry/webpack-plugin@1.20.0":
-  version "1.20.0"
-  resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-1.20.0.tgz#e7add76122708fb6b4ee7951294b521019720e58"
-  integrity sha512-Ssj1mJVFsfU6vMCOM2d+h+KQR7QHSfeIP16t4l20Uq/neqWXZUQ2yvQfe4S3BjdbJXz/X4Rw8Hfy1Sd0ocunYw==
-  dependencies:
-    "@sentry/cli" "^1.74.6"
-    webpack-sources "^2.0.0 || ^3.0.0"
-
 "@stripe/stripe-js@^1.13.2":
 "@stripe/stripe-js@^1.13.2":
   version "1.54.2"
   version "1.54.2"
   resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-1.54.2.tgz#0665848e22cbda936cfd05256facdfbba121438d"
   resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-1.54.2.tgz#0665848e22cbda936cfd05256facdfbba121438d"
@@ -764,11 +609,6 @@
     "@types/node" "*"
     "@types/node" "*"
     base-x "^3.0.6"
     base-x "^3.0.6"
 
 
-"@types/estree@*", "@types/estree@^1.0.0":
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
-  integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
-
 "@types/geojson@*":
 "@types/geojson@*":
   version "7946.0.14"
   version "7946.0.14"
   resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.14.tgz#319b63ad6df705ee2a65a73ef042c8271e696613"
   resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.14.tgz#319b63ad6df705ee2a65a73ef042c8271e696613"
@@ -1127,13 +967,6 @@ acorn@^8.0.4, acorn@^8.9.0:
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
   integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
   integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
 
 
-agent-base@6:
-  version "6.0.2"
-  resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
-  integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
-  dependencies:
-    debug "4"
-
 ajv@^6.12.4:
 ajv@^6.12.4:
   version "6.12.6"
   version "6.12.6"
   resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
   resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
@@ -1444,14 +1277,6 @@ caniuse-lite@^1.0.30001579:
   resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz#7ad6dba4c9bf6561aec8291976402339dc157dfb"
   resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz#7ad6dba4c9bf6561aec8291976402339dc157dfb"
   integrity sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==
   integrity sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==
 
 
-chalk@3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
-  integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
-  dependencies:
-    ansi-styles "^4.1.0"
-    supports-color "^7.1.0"
-
 chalk@^2.4.2:
 chalk@^2.4.2:
   version "2.4.2"
   version "2.4.2"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
@@ -1552,11 +1377,6 @@ commander@^7.2.0:
   resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
   resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
   integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
   integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
 
 
-commondir@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
-  integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
-
 concat-map@0.0.1:
 concat-map@0.0.1:
   version "0.0.1"
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -1631,13 +1451,6 @@ debounce@^2.0.0:
   resolved "https://registry.yarnpkg.com/debounce/-/debounce-2.0.0.tgz#b2f914518a1481466f4edaee0b063e4d473ad549"
   resolved "https://registry.yarnpkg.com/debounce/-/debounce-2.0.0.tgz#b2f914518a1481466f4edaee0b063e4d473ad549"
   integrity sha512-xRetU6gL1VJbs85Mc4FoEGSjQxzpdxRyFhe3lmWFyy2EzydIcD4xzUvRJMD+NPDfMwKNhxa3PvsIOU32luIWeA==
   integrity sha512-xRetU6gL1VJbs85Mc4FoEGSjQxzpdxRyFhe3lmWFyy2EzydIcD4xzUvRJMD+NPDfMwKNhxa3PvsIOU32luIWeA==
 
 
-debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
-  version "4.3.4"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
-  integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
-  dependencies:
-    ms "2.1.2"
-
 debug@^3.2.7:
 debug@^3.2.7:
   version "3.2.7"
   version "3.2.7"
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
@@ -1645,6 +1458,13 @@ debug@^3.2.7:
   dependencies:
   dependencies:
     ms "^2.1.1"
     ms "^2.1.1"
 
 
+debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
+  version "4.3.4"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+  integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+  dependencies:
+    ms "2.1.2"
+
 deep-is@^0.1.3:
 deep-is@^0.1.3:
   version "0.1.4"
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
   resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
@@ -2100,11 +1920,6 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
   integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
   integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
 
 
-estree-walker@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
-  integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
-
 esutils@^2.0.2:
 esutils@^2.0.2:
   version "2.0.3"
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
   resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@@ -2382,17 +2197,6 @@ glob@^7.1.3:
     once "^1.3.0"
     once "^1.3.0"
     path-is-absolute "^1.0.0"
     path-is-absolute "^1.0.0"
 
 
-glob@^8.0.3:
-  version "8.1.0"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
-  integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
-  dependencies:
-    fs.realpath "^1.0.0"
-    inflight "^1.0.4"
-    inherits "2"
-    minimatch "^5.0.1"
-    once "^1.3.0"
-
 globals@^13.19.0:
 globals@^13.19.0:
   version "13.24.0"
   version "13.24.0"
   resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
   resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
@@ -2523,7 +2327,7 @@ heic-decode@^2.0.0:
   dependencies:
   dependencies:
     libheif-js "^1.17.1"
     libheif-js "^1.17.1"
 
 
-hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2:
+hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1:
   version "3.3.2"
   version "3.3.2"
   resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
   resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
   integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
   integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
@@ -2553,14 +2357,6 @@ html-tokenize@^2.0.0:
     readable-stream "~1.0.27-1"
     readable-stream "~1.0.27-1"
     through2 "~0.4.1"
     through2 "~0.4.1"
 
 
-https-proxy-agent@^5.0.0:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
-  integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
-  dependencies:
-    agent-base "6"
-    debug "4"
-
 i18next-http-backend@^2.5:
 i18next-http-backend@^2.5:
   version "2.5.0"
   version "2.5.0"
   resolved "https://registry.yarnpkg.com/i18next-http-backend/-/i18next-http-backend-2.5.0.tgz#8396a7df30bfe722eff7a65f629df32a61720414"
   resolved "https://registry.yarnpkg.com/i18next-http-backend/-/i18next-http-backend-2.5.0.tgz#8396a7df30bfe722eff7a65f629df32a61720414"
@@ -2781,13 +2577,6 @@ is-plain-object@^5.0.0:
   resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
   resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
   integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
   integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
 
 
-is-reference@1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
-  integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==
-  dependencies:
-    "@types/estree" "*"
-
 is-regex@^1.1.4:
 is-regex@^1.1.4:
   version "1.1.4"
   version "1.1.4"
   resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
   resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
@@ -3041,7 +2830,7 @@ lines-and-columns@^1.1.6:
   resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
   resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
   integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
   integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
 
 
-localforage@^1.8.1, localforage@^1.9.0:
+localforage@^1.9.0:
   version "1.10.0"
   version "1.10.0"
   resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4"
   resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4"
   integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==
   integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==
@@ -3099,13 +2888,6 @@ lru-cache@^6.0.0:
   resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3"
   resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3"
   integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==
   integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==
 
 
-magic-string@^0.27.0:
-  version "0.27.0"
-  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3"
-  integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==
-  dependencies:
-    "@jridgewell/sourcemap-codec" "^1.4.13"
-
 "memoize-one@>=3.1.1 <6", memoize-one@^5.0.0:
 "memoize-one@>=3.1.1 <6", memoize-one@^5.0.0:
   version "5.2.1"
   version "5.2.1"
   resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e"
   resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e"
@@ -3155,13 +2937,6 @@ minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
   dependencies:
   dependencies:
     brace-expansion "^1.1.7"
     brace-expansion "^1.1.7"
 
 
-minimatch@^5.0.1:
-  version "5.1.6"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
-  integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
-  dependencies:
-    brace-expansion "^2.0.1"
-
 minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.5:
 minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.5:
   version "1.2.8"
   version "1.2.8"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
@@ -3172,13 +2947,6 @@ minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.5:
   resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c"
   resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c"
   integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
   integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
 
 
-mkdirp@^0.5.5:
-  version "0.5.6"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
-  integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
-  dependencies:
-    minimist "^1.2.6"
-
 ml-array-max@^1.2.4:
 ml-array-max@^1.2.4:
   version "1.2.4"
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/ml-array-max/-/ml-array-max-1.2.4.tgz#2373e2b7e51c8807e456cc0ef364c5863713623b"
   resolved "https://registry.yarnpkg.com/ml-array-max/-/ml-array-max-1.2.4.tgz#2373e2b7e51c8807e456cc0ef364c5863713623b"
@@ -3266,7 +3034,7 @@ next@^14.1:
     "@next/swc-win32-ia32-msvc" "14.1.0"
     "@next/swc-win32-ia32-msvc" "14.1.0"
     "@next/swc-win32-x64-msvc" "14.1.0"
     "@next/swc-win32-x64-msvc" "14.1.0"
 
 
-node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7:
+node-fetch@^2.6.1, node-fetch@^2.6.12:
   version "2.7.0"
   version "2.7.0"
   resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
   resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
   integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
   integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
@@ -3549,11 +3317,6 @@ process-nextick-args@~2.0.0:
   resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
   resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
   integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
   integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
 
 
-progress@^2.0.3:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
-  integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
-
 prop-types-extra@^1.1.0:
 prop-types-extra@^1.1.0:
   version "1.1.1"
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.1.tgz#58c3b74cbfbb95d304625975aa2f0848329a010b"
   resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.1.tgz#58c3b74cbfbb95d304625975aa2f0848329a010b"
@@ -3852,7 +3615,7 @@ resolve-pkg-maps@^1.0.0:
   resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
   resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
   integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
   integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
 
 
-resolve@1.22.8, resolve@^1.19.0, resolve@^1.22.4:
+resolve@^1.19.0, resolve@^1.22.4:
   version "1.22.8"
   version "1.22.8"
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
   integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
   integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
@@ -3887,13 +3650,6 @@ rimraf@^3.0.2:
   dependencies:
   dependencies:
     glob "^7.1.3"
     glob "^7.1.3"
 
 
-rollup@2.78.0:
-  version "2.78.0"
-  resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.0.tgz#00995deae70c0f712ea79ad904d5f6b033209d9e"
-  integrity sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==
-  optionalDependencies:
-    fsevents "~2.3.2"
-
 run-parallel@^1.1.9:
 run-parallel@^1.1.9:
   version "1.2.0"
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
   resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
@@ -4081,13 +3837,6 @@ source-map@^0.5.7:
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
   integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
   integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
 
 
-stacktrace-parser@^0.1.10:
-  version "0.1.10"
-  resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a"
-  integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==
-  dependencies:
-    type-fest "^0.7.1"
-
 streamsearch@^1.1.0:
 streamsearch@^1.1.0:
   version "1.1.0"
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
   resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
@@ -4356,11 +4105,6 @@ type-fest@^0.20.2:
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
   integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
   integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
 
 
-type-fest@^0.7.1:
-  version "0.7.1"
-  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48"
-  integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==
-
 type-fest@^2.19.0:
 type-fest@^2.19.0:
   version "2.19.0"
   version "2.19.0"
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
@@ -4503,11 +4247,6 @@ webpack-bundle-analyzer@4.10.1:
     sirv "^2.0.3"
     sirv "^2.0.3"
     ws "^7.3.1"
     ws "^7.3.1"
 
 
-"webpack-sources@^2.0.0 || ^3.0.0":
-  version "3.2.3"
-  resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
-  integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-
 whatwg-url@^5.0.0:
 whatwg-url@^5.0.0:
   version "5.0.0"
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
   resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
@@ -4566,7 +4305,7 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.9:
     gopd "^1.0.1"
     gopd "^1.0.1"
     has-tostringtag "^1.0.1"
     has-tostringtag "^1.0.1"
 
 
-which@^2.0.1, which@^2.0.2:
+which@^2.0.1:
   version "2.0.2"
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
   resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
   integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
   integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==