diff --git a/explorer/config-overrides.js b/explorer/config-overrides.js
index 6d27645b41..3ec37c8916 100644
--- a/explorer/config-overrides.js
+++ b/explorer/config-overrides.js
@@ -5,8 +5,8 @@ module.exports = function override(config, env) {
config.resolve.extensions.push(".wasm");
- config.module.rules.forEach(rule => {
- (rule.oneOf || []).forEach(oneOf => {
+ config.module.rules.forEach((rule) => {
+ (rule.oneOf || []).forEach((oneOf) => {
if (oneOf.loader && oneOf.loader.indexOf("file-loader") >= 0) {
// Make file-loader ignore WASM files
oneOf.exclude.push(wasmExtensionRegExp);
@@ -18,7 +18,7 @@ module.exports = function override(config, env) {
config.module.rules.push({
test: wasmExtensionRegExp,
include: path.resolve(__dirname, "src"),
- use: [{ loader: require.resolve("wasm-loader"), options: {} }]
+ use: [{ loader: require.resolve("wasm-loader"), options: {} }],
});
return config;
diff --git a/explorer/src/App.tsx b/explorer/src/App.tsx
index e55f7299a1..aa55ec2707 100644
--- a/explorer/src/App.tsx
+++ b/explorer/src/App.tsx
@@ -24,7 +24,10 @@ function App() {
({ ...pickCluster(location), pathname: "/" })}
+ to={(location) => ({
+ ...pickCluster(location),
+ pathname: "/",
+ })}
>

@@ -49,14 +52,14 @@ function App() {
>
[tx, tx + "s"]).map(
- tx => `/${tx}/:signature`
+ path={TX_ALIASES.flatMap((tx) => [tx, tx + "s"]).map(
+ (tx) => `/${tx}/:signature`
)}
render={({ match }) => (
)}
/>
- `/${tx}s`)}>
+ `/${tx}s`)}>
@@ -64,13 +67,16 @@ function App() {
`/${account}/:address`
+ (account) => `/${account}/:address`
)}
render={({ match }) => (
)}
/>
- "/" + alias)}>
+ "/" + alias)}
+ >
diff --git a/explorer/src/components/AccountDetails.tsx b/explorer/src/components/AccountDetails.tsx
index 81de987028..d6ec9bcc99 100644
--- a/explorer/src/components/AccountDetails.tsx
+++ b/explorer/src/components/AccountDetails.tsx
@@ -9,7 +9,7 @@ import {
useFetchAccountInfo,
useAccountInfo,
useAccountHistory,
- Account
+ Account,
} from "providers/accounts";
import { lamportsToSolString } from "utils";
import Copyable from "./Copyable";
@@ -50,8 +50,8 @@ export default function AccountDetails({ address }: Props) {
setSearch(e.target.value)}
- onKeyUp={e => e.key === "Enter" && updateAddress()}
+ onChange={(e) => setSearch(e.target.value)}
+ onKeyUp={(e) => e.key === "Enter" && updateAddress()}
className="form-control form-control-prepended search text-monospace"
placeholder="Search for address"
/>
@@ -252,9 +252,9 @@ function HistoryCard({ pubkey }: { pubkey: PublicKey }) {
({
+ to={(location) => ({
...location,
- pathname: "/tx/" + signature
+ pathname: "/tx/" + signature,
})}
className="btn btn-rounded-circle btn-white btn-sm"
>
diff --git a/explorer/src/components/AccountsCard.tsx b/explorer/src/components/AccountsCard.tsx
index 981cb51df6..7439a026c3 100644
--- a/explorer/src/components/AccountsCard.tsx
+++ b/explorer/src/components/AccountsCard.tsx
@@ -4,7 +4,7 @@ import {
useAccounts,
Account,
FetchStatus,
- useFetchAccountInfo
+ useFetchAccountInfo,
} from "../providers/accounts";
import { assertUnreachable } from "../utils";
import { displayAddress } from "../utils/tx";
@@ -68,10 +68,10 @@ function AccountsCard() {
setError("")}
- onKeyDown={e =>
+ onKeyDown={(e) =>
e.keyCode === 13 && onNew(e.currentTarget.value)
}
- onSubmit={e => onNew(e.currentTarget.value)}
+ onSubmit={(e) => onNew(e.currentTarget.value)}
ref={addressInput}
className={`form-control text-address text-monospace ${
error ? "is-invalid" : ""
@@ -85,7 +85,7 @@ function AccountsCard() {
| - |
|
- {accounts.map(account => renderAccountRow(account))}
+ {accounts.map((account) => renderAccountRow(account))}
@@ -172,9 +172,9 @@ const renderAccountRow = (account: Account) => {
({
+ to={(location) => ({
...location,
- pathname: "/account/" + base58AccountPubkey
+ pathname: "/account/" + base58AccountPubkey,
})}
className="btn btn-rounded-circle btn-white btn-sm"
>
diff --git a/explorer/src/components/ClusterModal.tsx b/explorer/src/components/ClusterModal.tsx
index af693d0579..58fb77f247 100644
--- a/explorer/src/components/ClusterModal.tsx
+++ b/explorer/src/components/ClusterModal.tsx
@@ -11,7 +11,7 @@ import {
CLUSTERS,
Cluster,
useClusterModal,
- useUpdateCustomUrl
+ useUpdateCustomUrl,
} from "../providers/cluster";
import { assertUnreachable } from "../utils";
import Overlay from "./Overlay";
@@ -28,7 +28,7 @@ function ClusterModal() {
>
- e.stopPropagation()}>
+ e.stopPropagation()}>
×
@@ -62,7 +62,7 @@ function CustomClusterInput({ activeSuffix, active }: InputProps) {
if (customUrl.length > 0) query.set("cluster", "custom");
return {
...location,
- search: query.toString()
+ search: query.toString(),
};
};
@@ -77,7 +77,7 @@ function CustomClusterInput({ activeSuffix, active }: InputProps) {
const inputTextClass = editing ? "" : "text-muted";
return (
clusterLocation(location)}
+ to={(location) => clusterLocation(location)}
className="btn input-group input-group-merge p-0"
>
setEditing(true)}
onBlur={() => setEditing(false)}
- onInput={e => onUrlInput(e.currentTarget.value)}
+ onInput={(e) => onUrlInput(e.currentTarget.value)}
/>
@@ -144,7 +144,7 @@ function ClusterToggle() {
}
return {
...location,
- search: params.toString()
+ search: params.toString(),
};
};
diff --git a/explorer/src/components/ClusterStatusButton.tsx b/explorer/src/components/ClusterStatusButton.tsx
index 89d026060c..637a61e48c 100644
--- a/explorer/src/components/ClusterStatusButton.tsx
+++ b/explorer/src/components/ClusterStatusButton.tsx
@@ -3,7 +3,7 @@ import { useCluster, ClusterStatus, Cluster } from "../providers/cluster";
function ClusterStatusButton({
onClick,
- expand
+ expand,
}: {
onClick: () => void;
expand?: boolean;
diff --git a/explorer/src/components/Copyable.tsx b/explorer/src/components/Copyable.tsx
index fe2f84c9ef..8d29e26d55 100644
--- a/explorer/src/components/Copyable.tsx
+++ b/explorer/src/components/Copyable.tsx
@@ -12,7 +12,7 @@ type State = "hide" | "copy" | "copied";
function Popover({
state,
bottom,
- right
+ right,
}: {
state: State;
bottom?: boolean;
diff --git a/explorer/src/components/InfoTooltip.tsx b/explorer/src/components/InfoTooltip.tsx
index 1f0e648e27..cc0ea40c82 100644
--- a/explorer/src/components/InfoTooltip.tsx
+++ b/explorer/src/components/InfoTooltip.tsx
@@ -13,7 +13,7 @@ function Popover({
state,
bottom,
right,
- text
+ text,
}: {
state: State;
bottom?: boolean;
diff --git a/explorer/src/components/TabbedPage.tsx b/explorer/src/components/TabbedPage.tsx
index feb3978786..37a16a3d08 100644
--- a/explorer/src/components/TabbedPage.tsx
+++ b/explorer/src/components/TabbedPage.tsx
@@ -52,7 +52,7 @@ export default function TabbedPage({ children, tab }: Props) {
function NavLink({
href,
tab,
- current
+ current,
}: {
href: string;
tab: Tab;
@@ -65,7 +65,7 @@ function NavLink({
return (
({ ...pickCluster(location), pathname: href })}
+ to={(location) => ({ ...pickCluster(location), pathname: href })}
className={classes}
>
{tab}
diff --git a/explorer/src/components/TopAccountsCard.tsx b/explorer/src/components/TopAccountsCard.tsx
index 6618b8c36b..f114648491 100644
--- a/explorer/src/components/TopAccountsCard.tsx
+++ b/explorer/src/components/TopAccountsCard.tsx
@@ -77,7 +77,7 @@ export default function TopAccountsCard() {
setDropdown(show => !show)}
+ toggle={() => setDropdown((show) => !show)}
show={showDropdown}
/>
@@ -127,9 +127,9 @@ const renderAccountRow = (
{`${((100 * account.lamports) / supply).toFixed(3)}%`} |
({
+ to={(location) => ({
...location,
- pathname: "/account/" + base58AccountPubkey
+ pathname: "/account/" + base58AccountPubkey,
})}
className="btn btn-rounded-circle btn-white btn-sm"
>
@@ -185,7 +185,7 @@ const FilterDropdown = ({ filter, toggle, show }: DropdownProps) => {
}
return {
...location,
- search: params.toString()
+ search: params.toString(),
};
};
@@ -202,11 +202,11 @@ const FilterDropdown = ({ filter, toggle, show }: DropdownProps) => {
- {FILTERS.map(filterOption => {
+ {FILTERS.map((filterOption) => {
return (
buildLocation(location, filterOption)}
+ to={(location) => buildLocation(location, filterOption)}
className={`dropdown-item${
filterOption === filter ? " active" : ""
}`}
diff --git a/explorer/src/components/TransactionDetails.tsx b/explorer/src/components/TransactionDetails.tsx
index abde935021..a559c1f566 100644
--- a/explorer/src/components/TransactionDetails.tsx
+++ b/explorer/src/components/TransactionDetails.tsx
@@ -3,7 +3,7 @@ import {
useFetchTransactionStatus,
useTransactionStatus,
useTransactionDetails,
- FetchStatus
+ FetchStatus,
} from "../providers/transactions";
import { useFetchTransactionDetails } from "providers/transactions/details";
import { useCluster, useClusterModal } from "providers/cluster";
@@ -11,7 +11,7 @@ import {
TransactionSignature,
SystemProgram,
StakeProgram,
- SystemInstruction
+ SystemInstruction,
} from "@solana/web3.js";
import ClusterStatusButton from "components/ClusterStatusButton";
import { lamportsToSolString } from "utils";
@@ -49,8 +49,8 @@ export default function TransactionDetails({ signature }: Props) {
setSearch(e.target.value)}
- onKeyUp={e => e.key === "Enter" && updateSignature()}
+ onChange={(e) => setSearch(e.target.value)}
+ onKeyUp={(e) => e.key === "Enter" && updateSignature()}
className="form-control form-control-prepended search text-monospace"
placeholder="Search for signature"
/>
@@ -293,7 +293,7 @@ function AccountsCard({ signature }: Props) {
{index < message.header.numRequiredSignatures && (
Signer
)}
- {message.instructions.find(ix => ix.programIdIndex === index) && (
+ {message.instructions.find((ix) => ix.programIdIndex === index) && (
Program
)}
|
diff --git a/explorer/src/components/TransactionsCard.tsx b/explorer/src/components/TransactionsCard.tsx
index 2265b77e60..22b81cbdda 100644
--- a/explorer/src/components/TransactionsCard.tsx
+++ b/explorer/src/components/TransactionsCard.tsx
@@ -4,7 +4,7 @@ import {
useTransactions,
TransactionStatus,
FetchStatus,
- useFetchTransactionStatus
+ useFetchTransactionStatus,
} from "../providers/transactions";
import bs58 from "bs58";
import { assertUnreachable } from "../utils";
@@ -71,10 +71,10 @@ function TransactionsCard() {
setError("")}
- onKeyDown={e =>
+ onKeyDown={(e) =>
e.keyCode === 13 && onNew(e.currentTarget.value)
}
- onSubmit={e => onNew(e.currentTarget.value)}
+ onSubmit={(e) => onNew(e.currentTarget.value)}
ref={signatureInput}
className={`form-control text-signature text-monospace ${
error ? "is-invalid" : ""
@@ -87,7 +87,9 @@ function TransactionsCard() {
- |
|
- {transactions.map(transaction => renderTransactionRow(transaction))}
+ {transactions.map((transaction) =>
+ renderTransactionRow(transaction)
+ )}
@@ -162,7 +164,7 @@ const renderTransactionRow = (transactionStatus: TransactionStatus) => {
{slotText} |
({ ...location, pathname: "/tx/" + signature })}
+ to={(location) => ({ ...location, pathname: "/tx/" + signature })}
className="btn btn-rounded-circle btn-white btn-sm"
>
diff --git a/explorer/src/components/account/StakeAccountCards.tsx b/explorer/src/components/account/StakeAccountCards.tsx
index 9cd2feebd3..f63e8a9953 100644
--- a/explorer/src/components/account/StakeAccountCards.tsx
+++ b/explorer/src/components/account/StakeAccountCards.tsx
@@ -9,7 +9,7 @@ import { Account, useFetchAccountInfo } from "providers/accounts";
export function StakeAccountCards({
account,
- stakeAccount
+ stakeAccount,
}: {
account: Account;
stakeAccount: StakeAccount;
@@ -40,7 +40,7 @@ function LockupCard({ stakeAccount }: { stakeAccount: StakeAccount }) {
function OverviewCard({
account,
- stakeAccount
+ stakeAccount,
}: {
account: Account;
stakeAccount: StakeAccount;
diff --git a/explorer/src/components/common/ErrorCard.tsx b/explorer/src/components/common/ErrorCard.tsx
index bb788ff56c..d6675c277c 100644
--- a/explorer/src/components/common/ErrorCard.tsx
+++ b/explorer/src/components/common/ErrorCard.tsx
@@ -4,7 +4,7 @@ export default function ErrorCard({
retry,
retryText,
text,
- subtext
+ subtext,
}: {
retry?: () => void;
retryText?: string;
diff --git a/explorer/src/components/common/TableCardBody.tsx b/explorer/src/components/common/TableCardBody.tsx
index b2e35f2d13..faef8fc19a 100644
--- a/explorer/src/components/common/TableCardBody.tsx
+++ b/explorer/src/components/common/TableCardBody.tsx
@@ -1,7 +1,7 @@
import React from "react";
export default function TableCardBody({
- children
+ children,
}: {
children: React.ReactNode;
}) {
diff --git a/explorer/src/components/instruction/InstructionCard.tsx b/explorer/src/components/instruction/InstructionCard.tsx
index 5e2ddfbc90..4fe4b552ce 100644
--- a/explorer/src/components/instruction/InstructionCard.tsx
+++ b/explorer/src/components/instruction/InstructionCard.tsx
@@ -17,7 +17,7 @@ export function InstructionCard({
result,
index,
ix,
- defaultRaw
+ defaultRaw,
}: InstructionProps) {
const [resultClass] = ixResult(result, index);
const [showRaw, setShowRaw] = React.useState(defaultRaw || false);
@@ -36,7 +36,7 @@ export function InstructionCard({
className={`btn btn-sm d-flex ${
showRaw ? "btn-dark active" : "btn-white"
}`}
- onClick={() => setShowRaw(r => !r)}
+ onClick={() => setShowRaw((r) => !r)}
>
Raw
diff --git a/explorer/src/components/instruction/UnknownDetailsCard.tsx b/explorer/src/components/instruction/UnknownDetailsCard.tsx
index 33a3cacaf6..d50767c216 100644
--- a/explorer/src/components/instruction/UnknownDetailsCard.tsx
+++ b/explorer/src/components/instruction/UnknownDetailsCard.tsx
@@ -5,7 +5,7 @@ import { InstructionCard } from "./InstructionCard";
export function UnknownDetailsCard({
ix,
index,
- result
+ result,
}: {
ix: TransactionInstruction;
index: number;
diff --git a/explorer/src/components/instruction/stake/AuthorizeDetailsCard.tsx b/explorer/src/components/instruction/stake/AuthorizeDetailsCard.tsx
index f38cc68ee2..4aec1e2f5f 100644
--- a/explorer/src/components/instruction/stake/AuthorizeDetailsCard.tsx
+++ b/explorer/src/components/instruction/stake/AuthorizeDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SignatureResult,
StakeInstruction,
- StakeProgram
+ StakeProgram,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { InstructionCard } from "../InstructionCard";
diff --git a/explorer/src/components/instruction/stake/DeactivateDetailsCard.tsx b/explorer/src/components/instruction/stake/DeactivateDetailsCard.tsx
index 7a442e73f7..45b6ed8155 100644
--- a/explorer/src/components/instruction/stake/DeactivateDetailsCard.tsx
+++ b/explorer/src/components/instruction/stake/DeactivateDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SignatureResult,
StakeInstruction,
- StakeProgram
+ StakeProgram,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { InstructionCard } from "../InstructionCard";
diff --git a/explorer/src/components/instruction/stake/DelegateDetailsCard.tsx b/explorer/src/components/instruction/stake/DelegateDetailsCard.tsx
index 9d55502329..3b8380a986 100644
--- a/explorer/src/components/instruction/stake/DelegateDetailsCard.tsx
+++ b/explorer/src/components/instruction/stake/DelegateDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SignatureResult,
StakeInstruction,
- StakeProgram
+ StakeProgram,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { InstructionCard } from "../InstructionCard";
diff --git a/explorer/src/components/instruction/stake/InitializeDetailsCard.tsx b/explorer/src/components/instruction/stake/InitializeDetailsCard.tsx
index 99356fa266..a4459737e4 100644
--- a/explorer/src/components/instruction/stake/InitializeDetailsCard.tsx
+++ b/explorer/src/components/instruction/stake/InitializeDetailsCard.tsx
@@ -4,7 +4,7 @@ import {
SignatureResult,
StakeInstruction,
StakeProgram,
- SystemProgram
+ SystemProgram,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { InstructionCard } from "../InstructionCard";
diff --git a/explorer/src/components/instruction/stake/SplitDetailsCard.tsx b/explorer/src/components/instruction/stake/SplitDetailsCard.tsx
index bcc4401b13..46d34d6277 100644
--- a/explorer/src/components/instruction/stake/SplitDetailsCard.tsx
+++ b/explorer/src/components/instruction/stake/SplitDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SignatureResult,
StakeInstruction,
- StakeProgram
+ StakeProgram,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { lamportsToSolString } from "utils";
diff --git a/explorer/src/components/instruction/stake/StakeDetailsCard.tsx b/explorer/src/components/instruction/stake/StakeDetailsCard.tsx
index 84c6580c1d..d9e5e9e628 100644
--- a/explorer/src/components/instruction/stake/StakeDetailsCard.tsx
+++ b/explorer/src/components/instruction/stake/StakeDetailsCard.tsx
@@ -2,7 +2,7 @@ import React from "react";
import {
StakeInstruction,
TransactionInstruction,
- SignatureResult
+ SignatureResult,
} from "@solana/web3.js";
import { UnknownDetailsCard } from "../UnknownDetailsCard";
diff --git a/explorer/src/components/instruction/stake/WithdrawDetailsCard.tsx b/explorer/src/components/instruction/stake/WithdrawDetailsCard.tsx
index e34e373120..a8dc68a416 100644
--- a/explorer/src/components/instruction/stake/WithdrawDetailsCard.tsx
+++ b/explorer/src/components/instruction/stake/WithdrawDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SignatureResult,
StakeInstruction,
- StakeProgram
+ StakeProgram,
} from "@solana/web3.js";
import { lamportsToSolString } from "utils";
import { displayAddress } from "utils/tx";
diff --git a/explorer/src/components/instruction/system/AllocateDetailsCard.tsx b/explorer/src/components/instruction/system/AllocateDetailsCard.tsx
index e3e58536f3..f51670d7e8 100644
--- a/explorer/src/components/instruction/system/AllocateDetailsCard.tsx
+++ b/explorer/src/components/instruction/system/AllocateDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SystemProgram,
SignatureResult,
- SystemInstruction
+ SystemInstruction,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { InstructionCard } from "../InstructionCard";
diff --git a/explorer/src/components/instruction/system/AllocateWithSeedDetailsCard.tsx b/explorer/src/components/instruction/system/AllocateWithSeedDetailsCard.tsx
index ccea8e1a1e..45f535f27e 100644
--- a/explorer/src/components/instruction/system/AllocateWithSeedDetailsCard.tsx
+++ b/explorer/src/components/instruction/system/AllocateWithSeedDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SystemProgram,
SignatureResult,
- SystemInstruction
+ SystemInstruction,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { InstructionCard } from "../InstructionCard";
diff --git a/explorer/src/components/instruction/system/AssignDetailsCard.tsx b/explorer/src/components/instruction/system/AssignDetailsCard.tsx
index 5c9c2fda19..5122239bba 100644
--- a/explorer/src/components/instruction/system/AssignDetailsCard.tsx
+++ b/explorer/src/components/instruction/system/AssignDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SystemProgram,
SignatureResult,
- SystemInstruction
+ SystemInstruction,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { InstructionCard } from "../InstructionCard";
diff --git a/explorer/src/components/instruction/system/AssignWithSeedDetailsCard.tsx b/explorer/src/components/instruction/system/AssignWithSeedDetailsCard.tsx
index 9d2f2838cd..d53e97275f 100644
--- a/explorer/src/components/instruction/system/AssignWithSeedDetailsCard.tsx
+++ b/explorer/src/components/instruction/system/AssignWithSeedDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SystemProgram,
SignatureResult,
- SystemInstruction
+ SystemInstruction,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { InstructionCard } from "../InstructionCard";
diff --git a/explorer/src/components/instruction/system/CreateDetailsCard.tsx b/explorer/src/components/instruction/system/CreateDetailsCard.tsx
index abc0fed312..0f6ef33dac 100644
--- a/explorer/src/components/instruction/system/CreateDetailsCard.tsx
+++ b/explorer/src/components/instruction/system/CreateDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SystemProgram,
SignatureResult,
- SystemInstruction
+ SystemInstruction,
} from "@solana/web3.js";
import { lamportsToSolString } from "utils";
import { displayAddress } from "utils/tx";
diff --git a/explorer/src/components/instruction/system/CreateWithSeedDetailsCard.tsx b/explorer/src/components/instruction/system/CreateWithSeedDetailsCard.tsx
index a3ef8f4d8e..4c1f6dd26c 100644
--- a/explorer/src/components/instruction/system/CreateWithSeedDetailsCard.tsx
+++ b/explorer/src/components/instruction/system/CreateWithSeedDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SystemProgram,
SignatureResult,
- SystemInstruction
+ SystemInstruction,
} from "@solana/web3.js";
import { lamportsToSolString } from "utils";
import { displayAddress } from "utils/tx";
diff --git a/explorer/src/components/instruction/system/NonceAdvanceDetailsCard.tsx b/explorer/src/components/instruction/system/NonceAdvanceDetailsCard.tsx
index b5a70032b9..17d8bc97db 100644
--- a/explorer/src/components/instruction/system/NonceAdvanceDetailsCard.tsx
+++ b/explorer/src/components/instruction/system/NonceAdvanceDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SystemProgram,
SignatureResult,
- SystemInstruction
+ SystemInstruction,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { InstructionCard } from "../InstructionCard";
diff --git a/explorer/src/components/instruction/system/NonceAuthorizeDetailsCard.tsx b/explorer/src/components/instruction/system/NonceAuthorizeDetailsCard.tsx
index 71ccba8466..f228d44935 100644
--- a/explorer/src/components/instruction/system/NonceAuthorizeDetailsCard.tsx
+++ b/explorer/src/components/instruction/system/NonceAuthorizeDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SystemProgram,
SignatureResult,
- SystemInstruction
+ SystemInstruction,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { InstructionCard } from "../InstructionCard";
diff --git a/explorer/src/components/instruction/system/NonceInitializeDetailsCard.tsx b/explorer/src/components/instruction/system/NonceInitializeDetailsCard.tsx
index ff80c42a1d..3195f144db 100644
--- a/explorer/src/components/instruction/system/NonceInitializeDetailsCard.tsx
+++ b/explorer/src/components/instruction/system/NonceInitializeDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SystemProgram,
SignatureResult,
- SystemInstruction
+ SystemInstruction,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { InstructionCard } from "../InstructionCard";
diff --git a/explorer/src/components/instruction/system/NonceWithdrawDetailsCard.tsx b/explorer/src/components/instruction/system/NonceWithdrawDetailsCard.tsx
index 1470f0654a..dc4fff48d8 100644
--- a/explorer/src/components/instruction/system/NonceWithdrawDetailsCard.tsx
+++ b/explorer/src/components/instruction/system/NonceWithdrawDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SystemProgram,
SignatureResult,
- SystemInstruction
+ SystemInstruction,
} from "@solana/web3.js";
import { displayAddress } from "utils/tx";
import { lamportsToSolString } from "utils";
diff --git a/explorer/src/components/instruction/system/SystemDetailsCard.tsx b/explorer/src/components/instruction/system/SystemDetailsCard.tsx
index 34138772e0..9b0d77ba78 100644
--- a/explorer/src/components/instruction/system/SystemDetailsCard.tsx
+++ b/explorer/src/components/instruction/system/SystemDetailsCard.tsx
@@ -2,7 +2,7 @@ import React from "react";
import {
SystemInstruction,
TransactionInstruction,
- SignatureResult
+ SignatureResult,
} from "@solana/web3.js";
import { UnknownDetailsCard } from "../UnknownDetailsCard";
diff --git a/explorer/src/components/instruction/system/TransferDetailsCard.tsx b/explorer/src/components/instruction/system/TransferDetailsCard.tsx
index dc57821651..fbea06e75c 100644
--- a/explorer/src/components/instruction/system/TransferDetailsCard.tsx
+++ b/explorer/src/components/instruction/system/TransferDetailsCard.tsx
@@ -3,7 +3,7 @@ import {
TransactionInstruction,
SystemProgram,
SignatureResult,
- SystemInstruction
+ SystemInstruction,
} from "@solana/web3.js";
import { lamportsToSolString } from "utils";
import { displayAddress } from "utils/tx";
diff --git a/explorer/src/fonts/feather/feather.css b/explorer/src/fonts/feather/feather.css
index 64b8271a4e..9492cdeb3d 100644
--- a/explorer/src/fonts/feather/feather.css
+++ b/explorer/src/fonts/feather/feather.css
@@ -1,822 +1,822 @@
-@font-face {
- font-family: "Feather";
- src: url("fonts/Feather.ttf?sdxovp") format("truetype"),
- url("fonts/Feather.woff?sdxovp") format("woff"),
- url("fonts/Feather.svg?sdxovp#Feather") format("svg");
- font-weight: normal;
- font-style: normal;
-}
-
-.fe {
- /* use !important to prevent issues with browser extensions that change fonts */
- font-family: "Feather" !important;
- speak: none;
- font-style: normal;
- font-weight: normal;
- font-variant: normal;
- text-transform: none;
- line-height: 1;
-
- /* Better Font Rendering =========== */
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-.fe-activity:before {
- content: "\e900";
-}
-.fe-airplay:before {
- content: "\e901";
-}
-.fe-alert-circle:before {
- content: "\e902";
-}
-.fe-alert-octagon:before {
- content: "\e903";
-}
-.fe-alert-triangle:before {
- content: "\e904";
-}
-.fe-align-center:before {
- content: "\e905";
-}
-.fe-align-justify:before {
- content: "\e906";
-}
-.fe-align-left:before {
- content: "\e907";
-}
-.fe-align-right:before {
- content: "\e908";
-}
-.fe-anchor:before {
- content: "\e909";
-}
-.fe-aperture:before {
- content: "\e90a";
-}
-.fe-archive:before {
- content: "\e90b";
-}
-.fe-arrow-down:before {
- content: "\e90c";
-}
-.fe-arrow-down-circle:before {
- content: "\e90d";
-}
-.fe-arrow-down-left:before {
- content: "\e90e";
-}
-.fe-arrow-down-right:before {
- content: "\e90f";
-}
-.fe-arrow-left:before {
- content: "\e910";
-}
-.fe-arrow-left-circle:before {
- content: "\e911";
-}
-.fe-arrow-right:before {
- content: "\e912";
-}
-.fe-arrow-right-circle:before {
- content: "\e913";
-}
-.fe-arrow-up:before {
- content: "\e914";
-}
-.fe-arrow-up-circle:before {
- content: "\e915";
-}
-.fe-arrow-up-left:before {
- content: "\e916";
-}
-.fe-arrow-up-right:before {
- content: "\e917";
-}
-.fe-at-sign:before {
- content: "\e918";
-}
-.fe-award:before {
- content: "\e919";
-}
-.fe-bar-chart:before {
- content: "\e91a";
-}
-.fe-bar-chart-2:before {
- content: "\e91b";
-}
-.fe-battery:before {
- content: "\e91c";
-}
-.fe-battery-charging:before {
- content: "\e91d";
-}
-.fe-bell:before {
- content: "\e91e";
-}
-.fe-bell-off:before {
- content: "\e91f";
-}
-.fe-bluetooth:before {
- content: "\e920";
-}
-.fe-bold:before {
- content: "\e921";
-}
-.fe-book:before {
- content: "\e922";
-}
-.fe-book-open:before {
- content: "\e923";
-}
-.fe-bookmark:before {
- content: "\e924";
-}
-.fe-box:before {
- content: "\e925";
-}
-.fe-briefcase:before {
- content: "\e926";
-}
-.fe-calendar:before {
- content: "\e927";
-}
-.fe-camera:before {
- content: "\e928";
-}
-.fe-camera-off:before {
- content: "\e929";
-}
-.fe-cast:before {
- content: "\e92a";
-}
-.fe-check:before {
- content: "\e92b";
-}
-.fe-check-circle:before {
- content: "\e92c";
-}
-.fe-check-square:before {
- content: "\e92d";
-}
-.fe-chevron-down:before {
- content: "\e92e";
-}
-.fe-chevron-left:before {
- content: "\e92f";
-}
-.fe-chevron-right:before {
- content: "\e930";
-}
-.fe-chevron-up:before {
- content: "\e931";
-}
-.fe-chevrons-down:before {
- content: "\e932";
-}
-.fe-chevrons-left:before {
- content: "\e933";
-}
-.fe-chevrons-right:before {
- content: "\e934";
-}
-.fe-chevrons-up:before {
- content: "\e935";
-}
-.fe-chrome:before {
- content: "\e936";
-}
-.fe-circle:before {
- content: "\e937";
-}
-.fe-clipboard:before {
- content: "\e938";
-}
-.fe-clock:before {
- content: "\e939";
-}
-.fe-cloud:before {
- content: "\e93a";
-}
-.fe-cloud-drizzle:before {
- content: "\e93b";
-}
-.fe-cloud-lightning:before {
- content: "\e93c";
-}
-.fe-cloud-off:before {
- content: "\e93d";
-}
-.fe-cloud-rain:before {
- content: "\e93e";
-}
-.fe-cloud-snow:before {
- content: "\e93f";
-}
-.fe-code:before {
- content: "\e940";
-}
-.fe-codepen:before {
- content: "\e941";
-}
-.fe-command:before {
- content: "\e942";
-}
-.fe-compass:before {
- content: "\e943";
-}
-.fe-copy:before {
- content: "\e944";
-}
-.fe-corner-down-left:before {
- content: "\e945";
-}
-.fe-corner-down-right:before {
- content: "\e946";
-}
-.fe-corner-left-down:before {
- content: "\e947";
-}
-.fe-corner-left-up:before {
- content: "\e948";
-}
-.fe-corner-right-down:before {
- content: "\e949";
-}
-.fe-corner-right-up:before {
- content: "\e94a";
-}
-.fe-corner-up-left:before {
- content: "\e94b";
-}
-.fe-corner-up-right:before {
- content: "\e94c";
-}
-.fe-cpu:before {
- content: "\e94d";
-}
-.fe-credit-card:before {
- content: "\e94e";
-}
-.fe-crop:before {
- content: "\e94f";
-}
-.fe-crosshair:before {
- content: "\e950";
-}
-.fe-database:before {
- content: "\e951";
-}
-.fe-delete:before {
- content: "\e952";
-}
-.fe-disc:before {
- content: "\e953";
-}
-.fe-dollar-sign:before {
- content: "\e954";
-}
-.fe-download:before {
- content: "\e955";
-}
-.fe-download-cloud:before {
- content: "\e956";
-}
-.fe-droplet:before {
- content: "\e957";
-}
-.fe-edit:before {
- content: "\e958";
-}
-.fe-edit-2:before {
- content: "\e959";
-}
-.fe-edit-3:before {
- content: "\e95a";
-}
-.fe-external-link:before {
- content: "\e95b";
-}
-.fe-eye:before {
- content: "\e95c";
-}
-.fe-eye-off:before {
- content: "\e95d";
-}
-.fe-facebook:before {
- content: "\e95e";
-}
-.fe-fast-forward:before {
- content: "\e95f";
-}
-.fe-feather:before {
- content: "\e960";
-}
-.fe-file:before {
- content: "\e961";
-}
-.fe-file-minus:before {
- content: "\e962";
-}
-.fe-file-plus:before {
- content: "\e963";
-}
-.fe-file-text:before {
- content: "\e964";
-}
-.fe-film:before {
- content: "\e965";
-}
-.fe-filter:before {
- content: "\e966";
-}
-.fe-flag:before {
- content: "\e967";
-}
-.fe-folder:before {
- content: "\e968";
-}
-.fe-folder-minus:before {
- content: "\e969";
-}
-.fe-folder-plus:before {
- content: "\e96a";
-}
-.fe-gift:before {
- content: "\e96b";
-}
-.fe-git-branch:before {
- content: "\e96c";
-}
-.fe-git-commit:before {
- content: "\e96d";
-}
-.fe-git-merge:before {
- content: "\e96e";
-}
-.fe-git-pull-request:before {
- content: "\e96f";
-}
-.fe-github:before {
- content: "\e970";
-}
-.fe-gitlab:before {
- content: "\e971";
-}
-.fe-globe:before {
- content: "\e972";
-}
-.fe-grid:before {
- content: "\e973";
-}
-.fe-hard-drive:before {
- content: "\e974";
-}
-.fe-hash:before {
- content: "\e975";
-}
-.fe-headphones:before {
- content: "\e976";
-}
-.fe-heart:before {
- content: "\e977";
-}
-.fe-help-circle:before {
- content: "\e978";
-}
-.fe-home:before {
- content: "\e979";
-}
-.fe-image:before {
- content: "\e97a";
-}
-.fe-inbox:before {
- content: "\e97b";
-}
-.fe-info:before {
- content: "\e97c";
-}
-.fe-instagram:before {
- content: "\e97d";
-}
-.fe-italic:before {
- content: "\e97e";
-}
-.fe-layers:before {
- content: "\e97f";
-}
-.fe-layout:before {
- content: "\e980";
-}
-.fe-life-buoy:before {
- content: "\e981";
-}
-.fe-link:before {
- content: "\e982";
-}
-.fe-link-2:before {
- content: "\e983";
-}
-.fe-linkedin:before {
- content: "\e984";
-}
-.fe-list:before {
- content: "\e985";
-}
-.fe-loader:before {
- content: "\e986";
-}
-.fe-lock:before {
- content: "\e987";
-}
-.fe-log-in:before {
- content: "\e988";
-}
-.fe-log-out:before {
- content: "\e989";
-}
-.fe-mail:before {
- content: "\e98a";
-}
-.fe-map:before {
- content: "\e98b";
-}
-.fe-map-pin:before {
- content: "\e98c";
-}
-.fe-maximize:before {
- content: "\e98d";
-}
-.fe-maximize-2:before {
- content: "\e98e";
-}
-.fe-menu:before {
- content: "\e98f";
-}
-.fe-message-circle:before {
- content: "\e990";
-}
-.fe-message-square:before {
- content: "\e991";
-}
-.fe-mic:before {
- content: "\e992";
-}
-.fe-mic-off:before {
- content: "\e993";
-}
-.fe-minimize:before {
- content: "\e994";
-}
-.fe-minimize-2:before {
- content: "\e995";
-}
-.fe-minus:before {
- content: "\e996";
-}
-.fe-minus-circle:before {
- content: "\e997";
-}
-.fe-minus-square:before {
- content: "\e998";
-}
-.fe-monitor:before {
- content: "\e999";
-}
-.fe-moon:before {
- content: "\e99a";
-}
-.fe-more-horizontal:before {
- content: "\e99b";
-}
-.fe-more-vertical:before {
- content: "\e99c";
-}
-.fe-move:before {
- content: "\e99d";
-}
-.fe-music:before {
- content: "\e99e";
-}
-.fe-navigation:before {
- content: "\e99f";
-}
-.fe-navigation-2:before {
- content: "\e9a0";
-}
-.fe-octagon:before {
- content: "\e9a1";
-}
-.fe-package:before {
- content: "\e9a2";
-}
-.fe-paperclip:before {
- content: "\e9a3";
-}
-.fe-pause:before {
- content: "\e9a4";
-}
-.fe-pause-circle:before {
- content: "\e9a5";
-}
-.fe-percent:before {
- content: "\e9a6";
-}
-.fe-phone:before {
- content: "\e9a7";
-}
-.fe-phone-call:before {
- content: "\e9a8";
-}
-.fe-phone-forwarded:before {
- content: "\e9a9";
-}
-.fe-phone-incoming:before {
- content: "\e9aa";
-}
-.fe-phone-missed:before {
- content: "\e9ab";
-}
-.fe-phone-off:before {
- content: "\e9ac";
-}
-.fe-phone-outgoing:before {
- content: "\e9ad";
-}
-.fe-pie-chart:before {
- content: "\e9ae";
-}
-.fe-play:before {
- content: "\e9af";
-}
-.fe-play-circle:before {
- content: "\e9b0";
-}
-.fe-plus:before {
- content: "\e9b1";
-}
-.fe-plus-circle:before {
- content: "\e9b2";
-}
-.fe-plus-square:before {
- content: "\e9b3";
-}
-.fe-pocket:before {
- content: "\e9b4";
-}
-.fe-power:before {
- content: "\e9b5";
-}
-.fe-printer:before {
- content: "\e9b6";
-}
-.fe-radio:before {
- content: "\e9b7";
-}
-.fe-refresh-ccw:before {
- content: "\e9b8";
-}
-.fe-refresh-cw:before {
- content: "\e9b9";
-}
-.fe-repeat:before {
- content: "\e9ba";
-}
-.fe-rewind:before {
- content: "\e9bb";
-}
-.fe-rotate-ccw:before {
- content: "\e9bc";
-}
-.fe-rotate-cw:before {
- content: "\e9bd";
-}
-.fe-rss:before {
- content: "\e9be";
-}
-.fe-save:before {
- content: "\e9bf";
-}
-.fe-scissors:before {
- content: "\e9c0";
-}
-.fe-search:before {
- content: "\e9c1";
-}
-.fe-send:before {
- content: "\e9c2";
-}
-.fe-server:before {
- content: "\e9c3";
-}
-.fe-settings:before {
- content: "\e9c4";
-}
-.fe-share:before {
- content: "\e9c5";
-}
-.fe-share-2:before {
- content: "\e9c6";
-}
-.fe-shield:before {
- content: "\e9c7";
-}
-.fe-shield-off:before {
- content: "\e9c8";
-}
-.fe-shopping-bag:before {
- content: "\e9c9";
-}
-.fe-shopping-cart:before {
- content: "\e9ca";
-}
-.fe-shuffle:before {
- content: "\e9cb";
-}
-.fe-sidebar:before {
- content: "\e9cc";
-}
-.fe-skip-back:before {
- content: "\e9cd";
-}
-.fe-skip-forward:before {
- content: "\e9ce";
-}
-.fe-slack:before {
- content: "\e9cf";
-}
-.fe-slash:before {
- content: "\e9d0";
-}
-.fe-sliders:before {
- content: "\e9d1";
-}
-.fe-smartphone:before {
- content: "\e9d2";
-}
-.fe-speaker:before {
- content: "\e9d3";
-}
-.fe-square:before {
- content: "\e9d4";
-}
-.fe-star:before {
- content: "\e9d5";
-}
-.fe-stop-circle:before {
- content: "\e9d6";
-}
-.fe-sun:before {
- content: "\e9d7";
-}
-.fe-sunrise:before {
- content: "\e9d8";
-}
-.fe-sunset:before {
- content: "\e9d9";
-}
-.fe-tablet:before {
- content: "\e9da";
-}
-.fe-tag:before {
- content: "\e9db";
-}
-.fe-target:before {
- content: "\e9dc";
-}
-.fe-terminal:before {
- content: "\e9dd";
-}
-.fe-thermometer:before {
- content: "\e9de";
-}
-.fe-thumbs-down:before {
- content: "\e9df";
-}
-.fe-thumbs-up:before {
- content: "\e9e0";
-}
-.fe-toggle-left:before {
- content: "\e9e1";
-}
-.fe-toggle-right:before {
- content: "\e9e2";
-}
-.fe-trash:before {
- content: "\e9e3";
-}
-.fe-trash-2:before {
- content: "\e9e4";
-}
-.fe-trending-down:before {
- content: "\e9e5";
-}
-.fe-trending-up:before {
- content: "\e9e6";
-}
-.fe-triangle:before {
- content: "\e9e7";
-}
-.fe-truck:before {
- content: "\e9e8";
-}
-.fe-tv:before {
- content: "\e9e9";
-}
-.fe-twitter:before {
- content: "\e9ea";
-}
-.fe-type:before {
- content: "\e9eb";
-}
-.fe-umbrella:before {
- content: "\e9ec";
-}
-.fe-underline:before {
- content: "\e9ed";
-}
-.fe-unlock:before {
- content: "\e9ee";
-}
-.fe-upload:before {
- content: "\e9ef";
-}
-.fe-upload-cloud:before {
- content: "\e9f0";
-}
-.fe-user:before {
- content: "\e9f1";
-}
-.fe-user-check:before {
- content: "\e9f2";
-}
-.fe-user-minus:before {
- content: "\e9f3";
-}
-.fe-user-plus:before {
- content: "\e9f4";
-}
-.fe-user-x:before {
- content: "\e9f5";
-}
-.fe-users:before {
- content: "\e9f6";
-}
-.fe-video:before {
- content: "\e9f7";
-}
-.fe-video-off:before {
- content: "\e9f8";
-}
-.fe-voicemail:before {
- content: "\e9f9";
-}
-.fe-volume:before {
- content: "\e9fa";
-}
-.fe-volume-1:before {
- content: "\e9fb";
-}
-.fe-volume-2:before {
- content: "\e9fc";
-}
-.fe-volume-x:before {
- content: "\e9fd";
-}
-.fe-watch:before {
- content: "\e9fe";
-}
-.fe-wifi:before {
- content: "\e9ff";
-}
-.fe-wifi-off:before {
- content: "\ea00";
-}
-.fe-wind:before {
- content: "\ea01";
-}
-.fe-x:before {
- content: "\ea02";
-}
-.fe-x-circle:before {
- content: "\ea03";
-}
-.fe-x-square:before {
- content: "\ea04";
-}
-.fe-youtube:before {
- content: "\ea05";
-}
-.fe-zap:before {
- content: "\ea06";
-}
-.fe-zap-off:before {
- content: "\ea07";
-}
-.fe-zoom-in:before {
- content: "\ea08";
-}
-.fe-zoom-out:before {
- content: "\ea09";
-}
+@font-face {
+ font-family: "Feather";
+ src: url("fonts/Feather.ttf?sdxovp") format("truetype"),
+ url("fonts/Feather.woff?sdxovp") format("woff"),
+ url("fonts/Feather.svg?sdxovp#Feather") format("svg");
+ font-weight: normal;
+ font-style: normal;
+}
+
+.fe {
+ /* use !important to prevent issues with browser extensions that change fonts */
+ font-family: "Feather" !important;
+ speak: none;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.fe-activity:before {
+ content: "\e900";
+}
+.fe-airplay:before {
+ content: "\e901";
+}
+.fe-alert-circle:before {
+ content: "\e902";
+}
+.fe-alert-octagon:before {
+ content: "\e903";
+}
+.fe-alert-triangle:before {
+ content: "\e904";
+}
+.fe-align-center:before {
+ content: "\e905";
+}
+.fe-align-justify:before {
+ content: "\e906";
+}
+.fe-align-left:before {
+ content: "\e907";
+}
+.fe-align-right:before {
+ content: "\e908";
+}
+.fe-anchor:before {
+ content: "\e909";
+}
+.fe-aperture:before {
+ content: "\e90a";
+}
+.fe-archive:before {
+ content: "\e90b";
+}
+.fe-arrow-down:before {
+ content: "\e90c";
+}
+.fe-arrow-down-circle:before {
+ content: "\e90d";
+}
+.fe-arrow-down-left:before {
+ content: "\e90e";
+}
+.fe-arrow-down-right:before {
+ content: "\e90f";
+}
+.fe-arrow-left:before {
+ content: "\e910";
+}
+.fe-arrow-left-circle:before {
+ content: "\e911";
+}
+.fe-arrow-right:before {
+ content: "\e912";
+}
+.fe-arrow-right-circle:before {
+ content: "\e913";
+}
+.fe-arrow-up:before {
+ content: "\e914";
+}
+.fe-arrow-up-circle:before {
+ content: "\e915";
+}
+.fe-arrow-up-left:before {
+ content: "\e916";
+}
+.fe-arrow-up-right:before {
+ content: "\e917";
+}
+.fe-at-sign:before {
+ content: "\e918";
+}
+.fe-award:before {
+ content: "\e919";
+}
+.fe-bar-chart:before {
+ content: "\e91a";
+}
+.fe-bar-chart-2:before {
+ content: "\e91b";
+}
+.fe-battery:before {
+ content: "\e91c";
+}
+.fe-battery-charging:before {
+ content: "\e91d";
+}
+.fe-bell:before {
+ content: "\e91e";
+}
+.fe-bell-off:before {
+ content: "\e91f";
+}
+.fe-bluetooth:before {
+ content: "\e920";
+}
+.fe-bold:before {
+ content: "\e921";
+}
+.fe-book:before {
+ content: "\e922";
+}
+.fe-book-open:before {
+ content: "\e923";
+}
+.fe-bookmark:before {
+ content: "\e924";
+}
+.fe-box:before {
+ content: "\e925";
+}
+.fe-briefcase:before {
+ content: "\e926";
+}
+.fe-calendar:before {
+ content: "\e927";
+}
+.fe-camera:before {
+ content: "\e928";
+}
+.fe-camera-off:before {
+ content: "\e929";
+}
+.fe-cast:before {
+ content: "\e92a";
+}
+.fe-check:before {
+ content: "\e92b";
+}
+.fe-check-circle:before {
+ content: "\e92c";
+}
+.fe-check-square:before {
+ content: "\e92d";
+}
+.fe-chevron-down:before {
+ content: "\e92e";
+}
+.fe-chevron-left:before {
+ content: "\e92f";
+}
+.fe-chevron-right:before {
+ content: "\e930";
+}
+.fe-chevron-up:before {
+ content: "\e931";
+}
+.fe-chevrons-down:before {
+ content: "\e932";
+}
+.fe-chevrons-left:before {
+ content: "\e933";
+}
+.fe-chevrons-right:before {
+ content: "\e934";
+}
+.fe-chevrons-up:before {
+ content: "\e935";
+}
+.fe-chrome:before {
+ content: "\e936";
+}
+.fe-circle:before {
+ content: "\e937";
+}
+.fe-clipboard:before {
+ content: "\e938";
+}
+.fe-clock:before {
+ content: "\e939";
+}
+.fe-cloud:before {
+ content: "\e93a";
+}
+.fe-cloud-drizzle:before {
+ content: "\e93b";
+}
+.fe-cloud-lightning:before {
+ content: "\e93c";
+}
+.fe-cloud-off:before {
+ content: "\e93d";
+}
+.fe-cloud-rain:before {
+ content: "\e93e";
+}
+.fe-cloud-snow:before {
+ content: "\e93f";
+}
+.fe-code:before {
+ content: "\e940";
+}
+.fe-codepen:before {
+ content: "\e941";
+}
+.fe-command:before {
+ content: "\e942";
+}
+.fe-compass:before {
+ content: "\e943";
+}
+.fe-copy:before {
+ content: "\e944";
+}
+.fe-corner-down-left:before {
+ content: "\e945";
+}
+.fe-corner-down-right:before {
+ content: "\e946";
+}
+.fe-corner-left-down:before {
+ content: "\e947";
+}
+.fe-corner-left-up:before {
+ content: "\e948";
+}
+.fe-corner-right-down:before {
+ content: "\e949";
+}
+.fe-corner-right-up:before {
+ content: "\e94a";
+}
+.fe-corner-up-left:before {
+ content: "\e94b";
+}
+.fe-corner-up-right:before {
+ content: "\e94c";
+}
+.fe-cpu:before {
+ content: "\e94d";
+}
+.fe-credit-card:before {
+ content: "\e94e";
+}
+.fe-crop:before {
+ content: "\e94f";
+}
+.fe-crosshair:before {
+ content: "\e950";
+}
+.fe-database:before {
+ content: "\e951";
+}
+.fe-delete:before {
+ content: "\e952";
+}
+.fe-disc:before {
+ content: "\e953";
+}
+.fe-dollar-sign:before {
+ content: "\e954";
+}
+.fe-download:before {
+ content: "\e955";
+}
+.fe-download-cloud:before {
+ content: "\e956";
+}
+.fe-droplet:before {
+ content: "\e957";
+}
+.fe-edit:before {
+ content: "\e958";
+}
+.fe-edit-2:before {
+ content: "\e959";
+}
+.fe-edit-3:before {
+ content: "\e95a";
+}
+.fe-external-link:before {
+ content: "\e95b";
+}
+.fe-eye:before {
+ content: "\e95c";
+}
+.fe-eye-off:before {
+ content: "\e95d";
+}
+.fe-facebook:before {
+ content: "\e95e";
+}
+.fe-fast-forward:before {
+ content: "\e95f";
+}
+.fe-feather:before {
+ content: "\e960";
+}
+.fe-file:before {
+ content: "\e961";
+}
+.fe-file-minus:before {
+ content: "\e962";
+}
+.fe-file-plus:before {
+ content: "\e963";
+}
+.fe-file-text:before {
+ content: "\e964";
+}
+.fe-film:before {
+ content: "\e965";
+}
+.fe-filter:before {
+ content: "\e966";
+}
+.fe-flag:before {
+ content: "\e967";
+}
+.fe-folder:before {
+ content: "\e968";
+}
+.fe-folder-minus:before {
+ content: "\e969";
+}
+.fe-folder-plus:before {
+ content: "\e96a";
+}
+.fe-gift:before {
+ content: "\e96b";
+}
+.fe-git-branch:before {
+ content: "\e96c";
+}
+.fe-git-commit:before {
+ content: "\e96d";
+}
+.fe-git-merge:before {
+ content: "\e96e";
+}
+.fe-git-pull-request:before {
+ content: "\e96f";
+}
+.fe-github:before {
+ content: "\e970";
+}
+.fe-gitlab:before {
+ content: "\e971";
+}
+.fe-globe:before {
+ content: "\e972";
+}
+.fe-grid:before {
+ content: "\e973";
+}
+.fe-hard-drive:before {
+ content: "\e974";
+}
+.fe-hash:before {
+ content: "\e975";
+}
+.fe-headphones:before {
+ content: "\e976";
+}
+.fe-heart:before {
+ content: "\e977";
+}
+.fe-help-circle:before {
+ content: "\e978";
+}
+.fe-home:before {
+ content: "\e979";
+}
+.fe-image:before {
+ content: "\e97a";
+}
+.fe-inbox:before {
+ content: "\e97b";
+}
+.fe-info:before {
+ content: "\e97c";
+}
+.fe-instagram:before {
+ content: "\e97d";
+}
+.fe-italic:before {
+ content: "\e97e";
+}
+.fe-layers:before {
+ content: "\e97f";
+}
+.fe-layout:before {
+ content: "\e980";
+}
+.fe-life-buoy:before {
+ content: "\e981";
+}
+.fe-link:before {
+ content: "\e982";
+}
+.fe-link-2:before {
+ content: "\e983";
+}
+.fe-linkedin:before {
+ content: "\e984";
+}
+.fe-list:before {
+ content: "\e985";
+}
+.fe-loader:before {
+ content: "\e986";
+}
+.fe-lock:before {
+ content: "\e987";
+}
+.fe-log-in:before {
+ content: "\e988";
+}
+.fe-log-out:before {
+ content: "\e989";
+}
+.fe-mail:before {
+ content: "\e98a";
+}
+.fe-map:before {
+ content: "\e98b";
+}
+.fe-map-pin:before {
+ content: "\e98c";
+}
+.fe-maximize:before {
+ content: "\e98d";
+}
+.fe-maximize-2:before {
+ content: "\e98e";
+}
+.fe-menu:before {
+ content: "\e98f";
+}
+.fe-message-circle:before {
+ content: "\e990";
+}
+.fe-message-square:before {
+ content: "\e991";
+}
+.fe-mic:before {
+ content: "\e992";
+}
+.fe-mic-off:before {
+ content: "\e993";
+}
+.fe-minimize:before {
+ content: "\e994";
+}
+.fe-minimize-2:before {
+ content: "\e995";
+}
+.fe-minus:before {
+ content: "\e996";
+}
+.fe-minus-circle:before {
+ content: "\e997";
+}
+.fe-minus-square:before {
+ content: "\e998";
+}
+.fe-monitor:before {
+ content: "\e999";
+}
+.fe-moon:before {
+ content: "\e99a";
+}
+.fe-more-horizontal:before {
+ content: "\e99b";
+}
+.fe-more-vertical:before {
+ content: "\e99c";
+}
+.fe-move:before {
+ content: "\e99d";
+}
+.fe-music:before {
+ content: "\e99e";
+}
+.fe-navigation:before {
+ content: "\e99f";
+}
+.fe-navigation-2:before {
+ content: "\e9a0";
+}
+.fe-octagon:before {
+ content: "\e9a1";
+}
+.fe-package:before {
+ content: "\e9a2";
+}
+.fe-paperclip:before {
+ content: "\e9a3";
+}
+.fe-pause:before {
+ content: "\e9a4";
+}
+.fe-pause-circle:before {
+ content: "\e9a5";
+}
+.fe-percent:before {
+ content: "\e9a6";
+}
+.fe-phone:before {
+ content: "\e9a7";
+}
+.fe-phone-call:before {
+ content: "\e9a8";
+}
+.fe-phone-forwarded:before {
+ content: "\e9a9";
+}
+.fe-phone-incoming:before {
+ content: "\e9aa";
+}
+.fe-phone-missed:before {
+ content: "\e9ab";
+}
+.fe-phone-off:before {
+ content: "\e9ac";
+}
+.fe-phone-outgoing:before {
+ content: "\e9ad";
+}
+.fe-pie-chart:before {
+ content: "\e9ae";
+}
+.fe-play:before {
+ content: "\e9af";
+}
+.fe-play-circle:before {
+ content: "\e9b0";
+}
+.fe-plus:before {
+ content: "\e9b1";
+}
+.fe-plus-circle:before {
+ content: "\e9b2";
+}
+.fe-plus-square:before {
+ content: "\e9b3";
+}
+.fe-pocket:before {
+ content: "\e9b4";
+}
+.fe-power:before {
+ content: "\e9b5";
+}
+.fe-printer:before {
+ content: "\e9b6";
+}
+.fe-radio:before {
+ content: "\e9b7";
+}
+.fe-refresh-ccw:before {
+ content: "\e9b8";
+}
+.fe-refresh-cw:before {
+ content: "\e9b9";
+}
+.fe-repeat:before {
+ content: "\e9ba";
+}
+.fe-rewind:before {
+ content: "\e9bb";
+}
+.fe-rotate-ccw:before {
+ content: "\e9bc";
+}
+.fe-rotate-cw:before {
+ content: "\e9bd";
+}
+.fe-rss:before {
+ content: "\e9be";
+}
+.fe-save:before {
+ content: "\e9bf";
+}
+.fe-scissors:before {
+ content: "\e9c0";
+}
+.fe-search:before {
+ content: "\e9c1";
+}
+.fe-send:before {
+ content: "\e9c2";
+}
+.fe-server:before {
+ content: "\e9c3";
+}
+.fe-settings:before {
+ content: "\e9c4";
+}
+.fe-share:before {
+ content: "\e9c5";
+}
+.fe-share-2:before {
+ content: "\e9c6";
+}
+.fe-shield:before {
+ content: "\e9c7";
+}
+.fe-shield-off:before {
+ content: "\e9c8";
+}
+.fe-shopping-bag:before {
+ content: "\e9c9";
+}
+.fe-shopping-cart:before {
+ content: "\e9ca";
+}
+.fe-shuffle:before {
+ content: "\e9cb";
+}
+.fe-sidebar:before {
+ content: "\e9cc";
+}
+.fe-skip-back:before {
+ content: "\e9cd";
+}
+.fe-skip-forward:before {
+ content: "\e9ce";
+}
+.fe-slack:before {
+ content: "\e9cf";
+}
+.fe-slash:before {
+ content: "\e9d0";
+}
+.fe-sliders:before {
+ content: "\e9d1";
+}
+.fe-smartphone:before {
+ content: "\e9d2";
+}
+.fe-speaker:before {
+ content: "\e9d3";
+}
+.fe-square:before {
+ content: "\e9d4";
+}
+.fe-star:before {
+ content: "\e9d5";
+}
+.fe-stop-circle:before {
+ content: "\e9d6";
+}
+.fe-sun:before {
+ content: "\e9d7";
+}
+.fe-sunrise:before {
+ content: "\e9d8";
+}
+.fe-sunset:before {
+ content: "\e9d9";
+}
+.fe-tablet:before {
+ content: "\e9da";
+}
+.fe-tag:before {
+ content: "\e9db";
+}
+.fe-target:before {
+ content: "\e9dc";
+}
+.fe-terminal:before {
+ content: "\e9dd";
+}
+.fe-thermometer:before {
+ content: "\e9de";
+}
+.fe-thumbs-down:before {
+ content: "\e9df";
+}
+.fe-thumbs-up:before {
+ content: "\e9e0";
+}
+.fe-toggle-left:before {
+ content: "\e9e1";
+}
+.fe-toggle-right:before {
+ content: "\e9e2";
+}
+.fe-trash:before {
+ content: "\e9e3";
+}
+.fe-trash-2:before {
+ content: "\e9e4";
+}
+.fe-trending-down:before {
+ content: "\e9e5";
+}
+.fe-trending-up:before {
+ content: "\e9e6";
+}
+.fe-triangle:before {
+ content: "\e9e7";
+}
+.fe-truck:before {
+ content: "\e9e8";
+}
+.fe-tv:before {
+ content: "\e9e9";
+}
+.fe-twitter:before {
+ content: "\e9ea";
+}
+.fe-type:before {
+ content: "\e9eb";
+}
+.fe-umbrella:before {
+ content: "\e9ec";
+}
+.fe-underline:before {
+ content: "\e9ed";
+}
+.fe-unlock:before {
+ content: "\e9ee";
+}
+.fe-upload:before {
+ content: "\e9ef";
+}
+.fe-upload-cloud:before {
+ content: "\e9f0";
+}
+.fe-user:before {
+ content: "\e9f1";
+}
+.fe-user-check:before {
+ content: "\e9f2";
+}
+.fe-user-minus:before {
+ content: "\e9f3";
+}
+.fe-user-plus:before {
+ content: "\e9f4";
+}
+.fe-user-x:before {
+ content: "\e9f5";
+}
+.fe-users:before {
+ content: "\e9f6";
+}
+.fe-video:before {
+ content: "\e9f7";
+}
+.fe-video-off:before {
+ content: "\e9f8";
+}
+.fe-voicemail:before {
+ content: "\e9f9";
+}
+.fe-volume:before {
+ content: "\e9fa";
+}
+.fe-volume-1:before {
+ content: "\e9fb";
+}
+.fe-volume-2:before {
+ content: "\e9fc";
+}
+.fe-volume-x:before {
+ content: "\e9fd";
+}
+.fe-watch:before {
+ content: "\e9fe";
+}
+.fe-wifi:before {
+ content: "\e9ff";
+}
+.fe-wifi-off:before {
+ content: "\ea00";
+}
+.fe-wind:before {
+ content: "\ea01";
+}
+.fe-x:before {
+ content: "\ea02";
+}
+.fe-x-circle:before {
+ content: "\ea03";
+}
+.fe-x-square:before {
+ content: "\ea04";
+}
+.fe-youtube:before {
+ content: "\ea05";
+}
+.fe-zap:before {
+ content: "\ea06";
+}
+.fe-zap-off:before {
+ content: "\ea07";
+}
+.fe-zoom-in:before {
+ content: "\ea08";
+}
+.fe-zoom-out:before {
+ content: "\ea09";
+}
diff --git a/explorer/src/providers/accounts/history.tsx b/explorer/src/providers/accounts/history.tsx
index 2c4bf90be6..13b90e6c23 100644
--- a/explorer/src/providers/accounts/history.tsx
+++ b/explorer/src/providers/accounts/history.tsx
@@ -5,7 +5,7 @@ import { useCluster } from "../cluster";
import {
HistoryManager,
HistoricalTransaction,
- SlotRange
+ SlotRange,
} from "./historyManager";
interface AccountHistory {
@@ -19,7 +19,7 @@ type State = { [address: string]: AccountHistory };
export enum ActionType {
Update,
Add,
- Remove
+ Remove,
}
interface Update {
@@ -48,10 +48,10 @@ function reducer(state: State, action: Action): State {
case ActionType.Add: {
if (action.addresses.length === 0) return state;
const details = { ...state };
- action.addresses.forEach(address => {
+ action.addresses.forEach((address) => {
if (!details[address]) {
details[address] = {
- status: FetchStatus.Fetching
+ status: FetchStatus.Fetching,
};
}
});
@@ -61,7 +61,7 @@ function reducer(state: State, action: Action): State {
case ActionType.Remove: {
if (action.addresses.length === 0) return state;
const details = { ...state };
- action.addresses.forEach(address => {
+ action.addresses.forEach((address) => {
delete details[address];
});
return details;
@@ -81,8 +81,8 @@ function reducer(state: State, action: Action): State {
[address]: {
status: action.status,
fetched,
- fetchedRange
- }
+ fetchedRange,
+ },
};
}
break;
@@ -121,16 +121,16 @@ export function HistoryProvider({ children }: HistoryProviderProps) {
});
const removeList: string[] = [];
- removeAddresses.forEach(address => {
+ removeAddresses.forEach((address) => {
manager.current.removeAccountHistory(address);
removeList.push(address);
});
dispatch({ type: ActionType.Remove, addresses: removeList });
const fetchList: string[] = [];
- fetchAddresses.forEach(s => fetchList.push(s));
+ fetchAddresses.forEach((s) => fetchList.push(s));
dispatch({ type: ActionType.Add, addresses: fetchList });
- fetchAddresses.forEach(address => {
+ fetchAddresses.forEach((address) => {
fetchAccountHistory(
dispatch,
new PublicKey(address),
@@ -160,7 +160,7 @@ async function fetchAccountHistory(
dispatch({
type: ActionType.Update,
status: FetchStatus.Fetching,
- pubkey
+ pubkey,
});
let status;
diff --git a/explorer/src/providers/accounts/historyManager.ts b/explorer/src/providers/accounts/historyManager.ts
index 915fc76f59..769dc3e59a 100644
--- a/explorer/src/providers/accounts/historyManager.ts
+++ b/explorer/src/providers/accounts/historyManager.ts
@@ -2,7 +2,7 @@ import {
TransactionSignature,
Connection,
PublicKey,
- SignatureStatus
+ SignatureStatus,
} from "@solana/web3.js";
const MAX_STATUS_BATCH_SIZE = 256;
@@ -101,7 +101,7 @@ export class HistoryManager {
range.min = Math.max(nextRange.min - slotLookBack, fullRange.min);
nextRange = {
min: range.min,
- max: nextRange.min - 1
+ max: nextRange.min - 1,
};
}
@@ -111,14 +111,14 @@ export class HistoryManager {
const batch = signatures.splice(0, MAX_STATUS_BATCH_SIZE);
const statuses = (
await this.connection.getSignatureStatuses(batch, {
- searchTransactionHistory: true
+ searchTransactionHistory: true,
})
).value;
statuses.forEach((status, index) => {
if (status !== null) {
transactions.push({
signature: batch[index],
- status
+ status,
});
}
});
diff --git a/explorer/src/providers/accounts/index.tsx b/explorer/src/providers/accounts/index.tsx
index 9d4c8dddd8..6a56ac4c40 100644
--- a/explorer/src/providers/accounts/index.tsx
+++ b/explorer/src/providers/accounts/index.tsx
@@ -9,7 +9,7 @@ export { useAccountHistory } from "./history";
export enum FetchStatus {
Fetching,
FetchFailed,
- Fetched
+ Fetched,
}
export interface Details {
@@ -35,7 +35,7 @@ interface State {
export enum ActionType {
Update,
- Fetch
+ Fetch,
}
interface Update {
@@ -67,8 +67,8 @@ function reducer(state: State, action: Action): State {
[address]: {
id: account.id,
pubkey: account.pubkey,
- status: FetchStatus.Fetching
- }
+ status: FetchStatus.Fetching,
+ },
};
return { ...state, accounts };
} else {
@@ -78,8 +78,8 @@ function reducer(state: State, action: Action): State {
[address]: {
id: idCounter,
status: FetchStatus.Fetching,
- pubkey: action.pubkey
- }
+ pubkey: action.pubkey,
+ },
};
return { ...state, accounts, idCounter };
}
@@ -93,8 +93,8 @@ function reducer(state: State, action: Action): State {
...state.accounts,
[address]: {
...account,
- ...action.data
- }
+ ...action.data,
+ },
};
return { ...state, accounts };
}
@@ -114,30 +114,30 @@ type AccountsProviderProps = { children: React.ReactNode };
export function AccountsProvider({ children }: AccountsProviderProps) {
const [state, dispatch] = React.useReducer(reducer, {
idCounter: 0,
- accounts: {}
+ accounts: {},
});
const { status, url } = useCluster();
// Check account statuses on startup and whenever cluster updates
React.useEffect(() => {
- Object.keys(state.accounts).forEach(address => {
+ Object.keys(state.accounts).forEach((address) => {
fetchAccountInfo(dispatch, new PublicKey(address), url, status);
});
}, [status, url]); // eslint-disable-line react-hooks/exhaustive-deps
const query = useQuery();
- const values = ACCOUNT_ALIASES.concat(ACCOUNT_ALIASES_PLURAL).map(key =>
+ const values = ACCOUNT_ALIASES.concat(ACCOUNT_ALIASES_PLURAL).map((key) =>
query.get(key)
);
React.useEffect(() => {
values
.filter((value): value is string => value !== null)
- .flatMap(value => value.split(","))
+ .flatMap((value) => value.split(","))
// Remove duplicates
.filter((item, pos, self) => self.indexOf(item) === pos)
- .filter(address => !state.accounts[address])
- .forEach(address => {
+ .filter((address) => !state.accounts[address])
+ .forEach((address) => {
try {
fetchAccountInfo(dispatch, new PublicKey(address), url, status);
} catch (err) {
@@ -164,7 +164,7 @@ async function fetchAccountInfo(
) {
dispatch({
type: ActionType.Fetch,
- pubkey
+ pubkey,
});
// We will auto-refetch when status is no longer connecting
@@ -196,7 +196,7 @@ async function fetchAccountInfo(
space: result.data.length,
executable: result.executable,
owner: result.owner,
- data
+ data,
};
}
fetchStatus = FetchStatus.Fetched;
@@ -217,7 +217,7 @@ export function useAccounts() {
idCounter: context.idCounter,
accounts: Object.values(context.accounts).sort((a, b) =>
a.id <= b.id ? 1 : -1
- )
+ ),
};
}
diff --git a/explorer/src/providers/cluster.tsx b/explorer/src/providers/cluster.tsx
index 392af5a89c..ee7cc1b1b4 100644
--- a/explorer/src/providers/cluster.tsx
+++ b/explorer/src/providers/cluster.tsx
@@ -6,21 +6,21 @@ import { useHistory, useLocation } from "react-router-dom";
export enum ClusterStatus {
Connected,
Connecting,
- Failure
+ Failure,
}
export enum Cluster {
MainnetBeta,
Testnet,
Devnet,
- Custom
+ Custom,
}
export const CLUSTERS = [
Cluster.MainnetBeta,
Cluster.Testnet,
Cluster.Devnet,
- Cluster.Custom
+ Cluster.Custom,
];
export function clusterSlug(cluster: Cluster): string {
@@ -128,7 +128,7 @@ export function ClusterProvider({ children }: ClusterProviderProps) {
const [state, dispatch] = React.useReducer(clusterReducer, {
cluster: DEFAULT_CLUSTER,
customUrl: "",
- status: ClusterStatus.Connecting
+ status: ClusterStatus.Connecting,
});
const [showModal, setShowModal] = React.useState(false);
const query = useQuery();
@@ -169,7 +169,7 @@ async function updateCluster(
dispatch({
status: ClusterStatus.Connecting,
cluster,
- customUrl
+ customUrl,
});
try {
@@ -179,7 +179,7 @@ async function updateCluster(
status: ClusterStatus.Connected,
cluster,
customUrl,
- firstAvailableBlock
+ firstAvailableBlock,
});
} catch (error) {
console.error("Failed to update cluster", error);
@@ -206,7 +206,7 @@ export function useCluster() {
return {
...context,
url: clusterUrl(context.cluster, context.customUrl),
- name: clusterName(context.cluster)
+ name: clusterName(context.cluster),
};
}
diff --git a/explorer/src/providers/richList.tsx b/explorer/src/providers/richList.tsx
index daf0a9f5cc..fdb0d7b58e 100644
--- a/explorer/src/providers/richList.tsx
+++ b/explorer/src/providers/richList.tsx
@@ -6,7 +6,7 @@ import { useCluster, ClusterStatus } from "./cluster";
export enum Status {
Idle,
Disconnected,
- Connecting
+ Connecting,
}
type RichLists = {
@@ -60,12 +60,12 @@ async function fetch(dispatch: Dispatch, url: string) {
await Promise.all([
connection.getLargestAccounts(),
connection.getLargestAccounts({ filter: "circulating" }),
- connection.getLargestAccounts({ filter: "nonCirculating" })
+ connection.getLargestAccounts({ filter: "nonCirculating" }),
])
- ).map(response => response.value);
+ ).map((response) => response.value);
// Update state if still connecting
- dispatch(state => {
+ dispatch((state) => {
if (state !== Status.Connecting) return state;
return { total, circulating, nonCirculating };
});
diff --git a/explorer/src/providers/supply.tsx b/explorer/src/providers/supply.tsx
index 6e2da17abc..c601efd830 100644
--- a/explorer/src/providers/supply.tsx
+++ b/explorer/src/providers/supply.tsx
@@ -6,7 +6,7 @@ import { useCluster, ClusterStatus } from "./cluster";
export enum Status {
Idle,
Disconnected,
- Connecting
+ Connecting,
}
type State = Supply | Status | string;
@@ -45,7 +45,7 @@ async function fetch(dispatch: Dispatch, url: string) {
const supply = (await connection.getSupply()).value;
// Update state if still connecting
- dispatch(state => {
+ dispatch((state) => {
if (state !== Status.Connecting) return state;
return supply;
});
diff --git a/explorer/src/providers/transactions/cached.ts b/explorer/src/providers/transactions/cached.ts
index 66fbfa1604..a321530c2e 100644
--- a/explorer/src/providers/transactions/cached.ts
+++ b/explorer/src/providers/transactions/cached.ts
@@ -10,7 +10,7 @@ import {
Transaction,
ConfirmedTransaction,
Message,
- clusterApiUrl
+ clusterApiUrl,
} from "@solana/web3.js";
export const isCached = (url: string, signature: string): boolean => {
@@ -22,44 +22,44 @@ export const CACHED_STATUSES: { [key: string]: TransactionStatusInfo } = {
slot: 10440804,
result: { err: null },
timestamp: 1589212180,
- confirmations: "max"
+ confirmations: "max",
},
DYrfStEEzbV5sftX8LgUa54Nwnc5m5E1731cqBtiiC66TeXgKpfqZEQTuFY3vhHZ2K1BsaFM3X9FqisR28EtZr8: {
slot: 10451288,
result: { err: null },
timestamp: 1589216984,
- confirmations: "max"
+ confirmations: "max",
},
"3bLx2PLpkxCxJA5P7HVe8asFdSWXVAh1DrxfkqWE9bWvPRxXE2hqwj1vuSC858fUw3XAGQcHbJknhtNdxY2sehab": {
slot: 10516588,
result: { err: null },
timestamp: 1589247117,
- confirmations: "max"
+ confirmations: "max",
},
"3fE8xNgyxbwbvA5MX3wM87ahDDgCVEaaMMSa8UCWWNxojaRYBgrQyiKXLSxcryMWb7sEyVLBWyqUaRWnQCroSqjY": {
slot: 10575124,
result: { err: null },
timestamp: 1589274236,
- confirmations: "max"
+ confirmations: "max",
},
"5PWymGjKV7T1oqeqGn139EHFyjNM2dnNhHCUcfD2bmdj8cfF95HpY1uJ84W89c4sJQnmyZxXcYrcjumx2jHUvxZQ": {
slot: 12447825,
result: { err: null },
timestamp: 15901860565,
- confirmations: "max"
+ confirmations: "max",
},
"5K4KuqTTRNtzfpxWiwnkePzGfsa3tBEmpMy7vQFR3KWFAZNVY9tvoSaz1Yt5dKxcgsZPio2EsASVDGbQB1HvirGD": {
slot: 12450728,
result: { err: null },
timestamp: 15901874549,
- confirmations: "max"
+ confirmations: "max",
},
"45pGoC4Rr3fJ1TKrsiRkhHRbdUeX7633XAGVec6XzVdpRbzQgHhe6ZC6Uq164MPWtiqMg7wCkC6Wy3jy2BqsDEKf": {
slot: 12972684,
result: { err: null },
timestamp: 1590432412,
- confirmations: "max"
- }
+ confirmations: "max",
+ },
};
export const CACHED_DETAILS: { [key: string]: ConfirmedTransaction } = {
@@ -71,22 +71,22 @@ export const CACHED_DETAILS: { [key: string]: ConfirmedTransaction } = {
accountKeys: [
"2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S",
"4C6NCcLPUgGuBBkV2dJW96mrptMUCp3RG1ft9rqwjFi9",
- "11111111111111111111111111111111"
+ "11111111111111111111111111111111",
],
header: {
numReadonlySignedAccounts: 0,
numReadonlyUnsignedAccounts: 1,
- numRequiredSignatures: 1
+ numRequiredSignatures: 1,
},
instructions: [
- { accounts: [0, 1], data: "3Bxs411UBrj8QXUb", programIdIndex: 2 }
+ { accounts: [0, 1], data: "3Bxs411UBrj8QXUb", programIdIndex: 2 },
],
- recentBlockhash: "5Aw8MaMYdYtnfJyyrregWMWGgiMtWZ6GtRzeP6Ufo65Z"
+ recentBlockhash: "5Aw8MaMYdYtnfJyyrregWMWGgiMtWZ6GtRzeP6Ufo65Z",
}),
[
- "uQf4pS38FjRF294QFEXizhYkZFjSR9ZSBvvV6MV5b4VpdfRnK3PY9TWZ2qHMQKtte3XwKVLcWqsTF6wL9NEZMty"
+ "uQf4pS38FjRF294QFEXizhYkZFjSR9ZSBvvV6MV5b4VpdfRnK3PY9TWZ2qHMQKtte3XwKVLcWqsTF6wL9NEZMty",
]
- )
+ ),
},
DYrfStEEzbV5sftX8LgUa54Nwnc5m5E1731cqBtiiC66TeXgKpfqZEQTuFY3vhHZ2K1BsaFM3X9FqisR28EtZr8: {
@@ -97,26 +97,26 @@ export const CACHED_DETAILS: { [key: string]: ConfirmedTransaction } = {
accountKeys: [
"2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S",
"4C6NCcLPUgGuBBkV2dJW96mrptMUCp3RG1ft9rqwjFi9",
- "11111111111111111111111111111111"
+ "11111111111111111111111111111111",
],
header: {
numReadonlySignedAccounts: 0,
numReadonlyUnsignedAccounts: 1,
- numRequiredSignatures: 1
+ numRequiredSignatures: 1,
},
instructions: [
{
accounts: [0, 1],
data: "3Bxs3zwYHuDo723R",
- programIdIndex: 2
- }
+ programIdIndex: 2,
+ },
],
- recentBlockhash: "4hXYcBdfcadcjfWV17ZwMa4MXe8kbZHYHwr3GzfyqunL"
+ recentBlockhash: "4hXYcBdfcadcjfWV17ZwMa4MXe8kbZHYHwr3GzfyqunL",
}),
[
- "DYrfStEEzbV5sftX8LgUa54Nwnc5m5E1731cqBtiiC66TeXgKpfqZEQTuFY3vhHZ2K1BsaFM3X9FqisR28EtZr8"
+ "DYrfStEEzbV5sftX8LgUa54Nwnc5m5E1731cqBtiiC66TeXgKpfqZEQTuFY3vhHZ2K1BsaFM3X9FqisR28EtZr8",
]
- )
+ ),
},
"3bLx2PLpkxCxJA5P7HVe8asFdSWXVAh1DrxfkqWE9bWvPRxXE2hqwj1vuSC858fUw3XAGQcHbJknhtNdxY2sehab": {
@@ -127,26 +127,26 @@ export const CACHED_DETAILS: { [key: string]: ConfirmedTransaction } = {
accountKeys: [
"2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S",
"4C6NCcLPUgGuBBkV2dJW96mrptMUCp3RG1ft9rqwjFi9",
- "11111111111111111111111111111111"
+ "11111111111111111111111111111111",
],
header: {
numReadonlySignedAccounts: 0,
numReadonlyUnsignedAccounts: 1,
- numRequiredSignatures: 1
+ numRequiredSignatures: 1,
},
instructions: [
{
accounts: [0, 1],
data: "3Bxs3zwYHuDo723R",
- programIdIndex: 2
- }
+ programIdIndex: 2,
+ },
],
- recentBlockhash: "HSzTGt3PJMeQtFr94gEdeZqTRaBxgS8Wf1zq3MDdNT3L"
+ recentBlockhash: "HSzTGt3PJMeQtFr94gEdeZqTRaBxgS8Wf1zq3MDdNT3L",
}),
[
- "3bLx2PLpkxCxJA5P7HVe8asFdSWXVAh1DrxfkqWE9bWvPRxXE2hqwj1vuSC858fUw3XAGQcHbJknhtNdxY2sehab"
+ "3bLx2PLpkxCxJA5P7HVe8asFdSWXVAh1DrxfkqWE9bWvPRxXE2hqwj1vuSC858fUw3XAGQcHbJknhtNdxY2sehab",
]
- )
+ ),
},
"3fE8xNgyxbwbvA5MX3wM87ahDDgCVEaaMMSa8UCWWNxojaRYBgrQyiKXLSxcryMWb7sEyVLBWyqUaRWnQCroSqjY": {
@@ -157,26 +157,26 @@ export const CACHED_DETAILS: { [key: string]: ConfirmedTransaction } = {
accountKeys: [
"2ojv9BAiHUrvsm9gxDe7fJSzbNZSJcxZvf8dqmWGHG8S",
"4C6NCcLPUgGuBBkV2dJW96mrptMUCp3RG1ft9rqwjFi9",
- "11111111111111111111111111111111"
+ "11111111111111111111111111111111",
],
header: {
numReadonlySignedAccounts: 0,
numReadonlyUnsignedAccounts: 1,
- numRequiredSignatures: 1
+ numRequiredSignatures: 1,
},
instructions: [
{
accounts: [0, 1],
data: "3Bxs3zuKU6mRKSqD",
- programIdIndex: 2
- }
+ programIdIndex: 2,
+ },
],
- recentBlockhash: "6f6TBMhUoypfR5HHnEqC6VoooKxEcNad5W3Sf63j9MSD"
+ recentBlockhash: "6f6TBMhUoypfR5HHnEqC6VoooKxEcNad5W3Sf63j9MSD",
}),
[
- "3fE8xNgyxbwbvA5MX3wM87ahDDgCVEaaMMSa8UCWWNxojaRYBgrQyiKXLSxcryMWb7sEyVLBWyqUaRWnQCroSqjY"
+ "3fE8xNgyxbwbvA5MX3wM87ahDDgCVEaaMMSa8UCWWNxojaRYBgrQyiKXLSxcryMWb7sEyVLBWyqUaRWnQCroSqjY",
]
- )
+ ),
},
"5PWymGjKV7T1oqeqGn139EHFyjNM2dnNhHCUcfD2bmdj8cfF95HpY1uJ84W89c4sJQnmyZxXcYrcjumx2jHUvxZQ": {
@@ -187,26 +187,26 @@ export const CACHED_DETAILS: { [key: string]: ConfirmedTransaction } = {
accountKeys: [
"HCV5dGFJXRrJ3jhDYA4DCeb9TEDTwGGYXtT3wHksu2Zr",
"4C6NCcLPUgGuBBkV2dJW96mrptMUCp3RG1ft9rqwjFi9",
- "11111111111111111111111111111111"
+ "11111111111111111111111111111111",
],
header: {
numReadonlySignedAccounts: 0,
numReadonlyUnsignedAccounts: 1,
- numRequiredSignatures: 1
+ numRequiredSignatures: 1,
},
instructions: [
{
accounts: [0, 1],
data: "3Bxs3zrfhSqZJTR1",
- programIdIndex: 2
- }
+ programIdIndex: 2,
+ },
],
- recentBlockhash: "3HJNFraT7XGAqMrQs83EKwDGB6LpHVwUMQKGaYMNY49E"
+ recentBlockhash: "3HJNFraT7XGAqMrQs83EKwDGB6LpHVwUMQKGaYMNY49E",
}),
[
- "5PWymGjKV7T1oqeqGn139EHFyjNM2dnNhHCUcfD2bmdj8cfF95HpY1uJ84W89c4sJQnmyZxXcYrcjumx2jHUvxZQ"
+ "5PWymGjKV7T1oqeqGn139EHFyjNM2dnNhHCUcfD2bmdj8cfF95HpY1uJ84W89c4sJQnmyZxXcYrcjumx2jHUvxZQ",
]
- )
+ ),
},
"5K4KuqTTRNtzfpxWiwnkePzGfsa3tBEmpMy7vQFR3KWFAZNVY9tvoSaz1Yt5dKxcgsZPio2EsASVDGbQB1HvirGD": {
@@ -218,27 +218,27 @@ export const CACHED_DETAILS: { [key: string]: ConfirmedTransaction } = {
"6yKHERk8rsbmJxvMpPuwPs1ct3hRiP7xaJF2tvnGU6nK",
"4C6NCcLPUgGuBBkV2dJW96mrptMUCp3RG1ft9rqwjFi9",
"3o6xgkJ9sTmDeQWyfj3sxwon18fXJB9PV5LDc8sfgR4a",
- "11111111111111111111111111111111"
+ "11111111111111111111111111111111",
],
header: {
numReadonlySignedAccounts: 0,
numReadonlyUnsignedAccounts: 1,
- numRequiredSignatures: 2
+ numRequiredSignatures: 2,
},
instructions: [
{
accounts: [1, 2],
data: "3Bxs3ztRCp3tH1yZ",
- programIdIndex: 3
- }
+ programIdIndex: 3,
+ },
],
- recentBlockhash: "8eXVUNRxrDgpsEuoTWyLay1LUh2djc3Y8cw2owXRN8cU"
+ recentBlockhash: "8eXVUNRxrDgpsEuoTWyLay1LUh2djc3Y8cw2owXRN8cU",
}),
[
"5K4KuqTTRNtzfpxWiwnkePzGfsa3tBEmpMy7vQFR3KWFAZNVY9tvoSaz1Yt5dKxcgsZPio2EsASVDGbQB1HvirGD",
- "37tvpG1eAeEBizJPhJvmpC2BY8npwy6K1wrZdNwdRAfWSbkerY3ZwYAPMHbrzoq7tthvWC2qFU28niqLPxbukeXF"
+ "37tvpG1eAeEBizJPhJvmpC2BY8npwy6K1wrZdNwdRAfWSbkerY3ZwYAPMHbrzoq7tthvWC2qFU28niqLPxbukeXF",
]
- )
+ ),
},
"45pGoC4Rr3fJ1TKrsiRkhHRbdUeX7633XAGVec6XzVdpRbzQgHhe6ZC6Uq164MPWtiqMg7wCkC6Wy3jy2BqsDEKf": {
@@ -250,26 +250,26 @@ export const CACHED_DETAILS: { [key: string]: ConfirmedTransaction } = {
"6yKHERk8rsbmJxvMpPuwPs1ct3hRiP7xaJF2tvnGU6nK",
"3o6xgkJ9sTmDeQWyfj3sxwon18fXJB9PV5LDc8sfgR4a",
"1nc1nerator11111111111111111111111111111111",
- "11111111111111111111111111111111"
+ "11111111111111111111111111111111",
],
header: {
numReadonlySignedAccounts: 0,
numReadonlyUnsignedAccounts: 1,
- numRequiredSignatures: 2
+ numRequiredSignatures: 2,
},
instructions: [
{
accounts: [1, 2],
data: "3Bxs4NNAyLXRbuZZ",
- programIdIndex: 3
- }
+ programIdIndex: 3,
+ },
],
- recentBlockhash: "2xnatNUtSbeMRwi3k4vxPwXxeKFQYVuCNRg2rAgydWVP"
+ recentBlockhash: "2xnatNUtSbeMRwi3k4vxPwXxeKFQYVuCNRg2rAgydWVP",
}),
[
"45pGoC4Rr3fJ1TKrsiRkhHRbdUeX7633XAGVec6XzVdpRbzQgHhe6ZC6Uq164MPWtiqMg7wCkC6Wy3jy2BqsDEKf",
- "2E7CDMTssxTYkdetCKVWQv9X2KNDPiuZrT2Y7647PhFEXuAWWxmHJb3ryCmP29ocQ1SNc7VyJjjm4X3jE8xWDmGY"
+ "2E7CDMTssxTYkdetCKVWQv9X2KNDPiuZrT2Y7647PhFEXuAWWxmHJb3ryCmP29ocQ1SNc7VyJjjm4X3jE8xWDmGY",
]
- )
- }
+ ),
+ },
};
diff --git a/explorer/src/providers/transactions/details.tsx b/explorer/src/providers/transactions/details.tsx
index bc89ece2de..030a7f1d16 100644
--- a/explorer/src/providers/transactions/details.tsx
+++ b/explorer/src/providers/transactions/details.tsx
@@ -2,7 +2,7 @@ import React from "react";
import {
Connection,
TransactionSignature,
- ConfirmedTransaction
+ ConfirmedTransaction,
} from "@solana/web3.js";
import { useCluster } from "../cluster";
import { useTransactions, FetchStatus } from "./index";
@@ -18,7 +18,7 @@ type State = { [signature: string]: Details };
export enum ActionType {
Update,
Add,
- Remove
+ Remove,
}
interface Update {
@@ -46,11 +46,11 @@ function reducer(state: State, action: Action): State {
case ActionType.Add: {
if (action.signatures.length === 0) return state;
const details = { ...state };
- action.signatures.forEach(signature => {
+ action.signatures.forEach((signature) => {
if (!details[signature]) {
details[signature] = {
fetchStatus: FetchStatus.Fetching,
- transaction: null
+ transaction: null,
};
}
});
@@ -60,7 +60,7 @@ function reducer(state: State, action: Action): State {
case ActionType.Remove: {
if (action.signatures.length === 0) return state;
const details = { ...state };
- action.signatures.forEach(signature => {
+ action.signatures.forEach((signature) => {
delete details[signature];
});
return details;
@@ -72,11 +72,11 @@ function reducer(state: State, action: Action): State {
details = {
...details,
fetchStatus: action.fetchStatus,
- transaction: action.transaction
+ transaction: action.transaction,
};
return {
...state,
- [action.signature]: details
+ [action.signature]: details,
};
}
break;
@@ -109,13 +109,13 @@ export function DetailsProvider({ children }: DetailsProviderProps) {
});
const removeList: string[] = [];
- removeSignatures.forEach(s => removeList.push(s));
+ removeSignatures.forEach((s) => removeList.push(s));
dispatch({ type: ActionType.Remove, signatures: removeList });
const fetchList: string[] = [];
- fetchSignatures.forEach(s => fetchList.push(s));
+ fetchSignatures.forEach((s) => fetchList.push(s));
dispatch({ type: ActionType.Add, signatures: fetchList });
- fetchSignatures.forEach(signature => {
+ fetchSignatures.forEach((signature) => {
fetchDetails(dispatch, signature, url);
});
}, [transactions]); // eslint-disable-line react-hooks/exhaustive-deps
@@ -138,7 +138,7 @@ async function fetchDetails(
type: ActionType.Update,
fetchStatus: FetchStatus.Fetching,
transaction: null,
- signature
+ signature,
});
let fetchStatus;
diff --git a/explorer/src/providers/transactions/index.tsx b/explorer/src/providers/transactions/index.tsx
index 10bc470b71..9e07e1f8f8 100644
--- a/explorer/src/providers/transactions/index.tsx
+++ b/explorer/src/providers/transactions/index.tsx
@@ -6,13 +6,13 @@ import {
Account,
SignatureResult,
PublicKey,
- sendAndConfirmTransaction
+ sendAndConfirmTransaction,
} from "@solana/web3.js";
import { useQuery } from "../../utils/url";
import { useCluster, Cluster, ClusterStatus } from "../cluster";
import {
DetailsProvider,
- StateContext as DetailsStateContext
+ StateContext as DetailsStateContext,
} from "./details";
import base58 from "bs58";
import { useFetchAccountInfo } from "../accounts";
@@ -21,7 +21,7 @@ import { CACHED_STATUSES, isCached } from "./cached";
export enum FetchStatus {
Fetching,
FetchFailed,
- Fetched
+ Fetched,
}
export type Confirmations = number | "max";
@@ -50,7 +50,7 @@ interface State {
export enum ActionType {
UpdateStatus,
- FetchSignature
+ FetchSignature,
}
interface UpdateStatus {
@@ -79,8 +79,8 @@ function reducer(state: State, action: Action): State {
[action.signature]: {
...transaction,
fetchStatus: FetchStatus.Fetching,
- info: undefined
- }
+ info: undefined,
+ },
};
return { ...state, transactions };
} else {
@@ -90,8 +90,8 @@ function reducer(state: State, action: Action): State {
[action.signature]: {
id: nextId,
signature: action.signature,
- fetchStatus: FetchStatus.Fetching
- }
+ fetchStatus: FetchStatus.Fetching,
+ },
};
return { ...state, transactions, idCounter: nextId };
}
@@ -105,8 +105,8 @@ function reducer(state: State, action: Action): State {
[action.signature]: {
...transaction,
fetchStatus: action.fetchStatus,
- info: action.info
- }
+ info: action.info,
+ },
};
return { ...state, transactions };
}
@@ -125,7 +125,7 @@ type TransactionsProviderProps = { children: React.ReactNode };
export function TransactionsProvider({ children }: TransactionsProviderProps) {
const [state, dispatch] = React.useReducer(reducer, {
idCounter: 0,
- transactions: {}
+ transactions: {},
});
const { cluster, status: clusterStatus, url } = useCluster();
@@ -135,7 +135,7 @@ export function TransactionsProvider({ children }: TransactionsProviderProps) {
// Check transaction statuses whenever cluster updates
React.useEffect(() => {
- Object.keys(state.transactions).forEach(signature => {
+ Object.keys(state.transactions).forEach((signature) => {
fetchTransactionStatus(dispatch, signature, url, clusterStatus);
});
@@ -146,18 +146,18 @@ export function TransactionsProvider({ children }: TransactionsProviderProps) {
}, [testFlag, cluster, clusterStatus, url]); // eslint-disable-line react-hooks/exhaustive-deps
// Check for transactions in the url params
- const values = TX_ALIASES.flatMap(key => [
+ const values = TX_ALIASES.flatMap((key) => [
query.get(key),
- query.get(key + "s")
+ query.get(key + "s"),
]);
React.useEffect(() => {
values
.filter((value): value is string => value !== null)
- .flatMap(value => value.split(","))
+ .flatMap((value) => value.split(","))
// Remove duplicates
.filter((item, pos, self) => self.indexOf(item) === pos)
- .filter(signature => !state.transactions[signature])
- .forEach(signature => {
+ .filter((signature) => !state.transactions[signature])
+ .forEach((signature) => {
fetchTransactionStatus(dispatch, signature, url, clusterStatus);
});
}, [values.toString()]); // eslint-disable-line react-hooks/exhaustive-deps
@@ -200,7 +200,7 @@ async function createTestTransaction(
const tx = SystemProgram.transfer({
fromPubkey: testAccount.publicKey,
toPubkey: testAccount.publicKey,
- lamports: 1
+ lamports: 1,
});
const signature = await sendAndConfirmTransaction(
connection,
@@ -222,7 +222,7 @@ export async function fetchTransactionStatus(
) {
dispatch({
type: ActionType.FetchSignature,
- signature
+ signature,
});
// We will auto-refetch when status is no longer connecting
@@ -237,7 +237,7 @@ export async function fetchTransactionStatus(
try {
const connection = new Connection(url);
const { value } = await connection.getSignatureStatus(signature, {
- searchTransactionHistory: true
+ searchTransactionHistory: true,
});
if (value !== null) {
@@ -256,7 +256,7 @@ export async function fetchTransactionStatus(
slot: value.slot,
timestamp,
confirmations,
- result: { err: value.err }
+ result: { err: value.err },
};
}
fetchStatus = FetchStatus.Fetched;
@@ -270,7 +270,7 @@ export async function fetchTransactionStatus(
type: ActionType.UpdateStatus,
signature,
fetchStatus,
- info
+ info,
});
}
@@ -285,7 +285,7 @@ export function useTransactions() {
idCounter: context.idCounter,
transactions: Object.values(context.transactions).sort((a, b) =>
a.id <= b.id ? 1 : -1
- )
+ ),
};
}
diff --git a/explorer/src/serviceWorker.ts b/explorer/src/serviceWorker.ts
index d2386b7941..e7b8199e23 100644
--- a/explorer/src/serviceWorker.ts
+++ b/explorer/src/serviceWorker.ts
@@ -62,7 +62,7 @@ export function register(config?: Config) {
function registerValidSW(swUrl: string, config?: Config) {
navigator.serviceWorker
.register(swUrl)
- .then(registration => {
+ .then((registration) => {
registration.onupdatefound = () => {
const installingWorker = registration.installing;
if (installingWorker == null) {
@@ -98,7 +98,7 @@ function registerValidSW(swUrl: string, config?: Config) {
};
};
})
- .catch(error => {
+ .catch((error) => {
console.error("Error during service worker registration:", error);
});
}
@@ -106,9 +106,9 @@ function registerValidSW(swUrl: string, config?: Config) {
function checkValidServiceWorker(swUrl: string, config?: Config) {
// Check if the service worker can be found. If it can't reload the page.
fetch(swUrl, {
- headers: { "Service-Worker": "script" }
+ headers: { "Service-Worker": "script" },
})
- .then(response => {
+ .then((response) => {
// Ensure service worker exists, and that we really are getting a JS file.
const contentType = response.headers.get("content-type");
if (
@@ -116,7 +116,7 @@ function checkValidServiceWorker(swUrl: string, config?: Config) {
(contentType != null && contentType.indexOf("javascript") === -1)
) {
// No service worker found. Probably a different app. Reload the page.
- navigator.serviceWorker.ready.then(registration => {
+ navigator.serviceWorker.ready.then((registration) => {
registration.unregister().then(() => {
window.location.reload();
});
@@ -136,10 +136,10 @@ function checkValidServiceWorker(swUrl: string, config?: Config) {
export function unregister() {
if ("serviceWorker" in navigator) {
navigator.serviceWorker.ready
- .then(registration => {
+ .then((registration) => {
registration.unregister();
})
- .catch(error => {
+ .catch((error) => {
console.error(error.message);
});
}
diff --git a/explorer/src/utils/date.ts b/explorer/src/utils/date.ts
index 3e9a59f123..d2a42d6e00 100644
--- a/explorer/src/utils/date.ts
+++ b/explorer/src/utils/date.ts
@@ -3,14 +3,14 @@ export function displayTimestamp(unixTimestamp: number): string {
const dateString = new Intl.DateTimeFormat("en-US", {
year: "numeric",
month: "long",
- day: "numeric"
+ day: "numeric",
}).format(expireDate);
const timeString = new Intl.DateTimeFormat("en-US", {
hour: "numeric",
minute: "numeric",
second: "numeric",
hour12: false,
- timeZoneName: "long"
+ timeZoneName: "long",
}).format(expireDate);
return `${dateString} at ${timeString}`;
}
diff --git a/explorer/src/utils/tx.ts b/explorer/src/utils/tx.ts
index 8721f98e3e..702586e747 100644
--- a/explorer/src/utils/tx.ts
+++ b/explorer/src/utils/tx.ts
@@ -6,7 +6,7 @@ import {
SYSVAR_CLOCK_PUBKEY,
SYSVAR_RENT_PUBKEY,
SYSVAR_REWARDS_PUBKEY,
- SYSVAR_STAKE_HISTORY_PUBKEY
+ SYSVAR_STAKE_HISTORY_PUBKEY,
} from "@solana/web3.js";
const PROGRAM_IDS = {
@@ -17,13 +17,13 @@ const PROGRAM_IDS = {
Storage111111111111111111111111111111111111: "Storage",
[SystemProgram.programId.toBase58()]: "System",
Vest111111111111111111111111111111111111111: "Vest",
- [VOTE_PROGRAM_ID.toBase58()]: "Vote"
+ [VOTE_PROGRAM_ID.toBase58()]: "Vote",
};
const LOADER_IDS = {
MoveLdr111111111111111111111111111111111111: "Move Loader",
NativeLoader1111111111111111111111111111111: "Native Loader",
- [BpfLoader.programId.toBase58()]: "BPF Loader"
+ [BpfLoader.programId.toBase58()]: "BPF Loader",
};
const SYSVAR_IDS = {
@@ -36,7 +36,7 @@ const SYSVAR_IDS = {
[SYSVAR_REWARDS_PUBKEY.toBase58()]: "SYSVAR_REWARDS",
SysvarS1otHashes111111111111111111111111111: "SYSVAR_SLOT_HASHES",
SysvarS1otHistory11111111111111111111111111: "SYSVAR_SLOT_HISTORY",
- [SYSVAR_STAKE_HISTORY_PUBKEY.toBase58()]: "SYSVAR_STAKE_HISTORY"
+ [SYSVAR_STAKE_HISTORY_PUBKEY.toBase58()]: "SYSVAR_STAKE_HISTORY",
};
export function displayAddress(address: string): string {
diff --git a/explorer/src/utils/url.ts b/explorer/src/utils/url.ts
index 26cacf1a99..94f0d63d71 100644
--- a/explorer/src/utils/url.ts
+++ b/explorer/src/utils/url.ts
@@ -17,7 +17,7 @@ export function pickCluster(location: Location): Location {
return {
...location,
- search
+ search,
};
}
@@ -27,7 +27,7 @@ export function findGetParameter(parameterName: string): string | null {
window.location.search
.substr(1)
.split("&")
- .forEach(function(item) {
+ .forEach(function (item) {
tmp = item.split("=");
if (tmp[0].toLowerCase() === parameterName.toLowerCase()) {
if (tmp.length === 2) {
| |