diff --git a/.gitignore b/.gitignore
index e23e969e..46b944d5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,8 +34,5 @@ yarn-error.log*
*.tsbuildinfo
next-env.d.ts
-# Sentry Auth Token
-.sentryclirc
-
# Speedy Web Compiler
.swc/
\ No newline at end of file
diff --git a/app/components/account/FeatureAccountSection.tsx b/app/components/account/FeatureAccountSection.tsx
index 393b653f..441af8b3 100644
--- a/app/components/account/FeatureAccountSection.tsx
+++ b/app/components/account/FeatureAccountSection.tsx
@@ -1,9 +1,9 @@
import { Address } from '@components/common/Address';
import { TableCardBody } from '@components/common/TableCardBody';
import { Account } from '@providers/accounts';
-import { ErrorBoundary } from '@sentry/nextjs';
import { PublicKey } from '@solana/web3.js';
import { parseFeatureAccount } from '@utils/parseFeatureAccount';
+import { ErrorBoundary } from 'react-error-boundary';
import { UnknownAccountCard } from './UnknownAccountCard';
diff --git a/app/components/account/TokenAccountSection.tsx b/app/components/account/TokenAccountSection.tsx
index 8df43f6a..a80f6a73 100644
--- a/app/components/account/TokenAccountSection.tsx
+++ b/app/components/account/TokenAccountSection.tsx
@@ -10,7 +10,6 @@ import { Cluster } from '@utils/cluster';
import { CoingeckoStatus, useCoinGecko } from '@utils/coingecko';
import { displayTimestampWithoutDate } from '@utils/date';
import { abbreviatedNumber, normalizeTokenAmount } from '@utils/index';
-import { reportError } from '@utils/sentry';
import { addressLabel } from '@utils/tx';
import { MintAccountInfo, MultisigAccountInfo, TokenAccount, TokenAccountInfo } from '@validators/accounts/token';
import { BigNumber } from 'bignumber.js';
@@ -67,7 +66,7 @@ export function TokenAccountSection({ account, tokenAccount, tokenInfo }: { acco
}
} catch (err) {
if (cluster !== Cluster.Custom) {
- reportError(err, {
+ console.error(err, {
address: account.pubkey.toBase58(),
});
}
diff --git a/app/components/account/TokenHistoryCard.tsx b/app/components/account/TokenHistoryCard.tsx
index 1bb127bd..85c4e290 100644
--- a/app/components/account/TokenHistoryCard.tsx
+++ b/app/components/account/TokenHistoryCard.tsx
@@ -21,7 +21,6 @@ import { ConfirmedSignatureInfo, ParsedInstruction, PartiallyDecodedInstruction,
import { Cluster } from '@utils/cluster';
import { INNER_INSTRUCTIONS_START_SLOT } from '@utils/index';
import { getTokenProgramInstructionName } from '@utils/instruction';
-import { reportError } from '@utils/sentry';
import { displayAddress, intoTransactionInstruction } from '@utils/tx';
import Link from 'next/link';
import { usePathname, useSearchParams } from 'next/navigation';
@@ -401,28 +400,28 @@ const TokenTransactionRow = React.memo(function TokenTransactionRow({
try {
name = parseSerumInstructionTitle(transactionInstruction);
} catch (error) {
- reportError(error, { signature: tx.signature });
+ console.error(error, { signature: tx.signature });
return undefined;
}
} else if (transactionInstruction && isTokenSwapInstruction(transactionInstruction)) {
try {
name = parseTokenSwapInstructionTitle(transactionInstruction);
} catch (error) {
- reportError(error, { signature: tx.signature });
+ console.error(error, { signature: tx.signature });
return undefined;
}
} else if (transactionInstruction && isTokenLendingInstruction(transactionInstruction)) {
try {
name = parseTokenLendingInstructionTitle(transactionInstruction);
} catch (error) {
- reportError(error, { signature: tx.signature });
+ console.error(error, { signature: tx.signature });
return undefined;
}
} else if (transactionInstruction && isMangoInstruction(transactionInstruction)) {
try {
name = parseMangoInstructionTitle(transactionInstruction);
} catch (error) {
- reportError(error, { signature: tx.signature });
+ console.error(error, { signature: tx.signature });
return undefined;
}
} else {
diff --git a/app/components/account/history/TokenTransfersCard.tsx b/app/components/account/history/TokenTransfersCard.tsx
index edfa0835..714135ee 100644
--- a/app/components/account/history/TokenTransfersCard.tsx
+++ b/app/components/account/history/TokenTransfersCard.tsx
@@ -13,7 +13,6 @@ import { ParsedInstruction, ParsedTransactionWithMeta, PartiallyDecodedInstructi
import { Cluster } from '@utils/cluster';
import { normalizeTokenAmount } from '@utils/index';
import { InstructionContainer } from '@utils/instruction';
-import { reportError } from '@utils/sentry';
import React, { useMemo } from 'react';
import Moment from 'react-moment';
import { create } from 'superstruct';
@@ -231,7 +230,7 @@ function getTransfer(
}
} catch (error) {
if (cluster === Cluster.MainnetBeta) {
- reportError(error, {
+ console.error(error, {
signature,
});
}
diff --git a/app/components/instruction/AddressLookupTableDetailsCard.tsx b/app/components/instruction/AddressLookupTableDetailsCard.tsx
index 67aee57a..f514be54 100644
--- a/app/components/instruction/AddressLookupTableDetailsCard.tsx
+++ b/app/components/instruction/AddressLookupTableDetailsCard.tsx
@@ -1,6 +1,5 @@
import { useCluster } from '@providers/cluster';
import { SignatureResult, TransactionInstruction } from '@solana/web3.js';
-import { reportError } from '@utils/sentry';
import React from 'react';
import { parseAddressLookupTableInstructionTitle } from './address-lookup-table/types';
@@ -27,7 +26,7 @@ export function AddressLookupTableDetailsCard({
try {
title = parseAddressLookupTableInstructionTitle(ix);
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: signature,
url: url,
});
diff --git a/app/components/instruction/ComputeBudgetDetailsCard.tsx b/app/components/instruction/ComputeBudgetDetailsCard.tsx
index 100b86d1..97cb099c 100644
--- a/app/components/instruction/ComputeBudgetDetailsCard.tsx
+++ b/app/components/instruction/ComputeBudgetDetailsCard.tsx
@@ -3,7 +3,6 @@ import { SolBalance } from '@components/common/SolBalance';
import { useCluster } from '@providers/cluster';
import { ComputeBudgetInstruction, SignatureResult, TransactionInstruction } from '@solana/web3.js';
import { microLamportsToLamportsString } from '@utils/index';
-import { reportError } from '@utils/sentry';
import React from 'react';
import { InstructionCard } from './InstructionCard';
@@ -144,7 +143,7 @@ export function ComputeBudgetDetailsCard({
}
}
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: signature,
url: url,
});
diff --git a/app/components/instruction/MangoDetails.tsx b/app/components/instruction/MangoDetails.tsx
index 8db68473..976d945f 100644
--- a/app/components/instruction/MangoDetails.tsx
+++ b/app/components/instruction/MangoDetails.tsx
@@ -1,6 +1,5 @@
import { useCluster } from '@providers/cluster';
import { SignatureResult, TransactionInstruction } from '@solana/web3.js';
-import { reportError } from '@utils/sentry';
import { InstructionCard } from './InstructionCard';
import { AddOracleDetailsCard } from './mango/AddOracleDetailsCard';
@@ -93,7 +92,7 @@ export function MangoDetailsCard(props: {
return ;
}
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: signature,
url: url,
});
diff --git a/app/components/instruction/SerumDetailsCard.tsx b/app/components/instruction/SerumDetailsCard.tsx
index 37d01c0b..b87dcb59 100644
--- a/app/components/instruction/SerumDetailsCard.tsx
+++ b/app/components/instruction/SerumDetailsCard.tsx
@@ -1,6 +1,5 @@
import { useCluster } from '@providers/cluster';
import { SignatureResult, TransactionInstruction } from '@solana/web3.js';
-import { reportError } from '@utils/sentry';
import React from 'react';
import { InstructionCard } from './InstructionCard';
@@ -97,7 +96,7 @@ export function SerumDetailsCard(initialProps: {
return ;
}
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: signature,
url: url,
});
diff --git a/app/components/instruction/TokenLendingDetailsCard.tsx b/app/components/instruction/TokenLendingDetailsCard.tsx
index a82c0f25..d61c18a9 100644
--- a/app/components/instruction/TokenLendingDetailsCard.tsx
+++ b/app/components/instruction/TokenLendingDetailsCard.tsx
@@ -1,6 +1,5 @@
import { useCluster } from '@providers/cluster';
import { SignatureResult, TransactionInstruction } from '@solana/web3.js';
-import { reportError } from '@utils/sentry';
import React from 'react';
import { InstructionCard } from './InstructionCard';
@@ -27,7 +26,7 @@ export function TokenLendingDetailsCard({
try {
title = parseTokenLendingInstructionTitle(ix);
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: signature,
url: url,
});
diff --git a/app/components/instruction/TokenSwapDetailsCard.tsx b/app/components/instruction/TokenSwapDetailsCard.tsx
index 1d99d7f2..8ac5ae96 100644
--- a/app/components/instruction/TokenSwapDetailsCard.tsx
+++ b/app/components/instruction/TokenSwapDetailsCard.tsx
@@ -1,6 +1,5 @@
import { useCluster } from '@providers/cluster';
import { SignatureResult, TransactionInstruction } from '@solana/web3.js';
-import { reportError } from '@utils/sentry';
import React from 'react';
import { InstructionCard } from './InstructionCard';
@@ -27,7 +26,7 @@ export function TokenSwapDetailsCard({
try {
title = parseTokenSwapInstructionTitle(ix);
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: signature,
url: url,
});
diff --git a/app/components/instruction/WormholeDetailsCard.tsx b/app/components/instruction/WormholeDetailsCard.tsx
index 6463daba..cad22f76 100644
--- a/app/components/instruction/WormholeDetailsCard.tsx
+++ b/app/components/instruction/WormholeDetailsCard.tsx
@@ -1,6 +1,5 @@
import { useCluster } from '@providers/cluster';
import { SignatureResult, TransactionInstruction } from '@solana/web3.js';
-import { reportError } from '@utils/sentry';
import React from 'react';
import { InstructionCard } from './InstructionCard';
@@ -27,7 +26,7 @@ export function WormholeDetailsCard({
try {
title = parsWormholeInstructionTitle(ix);
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: signature,
url: url,
});
diff --git a/app/components/instruction/associated-token/AssociatedTokenDetailsCard.tsx b/app/components/instruction/associated-token/AssociatedTokenDetailsCard.tsx
index f0171697..afe2f132 100644
--- a/app/components/instruction/associated-token/AssociatedTokenDetailsCard.tsx
+++ b/app/components/instruction/associated-token/AssociatedTokenDetailsCard.tsx
@@ -1,5 +1,4 @@
import { ParsedInstruction, ParsedTransaction, SignatureResult } from '@solana/web3.js';
-import { reportError } from '@utils/sentry';
import { ParsedInfo } from '@validators/index';
import React from 'react';
import { create } from 'superstruct';
@@ -38,7 +37,7 @@ export function AssociatedTokenDetailsCard(props: DetailsProps) {
return ;
}
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: props.tx.signatures[0],
});
return ;
diff --git a/app/components/instruction/bpf-loader/BpfLoaderDetailsCard.tsx b/app/components/instruction/bpf-loader/BpfLoaderDetailsCard.tsx
index 520560c8..2184fafe 100644
--- a/app/components/instruction/bpf-loader/BpfLoaderDetailsCard.tsx
+++ b/app/components/instruction/bpf-loader/BpfLoaderDetailsCard.tsx
@@ -1,7 +1,6 @@
import { Address } from '@components/common/Address';
import { BPF_LOADER_PROGRAM_ID, ParsedInstruction, ParsedTransaction, SignatureResult } from '@solana/web3.js';
import { wrap } from '@utils/index';
-import { reportError } from '@utils/sentry';
import { ParsedInfo } from '@validators/index';
import React from 'react';
import { create } from 'superstruct';
@@ -36,7 +35,7 @@ export function BpfLoaderDetailsCard(props: DetailsProps) {
return ;
}
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: props.tx.signatures[0],
});
return ;
diff --git a/app/components/instruction/bpf-upgradeable-loader/BpfUpgradeableLoaderDetailsCard.tsx b/app/components/instruction/bpf-upgradeable-loader/BpfUpgradeableLoaderDetailsCard.tsx
index c43b8852..40d6c72a 100644
--- a/app/components/instruction/bpf-upgradeable-loader/BpfUpgradeableLoaderDetailsCard.tsx
+++ b/app/components/instruction/bpf-upgradeable-loader/BpfUpgradeableLoaderDetailsCard.tsx
@@ -1,7 +1,6 @@
import { Address } from '@components/common/Address';
import { ParsedInstruction, ParsedTransaction, PublicKey, SignatureResult } from '@solana/web3.js';
import { camelToTitleCase } from '@utils/index';
-import { reportError } from '@utils/sentry';
import { ParsedInfo } from '@validators/index';
import React from 'react';
import { create, Struct } from 'superstruct';
@@ -56,7 +55,7 @@ export function BpfUpgradeableLoaderDetailsCard(props: DetailsProps) {
return ;
}
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: props.tx.signatures[0],
});
return ;
diff --git a/app/components/instruction/pyth/PythDetailsCard.tsx b/app/components/instruction/pyth/PythDetailsCard.tsx
index 19629912..eed97552 100644
--- a/app/components/instruction/pyth/PythDetailsCard.tsx
+++ b/app/components/instruction/pyth/PythDetailsCard.tsx
@@ -1,6 +1,5 @@
import { useCluster } from '@providers/cluster';
import { SignatureResult, TransactionInstruction } from '@solana/web3.js';
-import { reportError } from '@utils/sentry';
import React from 'react';
import { InstructionCard } from '../InstructionCard';
@@ -70,7 +69,7 @@ export function PythDetailsCard(props: {
return ;
}
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: signature,
url: url,
});
diff --git a/app/components/instruction/stake/StakeDetailsCard.tsx b/app/components/instruction/stake/StakeDetailsCard.tsx
index f67d89d0..d1fec9d9 100644
--- a/app/components/instruction/stake/StakeDetailsCard.tsx
+++ b/app/components/instruction/stake/StakeDetailsCard.tsx
@@ -1,5 +1,4 @@
import { ParsedInstruction, ParsedTransaction, SignatureResult } from '@solana/web3.js';
-import { reportError } from '@utils/sentry';
import { ParsedInfo } from '@validators/index';
import React from 'react';
import { create } from 'superstruct';
@@ -68,7 +67,7 @@ export function StakeDetailsCard(props: DetailsProps) {
return ;
}
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: props.tx.signatures[0],
});
return ;
diff --git a/app/components/instruction/system/SystemDetailsCard.tsx b/app/components/instruction/system/SystemDetailsCard.tsx
index 3ec8356b..6cb1e836 100644
--- a/app/components/instruction/system/SystemDetailsCard.tsx
+++ b/app/components/instruction/system/SystemDetailsCard.tsx
@@ -1,5 +1,4 @@
import { ParsedInstruction, ParsedTransaction, SignatureResult } from '@solana/web3.js';
-import { reportError } from '@utils/sentry';
import { ParsedInfo } from '@validators/index';
import React from 'react';
import { create } from 'superstruct';
@@ -103,7 +102,7 @@ export function SystemDetailsCard(props: DetailsProps) {
return ;
}
} catch (error) {
- reportError(error, {
+ console.error(error, {
signature: props.tx.signatures[0],
});
return ;
diff --git a/app/components/instruction/vote/VoteDetailsCard.tsx b/app/components/instruction/vote/VoteDetailsCard.tsx
index e902f26f..0fdd6595 100644
--- a/app/components/instruction/vote/VoteDetailsCard.tsx
+++ b/app/components/instruction/vote/VoteDetailsCard.tsx
@@ -4,7 +4,6 @@ import { useCluster } from '@providers/cluster';
import { PublicKey } from '@solana/web3.js';
import { displayTimestamp } from '@utils/date';
import { camelToTitleCase } from '@utils/index';
-import { reportError } from '@utils/sentry';
import { ParsedInfo } from '@validators/index';
import React from 'react';
import { create, Struct } from 'superstruct';
@@ -41,7 +40,7 @@ export function VoteDetailsCard(props: InstructionDetailsProps) {
return renderDetails(props, parsed, VoteSwitchInfo);
}
} catch (error) {
- reportError(error, {
+ console.error(error, {
url,
});
}
diff --git a/app/components/transaction/InstructionsSection.tsx b/app/components/transaction/InstructionsSection.tsx
index b675632d..680f69c0 100644
--- a/app/components/transaction/InstructionsSection.tsx
+++ b/app/components/transaction/InstructionsSection.tsx
@@ -27,7 +27,6 @@ import { useAnchorProgram } from '@providers/anchor';
import { useCluster } from '@providers/cluster';
import { useTransactionDetails, useTransactionStatus } from '@providers/transactions';
import { useFetchTransactionDetails } from '@providers/transactions/parsed';
-import { ErrorBoundary } from '@sentry/nextjs';
import {
ComputeBudgetProgram,
ParsedInnerInstruction,
@@ -41,6 +40,7 @@ import { Cluster } from '@utils/cluster';
import { INNER_INSTRUCTIONS_START_SLOT, SignatureProps } from '@utils/index';
import { intoTransactionInstruction } from '@utils/tx';
import React from 'react';
+import { ErrorBoundary } from 'react-error-boundary';
import AnchorDetailsCard from '../instruction/AnchorDetailsCard';
import { isMangoInstruction } from '../instruction/mango/types';
diff --git a/app/providers/accounts/history.tsx b/app/providers/accounts/history.tsx
index 604c9593..897e17b4 100644
--- a/app/providers/accounts/history.tsx
+++ b/app/providers/accounts/history.tsx
@@ -11,7 +11,6 @@ import {
TransactionSignature,
} from '@solana/web3.js';
import { Cluster } from '@utils/cluster';
-import { reportError } from '@utils/sentry';
import React from 'react';
const MAX_TRANSACTION_BATCH_SIZE = 10;
@@ -141,7 +140,7 @@ async function fetchAccountHistory(
status = FetchStatus.Fetched;
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
status = FetchStatus.FetchFailed;
}
@@ -153,7 +152,7 @@ async function fetchAccountHistory(
transactionMap = await fetchParsedTransactions(url, signatures);
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
status = FetchStatus.FetchFailed;
}
diff --git a/app/providers/accounts/index.tsx b/app/providers/accounts/index.tsx
index d082e9b5..41cf3e6e 100644
--- a/app/providers/accounts/index.tsx
+++ b/app/providers/accounts/index.tsx
@@ -16,7 +16,6 @@ import {
} from '@solana/web3.js';
import { Cluster } from '@utils/cluster';
import { pubkeyToString } from '@utils/index';
-import { reportError } from '@utils/sentry';
import { ParsedAddressLookupTableAccount } from '@validators/accounts/address-lookup-table';
import { ConfigAccount } from '@validators/accounts/config';
import { NonceAccount } from '@validators/accounts/nonce';
@@ -250,7 +249,7 @@ async function fetchMultipleAccounts({
try {
parsedData = await handleParsedAccountData(connection, pubkey, accountData);
} catch (error) {
- reportError(error, { address: pubkey.toBase58(), url });
+ console.error(error, { address: pubkey.toBase58(), url });
}
}
@@ -285,7 +284,7 @@ async function fetchMultipleAccounts({
}
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
for (const pubkey of batch) {
@@ -491,7 +490,7 @@ export function useMintAccountInfo(address: string | undefined): MintAccountInfo
return create(parsedData.parsed.info, MintAccountInfo);
} catch (err) {
- reportError(err, { address });
+ console.error(err, { address });
}
}, [address, accountInfo]);
}
@@ -511,7 +510,7 @@ export function useTokenAccountInfo(address: string | undefined): TokenAccountIn
return create(parsedData.parsed.info, TokenAccountInfo);
} catch (err) {
- reportError(err, { address });
+ console.error(err, { address });
}
}, [address, accountInfo]);
}
diff --git a/app/providers/accounts/rewards.tsx b/app/providers/accounts/rewards.tsx
index 3c45127e..c4ac918a 100644
--- a/app/providers/accounts/rewards.tsx
+++ b/app/providers/accounts/rewards.tsx
@@ -6,7 +6,6 @@ import { FetchStatus } from '@providers/cache';
import { useCluster } from '@providers/cluster';
import { Connection, InflationReward, PublicKey } from '@solana/web3.js';
import { Cluster } from '@utils/cluster';
-import { reportError } from '@utils/sentry';
import React from 'react';
const REWARDS_AVAILABLE_EPOCH = new Map([
@@ -94,7 +93,7 @@ async function fetchRewards(
fromEpoch = epochInfo.epoch - 1;
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
return dispatch({
@@ -116,7 +115,7 @@ async function fetchRewards(
return result[0];
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
}
return null;
diff --git a/app/providers/accounts/tokens.tsx b/app/providers/accounts/tokens.tsx
index f7fed404..227bd7dc 100644
--- a/app/providers/accounts/tokens.tsx
+++ b/app/providers/accounts/tokens.tsx
@@ -5,7 +5,6 @@ import { ActionType, FetchStatus } from '@providers/cache';
import { useCluster } from '@providers/cluster';
import { Connection, PublicKey } from '@solana/web3.js';
import { Cluster } from '@utils/cluster';
-import { reportError } from '@utils/sentry';
import { TokenAccountInfo } from '@validators/accounts/token';
import React from 'react';
import { create } from 'superstruct';
@@ -94,7 +93,7 @@ async function fetchAccountTokens(dispatch: Dispatch, pubkey: PublicKey, cluster
status = FetchStatus.Fetched;
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
status = FetchStatus.FetchFailed;
}
diff --git a/app/providers/accounts/vote-accounts.tsx b/app/providers/accounts/vote-accounts.tsx
index 618610c8..f3ddfe3a 100644
--- a/app/providers/accounts/vote-accounts.tsx
+++ b/app/providers/accounts/vote-accounts.tsx
@@ -1,6 +1,5 @@
import { useCluster } from '@providers/cluster';
import { Cluster } from '@utils/cluster';
-import { reportError } from '@utils/sentry';
import React from 'react';
import { createDefaultRpcTransport, createSolanaRpc } from 'web3js-experimental';
@@ -31,7 +30,7 @@ async function fetchVoteAccounts(
setVoteAccounts(voteAccounts);
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
}
}
diff --git a/app/providers/block.tsx b/app/providers/block.tsx
index 3cc08641..212d521e 100644
--- a/app/providers/block.tsx
+++ b/app/providers/block.tsx
@@ -2,7 +2,6 @@
import * as Cache from '@providers/cache';
import { useCluster } from '@providers/cluster';
-import * as Sentry from '@sentry/nextjs';
import { Connection, PublicKey, VersionedBlockResponse } from '@solana/web3.js';
import { Cluster } from '@utils/cluster';
import React from 'react';
@@ -107,7 +106,7 @@ export async function fetchBlock(dispatch: Dispatch, url: string, cluster: Clust
} catch (err) {
status = FetchStatus.FetchFailed;
if (cluster !== Cluster.Custom) {
- Sentry.captureException(err, { tags: { url } });
+ console.error(err, { tags: { url } });
}
}
diff --git a/app/providers/cluster.tsx b/app/providers/cluster.tsx
index d58a853c..deef8a2b 100644
--- a/app/providers/cluster.tsx
+++ b/app/providers/cluster.tsx
@@ -2,7 +2,6 @@
import { Cluster, clusterName, ClusterStatus, clusterUrl, DEFAULT_CLUSTER } from '@utils/cluster';
import { localStorageIsAvailable } from '@utils/local-storage';
-import { reportError } from '@utils/sentry';
import { ReadonlyURLSearchParams, usePathname, useRouter, useSearchParams } from 'next/navigation';
import React, { createContext, useContext, useEffect, useReducer, useState } from 'react';
import { createDefaultRpcTransport, createSolanaRpc } from 'web3js-experimental';
@@ -149,7 +148,7 @@ async function updateCluster(dispatch: Dispatch, cluster: Cluster, customUrl: st
});
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { clusterUrl: clusterUrl(cluster, customUrl) });
+ console.error(error, { clusterUrl: clusterUrl(cluster, customUrl) });
}
dispatch({
cluster,
diff --git a/app/providers/epoch.tsx b/app/providers/epoch.tsx
index 1f82b338..15ade1e1 100644
--- a/app/providers/epoch.tsx
+++ b/app/providers/epoch.tsx
@@ -4,7 +4,6 @@ import * as Cache from '@providers/cache';
import { useCluster } from '@providers/cluster';
import { Connection } from '@solana/web3.js';
import { Cluster } from '@utils/cluster';
-import { reportError } from '@utils/sentry';
import React from 'react';
import { EpochSchedule, getFirstSlotInEpoch, getLastSlotInEpoch } from '../utils/epoch-schedule';
@@ -114,7 +113,7 @@ export async function fetchEpoch(
} catch (err) {
status = FetchStatus.FetchFailed;
if (cluster !== Cluster.Custom) {
- reportError(err, { epoch: epoch.toString() });
+ console.error(err, { epoch: epoch.toString() });
}
}
diff --git a/app/providers/richList.tsx b/app/providers/richList.tsx
index 4b2e48d8..8a44d442 100644
--- a/app/providers/richList.tsx
+++ b/app/providers/richList.tsx
@@ -3,7 +3,6 @@
import { useCluster } from '@providers/cluster';
import { AccountBalancePair, Connection } from '@solana/web3.js';
import { Cluster, ClusterStatus } from '@utils/cluster';
-import { reportError } from '@utils/sentry';
import React from 'react';
export enum Status {
@@ -72,7 +71,7 @@ async function fetch(dispatch: Dispatch, cluster: Cluster, url: string) {
});
} catch (err) {
if (cluster !== Cluster.Custom) {
- reportError(err, { url });
+ console.error(err, { url });
}
dispatch('Failed to fetch top accounts');
}
diff --git a/app/providers/stats/solanaClusterStats.tsx b/app/providers/stats/solanaClusterStats.tsx
index 57fd038d..2954c6b8 100644
--- a/app/providers/stats/solanaClusterStats.tsx
+++ b/app/providers/stats/solanaClusterStats.tsx
@@ -2,7 +2,6 @@
import { useCluster } from '@providers/cluster';
import { Cluster } from '@utils/cluster';
-import { reportError } from '@utils/sentry';
import React from 'react';
import useTabVisibility from 'use-tab-visibility';
import { createDefaultRpcTransport, createSolanaRpc } from 'web3js-experimental';
@@ -111,7 +110,7 @@ export function SolanaClusterStatsProvider({ children }: Props) {
});
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
if (error instanceof Error) {
dispatchPerformanceInfo({
@@ -139,7 +138,7 @@ export function SolanaClusterStatsProvider({ children }: Props) {
});
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
if (error instanceof Error) {
dispatchPerformanceInfo({
@@ -173,7 +172,7 @@ export function SolanaClusterStatsProvider({ children }: Props) {
});
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
if (error instanceof Error) {
dispatchDashboardInfo({
diff --git a/app/providers/supply.tsx b/app/providers/supply.tsx
index 34084f1c..ee6e4360 100644
--- a/app/providers/supply.tsx
+++ b/app/providers/supply.tsx
@@ -2,7 +2,6 @@
import { useCluster } from '@providers/cluster';
import { Cluster, ClusterStatus } from '@utils/cluster';
-import { reportError } from '@utils/sentry';
import React from 'react';
import { createDefaultRpcTransport, createSolanaRpc } from 'web3js-experimental';
@@ -68,7 +67,7 @@ async function fetch(dispatch: Dispatch, cluster: Cluster, url: string) {
});
} catch (err) {
if (cluster !== Cluster.Custom) {
- reportError(err, { url });
+ console.error(err, { url });
}
dispatch('Failed to fetch supply');
}
diff --git a/app/providers/transactions/index.tsx b/app/providers/transactions/index.tsx
index 532e73d7..d5c92690 100644
--- a/app/providers/transactions/index.tsx
+++ b/app/providers/transactions/index.tsx
@@ -5,7 +5,6 @@ import { ActionType, FetchStatus } from '@providers/cache';
import { useCluster } from '@providers/cluster';
import { Connection, SignatureResult, TransactionConfirmationStatus, TransactionSignature } from '@solana/web3.js';
import { Cluster } from '@utils/cluster';
-import { reportError } from '@utils/sentry';
import React from 'react';
import { DetailsProvider } from './parsed';
@@ -92,7 +91,7 @@ export async function fetchTransactionStatus(
blockTime = await connection.getBlockTime(value.slot);
} catch (error) {
if (cluster === Cluster.MainnetBeta && confirmations === 'max') {
- reportError(error, { slot: `${value.slot}` });
+ console.error(error, { slot: `${value.slot}` });
}
}
const timestamp: Timestamp = blockTime !== null ? blockTime : 'unavailable';
@@ -109,7 +108,7 @@ export async function fetchTransactionStatus(
fetchStatus = FetchStatus.Fetched;
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
fetchStatus = FetchStatus.FetchFailed;
}
diff --git a/app/providers/transactions/parsed.tsx b/app/providers/transactions/parsed.tsx
index 29703108..13b93de2 100644
--- a/app/providers/transactions/parsed.tsx
+++ b/app/providers/transactions/parsed.tsx
@@ -5,7 +5,6 @@ import { ActionType, FetchStatus } from '@providers/cache';
import { useCluster } from '@providers/cluster';
import { Connection, ParsedTransactionWithMeta, TransactionSignature } from '@solana/web3.js';
import { Cluster } from '@utils/cluster';
-import { reportError } from '@utils/sentry';
import React from 'react';
export interface Details {
@@ -52,7 +51,7 @@ async function fetchDetails(dispatch: Dispatch, signature: TransactionSignature,
fetchStatus = FetchStatus.Fetched;
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
fetchStatus = FetchStatus.FetchFailed;
}
diff --git a/app/providers/transactions/raw.tsx b/app/providers/transactions/raw.tsx
index 87249903..f3d31e71 100644
--- a/app/providers/transactions/raw.tsx
+++ b/app/providers/transactions/raw.tsx
@@ -5,7 +5,6 @@ import { ActionType, FetchStatus } from '@providers/cache';
import { useCluster } from '@providers/cluster';
import { Connection, DecompileArgs, TransactionMessage, TransactionSignature, VersionedMessage } from '@solana/web3.js';
import { Cluster } from '@utils/cluster';
-import { reportError } from '@utils/sentry';
import React from 'react';
export interface Details {
@@ -79,7 +78,7 @@ async function fetchRawTransaction(dispatch: Dispatch, signature: TransactionSig
});
} catch (error) {
if (cluster !== Cluster.Custom) {
- reportError(error, { url });
+ console.error(error, { url });
}
}
}
diff --git a/app/utils/instruction.ts b/app/utils/instruction.ts
index d4b9bf3e..c4cb5ea8 100644
--- a/app/utils/instruction.ts
+++ b/app/utils/instruction.ts
@@ -12,7 +12,6 @@ import {
ParsedTransactionWithMeta,
PartiallyDecodedInstruction,
} from '@solana/web3.js';
-import { reportError } from '@utils/sentry';
import { intoTransactionInstruction } from '@utils/tx';
import { ParsedInfo } from '@validators/index';
import { create } from 'superstruct';
@@ -65,7 +64,7 @@ export function getTokenProgramInstructionName(ix: ParsedInstruction, signatureI
const type = create(rawType, TokenInstructionType);
return IX_TITLES[type];
} catch (err) {
- reportError(err, { signature: signatureInfo.signature });
+ console.error(err, { signature: signatureInfo.signature });
return 'Unknown';
}
}
@@ -100,7 +99,7 @@ export function getTokenInstructionName(
return parseTokenLendingInstructionTitle(transactionInstruction);
}
} catch (error) {
- reportError(error, { signature: signatureInfo.signature });
+ console.error(error, { signature: signatureInfo.signature });
return undefined;
}
}
diff --git a/app/utils/sentry.ts b/app/utils/sentry.ts
deleted file mode 100644
index 2859cde1..00000000
--- a/app/utils/sentry.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-'use client';
-
-import * as Sentry from '@sentry/nextjs';
-
-type Tags =
- | {
- [key: string]: string;
- }
- | undefined;
-
-export function reportError(err: unknown, tags: Tags) {
- if (err instanceof Error) {
- console.error(err, err.message);
- try {
- Sentry.captureException(err, {
- tags,
- });
- } catch (err) {
- // Sentry can fail if error rate limit is reached
- }
- }
-}
diff --git a/app/utils/token-info.ts b/app/utils/token-info.ts
index f03fa137..c1543fb6 100644
--- a/app/utils/token-info.ts
+++ b/app/utils/token-info.ts
@@ -81,7 +81,7 @@ async function getFullLegacyTokenInfoUsingCdn(
'https://cdn.jsdelivr.net/gh/solana-labs/token-list@latest/src/tokens/solana.tokenlist.json'
);
if (tokenListResponse.status >= 400) {
- reportError(new Error('Error fetching token list from CDN'));
+ console.error(new Error('Error fetching token list from CDN'));
return undefined;
}
const { tokens } = (await tokenListResponse.json()) as FullLegacyTokenInfoList;
diff --git a/app/utils/token-search.ts b/app/utils/token-search.ts
index 23b3c874..bb2c123d 100644
--- a/app/utils/token-search.ts
+++ b/app/utils/token-search.ts
@@ -9,7 +9,6 @@
import { Base58EncodedAddress } from 'web3js-experimental';
import { Cluster } from './cluster';
-import { reportError } from './sentry';
type TokenSearchApiResponseToken = {
address: Base58EncodedAddress;
@@ -55,14 +54,14 @@ export async function searchTokens(search: string, cluster: Cluster): Promise= 400) {
try {
const errorJsonBody = await apiResponse.json();
- reportError(new Error('Error calling token search API'), {
+ console.error(new Error('Error calling token search API'), {
chainId: chainId.toString(),
errorJsonBody,
search,
});
} catch {
// no JSON body for error
- reportError(new Error('Error calling token search API'), { chainId: chainId.toString(), search });
+ console.error(new Error('Error calling token search API'), { chainId: chainId.toString(), search });
}
}
diff --git a/next.config.mjs b/next.config.mjs
index 3df8f234..4e32ff70 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -1,5 +1,3 @@
-import { withSentryConfig } from "@sentry/nextjs";
-
const ADDRESS_ALIASES = ["account", "accounts", "addresses"];
const TX_ALIASES = ["txs", "txn", "txns", "transaction", "transactions"];
const SUPPLY_ALIASES = ['accounts', 'accounts/top'];
@@ -57,30 +55,4 @@ const nextConfig = {
};
-export default withSentryConfig(nextConfig,
- // Sentry Webpack options
- {
- // For all available options, see:
- // https://github.com/getsentry/sentry-webpack-plugin#options
- org: "solana",
- project: "explorer",
- silent: true, // Suppresses source map uploading logs during build
-
- },
- // Sentry config options
- {
- // For all available options, see:
- // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
-
- // Automatically tree-shake Sentry logger statements to reduce bundle size
- disableLogger: true,
-
- // Hides source maps from generated client bundles
- hideSourceMaps: true,
-
- // Transpiles SDK to be compatible with IE11 (increases bundle size)
- transpileClientSDK: true,
-
- // Upload a larger set of source maps for prettier stack traces (increases build time)
- widenClientFileUpload: true,
- });
+export default nextConfig;
diff --git a/package.json b/package.json
index 483f9336..9d352d7e 100644
--- a/package.json
+++ b/package.json
@@ -21,8 +21,6 @@
"@project-serum/serum": "^0.13.61",
"@react-hook/debounce": "^4.0.0",
"@react-hook/previous": "^1.0.1",
- "@sentry/nextjs": "^7.51.0",
- "@sentry/react": "^7.51.0",
"@solana/buffer-layout": "^3.0.0",
"@solana/spl-account-compression": "^0.1.8",
"@solana/spl-token": "^0.1.8",
@@ -47,6 +45,7 @@
"react-content-loader": "^6.1.0",
"react-countup": "^6.4.0",
"react-dom": "18.2.0",
+ "react-error-boundary": "^4.0.11",
"react-feather": "^2.0.10",
"react-json-view": "^1.21.3",
"react-moment": "^1.1.3",
@@ -99,4 +98,4 @@
"uuid": "^9.0.0"
}
}
-}
\ No newline at end of file
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e512c3a8..70aaab77 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -40,12 +40,6 @@ dependencies:
'@react-hook/previous':
specifier: ^1.0.1
version: 1.0.1(react@18.2.0)
- '@sentry/nextjs':
- specifier: ^7.51.0
- version: 7.51.0(next@13.4.0)(react@18.2.0)
- '@sentry/react':
- specifier: ^7.51.0
- version: 7.51.0(react@18.2.0)
'@solana/buffer-layout':
specifier: ^3.0.0
version: 3.0.0
@@ -118,6 +112,9 @@ dependencies:
react-dom:
specifier: 18.2.0
version: 18.2.0(react@18.2.0)
+ react-error-boundary:
+ specifier: ^4.0.11
+ version: 4.0.11(react@18.2.0)
react-feather:
specifier: ^2.0.10
version: 2.0.10(react@18.2.0)
@@ -1079,7 +1076,6 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.13.11
- dev: false
/@babel/template@7.20.7:
resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==}
@@ -1202,7 +1198,7 @@ packages:
resolution: {integrity: sha512-gxNky50AJL3AlkbjvTARiwAqei6/tNUxDZPSKd+3jqWVM3AmdVTTdpjHorR/an/M0VJqdsuq5oGcFH+rjtyujQ==}
dependencies:
'@babel/helper-module-imports': 7.21.4
- '@babel/runtime': 7.21.5
+ '@babel/runtime': 7.22.6
'@emotion/hash': 0.9.0
'@emotion/memoize': 0.8.0
'@emotion/serialize': 1.1.1
@@ -1241,7 +1237,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.21.5
+ '@babel/runtime': 7.22.6
'@emotion/babel-plugin': 11.10.8
'@emotion/cache': 11.10.8
'@emotion/serialize': 1.1.1
@@ -2577,28 +2573,10 @@ packages:
dependencies:
'@babel/core': 7.21.8
'@babel/helper-module-imports': 7.21.4
- '@rollup/pluginutils': 5.0.2(rollup@2.78.0)
+ '@rollup/pluginutils': 5.0.2
dev: false
- /@rollup/plugin-commonjs@24.0.0(rollup@2.78.0):
- resolution: {integrity: sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- rollup: ^2.68.0||^3.0.0
- peerDependenciesMeta:
- rollup:
- optional: true
- dependencies:
- '@rollup/pluginutils': 5.0.2(rollup@2.78.0)
- commondir: 1.0.1
- estree-walker: 2.0.2
- glob: 8.1.0
- is-reference: 1.2.1
- magic-string: 0.27.0
- rollup: 2.78.0
- dev: false
-
- /@rollup/pluginutils@5.0.2(rollup@2.78.0):
+ /@rollup/pluginutils@5.0.2:
resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -2610,164 +2588,12 @@ packages:
'@types/estree': 1.0.1
estree-walker: 2.0.2
picomatch: 2.3.1
- rollup: 2.78.0
dev: false
/@rushstack/eslint-patch@1.2.0:
resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==}
dev: false
- /@sentry-internal/tracing@7.51.0:
- resolution: {integrity: sha512-mhXl4B02OQq6/vevjX04OchmQbxPRaLci9vTTPcPcIz/n+wkum29ze35gHcJsPJUesScjd0m19Xou3C8fNnZRA==}
- engines: {node: '>=8'}
- dependencies:
- '@sentry/core': 7.51.0
- '@sentry/types': 7.51.0
- '@sentry/utils': 7.51.0
- tslib: 1.14.1
- dev: false
-
- /@sentry/browser@7.51.0:
- resolution: {integrity: sha512-SqaXM9qhGnSqEcdWEnzHKKkCLcMzE0cAc/Y6VQOttGjkP3KRW8INdWrN7F0ySBdy6BMar6ViDJKhB6cMKsuCIg==}
- engines: {node: '>=8'}
- dependencies:
- '@sentry-internal/tracing': 7.51.0
- '@sentry/core': 7.51.0
- '@sentry/replay': 7.51.0
- '@sentry/types': 7.51.0
- '@sentry/utils': 7.51.0
- tslib: 1.14.1
- dev: false
-
- /@sentry/cli@1.75.2:
- resolution: {integrity: sha512-CG0CKH4VCKWzEaegouWfCLQt9SFN+AieFESCatJ7zSuJmzF05ywpMusjxqRul6lMwfUhRKjGKOzcRJ1jLsfTBw==}
- engines: {node: '>= 8'}
- hasBin: true
- requiresBuild: true
- dependencies:
- https-proxy-agent: 5.0.1
- mkdirp: 0.5.6
- node-fetch: 2.6.9
- progress: 2.0.3
- proxy-from-env: 1.1.0
- which: 2.0.2
- transitivePeerDependencies:
- - encoding
- - supports-color
- dev: false
-
- /@sentry/core@7.51.0:
- resolution: {integrity: sha512-GgYwlXU8Y1kDEHsJO1Bmr2CNan5BzoNRR0TDBmxRgI/DgTNNSYrXeFDELgPi9/p/0XENeuttzDZ3iYd1nF7meA==}
- engines: {node: '>=8'}
- dependencies:
- '@sentry/types': 7.51.0
- '@sentry/utils': 7.51.0
- tslib: 1.14.1
- dev: false
-
- /@sentry/integrations@7.51.0:
- resolution: {integrity: sha512-xmWUKZyRDfl8tRsZWDRwxeXGwsvlJytQSYnJMPwohUq+VKs1KAarsuIxWQQMosNOvCYaio8VLfMxureqk2Wb/w==}
- engines: {node: '>=8'}
- dependencies:
- '@sentry/types': 7.51.0
- '@sentry/utils': 7.51.0
- localforage: 1.10.0
- tslib: 1.14.1
- dev: false
-
- /@sentry/nextjs@7.51.0(next@13.4.0)(react@18.2.0):
- resolution: {integrity: sha512-ZeZvXjfI/7Ik/w2joGWFBll6klEciKiFDNrwq5hqA3e1/xDV9rJNAF9DkKAVzA6wy0DP7o2npaKKAhC6iejzCw==}
- engines: {node: '>=8'}
- peerDependencies:
- next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0
- react: 16.x || 17.x || 18.x
- webpack: '>= 4.0.0'
- peerDependenciesMeta:
- webpack:
- optional: true
- dependencies:
- '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0)
- '@sentry/core': 7.51.0
- '@sentry/integrations': 7.51.0
- '@sentry/node': 7.51.0
- '@sentry/react': 7.51.0(react@18.2.0)
- '@sentry/types': 7.51.0
- '@sentry/utils': 7.51.0
- '@sentry/webpack-plugin': 1.20.0
- chalk: 3.0.0
- next: 13.4.0(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0)(sass@1.53.0)
- react: 18.2.0
- rollup: 2.78.0
- stacktrace-parser: 0.1.10
- tslib: 1.14.1
- transitivePeerDependencies:
- - encoding
- - supports-color
- dev: false
-
- /@sentry/node@7.51.0:
- resolution: {integrity: sha512-UHJ0yN3I8hSrythr3/KPewh+xLIdjF6AU+BW3bgsP0ZtztrftrQk9+XnWRIX0p6ZstzoP4F3arkJIXkWfOk5Pg==}
- engines: {node: '>=8'}
- dependencies:
- '@sentry-internal/tracing': 7.51.0
- '@sentry/core': 7.51.0
- '@sentry/types': 7.51.0
- '@sentry/utils': 7.51.0
- cookie: 0.4.2
- https-proxy-agent: 5.0.1
- lru_map: 0.3.3
- tslib: 1.14.1
- transitivePeerDependencies:
- - supports-color
- dev: false
-
- /@sentry/react@7.51.0(react@18.2.0):
- resolution: {integrity: sha512-w9fHVBbv4l3tGFa9YCV1m2ngUTnYxM/r6pO2Q8N9sjeWAk74sREm7fUjBJI24sdJFQJj0KhHNg0I1ZOA+uITyQ==}
- engines: {node: '>=8'}
- peerDependencies:
- react: 15.x || 16.x || 17.x || 18.x
- dependencies:
- '@sentry/browser': 7.51.0
- '@sentry/types': 7.51.0
- '@sentry/utils': 7.51.0
- hoist-non-react-statics: 3.3.2
- react: 18.2.0
- tslib: 1.14.1
- dev: false
-
- /@sentry/replay@7.51.0:
- resolution: {integrity: sha512-3jv+chhhlOVFjPKYJOEJy+J+9yTUEHxybZ0tTwGZYOJp9T8HdO21L6NjYk5b9wEqJonhZHp1BiQnzG82NLDkSQ==}
- engines: {node: '>=12'}
- dependencies:
- '@sentry/core': 7.51.0
- '@sentry/types': 7.51.0
- '@sentry/utils': 7.51.0
- dev: false
-
- /@sentry/types@7.51.0:
- resolution: {integrity: sha512-8REzzY0DslDryp6Yxj+tJ4NkXFHulLW9k8dgZV2Qo/0rBDMKir8g0IHYeN8ZBcnWrx2F+6rQb6uN6BjyLZY7Dg==}
- engines: {node: '>=8'}
- dev: false
-
- /@sentry/utils@7.51.0:
- resolution: {integrity: sha512-y5zq4IfZDCm6cg0EQJMghUM4YjZToFni7J5OKopLXKVtc9YtRtkYoFuFqEWm4HBuBwplreiS/KkDQgWn3FVn7A==}
- engines: {node: '>=8'}
- dependencies:
- '@sentry/types': 7.51.0
- tslib: 1.14.1
- dev: false
-
- /@sentry/webpack-plugin@1.20.0:
- resolution: {integrity: sha512-Ssj1mJVFsfU6vMCOM2d+h+KQR7QHSfeIP16t4l20Uq/neqWXZUQ2yvQfe4S3BjdbJXz/X4Rw8Hfy1Sd0ocunYw==}
- engines: {node: '>= 8'}
- dependencies:
- '@sentry/cli': 1.75.2
- webpack-sources: 3.2.3
- transitivePeerDependencies:
- - encoding
- - supports-color
- dev: false
-
/@sideway/address@4.1.4:
resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==}
dependencies:
@@ -3495,7 +3321,7 @@ packages:
engines: {node: '>=14'}
dependencies:
'@babel/code-frame': 7.21.4
- '@babel/runtime': 7.21.5
+ '@babel/runtime': 7.22.6
'@types/aria-query': 5.0.1
aria-query: 5.1.3
chalk: 4.1.2
@@ -3955,6 +3781,7 @@ packages:
debug: 4.3.4
transitivePeerDependencies:
- supports-color
+ dev: true
/agentkeepalive@4.3.0:
resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==}
@@ -4274,7 +4101,7 @@ packages:
resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
engines: {node: '>=10', npm: '>=6'}
dependencies:
- '@babel/runtime': 7.21.5
+ '@babel/runtime': 7.22.6
cosmiconfig: 7.1.0
resolve: 1.22.2
dev: false
@@ -4448,12 +4275,6 @@ packages:
balanced-match: 1.0.2
concat-map: 0.0.1
- /brace-expansion@2.0.1:
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
- dependencies:
- balanced-match: 1.0.2
- dev: false
-
/braces@3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
engines: {node: '>=8'}
@@ -4576,6 +4397,7 @@ packages:
dependencies:
ansi-styles: 4.3.0
supports-color: 7.2.0
+ dev: true
/chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
@@ -4728,10 +4550,6 @@ packages:
engines: {node: '>= 12'}
dev: false
- /commondir@1.0.1:
- resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
- dev: false
-
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
@@ -4742,11 +4560,6 @@ packages:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
dev: true
- /cookie@0.4.2:
- resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
- engines: {node: '>= 0.6'}
- dev: false
-
/cosmiconfig@7.1.0:
resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
engines: {node: '>=10'}
@@ -5007,7 +4820,7 @@ packages:
/dom-helpers@5.2.1:
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
dependencies:
- '@babel/runtime': 7.21.5
+ '@babel/runtime': 7.22.6
csstype: 3.1.2
dev: false
@@ -5354,7 +5167,7 @@ packages:
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies:
- '@babel/runtime': 7.21.5
+ '@babel/runtime': 7.22.6
aria-query: 5.1.3
array-includes: 3.1.6
array.prototype.flatmap: 1.3.1
@@ -5932,17 +5745,6 @@ packages:
once: 1.4.0
path-is-absolute: 1.0.1
- /glob@8.1.0:
- resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
- engines: {node: '>=12'}
- dependencies:
- fs.realpath: 1.0.0
- inflight: 1.0.6
- inherits: 2.0.4
- minimatch: 5.1.6
- once: 1.4.0
- dev: false
-
/globals@11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
@@ -6113,6 +5915,7 @@ packages:
debug: 4.3.4
transitivePeerDependencies:
- supports-color
+ dev: true
/human-signals@2.1.0:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
@@ -6150,10 +5953,6 @@ packages:
resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
engines: {node: '>= 4'}
- /immediate@3.0.6:
- resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
- dev: false
-
/immutable@4.3.0:
resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==}
@@ -6326,12 +6125,6 @@ packages:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
dev: true
- /is-reference@1.2.1:
- resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
- dependencies:
- '@types/estree': 1.0.1
- dev: false
-
/is-regex@1.1.4:
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
engines: {node: '>= 0.4'}
@@ -7119,21 +6912,9 @@ packages:
prelude-ls: 1.2.1
type-check: 0.4.0
- /lie@3.1.1:
- resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==}
- dependencies:
- immediate: 3.0.6
- dev: false
-
/lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
- /localforage@1.10.0:
- resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==}
- dependencies:
- lie: 3.1.1
- dev: false
-
/locate-path@5.0.0:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
@@ -7196,22 +6977,11 @@ packages:
dependencies:
yallist: 4.0.0
- /lru_map@0.3.3:
- resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==}
- dev: false
-
/lz-string@1.5.0:
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
hasBin: true
dev: true
- /magic-string@0.27.0:
- resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
- engines: {node: '>=12'}
- dependencies:
- '@jridgewell/sourcemap-codec': 1.4.15
- dev: false
-
/make-dir@3.1.0:
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
engines: {node: '>=8'}
@@ -7297,24 +7067,10 @@ packages:
dependencies:
brace-expansion: 1.1.11
- /minimatch@5.1.6:
- resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
- engines: {node: '>=10'}
- dependencies:
- brace-expansion: 2.0.1
- dev: false
-
/minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: false
- /mkdirp@0.5.6:
- resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
- hasBin: true
- dependencies:
- minimist: 1.2.8
- dev: false
-
/moment@2.29.4:
resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==}
@@ -7772,11 +7528,6 @@ packages:
engines: {node: '>= 0.6.0'}
dev: false
- /progress@2.0.3:
- resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
- engines: {node: '>=0.4.0'}
- dev: false
-
/promise@7.3.1:
resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==}
dependencies:
@@ -7799,10 +7550,6 @@ packages:
react-is: 16.13.1
dev: false
- /proxy-from-env@1.1.0:
- resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
- dev: false
-
/ps-tree@1.2.0:
resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==}
engines: {node: '>= 0.10'}
@@ -7891,6 +7638,15 @@ packages:
react: 18.2.0
scheduler: 0.23.0
+ /react-error-boundary@4.0.11(react@18.2.0):
+ resolution: {integrity: sha512-U13ul67aP5DOSPNSCWQ/eO0AQEYzEFkVljULQIjMV0KlffTAhxuDoBKdO0pb/JZ8mDhMKFZ9NZi0BmLGUiNphw==}
+ peerDependencies:
+ react: '>=16.13.1'
+ dependencies:
+ '@babel/runtime': 7.22.6
+ react: 18.2.0
+ dev: false
+
/react-feather@2.0.10(react@18.2.0):
resolution: {integrity: sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==}
peerDependencies:
@@ -7979,7 +7735,7 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
dependencies:
- '@babel/runtime': 7.21.5
+ '@babel/runtime': 7.22.6
react: 18.2.0
use-composed-ref: 1.3.0(react@18.2.0)
use-latest: 1.2.1(@types/react@18.2.0)(react@18.2.0)
@@ -7993,7 +7749,7 @@ packages:
react: '>=16.6.0'
react-dom: '>=16.6.0'
dependencies:
- '@babel/runtime': 7.21.5
+ '@babel/runtime': 7.22.6
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
@@ -8122,18 +7878,10 @@ packages:
inherits: 2.0.4
dev: false
- /rollup@2.78.0:
- resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==}
- engines: {node: '>=10.0.0'}
- hasBin: true
- optionalDependencies:
- fsevents: 2.3.2
- dev: false
-
/rpc-websockets@7.5.1:
resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==}
dependencies:
- '@babel/runtime': 7.21.5
+ '@babel/runtime': 7.22.6
eventemitter3: 4.0.7
uuid: 9.0.0
ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10)
@@ -8320,13 +8068,6 @@ packages:
escape-string-regexp: 2.0.0
dev: true
- /stacktrace-parser@0.1.10:
- resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==}
- engines: {node: '>=6'}
- dependencies:
- type-fest: 0.7.1
- dev: false
-
/start-server-and-test@1.15.4:
resolution: {integrity: sha512-ucQtp5+UCr0m4aHlY+aEV2JSYNTiMZKdSKK/bsIr6AlmwAWDYDnV7uGlWWEtWa7T4XvRI5cPYcPcQgeLqpz+Tg==}
engines: {node: '>=6'}
@@ -8698,11 +8439,6 @@ packages:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
- /type-fest@0.7.1:
- resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==}
- engines: {node: '>=8'}
- dev: false
-
/typed-array-length@1.0.4:
resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
dependencies:
@@ -8894,11 +8630,6 @@ packages:
engines: {node: '>=12'}
dev: true
- /webpack-sources@3.2.3:
- resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
- engines: {node: '>=10.13.0'}
- dev: false
-
/whatwg-encoding@2.0.0:
resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
engines: {node: '>=12'}
diff --git a/sentry.client.config.ts b/sentry.client.config.ts
deleted file mode 100644
index 67bc55a3..00000000
--- a/sentry.client.config.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-// This file configures the initialization of Sentry on the client.
-// The config you add here will be used whenever a users loads a page in their browser.
-// https://docs.sentry.io/platforms/javascript/guides/nextjs/
-
-import * as Sentry from '@sentry/nextjs';
-
-Sentry.init({
- // Setting this option to true will print useful information to the console while you're setting up Sentry.
- debug: false,
-
- dsn: 'https://5efdc15b4828434fbe949b5daed472be@o434108.ingest.sentry.io/5390542',
-
- // Adjust this value in production, or use tracesSampler for greater control
- tracesSampleRate: 1,
-});
diff --git a/sentry.edge.config.ts b/sentry.edge.config.ts
deleted file mode 100644
index 14e010d2..00000000
--- a/sentry.edge.config.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-// This file configures the initialization of Sentry for edge features (middleware, edge routes, and so on).
-// The config you add here will be used whenever one of the edge features is loaded.
-// Note that this config is unrelated to the Vercel Edge Runtime and is also required when running locally.
-// https://docs.sentry.io/platforms/javascript/guides/nextjs/
-
-import * as Sentry from '@sentry/nextjs';
-
-Sentry.init({
- // Setting this option to true will print useful information to the console while you're setting up Sentry.
- debug: false,
-
- dsn: 'https://5efdc15b4828434fbe949b5daed472be@o434108.ingest.sentry.io/5390542',
-
- // Adjust this value in production, or use tracesSampler for greater control
- tracesSampleRate: 1,
-});
diff --git a/sentry.server.config.ts b/sentry.server.config.ts
deleted file mode 100644
index b078a488..00000000
--- a/sentry.server.config.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-// This file configures the initialization of Sentry on the server.
-// The config you add here will be used whenever the server handles a request.
-// https://docs.sentry.io/platforms/javascript/guides/nextjs/
-
-import * as Sentry from '@sentry/nextjs';
-
-Sentry.init({
- // Setting this option to true will print useful information to the console while you're setting up Sentry.
- debug: false,
-
- dsn: 'https://5efdc15b4828434fbe949b5daed472be@o434108.ingest.sentry.io/5390542',
-
- // Adjust this value in production, or use tracesSampler for greater control
- tracesSampleRate: 1,
-});