From f27ffb39a7386e25b8ec78037c49a9a37d176c69 Mon Sep 17 00:00:00 2001 From: Efremov Alexey Date: Mon, 30 Aug 2021 16:04:31 +0300 Subject: [PATCH 1/9] Fix: eslint configuration + fix and reformat existing code + eslint as step for lint-staged I --- .gitignore | 1 + js/.eslintrc.js | 33 ++++ js/package.json | 4 +- js/packages/common/src/actions/metadata.ts | 1 + js/packages/common/src/contracts/token.ts | 15 +- js/packages/common/src/models/account.ts | 2 +- js/packages/common/src/utils/ids.ts | 2 +- js/packages/common/src/utils/shortvec.ts | 2 +- js/packages/common/src/utils/strings.ts | 2 +- js/packages/common/src/utils/utils.ts | 12 +- js/packages/web/package.json | 3 - .../web/src/actions/addTokensToVault.ts | 8 +- js/packages/web/src/actions/cancelBid.ts | 12 +- .../web/src/actions/claimUnusedPrizes.ts | 22 +-- .../web/src/actions/closePersonalEscrow.ts | 4 +- js/packages/web/src/actions/closeVault.ts | 6 +- .../web/src/actions/convertMasterEditions.ts | 8 +- .../web/src/actions/createAuctionManager.ts | 34 ++-- .../src/actions/createExternalPriceAccount.ts | 10 +- js/packages/web/src/actions/createVault.ts | 6 +- .../decommAuctionManagerAndReturnPrizes.ts | 9 +- ...precatedCreateReservationListsForTokens.ts | 4 +- .../deprecatedPopulatePrintingTokens.ts | 6 +- js/packages/web/src/actions/makeAuction.ts | 4 +- .../actions/markItemsThatArentMineAsSold.ts | 6 +- js/packages/web/src/actions/saveAdmin.ts | 12 +- js/packages/web/src/actions/sendPlaceBid.ts | 14 +- js/packages/web/src/actions/sendRedeemBid.ts | 61 ++++---- .../web/src/actions/sendSignMetadata.ts | 4 +- .../actions/setVaultAndAuctionAuthorities.ts | 4 +- js/packages/web/src/actions/settle.ts | 21 +-- .../web/src/actions/startAuctionManually.ts | 2 +- js/packages/web/src/actions/unwindVault.ts | 10 +- .../web/src/components/MeshViewer/index.tsx | 11 +- .../web/src/contexts/meta/loadAccounts.ts | 5 +- js/packages/web/src/contexts/meta/types.ts | 2 +- js/packages/web/src/hooks/useArt.ts | 2 +- js/packages/web/src/hooks/useAuctions.ts | 15 +- .../web/src/hooks/useBidsForAuction.ts | 2 +- js/packages/web/src/hooks/useUserArts.ts | 4 +- .../src/models/metaplex/deprecatedStates.ts | 2 +- js/packages/web/src/models/metaplex/index.ts | 7 +- js/packages/web/src/pages/index.tsx | 1 - js/packages/web/src/utils/assets.ts | 5 - js/packages/web/src/views/admin/index.tsx | 5 +- js/packages/web/src/views/auction/index.tsx | 14 +- .../web/src/views/home/auctionList.tsx | 3 +- js/packages/web/src/views/home/setup.tsx | 7 +- js/yarn.lock | 146 +++++++++++++++++- 49 files changed, 372 insertions(+), 203 deletions(-) create mode 100644 js/.eslintrc.js diff --git a/.gitignore b/.gitignore index 6a51275..34d55fb 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/js/.eslintrc.js b/js/.eslintrc.js new file mode 100644 index 0000000..238d438 --- /dev/null +++ b/js/.eslintrc.js @@ -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'], + }, +}; diff --git a/js/package.json b/js/package.json index b5a7d25..e365023 100644 --- a/js/package.json +++ b/js/package.json @@ -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", diff --git a/js/packages/common/src/actions/metadata.ts b/js/packages/common/src/actions/metadata.ts index c4d965a..0731082 100644 --- a/js/packages/common/src/actions/metadata.ts +++ b/js/packages/common/src/actions/metadata.ts @@ -432,6 +432,7 @@ export const METADATA_SCHEMA = new Map([ ], ]); +// eslint-disable-next-line no-control-regex const METADATA_REPLACE = new RegExp('\u0000', 'g'); export const decodeMetadata = (buffer: Buffer): Metadata => { diff --git a/js/packages/common/src/contracts/token.ts b/js/packages/common/src/contracts/token.ts index a09d52e..581a368 100644 --- a/js/packages/common/src/contracts/token.ts +++ b/js/packages/common/src/contracts/token.ts @@ -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', }; diff --git a/js/packages/common/src/models/account.ts b/js/packages/common/src/models/account.ts index 8e39274..f2590d0 100644 --- a/js/packages/common/src/models/account.ts +++ b/js/packages/common/src/models/account.ts @@ -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( diff --git a/js/packages/common/src/utils/ids.ts b/js/packages/common/src/utils/ids.ts index 8b36516..6816fff 100644 --- a/js/packages/common/src/utils/ids.ts +++ b/js/packages/common/src/utils/ids.ts @@ -1,4 +1,4 @@ -import { PublicKey, AccountInfo, Account } from '@solana/web3.js'; +import { PublicKey, AccountInfo } from '@solana/web3.js'; export type StringPublicKey = string; diff --git a/js/packages/common/src/utils/shortvec.ts b/js/packages/common/src/utils/shortvec.ts index 0acc0fc..077966e 100644 --- a/js/packages/common/src/utils/shortvec.ts +++ b/js/packages/common/src/utils/shortvec.ts @@ -2,7 +2,7 @@ export function decodeLength(bytes: Array): 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; diff --git a/js/packages/common/src/utils/strings.ts b/js/packages/common/src/utils/strings.ts index 28a7356..c0272a4 100644 --- a/js/packages/common/src/utils/strings.ts +++ b/js/packages/common/src/utils/strings.ts @@ -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); diff --git a/js/packages/common/src/utils/utils.ts b/js/packages/common/src/utils/utils.ts index 2a4e308..9fa7b30 100644 --- a/js/packages/common/src/utils/utils.ts +++ b/js/packages/common/src/utils/utils.ts @@ -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; } diff --git a/js/packages/web/package.json b/js/packages/web/package.json index 79117d9..9276dad 100644 --- a/js/packages/web/package.json +++ b/js/packages/web/package.json @@ -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%", diff --git a/js/packages/web/src/actions/addTokensToVault.ts b/js/packages/web/src/actions/addTokensToVault.ts index bcfb6c1..73162fb 100644 --- a/js/packages/web/src/actions/addTokensToVault.ts +++ b/js/packages/web/src/actions/addTokensToVault.ts @@ -62,14 +62,14 @@ export async function addTokensToVault( let batchCounter = 0; - let signers: Array = []; - let instructions: Array = []; - let newStores: StringPublicKey[] = []; + const signers: Array = []; + const instructions: Array = []; + 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, diff --git a/js/packages/web/src/actions/cancelBid.ts b/js/packages/web/src/actions/cancelBid.ts index 4f86ffd..20ab562 100644 --- a/js/packages/web/src/actions/cancelBid.ts +++ b/js/packages/web/src/actions/cancelBid.ts @@ -33,8 +33,8 @@ export async function sendCancelBid( ) { if (!wallet.publicKey) throw new WalletNotConnectedError(); - let signers: Array = []; - let instructions: Array = []; + const signers: Array = []; + const instructions: Array = []; 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) { diff --git a/js/packages/web/src/actions/claimUnusedPrizes.ts b/js/packages/web/src/actions/claimUnusedPrizes.ts index 4a0bb8c..0f74ebf 100644 --- a/js/packages/web/src/actions/claimUnusedPrizes.ts +++ b/js/packages/web/src/actions/claimUnusedPrizes.ts @@ -6,7 +6,6 @@ import { SafetyDepositBox, deprecatedGetReservationList, MasterEditionV1, - MasterEditionV2, findProgramAddress, programIds, createAssociatedTokenAccountInstruction, @@ -144,7 +143,7 @@ export async function claimUnusedPrizes( } } - let printingV2ByMint: Record = {}; + const printingV2ByMint: Record = {}; 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); diff --git a/js/packages/web/src/actions/closePersonalEscrow.ts b/js/packages/web/src/actions/closePersonalEscrow.ts index 6becdb4..f4e3b6b 100644 --- a/js/packages/web/src/actions/closePersonalEscrow.ts +++ b/js/packages/web/src/actions/closePersonalEscrow.ts @@ -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), diff --git a/js/packages/web/src/actions/closeVault.ts b/js/packages/web/src/actions/closeVault.ts index ed9fcc4..eb5ac8e 100644 --- a/js/packages/web/src/actions/closeVault.ts +++ b/js/packages/web/src/actions/closeVault.ts @@ -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. diff --git a/js/packages/web/src/actions/convertMasterEditions.ts b/js/packages/web/src/actions/convertMasterEditions.ts index 42627fc..004aeca 100644 --- a/js/packages/web/src/actions/convertMasterEditions.ts +++ b/js/packages/web/src/actions/convertMasterEditions.ts @@ -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> = []; - let instructions: Array> = []; + const signers: Array> = []; + const instructions: Array> = []; let currSignerBatch: Array = []; let currInstrBatch: Array = []; diff --git a/js/packages/web/src/actions/createAuctionManager.ts b/js/packages/web/src/actions/createAuctionManager.ts index b40fb6f..910aa87 100644 --- a/js/packages/web/src/actions/createAuctionManager.ts +++ b/js/packages/web/src/actions/createAuctionManager.ts @@ -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 { 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( [ diff --git a/js/packages/web/src/actions/createExternalPriceAccount.ts b/js/packages/web/src/actions/createExternalPriceAccount.ts index 88a91f8..7dc1e01 100644 --- a/js/packages/web/src/actions/createExternalPriceAccount.ts +++ b/js/packages/web/src/actions/createExternalPriceAccount.ts @@ -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, diff --git a/js/packages/web/src/actions/createVault.ts b/js/packages/web/src/actions/createVault.ts index 8dac705..0ba20f5 100644 --- a/js/packages/web/src/actions/createVault.ts +++ b/js/packages/web/src/actions/createVault.ts @@ -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( diff --git a/js/packages/web/src/actions/decommAuctionManagerAndReturnPrizes.ts b/js/packages/web/src/actions/decommAuctionManagerAndReturnPrizes.ts index 3452dda..084b7ca 100644 --- a/js/packages/web/src/actions/decommAuctionManagerAndReturnPrizes.ts +++ b/js/packages/web/src/actions/decommAuctionManagerAndReturnPrizes.ts @@ -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 = []; - let instructions: Array = []; + const signers: Array = []; + const instructions: Array = []; 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( diff --git a/js/packages/web/src/actions/deprecatedCreateReservationListsForTokens.ts b/js/packages/web/src/actions/deprecatedCreateReservationListsForTokens.ts index ee58303..63372f5 100644 --- a/js/packages/web/src/actions/deprecatedCreateReservationListsForTokens.ts +++ b/js/packages/web/src/actions/deprecatedCreateReservationListsForTokens.ts @@ -23,8 +23,8 @@ export async function deprecatedCreateReservationListForTokens( let batchCounter = 0; - let signers: Array = []; - let instructions: Array = []; + const signers: Array = []; + const instructions: Array = []; let currSigners: Keypair[] = []; let currInstructions: TransactionInstruction[] = []; diff --git a/js/packages/web/src/actions/deprecatedPopulatePrintingTokens.ts b/js/packages/web/src/actions/deprecatedPopulatePrintingTokens.ts index bb1e5c2..d546049 100644 --- a/js/packages/web/src/actions/deprecatedPopulatePrintingTokens.ts +++ b/js/packages/web/src/actions/deprecatedPopulatePrintingTokens.ts @@ -32,13 +32,13 @@ export async function deprecatedPopulatePrintingTokens( let batchCounter = 0; - let signers: Array = []; - let instructions: Array = []; + const signers: Array = []; + const instructions: Array = []; 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; } diff --git a/js/packages/web/src/actions/makeAuction.ts b/js/packages/web/src/actions/makeAuction.ts index a9fd05a..1e71385 100644 --- a/js/packages/web/src/actions/makeAuction.ts +++ b/js/packages/web/src/actions/makeAuction.ts @@ -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( [ diff --git a/js/packages/web/src/actions/markItemsThatArentMineAsSold.ts b/js/packages/web/src/actions/markItemsThatArentMineAsSold.ts index f425927..4201a70 100644 --- a/js/packages/web/src/actions/markItemsThatArentMineAsSold.ts +++ b/js/packages/web/src/actions/markItemsThatArentMineAsSold.ts @@ -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 = []; - let instructions: Array = []; + const signers: Array = []; + const instructions: Array = []; let markSigners: Keypair[] = []; let markInstructions: TransactionInstruction[] = []; diff --git a/js/packages/web/src/actions/saveAdmin.ts b/js/packages/web/src/actions/saveAdmin.ts index c5c1731..95cf681 100644 --- a/js/packages/web/src/actions/saveAdmin.ts +++ b/js/packages/web/src/actions/saveAdmin.ts @@ -20,11 +20,11 @@ export async function saveAdmin( ) { if (!wallet.publicKey) throw new WalletNotConnectedError(); - let signers: Array = []; - let instructions: Array = []; + const signers: Array = []; + const instructions: Array = []; - 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, diff --git a/js/packages/web/src/actions/sendPlaceBid.ts b/js/packages/web/src/actions/sendPlaceBid.ts index 5145827..e2d6028 100644 --- a/js/packages/web/src/actions/sendPlaceBid.ts +++ b/js/packages/web/src/actions/sendPlaceBid.ts @@ -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; - 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, diff --git a/js/packages/web/src/actions/sendRedeemBid.ts b/js/packages/web/src/actions/sendRedeemBid.ts index b7c2a8b..d2ccd93 100644 --- a/js/packages/web/src/actions/sendRedeemBid.ts +++ b/js/packages/web/src/actions/sendRedeemBid.ts @@ -94,8 +94,8 @@ export async function sendRedeemBid( ) { if (!wallet.publicKey) throw new WalletNotConnectedError(); - let signers: Array = []; - let instructions: Array = []; + const signers: Array = []; + const instructions: Array = []; 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; // 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; diff --git a/js/packages/web/src/actions/sendSignMetadata.ts b/js/packages/web/src/actions/sendSignMetadata.ts index 09ff7e5..8f0b15c 100644 --- a/js/packages/web/src/actions/sendSignMetadata.ts +++ b/js/packages/web/src/actions/sendSignMetadata.ts @@ -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); diff --git a/js/packages/web/src/actions/setVaultAndAuctionAuthorities.ts b/js/packages/web/src/actions/setVaultAndAuctionAuthorities.ts index b50ef20..4dfc201 100644 --- a/js/packages/web/src/actions/setVaultAndAuctionAuthorities.ts +++ b/js/packages/web/src/actions/setVaultAndAuctionAuthorities.ts @@ -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, diff --git a/js/packages/web/src/actions/settle.ts b/js/packages/web/src/actions/settle.ts index 03e764a..b165d5b 100644 --- a/js/packages/web/src/actions/settle.ts +++ b/js/packages/web/src/actions/settle.ts @@ -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> = []; - let instructions: Array> = []; + const signers: Array> = []; + const instructions: Array> = []; let currSignerBatch: Array = []; let currInstrBatch: Array = []; let settleSigners: Keypair[] = []; let settleInstructions: TransactionInstruction[] = []; - let ataLookup: Record = {}; + const ataLookup: Record = {}; // 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[], ) { - let signers: Array> = []; - let instructions: Array> = []; + const signers: Array> = []; + const instructions: Array> = []; let currSignerBatch: Array = []; let currInstrBatch: Array = []; diff --git a/js/packages/web/src/actions/startAuctionManually.ts b/js/packages/web/src/actions/startAuctionManually.ts index d957ad7..ac59450 100644 --- a/js/packages/web/src/actions/startAuctionManually.ts +++ b/js/packages/web/src/actions/startAuctionManually.ts @@ -10,7 +10,7 @@ export async function startAuctionManually( ) { try { const signers: Keypair[] = []; - let instructions: TransactionInstruction[] = []; + const instructions: TransactionInstruction[] = []; await startAuction( auctionView.vault.pubkey, diff --git a/js/packages/web/src/actions/unwindVault.ts b/js/packages/web/src/actions/unwindVault.ts index 8111830..a05913e 100644 --- a/js/packages/web/src/actions/unwindVault.ts +++ b/js/packages/web/src/actions/unwindVault.ts @@ -34,8 +34,8 @@ export async function unwindVault( let batchCounter = 0; const PROGRAM_IDS = programIds(); - let signers: Array = []; - let instructions: Array = []; + const signers: Array = []; + const instructions: Array = []; 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[] = []; + const boxes: ParsedAccount[] = []; 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( [ diff --git a/js/packages/web/src/components/MeshViewer/index.tsx b/js/packages/web/src/components/MeshViewer/index.tsx index 1f39fb6..b34fd54 100644 --- a/js/packages/web/src/components/MeshViewer/index.tsx +++ b/js/packages/web/src/components/MeshViewer/index.tsx @@ -12,12 +12,19 @@ export function MeshViewer(props: MeshViewerProps) { return ( // @ts-ignore - ) + ); } diff --git a/js/packages/web/src/contexts/meta/loadAccounts.ts b/js/packages/web/src/contexts/meta/loadAccounts.ts index f153e18..f3551ab 100644 --- a/js/packages/web/src/contexts/meta/loadAccounts.ts +++ b/js/packages/web/src/contexts/meta/loadAccounts.ts @@ -34,14 +34,14 @@ async function getProgramAccounts( ): Promise> { 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), ), diff --git a/js/packages/web/src/contexts/meta/types.ts b/js/packages/web/src/contexts/meta/types.ts index 368cb68..a4f9b25 100644 --- a/js/packages/web/src/contexts/meta/types.ts +++ b/js/packages/web/src/contexts/meta/types.ts @@ -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, diff --git a/js/packages/web/src/hooks/useArt.ts b/js/packages/web/src/hooks/useArt.ts index ea3d065..d676382 100644 --- a/js/packages/web/src/hooks/useArt.ts +++ b/js/packages/web/src/hooks/useArt.ts @@ -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 { diff --git a/js/packages/web/src/hooks/useAuctions.ts b/js/packages/web/src/hooks/useAuctions.ts index 97859f0..299ebf1 100644 --- a/js/packages/web/src/hooks/useAuctions.ts +++ b/js/packages/web/src/hooks/useAuctions.ts @@ -288,13 +288,13 @@ export function processAccountsIntoAuctionView( const vault = vaults[auctionManagerInstance.info.vault]; const auctionManagerKey = auctionManagerInstance.pubkey; - let safetyDepositConfigs: ParsedAccount[] = + const safetyDepositConfigs: ParsedAccount[] = buildListWhileNonZero( safetyDepositConfigsByAuctionManagerAndIndex, auctionManagerKey, ); - let bidRedemptions: ParsedAccount[] = + const bidRedemptions: ParsedAccount[] = buildListWhileNonZero( bidRedemptionV2sByAuctionManagerAndWinningIndex, auctionManagerKey, @@ -309,7 +309,7 @@ export function processAccountsIntoAuctionView( const boxesExpected = auctionManager.safetyDepositBoxesExpected.toNumber(); - let bidRedemption: ParsedAccount | undefined = + const bidRedemption: ParsedAccount | 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[] = buildListWhileNonZero( + const boxes: ParsedAccount[] = buildListWhileNonZero( safetyDepositBoxesByVaultAndIndex, vaultKey, ); @@ -394,7 +395,7 @@ export function processAccountsIntoAuctionView( } } - let view: Partial = { + const view: Partial = { auction, auctionManager, state, diff --git a/js/packages/web/src/hooks/useBidsForAuction.ts b/js/packages/web/src/hooks/useBidsForAuction.ts index a70e2d4..bc78216 100644 --- a/js/packages/web/src/hooks/useBidsForAuction.ts +++ b/js/packages/web/src/hooks/useBidsForAuction.ts @@ -1,4 +1,4 @@ -import React, { useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import { BidderMetadata, BidderMetadataParser, diff --git a/js/packages/web/src/hooks/useUserArts.ts b/js/packages/web/src/hooks/useUserArts.ts index 6bdcb03..58593cc 100644 --- a/js/packages/web/src/hooks/useUserArts.ts +++ b/js/packages/web/src/hooks/useUserArts.ts @@ -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) { diff --git a/js/packages/web/src/models/metaplex/deprecatedStates.ts b/js/packages/web/src/models/metaplex/deprecatedStates.ts index 530f7c3..37041ba 100644 --- a/js/packages/web/src/models/metaplex/deprecatedStates.ts +++ b/js/packages/web/src/models/metaplex/deprecatedStates.ts @@ -156,7 +156,7 @@ export class BidRedemptionTicketV1 implements BidRedemptionTicket { Object.assign(this, args); } - getBidRedeemed(order: number): boolean { + getBidRedeemed(): boolean { return this.participationRedeemed; } } diff --git a/js/packages/web/src/models/metaplex/index.ts b/js/packages/web/src/models/metaplex/index.ts index 7057138..bfb62a2 100644 --- a/js/packages/web/src/models/metaplex/index.ts +++ b/js/packages/web/src/models/metaplex/index.ts @@ -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; } diff --git a/js/packages/web/src/pages/index.tsx b/js/packages/web/src/pages/index.tsx index e21bed2..0341c66 100644 --- a/js/packages/web/src/pages/index.tsx +++ b/js/packages/web/src/pages/index.tsx @@ -1,4 +1,3 @@ -import { useState, useEffect } from 'react'; import dynamic from 'next/dynamic'; const CreateReactAppEntryPoint = dynamic(() => import('../App'), { diff --git a/js/packages/web/src/utils/assets.ts b/js/packages/web/src/utils/assets.ts index bfc76e5..6d191f0 100644 --- a/js/packages/web/src/utils/assets.ts +++ b/js/packages/web/src/utils/assets.ts @@ -1,8 +1,3 @@ -import { - getTokenName, - getVerboseTokenName, - KnownTokenMap, -} from '@oyster/common'; import { TokenInfo } from '@solana/spl-token-registry'; export const LAMPORT_MULTIPLIER = 10 ** 9; diff --git a/js/packages/web/src/views/admin/index.tsx b/js/packages/web/src/views/admin/index.tsx index 99d5724..5cd136b 100644 --- a/js/packages/web/src/views/admin/index.tsx +++ b/js/packages/web/src/views/admin/index.tsx @@ -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'; diff --git a/js/packages/web/src/views/auction/index.tsx b/js/packages/web/src/views/auction/index.tsx index 69e152e..c4f6310 100644 --- a/js/packages/web/src/views/auction/index.tsx +++ b/js/packages/web/src/views/auction/index.tsx @@ -159,22 +159,20 @@ export const AuctionView = () => { No description provided. ))} - - {attributes && + {attributes && ( <>
Attributes
- - {attributes.map(attribute => + + {attributes.map(attribute => ( {attribute.value} - )} + ))} - } + + )} {/* {auctionData[id] && ( <>
About this Auction
diff --git a/js/packages/web/src/views/home/auctionList.tsx b/js/packages/web/src/views/home/auctionList.tsx index 5e4f947..49f9cda 100644 --- a/js/packages/web/src/views/home/auctionList.tsx +++ b/js/packages/web/src/views/home/auctionList.tsx @@ -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: diff --git a/js/packages/web/src/views/home/setup.tsx b/js/packages/web/src/views/home/setup.tsx index 6ff889b..358a38d 100644 --- a/js/packages/web/src/views/home/setup.tsx +++ b/js/packages/web/src/views/home/setup.tsx @@ -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'; diff --git a/js/yarn.lock b/js/yarn.lock index fbf1d7a..464a33f 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -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" From b3e2808e7a2dcb206b8ab3ac5a0d06463873f79a Mon Sep 17 00:00:00 2001 From: Efremov Alexey Date: Mon, 30 Aug 2021 18:01:47 +0300 Subject: [PATCH 2/9] Add: github action for linting --- .github/workflows/lint.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/workflows/lint.yml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..5d7b701 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,13 @@ +name: Lint + +on: [push] + +jobs: + eslint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: stefanoeb/eslint-action@1.0.2 + working-directory: ./js + with: + files: js/packages From ba7bd508dca80e28126b76b5b9648eafe8237ece Mon Sep 17 00:00:00 2001 From: Efremov Alexey Date: Mon, 30 Aug 2021 18:25:36 +0300 Subject: [PATCH 3/9] Add: github action for linting --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 5d7b701..f16bacf 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -8,6 +8,6 @@ jobs: steps: - uses: actions/checkout@v1 - uses: stefanoeb/eslint-action@1.0.2 - working-directory: ./js with: + working-directory: ./js files: js/packages From 91b613dbc7cc102bd900c3f31f47dbcc1bef7f29 Mon Sep 17 00:00:00 2001 From: Efremov Alexey Date: Mon, 30 Aug 2021 18:26:35 +0300 Subject: [PATCH 4/9] Add: github action for linting --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index f16bacf..15a51a0 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -9,5 +9,5 @@ jobs: - uses: actions/checkout@v1 - uses: stefanoeb/eslint-action@1.0.2 with: - working-directory: ./js + entryPoint: ./js files: js/packages From 908ece91b6a7184e8d8782be1ccaca3587f8d0d8 Mon Sep 17 00:00:00 2001 From: Efremov Alexey Date: Mon, 30 Aug 2021 18:32:45 +0300 Subject: [PATCH 5/9] Add: github action for linting --- .github/workflows/lint.yml | 11 +++++++---- js/package.json | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 15a51a0..e04e7f6 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -7,7 +7,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - - uses: stefanoeb/eslint-action@1.0.2 - with: - entryPoint: ./js - files: js/packages + - name: Install modules + run: yarn + working-directory: ./js + - name: Run ESLint + run: yarn lint:eslint + working-directory: ./js + diff --git a/js/package.json b/js/package.json index e365023..fe6581b 100644 --- a/js/package.json +++ b/js/package.json @@ -14,7 +14,8 @@ "bootstrap": "lerna link && lerna bootstrap", "build": "lerna run build", "start": "cross-env CI=true lerna run start --scope @oyster/common --stream --parallel --scope web", - "lint": "eslint 'packages/*/{src,test}/**/*.ts' && prettier -c 'packages/*/{src,test}/**/*.ts'", + "lint": "npm run lint:eslint && prettier -c 'packages/*/{src,test}/**/*.ts'", + "lint:eslint": "eslint 'packages/*/{src,test}/**/*.ts'", "lint:fix": "eslint --fix 'packages/*/{src,test}/**/*.ts' && prettier --write 'packages/*/{src,test}/**/*.{ts,tsx}'", "format:fix": "lerna run format:fix", "deploy": "run-s deploy:docs build deploy:apps && gh-pages -d docs", From 137ff3baf7451efa6e320483c290e693eb4cd803 Mon Sep 17 00:00:00 2001 From: Efremov Alexey Date: Tue, 31 Aug 2021 16:27:23 +0300 Subject: [PATCH 6/9] Update .github/workflows/lint.yml Co-authored-by: Sergey Ponomarev --- .github/workflows/lint.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e04e7f6..fbf5077 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,6 +1,9 @@ name: Lint -on: [push] +on: + pull_request: + push: + branches: [master] jobs: eslint: From baa8d36117b2705e0ad3bf5b50c412bc16921ad7 Mon Sep 17 00:00:00 2001 From: Efremov Alexey Date: Tue, 31 Aug 2021 16:35:04 +0300 Subject: [PATCH 7/9] Turn on lint for PR and master --- .github/workflows/lint.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index fbf5077..713e8c9 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -10,10 +10,16 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 + + - uses: actions/cache@v2 + with: + path: '**/node_modules' + key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} + - name: Install modules - run: yarn + run: yarn install working-directory: ./js + - name: Run ESLint run: yarn lint:eslint working-directory: ./js - From 542d2a7b0fce29701033891100fd6656e8ea731d Mon Sep 17 00:00:00 2001 From: Efremov Alexey Date: Tue, 31 Aug 2021 16:45:37 +0300 Subject: [PATCH 8/9] change working dirs paths --- .github/workflows/lint.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 713e8c9..bc0299a 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -18,8 +18,8 @@ jobs: - name: Install modules run: yarn install - working-directory: ./js + working-directory: js - name: Run ESLint run: yarn lint:eslint - working-directory: ./js + working-directory: js From c0bba430b865d28fac1cec6a8ea0c5cb2ad8970e Mon Sep 17 00:00:00 2001 From: Efremov Alexey Date: Mon, 6 Sep 2021 13:34:03 +0300 Subject: [PATCH 9/9] update --- js/package.json | 4 +- js/packages/cli/src/cli.ts | 38 +++++++++---------- js/packages/cli/src/helper.ts | 7 +++- .../web/src/actions/mintEditionsIntoWallet.ts | 4 +- 4 files changed, 27 insertions(+), 26 deletions(-) diff --git a/js/package.json b/js/package.json index fe6581b..b8eba9a 100644 --- a/js/package.json +++ b/js/package.json @@ -14,9 +14,9 @@ "bootstrap": "lerna link && lerna bootstrap", "build": "lerna run build", "start": "cross-env CI=true lerna run start --scope @oyster/common --stream --parallel --scope web", - "lint": "npm run lint:eslint && prettier -c 'packages/*/{src,test}/**/*.ts'", + "lint": "prettier -c 'packages/*/{src,test}/**/*.ts' && npm run lint:eslint", "lint:eslint": "eslint 'packages/*/{src,test}/**/*.ts'", - "lint:fix": "eslint --fix 'packages/*/{src,test}/**/*.ts' && prettier --write 'packages/*/{src,test}/**/*.{ts,tsx}'", + "lint:fix": "prettier --write 'packages/*/{src,test}/**/*.{ts,tsx}' && eslint --fix 'packages/*/{src,test}/**/*.ts'", "format:fix": "lerna run format:fix", "deploy": "run-s deploy:docs build deploy:apps && gh-pages -d docs", "deploy:docs": "lerna run docs", diff --git a/js/packages/cli/src/cli.ts b/js/packages/cli/src/cli.ts index eea3372..8b983da 100755 --- a/js/packages/cli/src/cli.ts +++ b/js/packages/cli/src/cli.ts @@ -1,6 +1,5 @@ #!/usr/bin/env node import * as fs from 'fs'; -import Arweave from 'arweave'; import * as path from 'path'; import fetch from 'node-fetch'; import FormData from 'form-data'; @@ -17,7 +16,6 @@ import { SYSVAR_RENT_PUBKEY, TransactionInstruction, } from '@solana/web3.js'; -import { token } from '@project-serum/anchor/dist/utils'; const CACHE_PATH = './.cache'; const PAYMENT_WALLET = new anchor.web3.PublicKey( @@ -132,12 +130,12 @@ const getCandyMachine = async (config: anchor.web3.PublicKey, uuid: string) => { ); }; -const getConfig = async (authority: anchor.web3.PublicKey, uuid: string) => { - return await anchor.web3.PublicKey.findProgramAddress( - [Buffer.from(CANDY_MACHINE), authority.toBuffer(), Buffer.from(uuid)], - programId, - ); -}; +// const getConfig = async (authority: anchor.web3.PublicKey, uuid: string) => { +// return await anchor.web3.PublicKey.findProgramAddress( +// [Buffer.from(CANDY_MACHINE), authority.toBuffer(), Buffer.from(uuid)], +// programId, +// ); +// }; const getMetadata = async ( mint: anchor.web3.PublicKey, @@ -252,7 +250,7 @@ program .option('-c, --cache-name ', 'Cache file name') .action(async (files: string[], options, cmd) => { const extension = '.png'; - const { startWith, keypair } = cmd.opts(); + const { keypair } = cmd.opts(); const cacheName = program.getOptionValue('cacheName') || 'temp'; const cachePath = path.join(CACHE_PATH, cacheName); const savedContent = fs.existsSync(cachePath) @@ -317,7 +315,7 @@ program ? new anchor.web3.PublicKey(cacheContent.program.config) : undefined; - const block = await solConnection.getRecentBlockhash(); + await solConnection.getRecentBlockhash(); for (let i = 0; i < SIZE; i++) { const image = images[i]; const imageName = path.basename(image); @@ -329,7 +327,7 @@ program let link = cacheContent?.items?.[index]?.link; if (!link || !cacheContent.program.uuid) { - const imageBuffer = Buffer.from(fs.readFileSync(image)); + //const imageBuffer = Buffer.from(fs.readFileSync(image)); const manifestPath = image.replace(extension, '.json'); const manifestContent = fs .readFileSync(manifestPath) @@ -339,7 +337,7 @@ program const manifest = JSON.parse(manifestContent); const manifestBuffer = Buffer.from(JSON.stringify(manifest)); - const sizeInBytes = imageBuffer.length + manifestBuffer.length; + // const sizeInBytes = imageBuffer.length + manifestBuffer.length; if (i === 0 && !cacheContent.program.uuid) { // initialize config @@ -374,7 +372,7 @@ program } if (!link) { - let instructions = [ + const instructions = [ anchor.web3.SystemProgram.transfer({ fromPubkey: walletKey.publicKey, toPubkey: PAYMENT_WALLET, @@ -457,7 +455,7 @@ program '-', keys[indexes[indexes.length - 1]], ); - const txId = await anchorProgram.rpc.addConfigLines( + await anchorProgram.rpc.addConfigLines( ind, indexes.map(i => ({ uri: cacheContent.items[keys[i]].link, @@ -526,7 +524,7 @@ program }); const idl = await anchor.Program.fetchIdl(programId, provider); const anchorProgram = new anchor.Program(idl, programId, provider); - const [candyMachine, _] = await getCandyMachine( + const [candyMachine] = await getCandyMachine( new anchor.web3.PublicKey(cachedContent.program.config), cachedContent.program.uuid, ); @@ -579,7 +577,7 @@ program config, cachedContent.program.uuid, ); - const tx = await anchorProgram.rpc.initializeCandyMachine( + await anchorProgram.rpc.initializeCandyMachine( bump, { uuid: cachedContent.program.uuid, @@ -614,8 +612,8 @@ program ); const { keypair } = cmd.opts(); - const solPriceStr = program.getOptionValue('price') || '1'; - const lamports = parseInt(solPriceStr) * LAMPORTS_PER_SOL; + // const solPriceStr = program.getOptionValue('price') || '1'; + //const lamports = parseInt(solPriceStr) * LAMPORTS_PER_SOL; const cacheName = program.getOptionValue('cacheName') || 'temp'; const cachePath = path.join(CACHE_PATH, cacheName); @@ -635,7 +633,7 @@ program const idl = await anchor.Program.fetchIdl(programId, provider); const anchorProgram = new anchor.Program(idl, programId, provider); const config = new anchor.web3.PublicKey(cachedContent.program.config); - const [candyMachine, bump] = await getCandyMachine( + const [candyMachine] = await getCandyMachine( config, cachedContent.program.uuid, ); @@ -700,7 +698,7 @@ program program .command('verify') .option('-c, --cache-name ', 'Cache file name') - .action(async (directory, second, options) => { + .action(async () => { const solConnection = new anchor.web3.Connection( `https://api.${ENV}.solana.com/`, ); diff --git a/js/packages/cli/src/helper.ts b/js/packages/cli/src/helper.ts index f4d419d..2dae00f 100644 --- a/js/packages/cli/src/helper.ts +++ b/js/packages/cli/src/helper.ts @@ -35,7 +35,7 @@ export const sendTransactionWithRetryWithKeypair = async ( block?: BlockhashAndFeeCalculator, beforeSend?: () => void, ) => { - let transaction = new Transaction(); + const transaction = new Transaction(); instructions.forEach(instruction => transaction.add(instruction)); transaction.recentBlockhash = ( block || (await connection.getRecentBlockhash(commitment)) @@ -135,7 +135,9 @@ export async function sendSignedTransaction({ simulateResult = ( await simulateTransaction(connection, signedTransaction, 'single') ).value; - } catch (e) {} + } catch (e) { + console.error('Simulate Transaction error', e); + } if (simulateResult && simulateResult.err) { if (simulateResult.logs) { for (let i = simulateResult.logs.length - 1; i >= 0; --i) { @@ -198,6 +200,7 @@ async function awaitTransactionSignatureConfirmation( err: null, }; let subId = 0; + // eslint-disable-next-line no-async-promise-executor status = await new Promise(async (resolve, reject) => { setTimeout(() => { if (done) { diff --git a/js/packages/web/src/actions/mintEditionsIntoWallet.ts b/js/packages/web/src/actions/mintEditionsIntoWallet.ts index 29e1fbe..67a4f56 100644 --- a/js/packages/web/src/actions/mintEditionsIntoWallet.ts +++ b/js/packages/web/src/actions/mintEditionsIntoWallet.ts @@ -24,8 +24,8 @@ export async function mintEditionsToWallet( editions: number = 1, mintDestination: StringPublicKey, ) { - let signers: Array> = []; - let instructions: Array> = []; + const signers: Array> = []; + const instructions: Array> = []; let currSignerBatch: Array = []; let currInstrBatch: Array = [];