Fix: eslint configuration + fix and reformat existing code + eslint as step for lint-staged

I
This commit is contained in:
Efremov Alexey 2021-08-30 16:04:31 +03:00
parent e0f2c1b068
commit f27ffb39a7
49 changed files with 372 additions and 203 deletions

1
.gitignore vendored
View File

@ -17,6 +17,7 @@ yarn-error.log*
*.css.map
!js/packages/metaplex/src/fonts/fonts.css
!js/packages/metaplex/src/utils/globals.css
js/.eslintcache
target
.env
.vscode

33
js/.eslintrc.js Normal file
View File

@ -0,0 +1,33 @@
module.exports = {
env: {
browser: true,
es6: true,
},
extends: [
"eslint:recommended",
"plugin:react/recommended",
"plugin:@typescript-eslint/eslint-recommended"
],
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly',
},
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 2018,
},
plugins: ['react', '@typescript-eslint'],
settings: {
react: {
pragma: 'React',
version: '17.0.2',
},
},
rules: {
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': ['error'],
},
};

View File

@ -24,7 +24,8 @@
},
"lint-staged": {
"packages/*/{src,test}/**/*.ts": [
"prettier --write"
"prettier --write",
"eslint --cache --fix --max-warnings=0"
]
},
"husky": {
@ -56,6 +57,7 @@
"@types/jest": "^24.0.0",
"@typescript-eslint/eslint-plugin": "^4.6.0",
"@typescript-eslint/parser": "^4.6.0",
"eslint-plugin-react": "^7.25.1",
"eslint": "^6.6.0",
"eslint-config-prettier": "^6.15.0",
"gh-pages": "^3.1.0",

View File

@ -432,6 +432,7 @@ export const METADATA_SCHEMA = new Map<any, any>([
],
]);
// eslint-disable-next-line no-control-regex
const METADATA_REPLACE = new RegExp('\u0000', 'g');
export const decodeMetadata = (buffer: Buffer): Metadata => {

View File

@ -1,9 +1,4 @@
import {
MintLayout,
AccountLayout,
Token,
AuthorityType,
} from '@solana/spl-token';
import { MintLayout, AccountLayout, Token } from '@solana/spl-token';
import {
Connection,
PublicKey,
@ -25,9 +20,9 @@ export const mintNFT = async (
const TOKEN_PROGRAM_ID = new PublicKey(
'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
);
const SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID = new PublicKey(
'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
);
//const SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID = new PublicKey(
// 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
//);
const mintAccount = new Account();
const tokenAccount = new Account();
@ -110,7 +105,7 @@ export const mintNFT = async (
}
transaction = await wallet.signTransaction(transaction);
const rawTransaction = transaction.serialize();
let options = {
const options = {
skipPreflight: true,
commitment: 'singleGossip',
};

View File

@ -62,7 +62,7 @@ export function approve(
const tokenProgram = TOKEN_PROGRAM_ID;
const transferAuthority = existingTransferAuthority || Keypair.generate();
const delegateKey = delegate ?? transferAuthority.publicKey;
//const delegateKey = delegate ?? transferAuthority.publicKey;
instructions.push(
Token.createApproveInstruction(

View File

@ -1,4 +1,4 @@
import { PublicKey, AccountInfo, Account } from '@solana/web3.js';
import { PublicKey, AccountInfo } from '@solana/web3.js';
export type StringPublicKey = string;

View File

@ -2,7 +2,7 @@ export function decodeLength(bytes: Array<number>): number {
let len = 0;
let size = 0;
for (;;) {
let elem = bytes.shift();
const elem = bytes.shift();
//@ts-ignore
len |= (elem & 0x7f) << (size * 7);
size += 1;

View File

@ -1,6 +1,6 @@
// credit https://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array
export function toUTF8Array(str: string) {
let utf8 = [];
const utf8: number[] = [];
for (let i = 0; i < str.length; i++) {
let charcode = str.charCodeAt(i);
if (charcode < 0x80) utf8.push(charcode);

View File

@ -56,7 +56,7 @@ export const findProgramAddress = async (
'pda-' +
seeds.reduce((agg, item) => agg + item.toString('hex'), '') +
programId.toString();
let cached = localStorage.getItem(key);
const cached = localStorage.getItem(key);
if (cached) {
const value = JSON.parse(cached);
@ -207,14 +207,14 @@ export const tryParseKey = (key: string): PublicKey | null => {
}
};
var SI_SYMBOL = ['', 'k', 'M', 'G', 'T', 'P', 'E'];
const SI_SYMBOL = ['', 'k', 'M', 'G', 'T', 'P', 'E'] as const;
const abbreviateNumber = (number: number, precision: number) => {
let tier = (Math.log10(number) / 3) | 0;
const tier = (Math.log10(number) / 3) | 0;
let scaled = number;
let suffix = SI_SYMBOL[tier];
const suffix = SI_SYMBOL[tier];
if (tier !== 0) {
let scale = Math.pow(10, tier * 3);
const scale = Math.pow(10, tier * 3);
scaled = number / scale;
}
@ -287,7 +287,7 @@ export function convert(
typeof account === 'number' ? account : account.info.amount?.toNumber();
const precision = Math.pow(10, mint?.decimals || 0);
let result = (amount / precision) * rate;
const result = (amount / precision) * rate;
return result;
}

View File

@ -51,9 +51,6 @@
"deploy": "cross-env ASSET_PREFIX=/metaplex/ yarn build && yarn deploy:gh",
"format:fix": "prettier --write \"**/*.+(js|jsx|ts|tsx|json|css|md)\""
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",

View File

@ -62,14 +62,14 @@ export async function addTokensToVault(
let batchCounter = 0;
let signers: Array<Keypair[]> = [];
let instructions: Array<TransactionInstruction[]> = [];
let newStores: StringPublicKey[] = [];
const signers: Array<Keypair[]> = [];
const instructions: Array<TransactionInstruction[]> = [];
const newStores: StringPublicKey[] = [];
let currSigners: Keypair[] = [];
let currInstructions: TransactionInstruction[] = [];
for (let i = 0; i < nfts.length; i++) {
let nft = nfts[i];
const nft = nfts[i];
if (nft.box.tokenAccount) {
const newStoreAccount = createTokenAccount(
currInstructions,

View File

@ -33,8 +33,8 @@ export async function sendCancelBid(
) {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let signers: Array<Keypair[]> = [];
let instructions: Array<TransactionInstruction[]> = [];
const signers: Array<Keypair[]> = [];
const instructions: Array<TransactionInstruction[]> = [];
if (
auctionView.auction.info.ended() &&
@ -112,11 +112,11 @@ export async function setupCancelBid(
) {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let cancelSigners: Keypair[] = [];
let cancelInstructions: TransactionInstruction[] = [];
let cleanupInstructions: TransactionInstruction[] = [];
const cancelSigners: Keypair[] = [];
const cancelInstructions: TransactionInstruction[] = [];
const cleanupInstructions: TransactionInstruction[] = [];
let tokenAccount = accountsByMint.get(auctionView.auction.info.tokenMint);
const tokenAccount = accountsByMint.get(auctionView.auction.info.tokenMint);
const mint = cache.get(auctionView.auction.info.tokenMint);
if (mint && auctionView.myBidderPot) {

View File

@ -6,7 +6,6 @@ import {
SafetyDepositBox,
deprecatedGetReservationList,
MasterEditionV1,
MasterEditionV2,
findProgramAddress,
programIds,
createAssociatedTokenAccountInstruction,
@ -144,7 +143,7 @@ export async function claimUnusedPrizes(
}
}
let printingV2ByMint: Record<string, AuctionViewItem> = {};
const printingV2ByMint: Record<string, AuctionViewItem> = {};
for (
let winnerIndex = 0;
@ -189,7 +188,7 @@ export async function claimUnusedPrizes(
winnerIndex,
);
break;
case WinningConfigType.PrintingV2:
case WinningConfigType.PrintingV2: {
const winningBidder =
auctionView.auction.info.bidState.getWinnerAt(winnerIndex);
if (winningBidder) {
@ -215,6 +214,7 @@ export async function claimUnusedPrizes(
}
printingV2ByMint[item.metadata.info.mint] = item;
break;
}
case WinningConfigType.FullRightsTransfer:
console.log('Redeeming Full Rights');
await setupRedeemFullRightsTransferInstructions(
@ -246,9 +246,9 @@ export async function claimUnusedPrizes(
}
}
let allV2s = Object.values(printingV2ByMint);
const allV2s = Object.values(printingV2ByMint);
for (let i = 0; i < allV2s.length; i++) {
let item = allV2s[i];
const item = allV2s[i];
await setupWithdrawMasterEditionInstructions(
connection,
auctionView,
@ -273,8 +273,8 @@ async function setupRedeemInstructions(
) {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let winningPrizeSigner: Keypair[] = [];
let winningPrizeInstructions: TransactionInstruction[] = [];
const winningPrizeSigner: Keypair[] = [];
const winningPrizeInstructions: TransactionInstruction[] = [];
signers.push(winningPrizeSigner);
instructions.push(winningPrizeInstructions);
@ -327,8 +327,8 @@ async function setupRedeemFullRightsTransferInstructions(
) {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let winningPrizeSigner: Keypair[] = [];
let winningPrizeInstructions: TransactionInstruction[] = [];
const winningPrizeSigner: Keypair[] = [];
const winningPrizeInstructions: TransactionInstruction[] = [];
const claimed = auctionView.auctionManager.isItemClaimed(
winningConfigIndex,
safetyDeposit.info.order,
@ -452,8 +452,8 @@ async function deprecatedSetupRedeemPrintingInstructions(
);
console.log('This state item is', claimed);
if (!claimed) {
let winningPrizeSigner: Keypair[] = [];
let winningPrizeInstructions: TransactionInstruction[] = [];
const winningPrizeSigner: Keypair[] = [];
const winningPrizeInstructions: TransactionInstruction[] = [];
signers.push(winningPrizeSigner);
instructions.push(winningPrizeInstructions);

View File

@ -23,9 +23,9 @@ export async function closePersonalEscrow(
const PROGRAM_IDS = utils.programIds();
let signers: Keypair[] = [];
const signers: Keypair[] = [];
let instructions: TransactionInstruction[] = [
const instructions: TransactionInstruction[] = [
Token.createCloseAccountInstruction(
PROGRAM_IDS.token,
toPublicKey(ata),

View File

@ -32,8 +32,8 @@ export async function closeVault(
const accountRentExempt = await connection.getMinimumBalanceForRentExemption(
AccountLayout.span,
);
let signers: Keypair[] = [];
let instructions: TransactionInstruction[] = [];
const signers: Keypair[] = [];
const instructions: TransactionInstruction[] = [];
await activateVault(
new BN(0),
@ -62,7 +62,7 @@ export async function closeVault(
signers,
);
let transferAuthority = Keypair.generate();
const transferAuthority = Keypair.generate();
// Shouldn't need to pay anything since we activated vault with 0 shares, but we still
// need this setup anyway.

View File

@ -53,7 +53,7 @@ export async function filterMetadata(
console.log('Reviewing', masterEdition.pubkey);
let printingBal = 0;
try {
let printingBalResp = await connection.getTokenSupply(
const printingBalResp = await connection.getTokenSupply(
toPublicKey(masterEdition.info.printingMint),
);
printingBal = printingBalResp.value.uiAmount || 0;
@ -83,7 +83,7 @@ export async function filterMetadata(
} else {
let oneTimeBal = 0;
try {
let oneTimeBalResp = await connection.getTokenSupply(
const oneTimeBalResp = await connection.getTokenSupply(
toPublicKey(masterEdition.info.oneTimePrintingAuthorizationMint),
);
oneTimeBal = oneTimeBalResp.value.uiAmount || 0;
@ -133,8 +133,8 @@ export async function convertMasterEditions(
if (!wallet.publicKey) throw new WalletNotConnectedError();
const PROGRAM_IDS = programIds();
let signers: Array<Array<Keypair[]>> = [];
let instructions: Array<Array<TransactionInstruction[]>> = [];
const signers: Array<Array<Keypair[]>> = [];
const instructions: Array<Array<TransactionInstruction[]>> = [];
let currSignerBatch: Array<Keypair[]> = [];
let currInstrBatch: Array<TransactionInstruction[]> = [];

View File

@ -142,7 +142,7 @@ export async function createAuctionManager(
auction,
} = await makeAuction(wallet, vault, auctionSettings);
let safetyDepositConfigsWithPotentiallyUnsetTokens =
const safetyDepositConfigsWithPotentiallyUnsetTokens =
await buildSafetyDepositArray(
wallet,
safetyDepositDrafts,
@ -189,7 +189,7 @@ export async function createAuctionManager(
safetyDepositConfigs,
);
let lookup: byType = {
const lookup: byType = {
markItemsThatArentMineAsSold: await markItemsThatArentMineAsSold(
wallet,
safetyDepositDrafts,
@ -277,7 +277,7 @@ export async function createAuctionManager(
},
};
let signers: Keypair[][] = [
const signers: Keypair[][] = [
...lookup.markItemsThatArentMineAsSold.signers,
lookup.externalPriceAccount.signers,
lookup.deprecatedBuildAndPopulateOneTimeAuthorizationAccount?.signers || [],
@ -377,7 +377,7 @@ async function buildSafetyDepositArray(
): Promise<SafetyDepositInstructionTemplate[]> {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let safetyDepositTemplates: SafetyDepositInstructionTemplate[] = [];
const safetyDepositTemplates: SafetyDepositInstructionTemplate[] = [];
safetyDeposits.forEach((s, i) => {
const maxAmount = [...s.amountRanges.map(a => a.amount)]
.sort()
@ -518,13 +518,13 @@ async function setupAuctionManagerInstructions(
}> {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let store = programIds().store?.toBase58();
const store = programIds().store?.toBase58();
if (!store) {
throw new Error('Store not initialized');
}
let signers: Keypair[] = [];
let instructions: TransactionInstruction[] = [];
const signers: Keypair[] = [];
const instructions: TransactionInstruction[] = [];
const { auctionManagerKey } = await getAuctionKeys(vault);
@ -572,8 +572,8 @@ async function setupStartAuction(
}> {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let signers: Keypair[] = [];
let instructions: TransactionInstruction[] = [];
const signers: Keypair[] = [];
const instructions: TransactionInstruction[] = [];
await startAuction(vault, wallet.publicKey.toBase58(), instructions);
@ -599,8 +599,8 @@ async function deprecatedValidateParticipationHelper(
throw new Error('Store not initialized');
}
let instructions: TransactionInstruction[] = [];
let signers: Keypair[] = [];
const instructions: TransactionInstruction[] = [];
const signers: Keypair[] = [];
const whitelistedCreator = participationSafetyDepositDraft.metadata.info.data
.creators
? await findValidWhitelistedCreator(
@ -684,12 +684,12 @@ async function validateBoxes(
if (!store) {
throw new Error('Store not initialized');
}
let signers: Keypair[][] = [];
let instructions: TransactionInstruction[][] = [];
const signers: Keypair[][] = [];
const instructions: TransactionInstruction[][] = [];
for (let i = 0; i < safetyDeposits.length; i++) {
let tokenSigners: Keypair[] = [];
let tokenInstructions: TransactionInstruction[] = [];
const tokenSigners: Keypair[] = [];
const tokenInstructions: TransactionInstruction[] = [];
let safetyDepositBox: StringPublicKey;
@ -762,8 +762,8 @@ async function deprecatedBuildAndPopulateOneTimeAuthorizationAccount(
if (!oneTimePrintingAuthorizationMint)
return { instructions: [], signers: [] };
let signers: Keypair[] = [];
let instructions: TransactionInstruction[] = [];
const signers: Keypair[] = [];
const instructions: TransactionInstruction[] = [];
const recipientKey: StringPublicKey = (
await findProgramAddress(
[

View File

@ -35,17 +35,17 @@ export async function createExternalPriceAccount(
const PROGRAM_IDS = utils.programIds();
let signers: Keypair[] = [];
let instructions: TransactionInstruction[] = [];
const signers: Keypair[] = [];
const instructions: TransactionInstruction[] = [];
const epaRentExempt = await connection.getMinimumBalanceForRentExemption(
MAX_EXTERNAL_ACCOUNT_SIZE,
);
let externalPriceAccount = Keypair.generate();
let key = externalPriceAccount.publicKey.toBase58();
const externalPriceAccount = Keypair.generate();
const key = externalPriceAccount.publicKey.toBase58();
let epaStruct = new ExternalPriceAccount({
const epaStruct = new ExternalPriceAccount({
pricePerShare: new BN(0),
priceMint: QUOTE_MINT.toBase58(),
allowedToCombine: true,

View File

@ -38,8 +38,8 @@ export async function createVault(
const PROGRAM_IDS = utils.programIds();
let signers: Keypair[] = [];
let instructions: TransactionInstruction[] = [];
const signers: Keypair[] = [];
const instructions: TransactionInstruction[] = [];
const accountRentExempt = await connection.getMinimumBalanceForRentExemption(
AccountLayout.span,
@ -53,7 +53,7 @@ export async function createVault(
MAX_VAULT_SIZE,
);
let vault = Keypair.generate();
const vault = Keypair.generate();
const vaultAuthority = (
await findProgramAddress(

View File

@ -5,7 +5,6 @@ import {
sendTransactionsWithManualRetry,
setAuctionAuthority,
setVaultAuthority,
TokenAccount,
WalletSigner,
} from '@oyster/common';
import { WalletNotConnectedError } from '@solana/wallet-adapter-base';
@ -25,12 +24,12 @@ export async function decommAuctionManagerAndReturnPrizes(
) {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let signers: Array<Keypair[]> = [];
let instructions: Array<TransactionInstruction[]> = [];
const signers: Array<Keypair[]> = [];
const instructions: Array<TransactionInstruction[]> = [];
if (auctionView.auctionManager.status === AuctionManagerStatus.Initialized) {
let decomSigners: Keypair[] = [];
let decomInstructions: TransactionInstruction[] = [];
const decomSigners: Keypair[] = [];
const decomInstructions: TransactionInstruction[] = [];
if (auctionView.auction.info.authority === wallet.publicKey.toBase58()) {
await setAuctionAuthority(

View File

@ -23,8 +23,8 @@ export async function deprecatedCreateReservationListForTokens(
let batchCounter = 0;
let signers: Array<Keypair[]> = [];
let instructions: Array<TransactionInstruction[]> = [];
const signers: Array<Keypair[]> = [];
const instructions: Array<TransactionInstruction[]> = [];
let currSigners: Keypair[] = [];
let currInstructions: TransactionInstruction[] = [];

View File

@ -32,13 +32,13 @@ export async function deprecatedPopulatePrintingTokens(
let batchCounter = 0;
let signers: Array<Keypair[]> = [];
let instructions: Array<TransactionInstruction[]> = [];
const signers: Array<Keypair[]> = [];
const instructions: Array<TransactionInstruction[]> = [];
let currSigners: Keypair[] = [];
let currInstructions: TransactionInstruction[] = [];
for (let i = 0; i < safetyDepositConfigs.length; i++) {
let nft = safetyDepositConfigs[i];
const nft = safetyDepositConfigs[i];
if (nft.draft.masterEdition?.info.key != MetadataKey.MasterEditionV1) {
continue;
}

View File

@ -27,8 +27,8 @@ export async function makeAuction(
const PROGRAM_IDS = utils.programIds();
let signers: Keypair[] = [];
let instructions: TransactionInstruction[] = [];
const signers: Keypair[] = [];
const instructions: TransactionInstruction[] = [];
const auctionKey = (
await findProgramAddress(
[

View File

@ -1,4 +1,4 @@
import { Keypair, Connection, TransactionInstruction } from '@solana/web3.js';
import { Keypair, TransactionInstruction } from '@solana/web3.js';
import {
updatePrimarySaleHappenedViaToken,
WalletSigner,
@ -15,8 +15,8 @@ export async function markItemsThatArentMineAsSold(
const publicKey = wallet.publicKey.toBase58();
let signers: Array<Keypair[]> = [];
let instructions: Array<TransactionInstruction[]> = [];
const signers: Array<Keypair[]> = [];
const instructions: Array<TransactionInstruction[]> = [];
let markSigners: Keypair[] = [];
let markInstructions: TransactionInstruction[] = [];

View File

@ -20,11 +20,11 @@ export async function saveAdmin(
) {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let signers: Array<Keypair[]> = [];
let instructions: Array<TransactionInstruction[]> = [];
const signers: Array<Keypair[]> = [];
const instructions: Array<TransactionInstruction[]> = [];
let storeSigners: Keypair[] = [];
let storeInstructions: TransactionInstruction[] = [];
const storeSigners: Keypair[] = [];
const storeInstructions: TransactionInstruction[] = [];
await setStore(
isPublic,
@ -37,8 +37,8 @@ export async function saveAdmin(
for (let i = 0; i < whitelistedCreators.length; i++) {
const wc = whitelistedCreators[i];
let wcSigners: Keypair[] = [];
let wcInstructions: TransactionInstruction[] = [];
const wcSigners: Keypair[] = [];
const wcInstructions: TransactionInstruction[] = [];
await setWhitelistedCreator(
wc.address,

View File

@ -31,9 +31,9 @@ export async function sendPlaceBid(
// value entered by the user adjust to decimals of the mint
amount: number,
) {
let signers: Keypair[][] = [];
let instructions: TransactionInstruction[][] = [];
let bid = await setupPlaceBid(
const signers: Keypair[][] = [];
const instructions: TransactionInstruction[][] = [];
const bid = await setupPlaceBid(
connection,
wallet,
bidderTokenAccount,
@ -72,7 +72,7 @@ export async function setupPlaceBid(
let signers: Keypair[] = [];
let instructions: TransactionInstruction[] = [];
let cleanupInstructions: TransactionInstruction[] = [];
const cleanupInstructions: TransactionInstruction[] = [];
const accountRentExempt = await connection.getMinimumBalanceForRentExemption(
AccountLayout.span,
@ -84,7 +84,7 @@ export async function setupPlaceBid(
const mint = cache.get(
tokenAccount ? tokenAccount.info.mint : QUOTE_MINT,
) as ParsedAccount<MintInfo>;
let lamports = toLamports(amount, mint.info) + accountRentExempt;
const lamports = toLamports(amount, mint.info) + accountRentExempt;
let bidderPotTokenAccount: string;
if (!auctionView.myBidderPot) {
@ -99,8 +99,8 @@ export async function setupPlaceBid(
} else {
bidderPotTokenAccount = auctionView.myBidderPot?.info.bidderPot;
if (!auctionView.auction.info.ended()) {
let cancelSigners: Keypair[][] = [];
let cancelInstr: TransactionInstruction[][] = [];
const cancelSigners: Keypair[][] = [];
const cancelInstr: TransactionInstruction[][] = [];
await setupCancelBid(
auctionView,
accountsByMint,

View File

@ -94,8 +94,8 @@ export async function sendRedeemBid(
) {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let signers: Array<Keypair[]> = [];
let instructions: Array<TransactionInstruction[]> = [];
const signers: Array<Keypair[]> = [];
const instructions: Array<TransactionInstruction[]> = [];
if (
auctionView.auction.info.ended() &&
@ -200,8 +200,8 @@ export async function sendRedeemBid(
}
if (auctionView.myBidderMetadata && auctionView.myBidderPot) {
let claimSigners: Keypair[] = [];
let claimInstructions: TransactionInstruction[] = [];
const claimSigners: Keypair[] = [];
const claimInstructions: TransactionInstruction[] = [];
instructions.push(claimInstructions);
signers.push(claimSigners);
console.log('Claimed');
@ -304,8 +304,8 @@ async function setupRedeemInstructions(
) {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let winningPrizeSigner: Keypair[] = [];
let winningPrizeInstructions: TransactionInstruction[] = [];
const winningPrizeSigner: Keypair[] = [];
const winningPrizeInstructions: TransactionInstruction[] = [];
signers.push(winningPrizeSigner);
instructions.push(winningPrizeInstructions);
@ -364,8 +364,8 @@ async function setupRedeemFullRightsTransferInstructions(
) {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let winningPrizeSigner: Keypair[] = [];
let winningPrizeInstructions: TransactionInstruction[] = [];
const winningPrizeSigner: Keypair[] = [];
const winningPrizeInstructions: TransactionInstruction[] = [];
signers.push(winningPrizeSigner);
instructions.push(winningPrizeInstructions);
@ -459,8 +459,8 @@ export async function setupRedeemPrintingV2Instructions(
);
for (let i = 0; i < item.amount.toNumber(); i++) {
let myInstructions: TransactionInstruction[] = [];
let mySigners: Keypair[] = [];
const myInstructions: TransactionInstruction[] = [];
const mySigners: Keypair[] = [];
const { mint, account } = await createMintAndAccountWithOne(
wallet,
@ -569,8 +569,8 @@ async function deprecatedSetupRedeemPrintingV1Instructions(
if (updateAuth && auctionView.myBidderMetadata) {
console.log('This state item is', claimed);
if (!claimed) {
let winningPrizeSigner: Keypair[] = [];
let winningPrizeInstructions: TransactionInstruction[] = [];
const winningPrizeSigner: Keypair[] = [];
const winningPrizeInstructions: TransactionInstruction[] = [];
signers.push(winningPrizeSigner);
instructions.push(winningPrizeInstructions);
@ -635,8 +635,8 @@ async function deprecatedRedeemPrintingV1Token(
if (!wallet.publicKey) throw new WalletNotConnectedError();
if (!item.masterEdition) return;
let cashInLimitedPrizeAuthorizationTokenSigner: Keypair[] = [];
let cashInLimitedPrizeAuthorizationTokenInstruction: TransactionInstruction[] =
const cashInLimitedPrizeAuthorizationTokenSigner: Keypair[] = [];
const cashInLimitedPrizeAuthorizationTokenInstruction: TransactionInstruction[] =
[];
signers.push(cashInLimitedPrizeAuthorizationTokenSigner);
instructions.push(cashInLimitedPrizeAuthorizationTokenInstruction);
@ -731,8 +731,8 @@ export async function setupRedeemParticipationInstructions(
const me = item.masterEdition as ParsedAccount<MasterEditionV2>;
// Super unfortunate but cant fit this all in one txn
let mintingInstructions: TransactionInstruction[] = [];
let mintingSigners: Keypair[] = [];
const mintingInstructions: TransactionInstruction[] = [];
const mintingSigners: Keypair[] = [];
const cleanupInstructions: TransactionInstruction[] = [];
@ -746,7 +746,7 @@ export async function setupRedeemParticipationInstructions(
const fixedPrice =
auctionView.auctionManager.participationConfig?.fixedPrice;
let price: number =
const price: number =
fixedPrice !== undefined && fixedPrice !== null
? fixedPrice.toNumber()
: bid?.info.lastBid.toNumber() || 0;
@ -782,9 +782,9 @@ export async function setupRedeemParticipationInstructions(
instructions.push(mintingInstructions);
signers.push(mintingSigners);
let myInstructions: TransactionInstruction[] = [];
const myInstructions: TransactionInstruction[] = [];
let mySigners: Keypair[] = [];
const mySigners: Keypair[] = [];
const transferAuthority = approve(
myInstructions,
@ -823,8 +823,9 @@ export async function setupRedeemParticipationInstructions(
const metadata = await getMetadata(mint);
if (receiverWallet === wallet.publicKey.toBase58()) {
let updatePrimarySaleHappenedInstructions: TransactionInstruction[] = [];
let updatePrimarySaleHappenedSigners: Keypair[] = [];
const updatePrimarySaleHappenedInstructions: TransactionInstruction[] =
[];
const updatePrimarySaleHappenedSigners: Keypair[] = [];
await updatePrimarySaleHappenedViaToken(
metadata,
@ -867,7 +868,7 @@ async function deprecatedSetupRedeemParticipationInstructions(
return;
const updateAuth = item.metadata.info.updateAuthority;
let tokenAccount = accountsByMint.get(auctionView.auction.info.tokenMint);
const tokenAccount = accountsByMint.get(auctionView.auction.info.tokenMint);
const mint = cache.get(auctionView.auction.info.tokenMint);
const participationBalance = await connection.getTokenAccountBalance(
@ -882,8 +883,8 @@ async function deprecatedSetupRedeemParticipationInstructions(
tokenBalance.value.uiAmount === 1
) {
// I'm the first, I need to populate for the others with a crank turn.
let fillParticipationStashSigners: Keypair[] = [];
let fillParticipationStashInstructions: TransactionInstruction[] = [];
const fillParticipationStashSigners: Keypair[] = [];
const fillParticipationStashInstructions: TransactionInstruction[] = [];
const oneTimeTransient = createTokenAccount(
fillParticipationStashInstructions,
wallet.publicKey,
@ -933,14 +934,14 @@ async function deprecatedSetupRedeemParticipationInstructions(
safetyDeposit.info.order,
)
) {
let winningPrizeSigner: Keypair[] = [];
let winningPrizeInstructions: TransactionInstruction[] = [];
let cleanupInstructions: TransactionInstruction[] = [];
const winningPrizeSigner: Keypair[] = [];
const winningPrizeInstructions: TransactionInstruction[] = [];
const cleanupInstructions: TransactionInstruction[] = [];
if (!newTokenAccount) {
// made a separate txn because we're over the txn limit by like 10 bytes.
let newTokenAccountSigner: Keypair[] = [];
let newTokenAccountInstructions: TransactionInstruction[] = [];
const newTokenAccountSigner: Keypair[] = [];
const newTokenAccountInstructions: TransactionInstruction[] = [];
signers.push(newTokenAccountSigner);
instructions.push(newTokenAccountInstructions);
newTokenAccount = createTokenAccount(
@ -956,7 +957,7 @@ async function deprecatedSetupRedeemParticipationInstructions(
const fixedPrice =
auctionView.auctionManager.participationConfig?.fixedPrice;
let price: number =
const price: number =
fixedPrice !== undefined && fixedPrice !== null
? fixedPrice.toNumber()
: auctionView.myBidderMetadata.info.lastBid.toNumber() || 0;

View File

@ -14,8 +14,8 @@ export async function sendSignMetadata(
) {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let signers: Keypair[] = [];
let instructions: TransactionInstruction[] = [];
const signers: Keypair[] = [];
const instructions: TransactionInstruction[] = [];
await signMetadata(metadata, wallet.publicKey.toBase58(), instructions);

View File

@ -19,8 +19,8 @@ export async function setVaultAndAuctionAuthorities(
}> {
if (!wallet.publicKey) throw new WalletNotConnectedError();
let signers: Keypair[] = [];
let instructions: TransactionInstruction[] = [];
const signers: Keypair[] = [];
const instructions: TransactionInstruction[] = [];
await setAuctionAuthority(
auction,

View File

@ -1,9 +1,4 @@
import {
Keypair,
Connection,
PublicKey,
TransactionInstruction,
} from '@solana/web3.js';
import { Keypair, Connection, TransactionInstruction } from '@solana/web3.js';
import {
ParsedAccount,
SequenceType,
@ -42,8 +37,8 @@ export async function settle(
auctionView.auction.info.ended() &&
auctionView.auction.info.state !== AuctionState.Ended
) {
let signers: Keypair[][] = [];
let instructions: TransactionInstruction[][] = [];
const signers: Keypair[][] = [];
const instructions: TransactionInstruction[][] = [];
await setupPlaceBid(
connection,
@ -76,15 +71,15 @@ async function emptyPaymentAccountForAllTokens(
if (!wallet.publicKey) throw new WalletNotConnectedError();
const PROGRAM_IDS = programIds();
let signers: Array<Array<Keypair[]>> = [];
let instructions: Array<Array<TransactionInstruction[]>> = [];
const signers: Array<Array<Keypair[]>> = [];
const instructions: Array<Array<TransactionInstruction[]>> = [];
let currSignerBatch: Array<Keypair[]> = [];
let currInstrBatch: Array<TransactionInstruction[]> = [];
let settleSigners: Keypair[] = [];
let settleInstructions: TransactionInstruction[] = [];
let ataLookup: Record<string, boolean> = {};
const ataLookup: Record<string, boolean> = {};
// TODO replace all this with payer account so user doesnt need to click approve several times.
// Overall we have 10 parallel txns, of up to 4 settlements per txn
@ -219,8 +214,8 @@ async function claimAllBids(
auctionView: AuctionView,
bids: ParsedAccount<BidderPot>[],
) {
let signers: Array<Array<Keypair[]>> = [];
let instructions: Array<Array<TransactionInstruction[]>> = [];
const signers: Array<Array<Keypair[]>> = [];
const instructions: Array<Array<TransactionInstruction[]>> = [];
let currSignerBatch: Array<Keypair[]> = [];
let currInstrBatch: Array<TransactionInstruction[]> = [];

View File

@ -10,7 +10,7 @@ export async function startAuctionManually(
) {
try {
const signers: Keypair[] = [];
let instructions: TransactionInstruction[] = [];
const instructions: TransactionInstruction[] = [];
await startAuction(
auctionView.vault.pubkey,

View File

@ -34,8 +34,8 @@ export async function unwindVault(
let batchCounter = 0;
const PROGRAM_IDS = programIds();
let signers: Array<Keypair[]> = [];
let instructions: Array<TransactionInstruction[]> = [];
const signers: Array<Keypair[]> = [];
const instructions: Array<TransactionInstruction[]> = [];
let currSigners: Keypair[] = [];
let currInstructions: TransactionInstruction[] = [];
@ -48,7 +48,7 @@ export async function unwindVault(
if (epa) {
const decoded = decodeExternalPriceAccount(epa.data);
// "Closing" it here actually brings it to Combined state which means we can withdraw tokens.
let { instructions: cvInstructions, signers: cvSigners } =
const { instructions: cvInstructions, signers: cvSigners } =
await closeVault(
connection,
wallet,
@ -66,7 +66,7 @@ export async function unwindVault(
}
const vaultKey = vault.pubkey;
let boxes: ParsedAccount<SafetyDepositBox>[] = [];
const boxes: ParsedAccount<SafetyDepositBox>[] = [];
let box = safetyDepositBoxesByVaultAndIndex[vaultKey + '-0'];
if (box) {
@ -80,7 +80,7 @@ export async function unwindVault(
}
console.log('Found boxes', boxes);
for (let i = 0; i < boxes.length; i++) {
let nft = boxes[i];
const nft = boxes[i];
const ata = (
await findProgramAddress(
[

View File

@ -12,12 +12,19 @@ export function MeshViewer(props: MeshViewerProps) {
return (
// @ts-ignore
<model-viewer
style={{ width: `100%`, height: `100%`, minHeight: 400, minWidth: 400, maxHeight: 400, ...props.style }}
style={{
width: `100%`,
height: `100%`,
minHeight: 400,
minWidth: 400,
maxHeight: 400,
...props.style,
}}
src={props.url}
auto-rotate
rotation-per-second="40deg"
className={props.className}
camera-controls
/>
)
);
}

View File

@ -34,14 +34,14 @@ async function getProgramAccounts(
): Promise<Array<AccountAndPubkey>> {
const extra: any = {};
let commitment;
let encoding;
//let encoding;
if (configOrCommitment) {
if (typeof configOrCommitment === 'string') {
commitment = configOrCommitment;
} else {
commitment = configOrCommitment.commitment;
encoding = configOrCommitment.encoding;
//encoding = configOrCommitment.encoding;
if (configOrCommitment.dataSlice) {
extra.dataSlice = configOrCommitment.dataSlice;
@ -124,7 +124,6 @@ export const loadAccounts = async (connection: Connection, all: boolean) => {
const promises = [
getProgramAccounts(connection, VAULT_ID).then(forEach(processVaultData)),
getProgramAccounts(connection, AUCTION_ID).then(forEach(processAuctions)),
,
getProgramAccounts(connection, METAPLEX_ID).then(
forEach(processMetaplexAccounts),
),

View File

@ -12,7 +12,7 @@ import {
MasterEditionV2,
PublicKeyStringAndAccount,
} from '@oyster/common';
import { AccountInfo, PublicKey } from '@solana/web3.js';
import { AccountInfo } from '@solana/web3.js';
import {
BidRedemptionTicket,
Store,

View File

@ -1,4 +1,4 @@
import React, { useEffect, useMemo, useState } from 'react';
import { useEffect, useMemo, useState } from 'react';
import { useMeta } from '../contexts';
import { Art, Artist, ArtType } from '../types';
import {

View File

@ -288,13 +288,13 @@ export function processAccountsIntoAuctionView(
const vault = vaults[auctionManagerInstance.info.vault];
const auctionManagerKey = auctionManagerInstance.pubkey;
let safetyDepositConfigs: ParsedAccount<SafetyDepositConfig>[] =
const safetyDepositConfigs: ParsedAccount<SafetyDepositConfig>[] =
buildListWhileNonZero(
safetyDepositConfigsByAuctionManagerAndIndex,
auctionManagerKey,
);
let bidRedemptions: ParsedAccount<BidRedemptionTicketV2>[] =
const bidRedemptions: ParsedAccount<BidRedemptionTicketV2>[] =
buildListWhileNonZero(
bidRedemptionV2sByAuctionManagerAndWinningIndex,
auctionManagerKey,
@ -309,7 +309,7 @@ export function processAccountsIntoAuctionView(
const boxesExpected = auctionManager.safetyDepositBoxesExpected.toNumber();
let bidRedemption: ParsedAccount<BidRedemptionTicket> | undefined =
const bidRedemption: ParsedAccount<BidRedemptionTicket> | undefined =
cachedRedemptionKeysByWallet[auction.pubkey]?.info
? (cachedRedemptionKeysByWallet[
auction.pubkey
@ -336,7 +336,7 @@ export function processAccountsIntoAuctionView(
metadataByMint[curr.safetyDeposit.info.tokenMint];
if (!foundMetadata) {
// Means is a limited edition, so the tokenMint is the printingMint
let masterEdition =
const masterEdition =
masterEditionsByPrintingMint[curr.safetyDeposit.info.tokenMint];
if (masterEdition) {
foundMetadata = metadataByMasterEdition[masterEdition.pubkey];
@ -350,7 +350,8 @@ export function processAccountsIntoAuctionView(
!curr.masterEdition &&
curr.metadata.info.masterEdition
) {
let foundMaster = masterEditions[curr.metadata.info.masterEdition];
const foundMaster =
masterEditions[curr.metadata.info.masterEdition];
curr.masterEdition = foundMaster;
}
@ -361,7 +362,7 @@ export function processAccountsIntoAuctionView(
}
const vaultKey = auctionManager.vault;
let boxes: ParsedAccount<SafetyDepositBox>[] = buildListWhileNonZero(
const boxes: ParsedAccount<SafetyDepositBox>[] = buildListWhileNonZero(
safetyDepositBoxesByVaultAndIndex,
vaultKey,
);
@ -394,7 +395,7 @@ export function processAccountsIntoAuctionView(
}
}
let view: Partial<AuctionView> = {
const view: Partial<AuctionView> = {
auction,
auctionManager,
state,

View File

@ -1,4 +1,4 @@
import React, { useEffect, useMemo, useState } from 'react';
import { useEffect, useMemo, useState } from 'react';
import {
BidderMetadata,
BidderMetadataParser,

View File

@ -38,10 +38,10 @@ export const useUserArts = (): SafetyDepositDraft[] => {
m.info.masterEdition ? masterEditions[m.info.masterEdition] : undefined,
);
let safetyDeposits: SafetyDepositDraft[] = [];
const safetyDeposits: SafetyDepositDraft[] = [];
let i = 0;
ownedMetadata.forEach(m => {
let a = accountByMint.get(m.info.mint);
const a = accountByMint.get(m.info.mint);
let masterA;
const masterEdition = possibleMasterEditions[i];
if (masterEdition?.info.key == MetadataKey.MasterEditionV1) {

View File

@ -156,7 +156,7 @@ export class BidRedemptionTicketV1 implements BidRedemptionTicket {
Object.assign(this, args);
}
getBidRedeemed(order: number): boolean {
getBidRedeemed(): boolean {
return this.participationRedeemed;
}
}

View File

@ -9,7 +9,6 @@ import {
Vault,
Metadata,
MasterEditionV1,
MetadataKey,
SafetyDepositBox,
MasterEditionV2,
toPublicKey,
@ -205,7 +204,7 @@ export class AuctionManager {
metadataByMint[boxes[it.safetyDepositBoxIndex]?.info.tokenMint];
if (!metadata) {
// Means is a limited edition v1, so the tokenMint is the printingMint
let masterEdition =
const masterEdition =
masterEditionsByPrintingMint[
boxes[it.safetyDepositBoxIndex]?.info.tokenMint
];
@ -645,7 +644,7 @@ export class SafetyDepositConfig {
this.winningConfigType = args.data[41];
this.amountType = args.data[42];
this.lengthType = args.data[43];
let lengthOfArray = new BN(args.data.slice(44, 48), 'le');
const lengthOfArray = new BN(args.data.slice(44, 48), 'le');
this.amountRanges = [];
let offset = 48;
for (let i = 0; i < lengthOfArray.toNumber(); i++) {
@ -716,7 +715,7 @@ export class SafetyDepositConfig {
getAmountForWinner(winner: BN): BN {
let start = new BN(0);
for (let i = 0; i < this.amountRanges.length; i++) {
let end = start.add(this.amountRanges[i].length);
const end = start.add(this.amountRanges[i].length);
if (winner.gte(start) && winner.lt(end)) {
return this.amountRanges[i].amount;
}

View File

@ -1,4 +1,3 @@
import { useState, useEffect } from 'react';
import dynamic from 'next/dynamic';
const CreateReactAppEntryPoint = dynamic(() => import('../App'), {

View File

@ -1,8 +1,3 @@
import {
getTokenName,
getVerboseTokenName,
KnownTokenMap,
} from '@oyster/common';
import { TokenInfo } from '@solana/spl-token-registry';
export const LAMPORT_MULTIPLIER = 10 ** 9;

View File

@ -1,4 +1,4 @@
import React, {useCallback, useEffect, useMemo, useState} from 'react';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import {
Layout,
Row,
@ -21,7 +21,8 @@ import {
StringPublicKey,
useConnection,
useStore,
useUserAccounts, useWalletModal,
useUserAccounts,
useWalletModal,
WalletSigner,
} from '@oyster/common';
import { useWallet } from '@solana/wallet-adapter-react';

View File

@ -159,22 +159,20 @@ export const AuctionView = () => {
No description provided.
</div>
))}
</div>
{attributes &&
{attributes && (
<>
<h6>Attributes</h6>
<List
grid={{ column: 4 }}
>
{attributes.map(attribute =>
<List grid={{ column: 4 }}>
{attributes.map(attribute => (
<List.Item>
<Card title={attribute.trait_type}>{attribute.value}</Card>
</List.Item>
)}
))}
</List>
</>}
</>
)}
{/* {auctionData[id] && (
<>
<h6>About this Auction</h6>

View File

@ -80,8 +80,7 @@ export const AuctionListView = () => {
.concat(auctionsEnded)
.filter(
(m, idx) =>
m.myBidderMetadata?.info.bidderPubkey ==
publicKey?.toBase58(),
m.myBidderMetadata?.info.bidderPubkey == publicKey?.toBase58(),
);
break;
case LiveAuctionViewState.Resale:

View File

@ -1,4 +1,9 @@
import { useConnection, useStore, useWalletModal, WalletSigner } from '@oyster/common';
import {
useConnection,
useStore,
useWalletModal,
WalletSigner,
} from '@oyster/common';
import { useWallet } from '@solana/wallet-adapter-react';
import { Button } from 'antd';
import { useCallback, useEffect, useState } from 'react';

View File

@ -3418,6 +3418,17 @@ array-ify@^1.0.0:
resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
array-includes@^3.1.2, array-includes@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a"
integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.18.0-next.2"
get-intrinsic "^1.1.1"
is-string "^1.0.5"
array-tree-filter@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190"
@ -3445,6 +3456,16 @@ array-unique@^0.3.2:
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
array.prototype.flatmap@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9"
integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==
dependencies:
call-bind "^1.0.0"
define-properties "^1.1.3"
es-abstract "^1.18.0-next.1"
function-bind "^1.1.1"
arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@ -6047,6 +6068,13 @@ dns-txt@^2.0.2:
dependencies:
buffer-indexof "^1.0.0"
doctrine@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
dependencies:
esutils "^2.0.2"
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
@ -6313,6 +6341,29 @@ es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2:
string.prototype.trimstart "^1.0.4"
unbox-primitive "^1.0.1"
es-abstract@^1.18.2:
version "1.18.5"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.5.tgz#9b10de7d4c206a3581fd5b2124233e04db49ae19"
integrity sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==
dependencies:
call-bind "^1.0.2"
es-to-primitive "^1.2.1"
function-bind "^1.1.1"
get-intrinsic "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.2"
internal-slot "^1.0.3"
is-callable "^1.2.3"
is-negative-zero "^2.0.1"
is-regex "^1.1.3"
is-string "^1.0.6"
object-inspect "^1.11.0"
object-keys "^1.1.1"
object.assign "^4.1.2"
string.prototype.trimend "^1.0.4"
string.prototype.trimstart "^1.0.4"
unbox-primitive "^1.0.1"
es-to-primitive@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
@ -6416,6 +6467,25 @@ eslint-config-prettier@^6.15.0:
dependencies:
get-stdin "^6.0.0"
eslint-plugin-react@^7.25.1:
version "7.25.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.25.1.tgz#9286b7cd9bf917d40309760f403e53016eda8331"
integrity sha512-P4j9K1dHoFXxDNP05AtixcJEvIT6ht8FhYKsrkY0MPCPaUMYijhpWwNiRDZVtA8KFuZOkGSeft6QwH8KuVpJug==
dependencies:
array-includes "^3.1.3"
array.prototype.flatmap "^1.2.4"
doctrine "^2.1.0"
estraverse "^5.2.0"
has "^1.0.3"
jsx-ast-utils "^2.4.1 || ^3.0.0"
minimatch "^3.0.4"
object.entries "^1.1.4"
object.fromentries "^2.0.4"
object.values "^1.1.4"
prop-types "^15.7.2"
resolve "^2.0.0-next.3"
string.prototype.matchall "^4.0.5"
eslint-scope@^5.0.0, eslint-scope@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
@ -7681,7 +7751,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
get-intrinsic@^1.0.2, get-intrinsic@^1.1.1:
get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
@ -8515,6 +8585,15 @@ internal-ip@^4.3.0:
default-gateway "^4.2.0"
ipaddr.js "^1.9.0"
internal-slot@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
dependencies:
get-intrinsic "^1.1.0"
has "^1.0.3"
side-channel "^1.0.4"
interpret@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
@ -9657,6 +9736,14 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
"jsx-ast-utils@^2.4.1 || ^3.0.0":
version "3.2.0"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82"
integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==
dependencies:
array-includes "^3.1.2"
object.assign "^4.1.2"
keccak256@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.2.tgz#ee0d38c2d5fb817f39d37c3fef842cab0164a067"
@ -11159,6 +11246,11 @@ object-inspect@^1.10.3, object-inspect@^1.9.0:
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369"
integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==
object-inspect@^1.11.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==
object-inspect@~1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
@ -11199,6 +11291,25 @@ object.assign@^4.1.2:
has-symbols "^1.0.1"
object-keys "^1.1.1"
object.entries@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd"
integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.18.2"
object.fromentries@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8"
integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.18.0-next.2"
has "^1.0.3"
object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7"
@ -11215,6 +11326,15 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
object.values@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30"
integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.18.2"
oboe@2.1.4:
version "2.1.4"
resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6"
@ -12995,7 +13115,7 @@ regex-not@^1.0.0, regex-not@^1.0.2:
extend-shallow "^3.0.2"
safe-regex "^1.1.0"
regexp.prototype.flags@^1.2.0:
regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
@ -13170,6 +13290,14 @@ resolve@1.x, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0:
is-core-module "^2.2.0"
path-parse "^1.0.6"
resolve@^2.0.0-next.3:
version "2.0.0-next.3"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46"
integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==
dependencies:
is-core-module "^2.2.0"
path-parse "^1.0.6"
resolve@~1.17.0:
version "1.17.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
@ -14188,6 +14316,20 @@ string-width@^4.1.0, string-width@^4.2.0:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.0"
string.prototype.matchall@^4.0.5:
version "4.0.5"
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da"
integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.18.2"
get-intrinsic "^1.1.1"
has-symbols "^1.0.2"
internal-slot "^1.0.3"
regexp.prototype.flags "^1.3.1"
side-channel "^1.0.4"
string.prototype.padend@^3.0.0:
version "3.1.2"
resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz#6858ca4f35c5268ebd5e8615e1327d55f59ee311"