[web] Remove Sentry
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.
This commit is contained in:
parent
c0a2347b80
commit
70cddfdf0b
42 changed files with 37 additions and 614 deletions
|
@ -1,3 +0,0 @@
|
|||
import { initSentry } from "@ente/shared/sentry/config/sentry.config.base";
|
||||
|
||||
initSentry("https://0f7214c7feb9b1dd2fed5db09b42fa1b@sentry.ente.io/5");
|
|
@ -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
|
|
@ -1,3 +1 @@
|
|||
const nextConfigBase = require("@/next/next.config.base.js");
|
||||
|
||||
module.exports = nextConfigBase;
|
||||
module.exports = require("@/next/next.config.base.js");
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
import { initSentry } from "@ente/shared/sentry/config/sentry.config.base";
|
||||
|
||||
initSentry("https://5d344112b570b1a368b6f5c1d0bb798b@sentry.ente.io/8");
|
|
@ -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
|
|
@ -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 +1 @@
|
|||
const nextConfigBase = require("@/next/next.config.base.js");
|
||||
|
||||
module.exports = nextConfigBase;
|
||||
module.exports = require("@/next/next.config.base.js");
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
import { initSentry } from "@ente/shared/sentry/config/sentry.config.base";
|
||||
|
||||
initSentry("https://0f7214c7feb9b1dd2fed5db09b42fa1b@sentry.ente.io/5");
|
|
@ -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
|
|
@ -1,5 +1,4 @@
|
|||
export enum MS_KEYS {
|
||||
OPT_OUT_OF_CRASH_REPORTS = "optOutOfCrashReports",
|
||||
SRP_CONFIGURE_IN_PROGRESS = "srpConfigureInProgress",
|
||||
REDIRECT_URL = "redirectUrl",
|
||||
}
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
#
|
||||
# - Logs go to the browser console (in addition to the log file)
|
||||
# - There is some additional logging
|
||||
# - Sentry is not initialized
|
||||
# - ... (search for isDevBuild to see all impacts)
|
||||
#
|
||||
# Note that even in development build, the app still connects to the production
|
||||
|
|
|
@ -1,3 +1 @@
|
|||
const nextConfigBase = require("@/next/next.config.base.js");
|
||||
|
||||
module.exports = nextConfigBase;
|
||||
module.exports = require("@/next/next.config.base.js");
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
import { initSentry } from "@ente/shared/sentry/config/sentry.config.base";
|
||||
|
||||
initSentry("https://0f7214c7feb9b1dd2fed5db09b42fa1b@sentry.ente.io/5");
|
|
@ -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
|
|
@ -1,17 +1,10 @@
|
|||
import ChevronRight from "@mui/icons-material/ChevronRight";
|
||||
import { Box, DialogProps, Stack } from "@mui/material";
|
||||
import { EnteDrawer } from "components/EnteDrawer";
|
||||
import { EnteMenuItem } from "components/Menu/EnteMenuItem";
|
||||
import Titlebar from "components/Titlebar";
|
||||
import { t } from "i18next";
|
||||
import isElectron from "is-electron";
|
||||
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 MapSettings from "../MapSetting";
|
||||
import { LanguageSelector } from "./LanguageSelector";
|
||||
|
@ -19,10 +12,6 @@ import { LanguageSelector } from "./LanguageSelector";
|
|||
export default function Preferences({ open, onClose, onRootClose }) {
|
||||
const [advancedSettingsView, setAdvancedSettingsView] = useState(false);
|
||||
const [mapSettingsView, setMapSettingsView] = useState(false);
|
||||
const [optOutOfCrashReports, setOptOutOfCrashReports] = useLocalState(
|
||||
LS_KEYS.OPT_OUT_OF_CRASH_REPORTS,
|
||||
false,
|
||||
);
|
||||
|
||||
const openAdvancedSettings = () => setAdvancedSettingsView(true);
|
||||
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 (
|
||||
<EnteDrawer
|
||||
transitionDuration={0}
|
||||
|
@ -78,13 +50,6 @@ export default function Preferences({ open, onClose, onRootClose }) {
|
|||
<Box px={"8px"}>
|
||||
<Stack py="20px" spacing="24px">
|
||||
<LanguageSelector />
|
||||
<EnteMenuItem
|
||||
variant="toggle"
|
||||
checked={!optOutOfCrashReports}
|
||||
onClick={toggleOptOutOfCrashReports}
|
||||
label={t("CRASH_REPORTING")}
|
||||
/>
|
||||
|
||||
<EnteMenuItem
|
||||
onClick={openMapSettings}
|
||||
endIcon={<ChevronRight />}
|
||||
|
|
|
@ -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,4 +1,4 @@
|
|||
import { CustomError, errorWithContext } from "@ente/shared/error";
|
||||
import { CustomError } from "@ente/shared/error";
|
||||
import { addLogLine } from "@ente/shared/logging";
|
||||
import { getFileNameSize } from "@ente/shared/logging/web";
|
||||
import { logError } from "@ente/shared/sentry";
|
||||
|
@ -145,10 +145,9 @@ export async function generateImageThumbnailUsingCanvas(
|
|||
clearTimeout(timeout);
|
||||
resolve(null);
|
||||
} catch (e) {
|
||||
const err = errorWithContext(
|
||||
e,
|
||||
`${CustomError.THUMBNAIL_GENERATION_FAILED} err: ${e}`,
|
||||
);
|
||||
const err = new Error(CustomError.THUMBNAIL_GENERATION_FAILED, {
|
||||
cause: e,
|
||||
});
|
||||
reject(err);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
"lint-fix": "yarn prettier --write . && yarn workspaces run eslint --fix ."
|
||||
},
|
||||
"resolutions": {
|
||||
"@sentry/cli": "1.75.0",
|
||||
"libsodium": "0.7.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
* https://nextjs.org/docs/pages/api-reference/next-config-js
|
||||
*/
|
||||
|
||||
const { withSentryConfig } = require("@sentry/nextjs");
|
||||
const cp = require("child_process");
|
||||
|
||||
const gitSHA = cp
|
||||
|
@ -21,8 +20,7 @@ const gitSHA = cp
|
|||
.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}
|
||||
*/
|
||||
|
@ -54,33 +52,6 @@ const nextConfig = {
|
|||
}
|
||||
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;
|
||||
|
|
|
@ -12,11 +12,7 @@ import { deserializeToResponse, serializeResponse } from "./worker/utils/proxy";
|
|||
export interface LimitedElectronAPIs
|
||||
extends Pick<
|
||||
ElectronAPIsType,
|
||||
| "openDiskCache"
|
||||
| "deleteDiskCache"
|
||||
| "getSentryUserID"
|
||||
| "convertToJPEG"
|
||||
| "logToDisk"
|
||||
"openDiskCache" | "deleteDiskCache" | "convertToJPEG" | "logToDisk"
|
||||
> {}
|
||||
|
||||
class WorkerSafeElectronServiceImpl implements LimitedElectronAPIs {
|
||||
|
@ -56,10 +52,6 @@ class WorkerSafeElectronServiceImpl implements LimitedElectronAPIs {
|
|||
return await this.proxiedElectron.deleteDiskCache(cacheName);
|
||||
}
|
||||
|
||||
async getSentryUserID() {
|
||||
await this.ready;
|
||||
return this.proxiedElectron.getSentryUserID();
|
||||
}
|
||||
async convertToJPEG(
|
||||
inputFileData: Uint8Array,
|
||||
filename: string,
|
||||
|
|
|
@ -80,7 +80,6 @@ export interface ElectronAPIsType {
|
|||
) => void;
|
||||
updateAndRestart: () => void;
|
||||
skipAppUpdate: (version: string) => void;
|
||||
getSentryUserID: () => Promise<string>;
|
||||
getAppVersion: () => Promise<string>;
|
||||
runFFmpegCmd: (
|
||||
cmd: string[],
|
||||
|
|
|
@ -9,7 +9,6 @@ export interface ProxiedLimitedElectronAPIs {
|
|||
cacheLimitInBytes?: number,
|
||||
) => Promise<ProxiedWorkerLimitedCache>;
|
||||
deleteDiskCache: (cacheName: string) => Promise<boolean>;
|
||||
getSentryUserID: () => Promise<string>;
|
||||
convertToJPEG: (
|
||||
inputFileData: Uint8Array,
|
||||
filename: string,
|
||||
|
@ -42,10 +41,6 @@ export class WorkerSafeElectronClient implements ProxiedLimitedElectronAPIs {
|
|||
return await ElectronAPIs.deleteDiskCache(cacheName);
|
||||
}
|
||||
|
||||
async getSentryUserID() {
|
||||
return await ElectronAPIs.getSentryUserID();
|
||||
}
|
||||
|
||||
async convertToJPEG(
|
||||
inputFileData: Uint8Array,
|
||||
filename: string,
|
||||
|
|
|
@ -109,15 +109,6 @@ export function handleUploadError(error: any): Error {
|
|||
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) {
|
||||
let parsedMessage = null;
|
||||
if (error instanceof ApiError) {
|
||||
|
|
|
@ -7,7 +7,6 @@ import {
|
|||
setData,
|
||||
} from "@ente/shared/storage/localStorage";
|
||||
import { addLogLine } from ".";
|
||||
import { getSentryUserID } from "../sentry/utils";
|
||||
import { formatDateTimeShort } from "../time/format";
|
||||
import { ElectronFile } from "../upload/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.
|
||||
const appIdL = appId.toLowerCase();
|
||||
const userID = (getData(LS_KEYS.USER) as User)?.id;
|
||||
const sentryID = await getSentryUserID();
|
||||
const buildId = isDevBuild ? "dev" : `git ${process.env.GIT_SHA}`;
|
||||
|
||||
addLogLine(`ente-${appIdL}-web ${buildId} uid ${userID} sid ${sentryID}`);
|
||||
addLogLine(`ente-${appIdL} ${buildId} uid ${userID}`);
|
||||
};
|
||||
|
||||
function getLogs(): Log[] {
|
||||
|
|
|
@ -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;
|
|
@ -5,7 +5,6 @@
|
|||
"dependencies": {
|
||||
"@/next": "*",
|
||||
"@ente/eslint-config": "*",
|
||||
"@sentry/nextjs": "7.77.0",
|
||||
"axios": "^1.6.7"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
|
@ -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 (
|
||||
error: any,
|
||||
msg: string,
|
||||
info?: Record<string, unknown>,
|
||||
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)}
|
||||
httpStatusCode: ${JSON.stringify(error?.httpStatusCode)} ${
|
||||
info ? `info: ${JSON.stringify(info)}` : ""
|
||||
}
|
||||
${error?.stack}`);
|
||||
} else {
|
||||
addLogLine(
|
||||
`error: ${error?.name} ${error?.message}
|
||||
} else {
|
||||
addLogLine(
|
||||
`error: ${error?.name} ${error?.message}
|
||||
msg: ${msg} ${info ? `info: ${JSON.stringify(info)}` : ""}
|
||||
${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 },
|
||||
},
|
||||
});
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -1,5 +1,4 @@
|
|||
export enum MS_KEYS {
|
||||
OPT_OUT_OF_CRASH_REPORTS = "optOutOfCrashReports",
|
||||
SRP_CONFIGURE_IN_PROGRESS = "srpConfigureInProgress",
|
||||
REDIRECT_URL = "redirectUrl",
|
||||
}
|
||||
|
|
|
@ -37,18 +37,6 @@ export function setLocalMapEnabled(value: boolean) {
|
|||
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() {
|
||||
return getData(LS_KEYS.REFERRAL_SOURCE)?.source;
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@ export enum LS_KEYS {
|
|||
JUST_SIGNED_UP = "justSignedUp",
|
||||
SHOW_BACK_BUTTON = "showBackButton",
|
||||
EXPORT = "export",
|
||||
AnonymizedUserID = "anonymizedUserID",
|
||||
THUMBNAIL_FIX_STATE = "thumbnailFixState",
|
||||
LIVE_PHOTO_INFO_SHOWN_COUNT = "livePhotoInfoShownCount",
|
||||
LOGS = "logs",
|
||||
|
@ -26,7 +25,6 @@ export enum LS_KEYS {
|
|||
MAP_ENABLED = "mapEnabled",
|
||||
SRP_SETUP_ATTRIBUTES = "srpSetupAttributes",
|
||||
SRP_ATTRIBUTES = "srpAttributes",
|
||||
OPT_OUT_OF_CRASH_REPORTS = "optOutOfCrashReports",
|
||||
CF_PROXY_DISABLED = "cfProxyDisabled",
|
||||
REFERRAL_SOURCE = "referralSource",
|
||||
CLIENT_PACKAGE = "clientPackage",
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
*
|
||||
* 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,
|
||||
* 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.
|
||||
*/
|
||||
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.
|
||||
es = String(e);
|
||||
}
|
||||
|
||||
// TODO(MR): Use addLogLine
|
||||
console.error(`${message}: ${es}`);
|
||||
};
|
||||
|
|
285
web/yarn.lock
285
web/yarn.lock
|
@ -302,11 +302,6 @@
|
|||
wrap-ansi "^8.1.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":
|
||||
version "5.0.0-beta.36"
|
||||
resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.36.tgz#29ca2de9d387f6d3943b6f18a84415c43e5f206c"
|
||||
|
@ -538,161 +533,11 @@
|
|||
dependencies:
|
||||
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":
|
||||
version "1.7.2"
|
||||
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz#2d4260033e199b3032a08b41348ac10de21c47e9"
|
||||
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":
|
||||
version "1.54.2"
|
||||
resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-1.54.2.tgz#0665848e22cbda936cfd05256facdfbba121438d"
|
||||
|
@ -764,11 +609,6 @@
|
|||
"@types/node" "*"
|
||||
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@*":
|
||||
version "7946.0.14"
|
||||
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"
|
||||
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:
|
||||
version "6.12.6"
|
||||
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"
|
||||
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:
|
||||
version "2.4.2"
|
||||
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"
|
||||
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:
|
||||
version "0.0.1"
|
||||
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"
|
||||
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:
|
||||
version "3.2.7"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
|
||||
|
@ -1645,6 +1458,13 @@ debug@^3.2.7:
|
|||
dependencies:
|
||||
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:
|
||||
version "0.1.4"
|
||||
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"
|
||||
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:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
|
||||
|
@ -2382,17 +2197,6 @@ glob@^7.1.3:
|
|||
once "^1.3.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:
|
||||
version "13.24.0"
|
||||
resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
|
||||
|
@ -2523,7 +2327,7 @@ heic-decode@^2.0.0:
|
|||
dependencies:
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
|
||||
integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
|
||||
|
@ -2553,14 +2357,6 @@ html-tokenize@^2.0.0:
|
|||
readable-stream "~1.0.27-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:
|
||||
version "2.5.0"
|
||||
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"
|
||||
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:
|
||||
version "1.1.4"
|
||||
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"
|
||||
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
|
||||
|
||||
localforage@^1.8.1, localforage@^1.9.0:
|
||||
localforage@^1.9.0:
|
||||
version "1.10.0"
|
||||
resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4"
|
||||
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"
|
||||
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:
|
||||
version "5.2.1"
|
||||
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:
|
||||
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:
|
||||
version "1.2.8"
|
||||
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"
|
||||
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:
|
||||
version "1.2.4"
|
||||
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-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"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
|
||||
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"
|
||||
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:
|
||||
version "1.1.1"
|
||||
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"
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
|
||||
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
|
||||
|
@ -3887,13 +3650,6 @@ rimraf@^3.0.2:
|
|||
dependencies:
|
||||
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:
|
||||
version "1.2.0"
|
||||
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"
|
||||
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:
|
||||
version "1.1.0"
|
||||
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"
|
||||
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:
|
||||
version "2.19.0"
|
||||
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"
|
||||
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:
|
||||
version "5.0.0"
|
||||
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"
|
||||
has-tostringtag "^1.0.1"
|
||||
|
||||
which@^2.0.1, which@^2.0.2:
|
||||
which@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
|
||||
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
|
||||
|
|
Loading…
Add table
Reference in a new issue