diff --git a/build-sdk.sh b/build-sdk.sh index 8b9d19c226..10a064301f 100755 --- a/build-sdk.sh +++ b/build-sdk.sh @@ -20,3 +20,8 @@ pushd mock-app-verifier rm -rf node_modules yarn popd + +pushd relayer +rm -rf node_modules +yarn +popd diff --git a/build.sh b/build.sh index 484ae480d2..77b4312c06 100755 --- a/build.sh +++ b/build.sh @@ -15,3 +15,8 @@ popd pushd light-circuits yarn install popd + +pushd relayer +yarn install +yarn run build +popd diff --git a/light-sdk-ts/src/errors.ts b/light-sdk-ts/src/errors.ts index 1ac04ec494..c8184090a9 100644 --- a/light-sdk-ts/src/errors.ts +++ b/light-sdk-ts/src/errors.ts @@ -71,13 +71,13 @@ export enum ProviderErrorCode { SOL_MERKLE_TREE_UNDEFINED = "SOL_MERKLE_TREE_UNDEFINED", ANCHOR_PROVIDER_UNDEFINED = "ANCHOR_PROVIDER_UNDEFINED", PROVIDER_UNDEFINED = "PROVIDER_UNDEFINED", - NODE_WALLET_AND_BROWSER_WALLET_UNDEFINED = "NODE_WALLET_AND_BROWSER_WALLET_UNDEFINED", + WALLET_UNDEFINED = "WALLET_UNDEFINED", NODE_WALLET_UNDEFINED = "NODE_WALLET_UNDEFINED", URL_UNDEFINED = "URL_UNDEFINED", CONNECTION_UNDEFINED = "CONNECTION_UNDEFINED", CONNECTION_DEFINED = "CONNECTION_DEFINED", KEYPAIR_UNDEFINED = "KEYPAIR_UNDEFINED", - NODE_WALLET_AND_BROWSER_WALLET_DEFINED = "NODE_WALLET_AND_BROWSER_WALLET_DEFINED", + WALLET_DEFINED = "WALLET_DEFINED", MERKLE_TREE_NOT_INITIALIZED = "MERKLE_TREE_NOT_INITIALIZED", } diff --git a/light-sdk-ts/src/merkleTree/solMerkleTree.ts b/light-sdk-ts/src/merkleTree/solMerkleTree.ts index a71365535b..bd004386f5 100644 --- a/light-sdk-ts/src/merkleTree/solMerkleTree.ts +++ b/light-sdk-ts/src/merkleTree/solMerkleTree.ts @@ -67,15 +67,12 @@ export class SolMerkleTree { const mtFetched = await merkleTreeProgram.account.merkleTree.fetch( merkleTreePubkey, + "confirmed", ); const merkleTreeIndex = mtFetched.nextIndex; - // console.log( - // "getCompressedLeaves merkleTreeIndex", - // merkleTreeIndex.toNumber(), - // ); + merkleTreeProgram.account.twoLeavesBytesPda.all(); - // merkleTreeProgram.account.twoLeavesBytesPda let leavesAccounts: Array<{ account: QueuedLeavesPda; diff --git a/light-sdk-ts/src/test-utils/createAccounts.ts b/light-sdk-ts/src/test-utils/createAccounts.ts index a6a4644c2e..88b2a17150 100644 --- a/light-sdk-ts/src/test-utils/createAccounts.ts +++ b/light-sdk-ts/src/test-utils/createAccounts.ts @@ -288,8 +288,8 @@ export async function createTestAccounts( ); } - let balanceUserToken = null; - let userSplAccount = null; + let balanceUserToken: null | any = null; + let userSplAccount: PublicKey | null = null; try { let tokenCtx = TOKEN_REGISTRY.find((t) => t.symbol === "USDC"); if (userTokenAccount) { diff --git a/light-sdk-ts/src/test-utils/functionalCircuit.ts b/light-sdk-ts/src/test-utils/functionalCircuit.ts index 7ca8713453..f709821c33 100644 --- a/light-sdk-ts/src/test-utils/functionalCircuit.ts +++ b/light-sdk-ts/src/test-utils/functionalCircuit.ts @@ -40,7 +40,7 @@ export async function functionalCircuitTest( outputUtxos: [deposit_utxo1], merkleTreePubkey: mockPubkey, sender: mockPubkey, - senderFee: lightProvider.nodeWallet!.publicKey, + senderFee: lightProvider.wallet!.publicKey, verifier: verifier, lookUpTable: mockPubkey, action: Action.SHIELD, diff --git a/light-sdk-ts/src/test-utils/initLookUpTable.ts b/light-sdk-ts/src/test-utils/initLookUpTable.ts index 0997ea25e7..0cfbdecd95 100644 --- a/light-sdk-ts/src/test-utils/initLookUpTable.ts +++ b/light-sdk-ts/src/test-utils/initLookUpTable.ts @@ -6,6 +6,7 @@ import { SystemProgram, sendAndConfirmTransaction, Transaction, + AccountInfo, } from "@solana/web3.js"; import * as anchor from "@coral-xyz/anchor"; import { TOKEN_PROGRAM_ID } from "@solana/spl-token"; @@ -80,7 +81,7 @@ export async function initLookUpTable( recentSlot: number, extraAccounts?: Array, ): Promise { - var lookUpTableInfoInit = null; + var lookUpTableInfoInit: AccountInfo | null = null; if (lookupTableAddress != undefined) { lookUpTableInfoInit = await provider.connection.getAccountInfo( lookupTableAddress, diff --git a/light-sdk-ts/src/test-utils/testChecks.ts b/light-sdk-ts/src/test-utils/testChecks.ts index 446bd91f0c..084e850ab4 100644 --- a/light-sdk-ts/src/test-utils/testChecks.ts +++ b/light-sdk-ts/src/test-utils/testChecks.ts @@ -126,6 +126,7 @@ export async function checkMerkleTreeBatchUpdateSuccess({ }) { var merkleTreeTmpStateAccount = await connection.getAccountInfo( merkleTreeUpdateState, + "confirmed", ); assert.equal( @@ -136,6 +137,7 @@ export async function checkMerkleTreeBatchUpdateSuccess({ var merkleTreeAccount = await merkleTreeProgram.account.merkleTree.fetch( merkle_tree_pubkey, + "confirmed", ); // Merkle tree is locked by merkleTreeUpdateState assert.equal( diff --git a/light-sdk-ts/src/transaction.ts b/light-sdk-ts/src/transaction.ts index 0c40832fc5..167aae7440 100644 --- a/light-sdk-ts/src/transaction.ts +++ b/light-sdk-ts/src/transaction.ts @@ -7,6 +7,7 @@ import { VersionedTransaction, TransactionSignature, TransactionInstruction, + Transaction as SolanaTransaction, } from "@solana/web3.js"; import * as anchor from "@coral-xyz/anchor"; import { TOKEN_PROGRAM_ID, getAccount } from "@solana/spl-token"; @@ -30,6 +31,7 @@ import { initLookUpTable, TransactionParametersErrorCode, Provider, + ADMIN_AUTH_KEYPAIR, } from "./index"; import { IDL_MERKLE_TREE_PROGRAM } from "./idls/index"; const snarkjs = require("snarkjs"); @@ -808,7 +810,7 @@ export class Transaction { "constructor", "Merkle tree not set in provider", ); - if (!provider.browserWallet && !provider.nodeWallet) + if (!provider.wallet) throw new TransactionError( TransactionErrorCode.WALLET_UNDEFINED, "constructor", @@ -829,10 +831,7 @@ export class Transaction { //TODO: change to check whether browser/node wallet are the same as signing address if (params.action === Action.SHIELD) { - let wallet = - this.provider.browserWallet !== undefined - ? this.provider.browserWallet - : this.provider.nodeWallet; + let wallet = this.provider.wallet; if ( wallet?.publicKey.toBase58() !== params.relayer.accounts.relayerPubkey.toBase58() && @@ -1103,7 +1102,7 @@ export class Transaction { IDL_MERKLE_TREE_PROGRAM, merkleTreeProgramId, // @ts-ignore - this.provider.browserWallet && this.provider, + this.provider.provider, ); let root = Uint8Array.from( leInt2Buff( @@ -1114,6 +1113,7 @@ export class Transaction { let merkle_tree_account_data = await this.merkleTreeProgram.account.merkleTree.fetch( this.provider.solMerkleTree.pubkey, + "confirmed", ); // @ts-ignore: unknown type error merkle_tree_account_data.roots.map((x: any, index: any) => { @@ -1509,7 +1509,7 @@ export class Transaction { async sendTransaction(ix: any): Promise { if (false) { - // TODO: replace this with (this.provider.browserWallet.pubkey != new relayer... this.relayer + // TODO: replace this with (this.provider.wallet.pubkey != new relayer... this.relayer // then we know that an actual relayer was passed in and that it's supposed to be sent to one. // we cant do that tho as we'd want to add the default relayer to the provider itself. // so just pass in a flag here "shield, unshield, transfer" -> so devs don't have to know that it goes to a relayer. @@ -1592,18 +1592,7 @@ export class Transaction { let retries = 3; let res; while (retries > 0) { - if (this.provider.browserWallet) { - // TODO: versiontx?? - console.error("versioned tx might throw here"); - tx = await this.provider.browserWallet.signTransaction(tx); - // throw new Error( - // "versioned transaction in browser not implemented yet", - // ); - } else { - /** Just need to define relayer pubkey as signer a creation */ - tx.sign([this.provider.nodeWallet!]); - } - + tx = await this.provider.wallet.signTransaction(tx); try { let serializedTx = tx.serialize(); @@ -1642,11 +1631,11 @@ export class Transaction { "", ); - if (!this.provider.nodeWallet && !this.provider.browserWallet) + if (!this.provider.wallet) throw new TransactionError( TransactionErrorCode.WALLET_UNDEFINED, "sendAndConfirmTransaction", - "Cannot use sendAndConfirmTransaction without payer or browserWallet", + "Cannot use sendAndConfirmTransaction without wallet", ); await this.getRootIndex(); @@ -1692,11 +1681,11 @@ export class Transaction { // TODO: deal with this: set own payer just for that? where is this used? // This is used by applications not the relayer async closeVerifierState(): Promise { - if (!this.provider.nodeWallet && !this.provider.browserWallet) + if (!this.provider.wallet) throw new TransactionError( TransactionErrorCode.WALLET_UNDEFINED, "closeVerifierState", - "Cannot use closeVerifierState without payer or browserWallet", + "Cannot use closeVerifierState without wallet", ); if (!this.params) throw new TransactionError( @@ -1711,21 +1700,27 @@ export class Transaction { "", ); if (this.appParams) { - return await this.appParams?.verifier.verifierProgram.methods - .closeVerifierState() - .accounts({ - ...this.params.accounts, - }) - .signers([this.provider.nodeWallet!]) // TODO: browserwallet? or only ever used by relayer? - .rpc(confirmConfig); + const transaction = new SolanaTransaction().add( + await this.appParams?.verifier.verifierProgram.methods + .closeVerifierState() + .accounts({ + ...this.params.accounts, + }) + .instruction(), + ); + + return await this.provider.wallet!.sendAndConfirmTransaction(transaction); } else { - return await this.params?.verifier.verifierProgram.methods - .closeVerifierState() - .accounts({ - ...this.params.accounts, - }) - .signers([this.provider.nodeWallet!]) // TODO: browserwallet? or only ever used by relayer? - .rpc(confirmConfig); + const transaction = new SolanaTransaction().add( + await this.params?.verifier.verifierProgram.methods + .closeVerifierState() + .accounts({ + ...this.params.accounts, + }) + .instruction(), + ); + + return await this.provider.wallet!.sendAndConfirmTransaction(transaction); } } @@ -1913,14 +1908,12 @@ export class Transaction { "test values relayerRecipientAccountBalancePriorLastTx undefined", ); } - // Checking that nullifiers were inserted if (new BN(this.proofInput.publicAmount).toString() === "0") { this.testValues.is_token = false; } else { this.testValues.is_token = true; } - for ( var i = 0; i < this.remainingAccounts.nullifierPdaPubkeys?.length; @@ -1946,6 +1939,7 @@ export class Transaction { leavesAccountData = await this.merkleTreeProgram.account.twoLeavesBytesPda.fetch( this.remainingAccounts.leavesPdaPubkeys[i].pubkey, + "confirmed", ); assert( @@ -1963,7 +1957,6 @@ export class Transaction { this.provider.solMerkleTree.pubkey.toBase58(), "merkleTreePubkey not inserted correctly", ); - for (var j = 0; j < this.params.encryptedUtxos.length / 256; j++) { // console.log(j); @@ -2035,7 +2028,10 @@ export class Transaction { try { const merkleTreeAfterUpdate = - await this.merkleTreeProgram.account.merkleTree.fetch(MERKLE_TREE_KEY); + await this.merkleTreeProgram.account.merkleTree.fetch( + MERKLE_TREE_KEY, + "confirmed", + ); console.log( "Number(merkleTreeAfterUpdate.nextQueuedIndex) ", Number(merkleTreeAfterUpdate.nextQueuedIndex), @@ -2043,6 +2039,7 @@ export class Transaction { leavesAccountData = await this.merkleTreeProgram.account.twoLeavesBytesPda.fetch( this.remainingAccounts.leavesPdaPubkeys[0].pubkey, + "confirmed", ); console.log( `${Number(leavesAccountData.leftLeafIndex)} + ${ @@ -2072,6 +2069,7 @@ export class Transaction { var recipientFeeAccountBalance = await this.provider.provider.connection.getBalance( this.params.accounts.recipientFee, + "confirmed", ); console.log( "testValues.recipientFeeBalancePriorTx: ", @@ -2081,6 +2079,7 @@ export class Transaction { var senderFeeAccountBalance = await this.provider.provider.connection.getBalance( this.params.relayer.accounts.relayerPubkey, + "confirmed", ); assert( recipientFeeAccountBalance == @@ -2157,6 +2156,7 @@ export class Transaction { var senderFeeAccountBalance = await this.provider.provider.connection.getBalance( this.params.accounts.senderFee, + "confirmed", ); assert( @@ -2182,11 +2182,13 @@ export class Transaction { ) { var relayerAccount = await this.provider.provider.connection.getBalance( this.params.relayer.accounts.relayerRecipient, + "confirmed", ); var recipientFeeAccount = await this.provider.provider.connection.getBalance( this.params.accounts.recipientFee, + "confirmed", ); // console.log("relayerAccount ", relayerAccount); @@ -2269,11 +2271,13 @@ export class Transaction { var relayerAccount = await this.provider.provider.connection.getBalance( this.params.relayer.accounts.relayerRecipient, + "confirmed", ); var recipientFeeAccount = await this.provider.provider.connection.getBalance( this.params.accounts.recipientFee, + "confirmed", ); // console.log("relayerAccount ", relayerAccount); diff --git a/light-sdk-ts/src/verifiers/verifierOne.ts b/light-sdk-ts/src/verifiers/verifierOne.ts index 9bb47ce4e8..951ece748f 100644 --- a/light-sdk-ts/src/verifiers/verifierOne.ts +++ b/light-sdk-ts/src/verifiers/verifierOne.ts @@ -111,14 +111,11 @@ export class VerifierOne implements Verifier { "getInstructions", "verifier one: params.encryptedUtxos undefined", ); - if ( - !transaction.provider.browserWallet && - !transaction.provider.nodeWallet - ) { + if (!transaction.provider.wallet) { throw new VerifierError( TransactionErrorCode.WALLET_UNDEFINED, "getInstructions", - "verifier one: Payer(browserwallet, nodewallet) not defined", + "verifier one: Payer(wallet) not defined", ); } if (!this.verifierProgram) diff --git a/light-sdk-ts/src/verifiers/verifierZero.ts b/light-sdk-ts/src/verifiers/verifierZero.ts index bcf6ed8e24..1ec415c153 100644 --- a/light-sdk-ts/src/verifiers/verifierZero.ts +++ b/light-sdk-ts/src/verifiers/verifierZero.ts @@ -114,14 +114,11 @@ export class VerifierZero implements Verifier { "getInstructions", "verifier zero: params.encryptedUtxos undefined", ); - if ( - !transaction.provider.browserWallet && - !transaction.provider.nodeWallet - ) { + if (!transaction.provider.wallet) { throw new VerifierError( TransactionErrorCode.WALLET_UNDEFINED, "getInstructions", - "verifier zero: Payer(browserwallet, nodewallet) not defined", + "verifier zero: Payer(wallet) not defined", ); } if (!this.verifierProgram) diff --git a/light-sdk-ts/src/wallet/buildBalance.ts b/light-sdk-ts/src/wallet/buildBalance.ts index e307250225..7039cd03b7 100644 --- a/light-sdk-ts/src/wallet/buildBalance.ts +++ b/light-sdk-ts/src/wallet/buildBalance.ts @@ -54,6 +54,7 @@ export async function getUnspentUtxo( )[0]; let accountInfo = await provider.connection.getAccountInfo( nullifierPubkey, + "confirmed", ); if ( accountInfo == null && @@ -130,6 +131,7 @@ export async function getUnspentUtxos({ )[0]; let accountInfo = await provider.connection.getAccountInfo( nullifierPubkey, + "confirmed", ); // console.log( // "inserted -- spent?", diff --git a/light-sdk-ts/src/wallet/index.ts b/light-sdk-ts/src/wallet/index.ts index 0209677740..ceca2809fa 100644 --- a/light-sdk-ts/src/wallet/index.ts +++ b/light-sdk-ts/src/wallet/index.ts @@ -3,3 +3,4 @@ export * from "./user"; export * from "./provider"; export * from "./createOutUtxos"; export * from "./selectInUtxos"; +export * from "./useWallet"; diff --git a/light-sdk-ts/src/wallet/provider.ts b/light-sdk-ts/src/wallet/provider.ts index e398113066..19d5b2ad9c 100644 --- a/light-sdk-ts/src/wallet/provider.ts +++ b/light-sdk-ts/src/wallet/provider.ts @@ -3,7 +3,6 @@ import { AnchorProvider, BN, setProvider, - Wallet, } from "@coral-xyz/anchor"; import { SolMerkleTree } from "../merkleTree"; import { @@ -11,22 +10,25 @@ import { Keypair as SolanaKeypair, Connection, ConfirmOptions, + Keypair, } from "@solana/web3.js"; import { ADMIN_AUTH_KEYPAIR, initLookUpTableFromFile } from "../test-utils"; import { MERKLE_TREE_HEIGHT, MERKLE_TREE_KEY } from "../constants"; import { MerkleTree } from "../merkleTree/merkleTree"; import { ProviderError, ProviderErrorCode } from "../errors"; +import { useWallet } from "./useWallet"; const axios = require("axios"); const circomlibjs = require("circomlibjs"); /** * use: signMessage, signTransaction, sendAndConfirmTransaction, publicKey from the useWallet() hook in solana/wallet-adapter and {connection} from useConnection() */ -export type BrowserWallet = { +export type Wallet = { signMessage: (message: Uint8Array) => Promise; signTransaction: (transaction: any) => Promise; sendAndConfirmTransaction: (transaction: any) => Promise; publicKey: PublicKey; + isNodeWallet?: boolean; }; /** @@ -35,8 +37,7 @@ export type BrowserWallet = { // TODO: add relayer here; default deriv, if passed in can choose custom relayer. export class Provider { connection?: Connection; - browserWallet?: BrowserWallet; - nodeWallet?: SolanaKeypair; + wallet: Wallet; confirmConfig: ConfirmOptions; poseidon: any; lookUpTable?: PublicKey; @@ -46,43 +47,36 @@ export class Provider { minimumLamports: BN; /** - * Init either with nodeWallet or browserWallet. Feepayer is the provided wallet + * Initialize with Wallet or SolanaKeypair. Feepayer is the provided wallet * Optionally provide confirmConfig, Default = 'confirmed'. */ constructor({ - nodeWallet, - browserWallet, + wallet, confirmConfig, connection, url = "http://127.0.0.1:8899", minimumLamports = new BN(5000 * 30), }: { - nodeWallet?: SolanaKeypair; - browserWallet?: BrowserWallet; + wallet: Wallet | SolanaKeypair; confirmConfig?: ConfirmOptions; connection?: Connection; url?: string; minimumLamports?: BN; }) { - if (nodeWallet && browserWallet) + if (!wallet) throw new ProviderError( - ProviderErrorCode.NODE_WALLET_AND_BROWSER_WALLET_DEFINED, - "constructor", - "Both node and browser environments provided chose one.", - ); - if (!nodeWallet && !browserWallet) - throw new ProviderError( - ProviderErrorCode.NODE_WALLET_AND_BROWSER_WALLET_UNDEFINED, + ProviderErrorCode.WALLET_UNDEFINED, "constructor", "No wallet provided.", ); - if (browserWallet && !connection) + + if (!("secretKey" in wallet) && !connection) throw new ProviderError( ProviderErrorCode.CONNECTION_UNDEFINED, "constructor", "No connection provided with browser wallet.", ); - if (nodeWallet && connection) + if ("secretKey" in wallet && connection) throw new ProviderError( ProviderErrorCode.CONNECTION_DEFINED, "constructor", @@ -92,8 +86,8 @@ export class Provider { this.confirmConfig = confirmConfig || { commitment: "confirmed" }; this.minimumLamports = minimumLamports; - if (nodeWallet) { - this.nodeWallet = nodeWallet; + if ("secretKey" in wallet) { + this.wallet = useWallet(wallet as SolanaKeypair, url); // TODO: check if we can remove this.url! this.url = url; // TODO: check if we can remove this.provider! @@ -101,18 +95,16 @@ export class Provider { setProvider(AnchorProvider.env()); this.provider = AnchorProvider.local(url, confirmConfig); } - } - if (browserWallet) { - //@ts-ignore + } else { this.connection = connection; this.provider = { connection: connection! }; - this.browserWallet = browserWallet; + this.wallet = wallet as Wallet; } } static async loadMock() { let mockProvider = new Provider({ - nodeWallet: ADMIN_AUTH_KEYPAIR, + wallet: ADMIN_AUTH_KEYPAIR, url: "mock", }); await mockProvider.loadPoseidon(); @@ -127,7 +119,7 @@ export class Provider { private async fetchLookupTable() { try { - if (this.browserWallet) { + if (!this.wallet.isNodeWallet) { const response = await axios.get("http://localhost:3331/lookuptable"); this.lookUpTable = new PublicKey(response.data.data); return; @@ -143,7 +135,7 @@ export class Provider { private async fetchMerkleTree(merkleTreePubkey: PublicKey) { try { - if (this.browserWallet) { + if (!this.wallet.isNodeWallet) { const response = await axios.get("http://localhost:3331/merkletree"); const fetchedMerkleTree: MerkleTree = response.data.data.merkleTree; @@ -161,6 +153,7 @@ export class Provider { const merkletreeIsInited = await this.provider!.connection.getAccountInfo( merkleTreePubkey, + "confirmed", ); if (!merkletreeIsInited) { throw new ProviderError( @@ -198,51 +191,21 @@ export class Provider { * @param walletContext get from useWallet() hook * @param confirmConfig optional, default = 'confirmed' * @param connection get from useConnection() hook + * @param url full-node rpc endpoint to instantiate a Connection */ - static async browser( - browserWallet: BrowserWallet, - connection: Connection, + static async init( + wallet: Wallet | SolanaKeypair | Keypair, + connection?: Connection, confirmConfig?: ConfirmOptions, + url?: string, ): Promise { - if (!browserWallet) { + if (!wallet) { throw new ProviderError(ProviderErrorCode.KEYPAIR_UNDEFINED, "browser"); } - if (!connection) { - throw new ProviderError( - ProviderErrorCode.CONNECTION_UNDEFINED, - "browser", - ); - } - const provider = new Provider({ - browserWallet, + wallet, confirmConfig, connection, - }); - await provider.loadPoseidon(); - await provider.fetchLookupTable(); - await provider.fetchMerkleTree(MERKLE_TREE_KEY); - return provider; - } - - /** - * Only use this if you have access to a local keypair. If you use WalletAdapter, e.g. in a browser, use getProvider() instead. - * @param keypair - user's keypair to sign transactions - * @param confirmConfig optional, default = 'confirmed' - * @param url full-node rpc endpoint to instantiate a Connection - */ - static async native( - keypair: SolanaKeypair, - url?: string, - confirmConfig?: ConfirmOptions, - ): Promise { - if (!keypair) { - throw new ProviderError(ProviderErrorCode.KEYPAIR_UNDEFINED, "native"); - } - - const provider = new Provider({ - nodeWallet: keypair, - confirmConfig, url, }); await provider.loadPoseidon(); diff --git a/light-sdk-ts/src/wallet/useWallet.ts b/light-sdk-ts/src/wallet/useWallet.ts new file mode 100644 index 0000000000..770c40e871 --- /dev/null +++ b/light-sdk-ts/src/wallet/useWallet.ts @@ -0,0 +1,84 @@ +import { + Commitment, + Connection, + Keypair, + sendAndConfirmTransaction, +} from "@solana/web3.js"; +import { PublicKey, Transaction } from "@solana/web3.js"; +import { sign } from "tweetnacl"; + +// Mock Solana web3 library +class Wallet { + _publicKey: PublicKey; + _keypair: Keypair; + _connection: Connection; + _url: string; + _commitment: Commitment; + + constructor(keypair: Keypair, url: string, commitment: Commitment) { + this._publicKey = keypair.publicKey; + this._keypair = keypair; + this._connection = new Connection(url); + this._url = url; + this._commitment = commitment; + } + + signTransaction = async (tx: any): Promise => { + await tx.sign([this._keypair!]); + return tx; + }; + + signAllTransactions = async ( + transactions: Transaction[], + ): Promise => { + const signedTxs = await Promise.all( + transactions.map(async (tx) => { + return await this.signTransaction(tx); + }), + ); + return signedTxs; + }; + + signMessage = async (message: Uint8Array): Promise => { + return sign.detached(message, this._keypair.secretKey); + }; + sendAndConfirmTransaction = async ( + transaction: Transaction, + signers = [], + ): Promise => { + try { + const response = await sendAndConfirmTransaction( + this._connection, + transaction, + [this._keypair, ...signers], + { + commitment: this._commitment, + }, + ); + console.log(response); + return response; + } catch (error) { + console.log("errrr", error); + throw error; + } + }; +} + +// Mock useWallet hook +export const useWallet = ( + keypair: Keypair, + url: string = "http://127.0.0.1:8899", + isNodeWallet: boolean = true, + commitment: Commitment = "confirmed", +) => { + url = url !== "mock" ? url : "http://127.0.0.1:8899"; + const wallet = new Wallet(keypair, url, commitment); + return { + publicKey: wallet._publicKey, + sendAndConfirmTransaction: wallet.sendAndConfirmTransaction, + signMessage: wallet.signMessage, + signTransaction: wallet.signTransaction, + signAllTransactions: wallet.signAllTransactions, + isNodeWallet, + }; +}; diff --git a/light-sdk-ts/src/wallet/user.ts b/light-sdk-ts/src/wallet/user.ts index 32ac1b7c8e..eba7b73a4d 100644 --- a/light-sdk-ts/src/wallet/user.ts +++ b/light-sdk-ts/src/wallet/user.ts @@ -2,6 +2,7 @@ import { Keypair as SolanaKeypair, PublicKey, SystemProgram, + Transaction as SolanaTransaction, } from "@solana/web3.js"; import { Account } from "../account"; import { Utxo } from "../utxo"; @@ -11,6 +12,7 @@ import { sign } from "tweetnacl"; import * as splToken from "@solana/spl-token"; import { BN } from "@coral-xyz/anchor"; const circomlibjs = require("circomlibjs"); + import { FEE_ASSET, UTXO_MERGE_MAXIMUM, @@ -23,16 +25,6 @@ import { merkleTreeProgramId, MINIMUM_LAMPORTS, } from "../constants"; -import { - ADMIN_AUTH_KEY, - ADMIN_AUTH_KEYPAIR, - createTestAccounts, - MINT, - newAccountWithTokens, - updateMerkleTreeForTest, - userTokenAccount, - USER_TOKEN_ACCOUNT, -} from "../test-utils/index"; import { SolMerkleTree } from "../merkleTree/index"; import { VerifierZero } from "../verifiers/index"; import { Relayer } from "../relayer"; @@ -108,7 +100,7 @@ export class User { utxos?: Utxo[]; account?: Account; }) { - if (!provider.browserWallet && !provider.nodeWallet) + if (!provider.wallet) throw new UserError( UserErrorCode.NO_WALLET_PROVIDED, "constructor", @@ -242,9 +234,7 @@ export class User { // TODO: pull an actually implemented relayer here via http request // This will then also remove the need to fund the relayer recipient account... let mockRelayer = new Relayer( - this.provider.browserWallet! - ? this.provider.browserWallet.publicKey - : this.provider.nodeWallet!.publicKey, + this.provider.wallet!.publicKey, this.provider.lookUpTable!, SolanaKeypair.generate().publicKey, ataCreationFee ? new anchor.BN(500000) : new anchor.BN(100000), @@ -348,9 +338,7 @@ export class User { merkleTreePubkey: MERKLE_TREE_KEY, sender: action === Action.SHIELD ? userSplAccount : undefined, senderFee: - action === Action.SHIELD - ? this.provider.nodeWallet!.publicKey - : undefined, + action === Action.SHIELD ? this.provider.wallet!.publicKey : undefined, recipient: recipientSPLAddress, recipientFee, verifier: new VerifierZero(), // TODO: add support for 10in here -> verifier1 @@ -445,7 +433,7 @@ export class User { } else { userSplAccount = splToken.getAssociatedTokenAddressSync( tokenCtx!.tokenAccount, - this.provider!.nodeWallet!.publicKey, + this.provider!.wallet!.publicKey, ); } @@ -470,15 +458,19 @@ export class User { ); try { - await splToken.approve( - this.provider.provider!.connection, - this.provider.nodeWallet!, - userSplAccount, //tokenAccount, - AUTHORITY, //TODO: make dynamic based on verifier - this.provider.nodeWallet!, //USER_TOKEN_ACCOUNT, // owner2 - // change to bigint - publicAmountSpl.toNumber(), - [this.provider.nodeWallet!], + const transaction = new SolanaTransaction().add( + splToken.createApproveInstruction( + userSplAccount, + AUTHORITY, + this.provider.wallet!.publicKey, + publicAmountSpl.toNumber(), + [this.provider.wallet!.publicKey], + ), + ); + console.log({ transaction }); + + const response = await this.provider.wallet!.sendAndConfirmTransaction( + transaction, ); } catch (e) { throw new UserError( @@ -515,7 +507,7 @@ export class User { } let response; - if (this.provider.browserWallet) { + if (!this.provider.wallet.isNodeWallet) { response = await axios.post("http://localhost:3331/updatemerkletree"); } @@ -635,7 +627,7 @@ export class User { } let response; - if (this.provider.browserWallet) { + if (!this.provider.wallet.isNodeWallet) { response = await axios.post("http://localhost:3331/updatemerkletree"); } return { txHash, response }; @@ -722,7 +714,7 @@ export class User { ); } let response; - if (this.provider.browserWallet) { + if (!this.provider.wallet.isNodeWallet) { response = await axios.post("http://localhost:3331/updatemerkletree"); } return { txHash, response }; @@ -763,22 +755,11 @@ export class User { this.provider = provider; } if (!this.seed) { - if (this.provider.nodeWallet && this.provider?.browserWallet) - throw new UserError( - UserErrorCode.NO_WALLET_PROVIDED, - "load", - "No payer or browser wallet provided", - ); - if (this.provider.nodeWallet) { - const signature: Uint8Array = sign.detached( + if (this.provider.wallet) { + const signature: Uint8Array = await this.provider.wallet.signMessage( message, - this.provider.nodeWallet.secretKey, ); this.seed = new anchor.BN(signature).toString(); - } else if (this.provider?.browserWallet) { - const signature: Uint8Array = - await this.provider.browserWallet.signMessage(message); - this.seed = new anchor.BN(signature).toString(); } else { throw new UserError( UserErrorCode.NO_WALLET_PROVIDED, @@ -787,6 +768,7 @@ export class User { ); } } + // get the provider? if (!this.provider.poseidon) { this.provider.poseidon = await circomlibjs.buildPoseidonOpt(); @@ -802,7 +784,7 @@ export class User { let leavesPdas = await SolMerkleTree.getInsertedLeaves( MERKLE_TREE_KEY, // @ts-ignore - this.provider.browserWallet && this.provider, + this.provider.provider, ); const params = { diff --git a/light-sdk-ts/tests/provider.test.ts b/light-sdk-ts/tests/provider.test.ts index 923956336c..3050d9241d 100644 --- a/light-sdk-ts/tests/provider.test.ts +++ b/light-sdk-ts/tests/provider.test.ts @@ -41,6 +41,7 @@ import { MERKLE_TREE_KEY, DEFAULT_ZERO, ProviderError, + useWallet, } from "../src"; import { MerkleTree } from "../src/merkleTree/merkleTree"; @@ -65,9 +66,9 @@ describe("Test Provider Functional", () => { it("Mock Provider", async () => { const lightProviderMock = await LightProvider.loadMock(); - assert.equal(lightProviderMock.browserWallet, undefined); + assert.equal(lightProviderMock.wallet.isNodeWallet,true); assert.equal( - lightProviderMock.nodeWallet?.publicKey.toBase58(), + lightProviderMock.wallet?.publicKey.toBase58(), ADMIN_AUTH_KEYPAIR.publicKey.toBase58(), ); assert.equal(lightProviderMock.url, "mock"); @@ -84,10 +85,10 @@ describe("Test Provider Functional", () => { ); }); - it("KEYPAIR_UNDEFINED native", async () => { + it("KEYPAIR_UNDEFINED Provider", async () => { await chai.assert.isRejected( // @ts-ignore - LightProvider.native(), + LightProvider.init(), ProviderErrorCode.KEYPAIR_UNDEFINED, ); }); @@ -95,7 +96,7 @@ describe("Test Provider Functional", () => { it("CONNECTION_DEFINED", async () => { expect(() => { // @ts-ignore - new LightProvider({ nodeWallet: ADMIN_AUTH_KEYPAIR, connection: {} }); + new LightProvider({ wallet: ADMIN_AUTH_KEYPAIR, connection: {} }); }) .to.throw(ProviderError) .includes({ @@ -104,14 +105,14 @@ describe("Test Provider Functional", () => { }); }); - it("NODE_WALLET_AND_BROWSER_WALLET_UNDEFINED", async () => { + it("WALLET_UNDEFINED", async () => { expect(() => { // @ts-ignore new LightProvider({}); }) .to.throw(ProviderError) .includes({ - code: ProviderErrorCode.NODE_WALLET_AND_BROWSER_WALLET_UNDEFINED, + code: ProviderErrorCode.WALLET_UNDEFINED, functionName: "constructor", }); }); @@ -119,7 +120,7 @@ describe("Test Provider Functional", () => { it("CONNECTION_UNDEFINED", async () => { expect(() => { // @ts-ignore - new LightProvider({ browserWallet: {} }); + new LightProvider({ wallet: {} }); }) .to.throw(ProviderError) .includes({ @@ -131,7 +132,7 @@ describe("Test Provider Functional", () => { it("KEYPAIR_UNDEFINED browser", async () => { await chai.assert.isRejected( // @ts-ignore - LightProvider.browser(), + LightProvider.init(), ProviderErrorCode.KEYPAIR_UNDEFINED, ); }); @@ -139,7 +140,7 @@ describe("Test Provider Functional", () => { it("KEYPAIR_UNDEFINED browser", async () => { await chai.assert.isRejected( // @ts-ignore - LightProvider.browser(), + LightProvider.init(), ProviderErrorCode.KEYPAIR_UNDEFINED, ); }); @@ -147,9 +148,11 @@ describe("Test Provider Functional", () => { it("CONNECTION_UNDEFINED browser", async () => { const mockKeypair = SolanaKeypair.generate(); + const wallet = useWallet(mockKeypair) + await chai.assert.isRejected( // @ts-ignore - LightProvider.browser(mockKeypair), + LightProvider.init(wallet), ProviderErrorCode.CONNECTION_UNDEFINED, ); }); diff --git a/light-sdk-ts/tests/transaction.test.ts b/light-sdk-ts/tests/transaction.test.ts index dbd564f5cd..ce2978c027 100644 --- a/light-sdk-ts/tests/transaction.test.ts +++ b/light-sdk-ts/tests/transaction.test.ts @@ -83,7 +83,7 @@ describe("Transaction Error Tests", () => { lookUpTable: lightProvider.lookUpTable, poseidon, sender: mockPubkey, - senderFee: lightProvider.nodeWallet?.publicKey, + senderFee: lightProvider.wallet?.publicKey, action: Action.SHIELD, }); }); @@ -236,7 +236,7 @@ describe("Transaction Error Tests", () => { // @ts-ignore solMerkleTree: {}, poseidon, - nodeWallet: lightProvider.nodeWallet, + wallet: lightProvider.wallet, }, params, }); @@ -252,7 +252,7 @@ describe("Transaction Error Tests", () => { // @ts-ignore solMerkleTree: {}, poseidon, - nodeWallet: lightProvider.nodeWallet, + wallet: lightProvider.wallet, }, params, }); @@ -323,7 +323,7 @@ describe("Transaction Functional Tests", () => { lookUpTable: lightProvider.lookUpTable, poseidon, sender: mockPubkey, - senderFee: lightProvider.nodeWallet?.publicKey, + senderFee: lightProvider.wallet?.publicKey, action: Action.SHIELD, }); lightProvider.solMerkleTree!.merkleTree = new MerkleTree(18, poseidon, [ @@ -342,7 +342,7 @@ describe("Transaction Functional Tests", () => { verifier: new VerifierZero(), poseidon, recipient: mockPubkey, - recipientFee: lightProvider.nodeWallet?.publicKey, + recipientFee: lightProvider.wallet?.publicKey, action: Action.UNSHIELD, relayer, }); @@ -513,7 +513,7 @@ describe("Transaction Functional Tests", () => { verifier: new VerifierZero(), poseidon, recipient: AUTHORITY, - recipientFee: lightProvider.nodeWallet?.publicKey, + recipientFee: lightProvider.wallet?.publicKey, action: Action.UNSHIELD, relayer: relayerConst, encryptedUtxos: new Uint8Array(256).fill(1), @@ -548,7 +548,7 @@ describe("Transaction Functional Tests", () => { verifier: new VerifierZero(), poseidon, recipient: AUTHORITY, - recipientFee: lightProvider.nodeWallet?.publicKey, + recipientFee: lightProvider.wallet?.publicKey, action: Action.UNSHIELD, relayer: relayerConst, encryptedUtxos: new Uint8Array(256).fill(1), @@ -649,7 +649,7 @@ describe("Transaction Functional Tests", () => { verifier: new VerifierZero(), poseidon, recipient: AUTHORITY, - recipientFee: lightProvider.nodeWallet?.publicKey, + recipientFee: lightProvider.wallet?.publicKey, action: Action.UNSHIELD, relayer: relayerConst, encryptedUtxos: new Uint8Array(256).fill(1), diff --git a/light-system-programs/tests/functional_tests.ts b/light-system-programs/tests/functional_tests.ts index 225eb8bacb..10971edb7f 100644 --- a/light-system-programs/tests/functional_tests.ts +++ b/light-system-programs/tests/functional_tests.ts @@ -108,7 +108,7 @@ describe("verifier_program", () => { RELAYER_RECIPIENT = new anchor.web3.Account().publicKey; // userSplAccount = token.getAssociatedTokenAddressSync( // tokenCtx!.tokenAccount, - // this.provider!.nodeWallet!.publicKey, + // this.provider!.wallet!.publicKey, // ); }); @@ -193,7 +193,9 @@ describe("verifier_program", () => { verifierState: verifierState, }) .signers([ADMIN_AUTH_KEYPAIR]) - .rpc(confirmConfig); + .rpc({ + commitment: "confirmed", + }); console.log("tx" + i + ": " + tx); } @@ -257,9 +259,7 @@ describe("verifier_program", () => { depositAmount * 2, [USER_TOKEN_ACCOUNT], ); - const lightProvider = await Provider.native(ADMIN_AUTH_KEYPAIR); - - + const lightProvider = await Provider.init(ADMIN_AUTH_KEYPAIR); let deposit_utxo1 = new Utxo({ poseidon: POSEIDON, @@ -279,11 +279,11 @@ describe("verifier_program", () => { verifier: new VerifierOne(), poseidon: POSEIDON, lookUpTable: LOOK_UP_TABLE, - action: Action.SHIELD + action: Action.SHIELD, }); let tx = new Transaction({ provider: lightProvider, - params: txParams + params: txParams, }); await tx.compileAndProve(); @@ -326,9 +326,7 @@ describe("verifier_program", () => { for (var i = 0; i < 1; i++) { console.log("Deposit ", i); - const lightProvider = await Provider.native(ADMIN_AUTH_KEYPAIR); - - + const lightProvider = await Provider.init(ADMIN_AUTH_KEYPAIR); deposit_utxo1 = new Utxo({ poseidon: POSEIDON, @@ -348,11 +346,11 @@ describe("verifier_program", () => { verifier: new VerifierZero(), lookUpTable: LOOK_UP_TABLE, action: Action.SHIELD, - poseidon: POSEIDON + poseidon: POSEIDON, }); let tx = new Transaction({ provider: lightProvider, - params: txParams + params: txParams, }); await tx.compileAndProve(); @@ -390,7 +388,7 @@ describe("verifier_program", () => { const origin = new anchor.web3.Account(); var tokenRecipient = recipientTokenAccount; - const lightProvider = await Provider.native(ADMIN_AUTH_KEYPAIR); + const lightProvider = await Provider.init(ADMIN_AUTH_KEYPAIR); let relayer = new Relayer( ADMIN_AUTH_KEYPAIR.publicKey, @@ -399,8 +397,6 @@ describe("verifier_program", () => { new BN(100000), ); - - let txParams = new TransactionParameters({ inputUtxos: [decryptedUtxo1], merkleTreePubkey: MERKLE_TREE_KEY, @@ -469,7 +465,7 @@ describe("verifier_program", () => { const relayerRecipient = SolanaKeypair.generate().publicKey; const recipientFee = SolanaKeypair.generate().publicKey; - const lightProvider = await Provider.native(ADMIN_AUTH_KEYPAIR); + const lightProvider = await Provider.init(ADMIN_AUTH_KEYPAIR); await lightProvider.provider.connection.confirmTransaction( await lightProvider.provider.connection.requestAirdrop( @@ -497,11 +493,8 @@ describe("verifier_program", () => { new Utxo({ poseidon: POSEIDON, assets: inputUtxos[0].assets, - amounts: [ - new BN(0), - inputUtxos[0].amounts[1] - ] - }) + amounts: [new BN(0), inputUtxos[0].amounts[1]], + }), ], // outputUtxos: [new Utxo({poseidon: POSEIDON, assets: inputUtxos[0].assets, amounts: [inputUtxos[0].amounts[0], new BN(0)]})], @@ -511,12 +504,12 @@ describe("verifier_program", () => { verifier: new VerifierOne(), relayer, poseidon: POSEIDON, - action: Action.UNSHIELD + action: Action.UNSHIELD, }); let tx = new Transaction({ provider: lightProvider, // relayer, - params: txParams + params: txParams, }); await tx.compileAndProve(); diff --git a/light-system-programs/tests/merkle_tree_tests.ts b/light-system-programs/tests/merkle_tree_tests.ts index 9b5a08927d..df146e835e 100644 --- a/light-system-programs/tests/merkle_tree_tests.ts +++ b/light-system-programs/tests/merkle_tree_tests.ts @@ -579,9 +579,7 @@ describe("Merkle Tree Tests", () => { [USER_TOKEN_ACCOUNT], ); - let lightProvider = await Provider.native(ADMIN_AUTH_KEYPAIR); - - + let lightProvider = await Provider.init(ADMIN_AUTH_KEYPAIR); deposit_utxo1 = new Utxo({ poseidon: POSEIDON, diff --git a/light-system-programs/tests/provider.test.ts b/light-system-programs/tests/provider.test.ts index 5c6101443e..ba110bb364 100644 --- a/light-system-programs/tests/provider.test.ts +++ b/light-system-programs/tests/provider.test.ts @@ -61,13 +61,13 @@ describe("verifier_program", () => { }); }); - it("Native Provider", async ()=> { + it("Provider", async ()=> { let connection = new Connection("http://127.0.0.1:8899", "confirmed"); await connection.confirmTransaction(await connection.requestAirdrop(ADMIN_AUTH_KEYPAIR.publicKey, 10_000_000_0000), "confirmed"); const mockKeypair = SolanaKeypair.generate(); - const lightProviderMock = await LightProvider.native(mockKeypair); - assert.equal(lightProviderMock.browserWallet, undefined); - assert.equal(lightProviderMock.nodeWallet?.publicKey.toBase58(), mockKeypair.publicKey.toBase58()); + const lightProviderMock = await LightProvider.init(mockKeypair); + assert.equal(lightProviderMock.wallet.isNodeWallet, true); + assert.equal(lightProviderMock.wallet?.publicKey.toBase58(), mockKeypair.publicKey.toBase58()); assert.equal(lightProviderMock.url, "http://127.0.0.1:8899"); assert(lightProviderMock.poseidon); assert(lightProviderMock.lookUpTable); @@ -78,7 +78,7 @@ describe("verifier_program", () => { }); it("Fetch latestMerkleTree", async () => { - const lightProvider = await Provider.native(ADMIN_AUTH_KEYPAIR); + const lightProvider = await Provider.init(ADMIN_AUTH_KEYPAIR); let depositFeeAmount = 10000; let depositAmount = 0; diff --git a/light-system-programs/tests/user_tests.ts b/light-system-programs/tests/user_tests.ts index 3086e7b16c..c199447b00 100644 --- a/light-system-programs/tests/user_tests.ts +++ b/light-system-programs/tests/user_tests.ts @@ -1,5 +1,5 @@ import * as anchor from "@coral-xyz/anchor"; -import { Keypair as SolanaKeypair, PublicKey, SystemProgram } from "@solana/web3.js"; +import {Keypair as SolanaKeypair, PublicKey, SystemProgram } from "@solana/web3.js"; import _ from "lodash"; import { assert } from "chai"; const chai = require("chai"); @@ -69,7 +69,7 @@ describe("Test User", () => { let amount = 20; let token = "USDC"; console.log("test user wallet: ", userKeypair.publicKey.toBase58()); - const provider = await Provider.native(userKeypair); // userKeypair + const provider = await Provider.init(userKeypair); // userKeypair let res = await provider.provider.connection.requestAirdrop( userKeypair.publicKey, 2_000_000_000, @@ -152,8 +152,8 @@ describe("Test User", () => { it("(user class) shield SOL", async () => { let amount = 15; - let token = "SOL"; - const provider = await Provider.native(userKeypair); + let token = "SOL" + const provider = await Provider.init(userKeypair); let res = await provider.provider.connection.requestAirdrop( userKeypair.publicKey, 4_000_000_000, @@ -223,7 +223,7 @@ describe("Test User", () => { let amount = 1; let token = "USDC"; let solRecipient = SolanaKeypair.generate(); - const provider = await Provider.native(userKeypair); // userKeypair + const provider = await Provider.init(userKeypair); // userKeypair let res = await provider.provider.connection.requestAirdrop( userKeypair.publicKey, 2_000_000_000, @@ -322,7 +322,7 @@ describe("Test User", () => { it("(user class) transfer SPL", async () => { let amountSpl = 1; const token = "USDC"; - const provider = await Provider.native(userKeypair); // userKeypair + const provider = await Provider.init(userKeypair); // userKeypair const shieldedRecipient = "19a20668193c0143dd96983ef457404280741339b95695caddd0ad7919f2d434"; const encryptionPublicKey = @@ -403,7 +403,7 @@ describe("Test User", () => { const recipient = new anchor.BN(shieldedRecipient, "hex"); const recipientEncryptionPublicKey: Uint8Array = strToArr(encryptionPublicKey); - const provider = await Provider.native(userKeypair); + const provider = await Provider.init(userKeypair); // get token from registry const tokenCtx = TOKEN_REGISTRY.find((t) => t.symbol === token); @@ -455,7 +455,7 @@ describe("Test User", () => { let recipient = new PublicKey( "E7jqevikamCMCda8yCsfNawj57FSotUZuref9MLZpWo1", ); - const provider = await Provider.native(userKeypair); + const provider = await Provider.init(userKeypair); const user = await User.load(provider); await user.unshield({ amount, token, recipient }); try { @@ -502,7 +502,7 @@ describe("Test User Errors", () => { amount = 20; token = "USDC"; - provider = await Provider.native(userKeypair); // userKeypair + provider = await Provider.init(userKeypair); // userKeypair let res = await provider.provider.connection.requestAirdrop( userKeypair.publicKey, 2_000_000_000, @@ -510,7 +510,6 @@ describe("Test User Errors", () => { await provider.provider.connection.confirmTransaction(res, "confirmed"); user = await User.load(provider); }); - it("NO_PUBLIC_AMOUNTS_PROVIDED shield", async () => { await chai.assert.isRejected( user.shield({ token }), diff --git a/light-system-programs/tests/verifier_tests.ts b/light-system-programs/tests/verifier_tests.ts index 2555222058..441bf5f177 100644 --- a/light-system-programs/tests/verifier_tests.ts +++ b/light-system-programs/tests/verifier_tests.ts @@ -36,6 +36,7 @@ import { newAccountWithTokens, updateMerkleTreeForTest, Action, + useWallet } from "light-sdk"; import { BN } from "@coral-xyz/anchor"; @@ -94,7 +95,7 @@ describe("Verifier Zero and One Tests", () => { [USER_TOKEN_ACCOUNT] ); - let lightProvider = await LightProvider.native(ADMIN_AUTH_KEYPAIR); + let lightProvider = await LightProvider.init(ADMIN_AUTH_KEYPAIR); @@ -130,7 +131,8 @@ describe("Verifier Zero and One Tests", () => { await transaction.provider.provider.connection.requestAirdrop( transaction.params.accounts.authority, 1_000_000_000 - ) + ), + "confirmed" ); // does one successful transaction await transaction.sendAndConfirmTransaction(); @@ -169,7 +171,7 @@ describe("Verifier Zero and One Tests", () => { // Withdrawal var tokenRecipient = recipientTokenAccount; - let lightProviderWithdrawal = await LightProvider.native( + let lightProviderWithdrawal = await LightProvider.init( ADMIN_AUTH_KEYPAIR ); const relayerRecipient = SolanaKeypair.generate().publicKey; @@ -372,7 +374,7 @@ describe("Verifier Zero and One Tests", () => { ), "confirmed" ); - tmp_tx.provider.nodeWallet = wrongSinger; + tmp_tx.provider.wallet = useWallet(wrongSinger); tmp_tx.params.relayer.accounts.relayerPubkey = wrongSinger.publicKey; await sendTestTx(tmp_tx, "ProofVerificationFails"); } diff --git a/light-system-programs/tsconfig.json b/light-system-programs/tsconfig.json index 5543e1afe9..cb241ef237 100644 --- a/light-system-programs/tsconfig.json +++ b/light-system-programs/tsconfig.json @@ -5,8 +5,8 @@ "lib": ["es2015"], "module": "commonjs", "target": "es6", - "esModuleInterop": true + "esModuleInterop": true, }, "dry": false, "debug": false -} +} \ No newline at end of file diff --git a/mock-app-verifier/sdk/src/verifier.ts b/mock-app-verifier/sdk/src/verifier.ts index c734c27352..f91dbc796f 100644 --- a/mock-app-verifier/sdk/src/verifier.ts +++ b/mock-app-verifier/sdk/src/verifier.ts @@ -75,9 +75,7 @@ export class MockVerifier implements Verifier { const invokingVerifierPubkey = ( await PublicKey.findProgramAddress( [ - transaction.provider.browserWallet - ? transaction.provider.browserWallet.publicKey.toBytes() - : transaction.provider.nodeWallet!.publicKey.toBytes(), + transaction.provider.wallet.publicKey.toBytes() // anchor.utils.bytes.utf8.encode("VERIFIER_STATE"), ], this.verifierProgram.programId, diff --git a/mock-app-verifier/tests/functional_test.ts b/mock-app-verifier/tests/functional_test.ts index 8b62d9dd28..ed12b3b782 100644 --- a/mock-app-verifier/tests/functional_test.ts +++ b/mock-app-verifier/tests/functional_test.ts @@ -77,7 +77,7 @@ describe("Mock verifier functional", () => { it("Test Deposit MockVerifier cpi VerifierTwo", async () => { const poseidon = await buildPoseidonOpt(); - let lightProvider = await LightProvider.native(ADMIN_AUTH_KEYPAIR); + let lightProvider = await LightProvider.init(ADMIN_AUTH_KEYPAIR); outputUtxo = new Utxo({ poseidon, @@ -128,7 +128,7 @@ describe("Mock verifier functional", () => { it("Test Withdrawal MockVerifier cpi VerifierTwo", async () => { const poseidon = await buildPoseidonOpt(); - let lightProvider = await LightProvider.native(ADMIN_AUTH_KEYPAIR); + let lightProvider = await LightProvider.init(ADMIN_AUTH_KEYPAIR); let relayer = new Relayer( ADMIN_AUTH_KEYPAIR.publicKey, diff --git a/mock-app-verifier/tests/verifier_tests.ts b/mock-app-verifier/tests/verifier_tests.ts index 60816d3e63..3c9ad75334 100644 --- a/mock-app-verifier/tests/verifier_tests.ts +++ b/mock-app-verifier/tests/verifier_tests.ts @@ -39,6 +39,7 @@ import { updateMerkleTreeForTest, VerifierTwo, Action, + useWallet, } from "light-sdk"; import { BN } from "@coral-xyz/anchor"; @@ -98,7 +99,7 @@ describe("Verifier Two test", () => { [USER_TOKEN_ACCOUNT], ); - let lightProvider = await LightProvider.native(ADMIN_AUTH_KEYPAIR); + let lightProvider = await LightProvider.init(ADMIN_AUTH_KEYPAIR); @@ -182,7 +183,7 @@ describe("Verifier Two test", () => { // Withdrawal var tokenRecipient = recipientTokenAccount; - let lightProviderWithdrawal = await LightProvider.native( + let lightProviderWithdrawal = await LightProvider.init( ADMIN_AUTH_KEYPAIR, ); const relayerRecipient = SolanaKeypair.generate().publicKey; @@ -387,7 +388,7 @@ describe("Verifier Two test", () => { ), "confirmed", ); - tmp_tx.provider.nodeWallet = wrongSinger; + tmp_tx.provider.wallet = useWallet(wrongSinger); tmp_tx.params.relayer.accounts.relayerPubkey = wrongSinger.publicKey; await sendTestTx(tmp_tx, "ProofVerificationFails"); } diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity new file mode 100644 index 0000000000..9937b9e174 --- /dev/null +++ b/node_modules/.yarn-integrity @@ -0,0 +1,10 @@ +{ + "systemParams": "darwin-arm64-93", + "modulesFolders": [], + "flags": [], + "linkedModules": [], + "topLevelPatterns": [], + "lockfileEntries": {}, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/relayer/package-lock.json b/relayer/package-lock.json index 4648d7ea73..d429b9bc5d 100644 --- a/relayer/package-lock.json +++ b/relayer/package-lock.json @@ -17,23 +17,20 @@ "devDependencies": { "@types/express": "^4.17.17", "@types/node": "^18.14.1", + "@types/node-fetch": "^2.6.2", "ts-node": "^10.9.1", "typescript": "^4.9.5" } }, - "../light-sdk": { - "extraneous": true - }, "../light-sdk-ts": { - "name": "light-sdk", "version": "0.0.1", "license": "UNLICENSED", "dependencies": { - "@coral-xyz/anchor": "^0.26.0", + "@coral-xyz/anchor": "0.26.0", "@noble/hashes": "^1.1.5", "@solana/spl-account-compression": "^0.1.5", "@solana/spl-token": "0.3.7", - "@solana/web3.js": "1.73.2", + "@solana/web3.js": "^1.73.2", "axios": "^1.3.4", "circomlib": "^2.0.5", "circomlibjs": "^0.1.7", @@ -60,9 +57,10 @@ } }, "node_modules/@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -74,6 +72,7 @@ "version": "0.26.0", "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.26.0.tgz", "integrity": "sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==", + "license": "(MIT OR Apache-2.0)", "dependencies": { "@coral-xyz/borsh": "^0.26.0", "@solana/web3.js": "^1.68.0", @@ -98,12 +97,14 @@ "node_modules/@coral-xyz/anchor/node_modules/superstruct": { "version": "0.15.5", "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", - "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==" + "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==", + "license": "MIT" }, "node_modules/@coral-xyz/borsh": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.26.0.tgz", "integrity": "sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==", + "license": "Apache-2.0", "dependencies": { "bn.js": "^5.1.2", "buffer-layout": "^1.2.0" @@ -120,6 +121,7 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -132,6 +134,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -140,39 +143,43 @@ "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "node_modules/@noble/ed25519": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz", - "integrity": "sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz", + "integrity": "sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==", "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } - ] + ], + "license": "MIT" }, "node_modules/@noble/hashes": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz", - "integrity": "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", + "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } - ] + ], + "license": "MIT" }, "node_modules/@noble/secp256k1": { "version": "1.7.1", @@ -183,12 +190,14 @@ "type": "individual", "url": "https://paulmillr.com/funding/" } - ] + ], + "license": "MIT" }, "node_modules/@solana/buffer-layout": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", + "license": "MIT", "dependencies": { "buffer": "~6.0.3" }, @@ -196,10 +205,34 @@ "node": ">=5.10" } }, - "node_modules/@solana/buffer-layout/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "node_modules/@solana/web3.js": { + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.74.0.tgz", + "integrity": "sha512-RKZyPqizPCxmpMGfpu4fuplNZEWCrhRBjjVstv5QnAJvgln1jgOfgui+rjl1ExnqDnWKg9uaZ5jtGROH/cwabg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@noble/ed25519": "^1.7.0", + "@noble/hashes": "^1.1.2", + "@noble/secp256k1": "^1.6.3", + "@solana/buffer-layout": "^4.0.0", + "agentkeepalive": "^4.2.1", + "bigint-buffer": "^1.1.5", + "bn.js": "^5.0.0", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.1", + "fast-stable-stringify": "^1.0.0", + "jayson": "^3.4.4", + "node-fetch": "^2.6.7", + "rpc-websockets": "^7.5.1", + "superstruct": "^0.14.2" + } + }, + "node_modules/@solana/web3.js/node_modules/buffer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", + "integrity": "sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==", "funding": [ { "type": "github", @@ -214,66 +247,46 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, - "node_modules/@solana/web3.js": { - "version": "1.73.2", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.73.2.tgz", - "integrity": "sha512-9WACF8W4Nstj7xiDw3Oom22QmrhBh0VyZyZ7JvvG3gOxLWLlX3hvm5nPVJOGcCE/9fFavBbCUb5A6CIuvMGdoA==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "@noble/ed25519": "^1.7.0", - "@noble/hashes": "^1.1.2", - "@noble/secp256k1": "^1.6.3", - "@solana/buffer-layout": "^4.0.0", - "agentkeepalive": "^4.2.1", - "bigint-buffer": "^1.1.5", - "bn.js": "^5.0.0", - "borsh": "^0.7.0", - "bs58": "^4.0.1", - "buffer": "6.0.1", - "fast-stable-stringify": "^1.0.0", - "jayson": "^3.4.4", - "node-fetch": "2", - "rpc-websockets": "^7.5.0", - "superstruct": "^0.14.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -283,6 +296,7 @@ "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -292,6 +306,7 @@ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -304,6 +319,7 @@ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -314,30 +330,46 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "18.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.1.tgz", - "integrity": "sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==" + "version": "18.15.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz", + "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==", + "license": "MIT" + }, + "node_modules/@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/serve-static": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/mime": "*", "@types/node": "*" @@ -347,6 +379,7 @@ "version": "7.4.7", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -355,6 +388,7 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -368,6 +402,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -380,17 +415,19 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", + "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", + "license": "MIT", "dependencies": { "debug": "^4.1.0", - "depd": "^1.1.2", + "depd": "^2.0.0", "humanize-ms": "^1.2.1" }, "engines": { @@ -401,6 +438,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -413,34 +451,37 @@ } } }, - "node_modules/agentkeepalive/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/agentkeepalive/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" }, "node_modules/base-x": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "license": "MIT", "dependencies": { "safe-buffer": "^5.0.1" } @@ -462,13 +503,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/bigint-buffer": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "bindings": "^1.3.0" }, @@ -480,6 +523,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", "dependencies": { "file-uri-to-path": "1.0.0" } @@ -487,12 +531,14 @@ "node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" }, "node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", @@ -516,6 +562,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", "dependencies": { "bn.js": "^5.2.0", "bs58": "^4.0.0", @@ -526,14 +573,15 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", "dependencies": { "base-x": "^3.0.2" } }, "node_modules/buffer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", - "integrity": "sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -548,6 +596,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -557,6 +606,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz", "integrity": "sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==", + "license": "MIT", "engines": { "node": ">=4.5" } @@ -566,6 +616,7 @@ "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", "hasInstallScript": true, + "license": "MIT", "optional": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -578,6 +629,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -586,6 +638,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -598,6 +651,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -605,15 +659,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -625,6 +694,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -633,6 +703,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -640,18 +711,21 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "license": "MIT", "dependencies": { "node-fetch": "2.6.7" } @@ -660,6 +734,7 @@ "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -679,6 +754,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz", "integrity": "sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -690,14 +766,22 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, + "node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/delay": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -705,10 +789,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -717,6 +812,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -727,6 +823,7 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -735,6 +832,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -743,12 +841,14 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -756,12 +856,14 @@ "node_modules/es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" }, "node_modules/es6-promisify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "license": "MIT", "dependencies": { "es6-promise": "^4.0.3" } @@ -769,12 +871,14 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -782,12 +886,14 @@ "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -836,17 +942,20 @@ "node_modules/fast-stable-stringify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", - "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==" + "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", + "license": "MIT" }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" }, "node_modules/finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -860,10 +969,26 @@ "node": ">= 0.8" } }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -872,6 +997,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -879,12 +1005,14 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "license": "MIT" }, "node_modules/get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -898,6 +1026,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.1" }, @@ -909,6 +1038,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -920,6 +1050,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -935,6 +1066,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", "dependencies": { "ms": "^2.0.0" } @@ -943,6 +1075,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -967,17 +1100,20 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -986,6 +1122,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "license": "MIT", "peerDependencies": { "ws": "*" } @@ -994,6 +1131,7 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/jayson/-/jayson-3.7.0.tgz", "integrity": "sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==", + "license": "MIT", "dependencies": { "@types/connect": "^3.4.33", "@types/node": "^12.12.54", @@ -1019,17 +1157,20 @@ "node_modules/jayson/node_modules/@types/node": { "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT" }, "node_modules/js-sha256": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", - "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==", + "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" }, "node_modules/jsonparse": { "version": "1.3.1", @@ -1037,12 +1178,14 @@ "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "license": "(MIT OR Apache-2.0)", "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -1061,12 +1204,14 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -1075,12 +1220,14 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1088,12 +1235,14 @@ "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "license": "MIT" }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1102,6 +1251,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -1113,6 +1263,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1121,6 +1272,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -1129,14 +1281,16 @@ } }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1145,6 +1299,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -1154,6 +1309,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -1173,6 +1329,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "license": "MIT", "optional": true, "bin": { "node-gyp-build": "bin.js", @@ -1184,6 +1341,7 @@ "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1192,6 +1350,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -1202,12 +1361,14 @@ "node_modules/pako": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", - "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -1215,12 +1376,14 @@ "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "license": "MIT" }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -1233,6 +1396,7 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -1247,6 +1411,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1255,6 +1420,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -1268,12 +1434,14 @@ "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" }, "node_modules/rpc-websockets": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.0.tgz", - "integrity": "sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.1.tgz", + "integrity": "sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==", + "license": "LGPL-3.0-only", "dependencies": { "@babel/runtime": "^7.17.2", "eventemitter3": "^4.0.7", @@ -1290,9 +1458,10 @@ } }, "node_modules/rpc-websockets/node_modules/ws": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", - "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -1326,17 +1495,20 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -1356,15 +1528,11 @@ "node": ">= 0.8.0" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "node_modules/serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -1378,12 +1546,14 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -1397,6 +1567,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -1406,6 +1577,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -1413,7 +1585,8 @@ "node_modules/superstruct": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", - "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" + "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==", + "license": "MIT" }, "node_modules/text-encoding-utf-8": { "version": "1.0.2", @@ -1423,12 +1596,14 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } @@ -1436,18 +1611,21 @@ "node_modules/toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "license": "MIT" }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, "node_modules/ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, + "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -1489,12 +1667,14 @@ "node_modules/tslib": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "license": "0BSD" }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -1508,6 +1688,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -1520,6 +1701,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -1529,6 +1711,7 @@ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "hasInstallScript": true, + "license": "MIT", "optional": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -1541,6 +1724,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -1549,6 +1733,7 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -1557,12 +1742,14 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -1570,12 +1757,14 @@ "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -1585,6 +1774,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -1606,6 +1796,7 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1613,9 +1804,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", "requires": { "regenerator-runtime": "^0.13.11" } @@ -1690,14 +1881,14 @@ } }, "@noble/ed25519": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz", - "integrity": "sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==" + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz", + "integrity": "sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==" }, "@noble/hashes": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.5.tgz", - "integrity": "sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", + "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==" }, "@noble/secp256k1": { "version": "1.7.1", @@ -1710,23 +1901,12 @@ "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", "requires": { "buffer": "~6.0.3" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - } } }, "@solana/web3.js": { - "version": "1.73.2", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.73.2.tgz", - "integrity": "sha512-9WACF8W4Nstj7xiDw3Oom22QmrhBh0VyZyZ7JvvG3gOxLWLlX3hvm5nPVJOGcCE/9fFavBbCUb5A6CIuvMGdoA==", + "version": "1.74.0", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.74.0.tgz", + "integrity": "sha512-RKZyPqizPCxmpMGfpu4fuplNZEWCrhRBjjVstv5QnAJvgln1jgOfgui+rjl1ExnqDnWKg9uaZ5jtGROH/cwabg==", "requires": { "@babel/runtime": "^7.12.5", "@noble/ed25519": "^1.7.0", @@ -1741,9 +1921,20 @@ "buffer": "6.0.1", "fast-stable-stringify": "^1.0.0", "jayson": "^3.4.4", - "node-fetch": "2", - "rpc-websockets": "^7.5.0", + "node-fetch": "^2.6.7", + "rpc-websockets": "^7.5.1", "superstruct": "^0.14.2" + }, + "dependencies": { + "buffer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", + "integrity": "sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } } }, "@tsconfig/node10": { @@ -1818,9 +2009,19 @@ "dev": true }, "@types/node": { - "version": "18.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.1.tgz", - "integrity": "sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==" + "version": "18.15.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz", + "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==" + }, + "@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + } }, "@types/qs": { "version": "6.9.7", @@ -1874,12 +2075,12 @@ "dev": true }, "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", + "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", "requires": { "debug": "^4.1.0", - "depd": "^1.1.2", + "depd": "^2.0.0", "humanize-ms": "^1.2.1" }, "dependencies": { @@ -1891,11 +2092,6 @@ "ms": "2.1.2" } }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1914,6 +2110,12 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, "base-x": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", @@ -1986,9 +2188,9 @@ } }, "buffer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", - "integrity": "sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -2027,6 +2229,15 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -2090,6 +2301,13 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } } }, "delay": { @@ -2097,6 +2315,12 @@ "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==" }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2227,6 +2451,17 @@ "unpipe": "~1.0.0" } }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2311,7 +2546,8 @@ "isomorphic-ws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==" + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "requires": {} }, "jayson": { "version": "3.7.0", @@ -2367,11 +2603,11 @@ "light-sdk": { "version": "file:../light-sdk-ts", "requires": { - "@coral-xyz/anchor": "^0.26.0", + "@coral-xyz/anchor": "0.26.0", "@noble/hashes": "^1.1.5", "@solana/spl-account-compression": "^0.1.5", "@solana/spl-token": "0.3.7", - "@solana/web3.js": "1.73.2", + "@solana/web3.js": "^1.73.2", "@types/bn.js": "^5.1.0", "@types/chai": "^4.3.0", "@types/chai-as-promised": "^7.1.5", @@ -2448,9 +2684,9 @@ } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "negotiator": { "version": "0.6.3", @@ -2547,9 +2783,9 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "rpc-websockets": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.0.tgz", - "integrity": "sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.1.tgz", + "integrity": "sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==", "requires": { "@babel/runtime": "^7.17.2", "bufferutil": "^4.0.1", @@ -2560,9 +2796,10 @@ }, "dependencies": { "ws": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", - "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==" + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "requires": {} } } }, @@ -2594,13 +2831,6 @@ "on-finished": "2.4.1", "range-parser": "~1.2.1", "statuses": "2.0.1" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } } }, "serve-static": { diff --git a/relayer/package.json b/relayer/package.json index 1bc31db84d..b30f68b725 100644 --- a/relayer/package.json +++ b/relayer/package.json @@ -23,6 +23,7 @@ "devDependencies": { "@types/express": "^4.17.17", "@types/node": "^18.14.1", + "@types/node-fetch": "^2.6.2", "ts-node": "^10.9.1", "typescript": "^4.9.5" } diff --git a/relayer/runScript.sh b/relayer/runScript.sh index 9e5c6ca670..15c5e0a277 100644 --- a/relayer/runScript.sh +++ b/relayer/runScript.sh @@ -1,4 +1,4 @@ #!/bin/bash -e -../../solana/validator/solana-test-validator --reset --limit-ledger-size 500000000 --faucet-port 9002 --rpc-port 8899 --bpf-program J1RRetZ4ujphU75LP8RadjXMf3sA12yC2R44CF7PmU7i ../light-system-programs/target/deploy/verifier_program_zero.so --bpf-program JA5cjkRJ1euVi9xLWsCJVzsRzEkT8vcC4rqw9sVAo5d6 ../light-system-programs/target/deploy/merkle_tree_program.so --bpf-program 3KS2k14CmtnuVv2fvYcvdrNgC94Y11WETBpMUGgXyWZL ../light-system-programs/target/deploy/verifier_program_one.so --bpf-program noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV ../../solana/web3.js/test/fixtures/noop-program/solana_sbf_rust_noop.so --bpf-program Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS ../light-system-programs/target/deploy/verifier_program.so --quiet & -sleep 7 +../../solana/validator/solana-test-validator --reset --limit-ledger-size 500000000 --faucet-port 9002 --rpc-port 8899 --bpf-program J1RRetZ4ujphU75LP8RadjXMf3sA12yC2R44CF7PmU7i ../light-system-programs/target/deploy/verifier_program_zero.so --bpf-program JA5cjkRJ1euVi9xLWsCJVzsRzEkT8vcC4rqw9sVAo5d6 ../light-system-programs/target/deploy/merkle_tree_program.so --bpf-program 3KS2k14CmtnuVv2fvYcvdrNgC94Y11WETBpMUGgXyWZL ../light-system-programs/target/deploy/verifier_program_one.so --bpf-program noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV ../../solana/web3.js/test/fixtures/noop-program/solana_sbf_rust_noop.so --bpf-program Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS ../light-system-programs/target/deploy/verifier_program_storage.so --quiet & +sleep 7 solana airdrop 100000 ZBUKxVWviAJBy12edp5H6kvhcatGYW3BV4ijbgxpVSq && solana airdrop 100000 ALA2cnz41Wa2v2EYUdkYHsg7VnKsbH1j7secM5aiP8k && solana airdrop 100000 8Ers2bBEWExdrh7KDFTrRbauPbFeEvsHz3UX4vxcK9xY && solana airdrop 10000 BEKmoiPHRUxUPik2WQuKqkoFLLkieyNPrTDup5h8c9S7 diff --git a/relayer/src/index.ts b/relayer/src/index.ts index 4560bbd098..90528772ed 100644 --- a/relayer/src/index.ts +++ b/relayer/src/index.ts @@ -30,7 +30,7 @@ app.use((req, res, next) => { app.post("/updatemerkletree", async function (req, res) { try { - const provider = await Provider.native(ADMIN_AUTH_KEYPAIR); + const provider = await Provider.init(ADMIN_AUTH_KEYPAIR); console.log({provider}) await updateMerkleTreeForTest(provider.provider?.connection!); return res.status(200).json({ status: "ok" }); @@ -55,7 +55,7 @@ app.post("/relay", async function (req, res) { app.get("/merkletree", async function (req, res) { try { - const provider = await Provider.native(ADMIN_AUTH_KEYPAIR); + const provider = await Provider.init(ADMIN_AUTH_KEYPAIR); const merkletreeIsInited = await provider.provider!.connection.getAccountInfo(MERKLE_TREE_KEY); if (!merkletreeIsInited) { @@ -80,7 +80,7 @@ app.get("/merkletree", async function (req, res) { app.get("/lookuptable", async function (req, res) { try { - const provider = await Provider.native(ADMIN_AUTH_KEYPAIR); + const provider = await Provider.init(ADMIN_AUTH_KEYPAIR); const LOOK_UP_TABLE = await initLookUpTableFromFile(provider.provider!); return res.status(200).json({ data: LOOK_UP_TABLE }); } catch (e) { diff --git a/relayer/src/relay.ts b/relayer/src/relay.ts index eca4ff23a4..ea959d6074 100644 --- a/relayer/src/relay.ts +++ b/relayer/src/relay.ts @@ -1,9 +1,12 @@ import { Keypair } from "@solana/web3.js"; +import { Request } from "express"; import { Provider, updateMerkleTreeForTest } from "light-sdk"; import { sendTransaction } from "./sendTransaction"; -export async function relay(req: express.request, relayerPayer: Keypair) { +export async function relay( + req: Request, relayerPayer: Keypair + ) { const { instructions } = req.body; - const provider = await Provider.native(relayerPayer); + const provider = await Provider.init(relayerPayer); try { let ixs = JSON.parse(instructions); diff --git a/relayer/src/sendTransaction.ts b/relayer/src/sendTransaction.ts index 02f2db0038..a29eba026b 100644 --- a/relayer/src/sendTransaction.ts +++ b/relayer/src/sendTransaction.ts @@ -5,7 +5,7 @@ import { AddressLookupTableAccount, VersionedTransaction, } from "@solana/web3.js"; -import { confirmConfig, Provider } from "light-sdk"; +import { confirmConfig, Provider, useWallet } from "light-sdk"; export async function sendTransaction( ix: any, @@ -17,7 +17,7 @@ export async function sendTransaction( await provider.provider.connection.getRecentBlockhash("confirmed") ).blockhash; const txMsg = new TransactionMessage({ - payerKey: provider.nodeWallet!.publicKey, + payerKey: provider.wallet!.publicKey, instructions: [ ComputeBudgetProgram.setComputeUnitLimit({ units: 1_400_000 }), ix, @@ -50,8 +50,7 @@ export async function sendTransaction( let retries = 3; let res; while (retries > 0) { - tx.sign([provider.nodeWallet!]); - + tx = await provider.wallet.signTransaction(tx); try { let serializedTx = tx.serialize(); console.log("tx: "); diff --git a/relayer/tsconfig.json b/relayer/tsconfig.json index 0d96e23b6f..f6dc79e07a 100644 --- a/relayer/tsconfig.json +++ b/relayer/tsconfig.json @@ -10,10 +10,12 @@ "moduleResolution": "node", "rootDirs": ["src", "generated"], "baseUrl": "src", + "skipLibCheck": true, "useUnknownInCatchVariables": false }, "include": ["src", "__tests__", "tests"], "exclude": ["node_modules", "**/tests/*"], + "dry": false, "debug": false } diff --git a/relayer/yarn.lock b/relayer/yarn.lock index 48edcf6d21..da25ee3ff0 100644 --- a/relayer/yarn.lock +++ b/relayer/yarn.lock @@ -9,7 +9,7 @@ dependencies: regenerator-runtime "^0.13.11" -"@coral-xyz/anchor@^0.26.0": +"@coral-xyz/anchor@0.26.0", "@coral-xyz/anchor@^0.26.0": version "0.26.0" resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.26.0.tgz#c8e4f7177e93441afd030f22d777d54d0194d7d1" integrity sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg== @@ -443,9 +443,9 @@ integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== "@noble/hashes@^1.1.2", "@noble/hashes@^1.1.5": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" - integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" + integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== "@noble/secp256k1@^1.6.3": version "1.7.1" @@ -470,14 +470,15 @@ buffer "~6.0.3" "@solana/spl-account-compression@^0.1.5": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@solana/spl-account-compression/-/spl-account-compression-0.1.6.tgz#25233866291439162a7f0a862fb96e5018f3a4b1" - integrity sha512-UZQo4B1yWYSSAryAeBfpeUI0LVSx7Ye2MBqoaBCPkYsPNfklrG2E6saDm26wITBJVA+SBGIdBaxlWWRj8YMmjA== + version "0.1.7" + resolved "https://registry.yarnpkg.com/@solana/spl-account-compression/-/spl-account-compression-0.1.7.tgz#d1ac7e6ecb73da7fd66d998334ce1fca47931726" + integrity sha512-7BKXDpm2rRxmkIWAxq7jm/haRvLp4ZOaM9NMz3+zZtE+z+cWPY9lRKEWdH+RCAWNm1b0J0J+seqwb3hgf79nkA== dependencies: "@metaplex-foundation/beet" "^0.7.1" "@metaplex-foundation/beet-solana" "^0.4.0" bn.js "^5.2.1" borsh "^0.7.0" + js-sha3 "^0.8.0" typescript-collections "^1.3.3" "@solana/spl-token@0.3.7": @@ -489,32 +490,10 @@ "@solana/buffer-layout-utils" "^0.2.0" buffer "^6.0.3" -"@solana/web3.js@1.73.2": - version "1.73.2" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.73.2.tgz#4b30cd402b35733dae3a7d0b638be26a7742b395" - integrity sha512-9WACF8W4Nstj7xiDw3Oom22QmrhBh0VyZyZ7JvvG3gOxLWLlX3hvm5nPVJOGcCE/9fFavBbCUb5A6CIuvMGdoA== - dependencies: - "@babel/runtime" "^7.12.5" - "@noble/ed25519" "^1.7.0" - "@noble/hashes" "^1.1.2" - "@noble/secp256k1" "^1.6.3" - "@solana/buffer-layout" "^4.0.0" - agentkeepalive "^4.2.1" - bigint-buffer "^1.1.5" - bn.js "^5.0.0" - borsh "^0.7.0" - bs58 "^4.0.1" - buffer "6.0.1" - fast-stable-stringify "^1.0.0" - jayson "^3.4.4" - node-fetch "2" - rpc-websockets "^7.5.0" - superstruct "^0.14.2" - "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.73.2": - version "1.73.3" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.73.3.tgz#60e6bd68f6f364d4be360b1e0a03a0a68468a029" - integrity sha512-vHRMo589XEIpoujpE2sZZ1aMZvfA1ImKfNxobzEFyMb+H5j6mRRUXfdgWD0qJ0sm11e5BcBC7HPeRXJB+7f3Lg== + version "1.74.0" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.74.0.tgz#dbcbeabb830dd7cbbcf5e31404ca79c9785cbf2d" + integrity sha512-RKZyPqizPCxmpMGfpu4fuplNZEWCrhRBjjVstv5QnAJvgln1jgOfgui+rjl1ExnqDnWKg9uaZ5jtGROH/cwabg== dependencies: "@babel/runtime" "^7.12.5" "@noble/ed25519" "^1.7.0" @@ -592,10 +571,18 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== +"@types/node-fetch@^2.6.2": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + "@types/node@*", "@types/node@^18.14.1": - version "18.14.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.6.tgz#ae1973dd2b1eeb1825695bb11ebfb746d27e3e93" - integrity sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA== + version "18.15.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.3.tgz#f0b991c32cfc6a4e7f3399d6cb4b8cf9a0315014" + integrity sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw== "@types/node@^12.12.54": version "12.20.55" @@ -709,9 +696,9 @@ axios@^1.3.4: proxy-from-env "^1.1.0" b4a@^1.0.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.1.tgz#9effac93a469a868d024e16fd77162c653544cbd" - integrity sha512-AsKjNhz72yxteo/0EtQEiwkMUgk/tGmycXlbG4g3Ard2/ULtNLUykGOkeK0egmN27h0xMAhb76jYccW+XTBExA== + version "1.6.3" + resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.3.tgz#cce6e8a2f0d0774e5fe8062086827e979970266d" + integrity sha512-aX6/FqpWQve8VN9kyTExy7GlmwNShvxcCWWD5QVR3ZbRlyBGtCrG5Autu95xxSPH4CRs+5PSV4d7PRnWpmqFlA== balanced-match@^1.0.0: version "1.0.2" @@ -1072,9 +1059,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== ejs@^3.1.6: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" @@ -1259,6 +1246,15 @@ follow-redirects@^1.15.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -1433,11 +1429,11 @@ jsonparse@^1.2.0: "light-sdk@file:../light-sdk-ts": version "0.0.1" dependencies: - "@coral-xyz/anchor" "^0.26.0" + "@coral-xyz/anchor" "0.26.0" "@noble/hashes" "^1.1.5" "@solana/spl-account-compression" "^0.1.5" "@solana/spl-token" "0.3.7" - "@solana/web3.js" "1.73.2" + "@solana/web3.js" "^1.73.2" axios "^1.3.4" circomlib "^2.0.5" circomlibjs "^0.1.7" @@ -1562,13 +1558,6 @@ node-addon-api@^3.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -node-fetch@2, node-fetch@^2.6.7: - version "2.6.9" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" - integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== - dependencies: - whatwg-url "^5.0.0" - node-fetch@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -1576,6 +1565,13 @@ node-fetch@2.6.7: dependencies: whatwg-url "^5.0.0" +node-fetch@^2.6.7: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + node-gyp-build@^4.2.2, node-gyp-build@^4.3.0: version "4.6.0" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" @@ -1654,9 +1650,9 @@ raw-body@2.5.1: unpipe "1.0.0" readable-stream@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.1.tgz#f9f9b5f536920253b3d26e7660e7da4ccff9bb62" - integrity sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ== + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -1667,7 +1663,7 @@ regenerator-runtime@^0.13.11: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -rpc-websockets@^7.5.0, rpc-websockets@^7.5.1: +rpc-websockets@^7.5.1: version "7.5.1" resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.1.tgz#e0a05d525a97e7efc31a0617f093a13a2e10c401" integrity sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w== @@ -1946,9 +1942,9 @@ ws@^7.4.5: integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.5.0: - version "8.12.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.1.tgz#c51e583d79140b5e42e39be48c934131942d4a8f" - integrity sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew== + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== yn@3.1.1: version "3.1.1"