diff --git a/.github/workflows/staging-website.yml b/.github/workflows/staging-website.yml index 999aaf04d..b9fc134de 100644 --- a/.github/workflows/staging-website.yml +++ b/.github/workflows/staging-website.yml @@ -18,7 +18,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: nightly-2024-05-14 + toolchain: nightly-2024-08-12 override: true components: rustfmt, rust-src diff --git a/.github/workflows/test-website.yml b/.github/workflows/test-website.yml index fbd9407e4..87fd51183 100644 --- a/.github/workflows/test-website.yml +++ b/.github/workflows/test-website.yml @@ -15,7 +15,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: nightly-2024-05-14 + toolchain: nightly-2024-08-12 override: true components: rustfmt, rust-src diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index ec7036618..52e219e54 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -18,7 +18,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: nightly-2024-05-14 + toolchain: nightly-2024-08-12 override: true components: rustfmt, rust-src diff --git a/create-leo-app/template-node-ts/src/index.ts b/create-leo-app/template-node-ts/src/index.ts index 58ff32cfa..7a0c2e903 100644 --- a/create-leo-app/template-node-ts/src/index.ts +++ b/create-leo-app/template-node-ts/src/index.ts @@ -26,15 +26,14 @@ async function localProgramExecution(program, programName, aleoFunction, inputs) programManager.setKeyProvider(keyProvider); // Pre-synthesize the program keys and then cache them in memory using key provider - const keyPair = await programManager.synthesizeKeys(hello_hello_program, aleoFunction, inputs); + try { + const keyPair = await programManager.synthesizeKeys(hello_hello_program, aleoFunction, inputs); - if (keyPair instanceof Error) { - throw new Error(`Failed to synthesize keys: ${keyPair.message}`); - } else { programManager.keyProvider.cacheKeys(`${programName}:${aleoFunction}`, keyPair); - } - programManager.keyProvider.cacheKeys(`${programName}:${aleoFunction}`, keyPair); + } catch (e) { + throw new Error(`Failed to synthesize keys: ${e.message}`); + } // Specify parameters for the key provider to use search for program keys. In particular specify the cache key // that was used to cache the keys in the previous step. diff --git a/create-leo-app/template-offline-public-transaction-ts/src/index.ts b/create-leo-app/template-offline-public-transaction-ts/src/index.ts index 73ecdf5d3..489d55187 100644 --- a/create-leo-app/template-offline-public-transaction-ts/src/index.ts +++ b/create-leo-app/template-offline-public-transaction-ts/src/index.ts @@ -4,7 +4,7 @@ import { getLocalKey, preDownloadBondingKeys, preDownloadTransferKeys } from "./ await initThreadPool(); /// Build transfer public transaction without connection to the internet -async function buildTransferPublicTxOffline(recipientAddress: Address, amount: number, latestStateRoot: string, keyPaths: {}): Promise { +async function buildTransferPublicTxOffline(recipientAddress: Address, amount: number, latestStateRoot: string, keyPaths: {}): Promise { // Create an offline program manager const programManager = new ProgramManager(); @@ -47,7 +47,7 @@ async function buildTransferPublicTxOffline(recipientAddress: Address, amount: n } /// Build bonding and unbonding transactions without connection to the internet -async function buildBondingTxOffline(stakerAddress: Address, validatorAddress: Address, withdrawalAddress: Address, amount: number, latestStateRoot: string, keyPaths: {}): Promise { +async function buildBondingTxOffline(stakerAddress: Address, validatorAddress: Address, withdrawalAddress: Address, amount: number, latestStateRoot: string, keyPaths: {}): Promise { // Create an offline program manager const programManager = new ProgramManager(); diff --git a/rust-toolchain.toml b/rust-toolchain.toml index b20323219..260f1ff30 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "nightly-2024-05-14" +channel = "nightly-2024-08-12" components = [ "rust-std", "rust-src" ] targets = [ "wasm32-unknown-unknown" ] diff --git a/sdk/src/account.ts b/sdk/src/account.ts index 13b57099c..053239b3b 100644 --- a/sdk/src/account.ts +++ b/sdk/src/account.ts @@ -61,7 +61,7 @@ export class Account { * Attempts to create an account from a private key ciphertext * @param {PrivateKeyCiphertext | string} ciphertext * @param {string} password - * @returns {PrivateKey | Error} + * @returns {PrivateKey} * * @example * const ciphertext = PrivateKey.newEncrypted("password"); diff --git a/sdk/src/function-key-provider.ts b/sdk/src/function-key-provider.ts index d901c4481..76cd24de0 100644 --- a/sdk/src/function-key-provider.ts +++ b/sdk/src/function-key-provider.ts @@ -61,16 +61,16 @@ interface FunctionKeyProvider { /** * Get bond_public function keys from the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the bond_public function + * @returns {Promise} Proving and verifying keys for the bond_public function */ - bondPublicKeys(): Promise; + bondPublicKeys(): Promise; /** * Get bond_validator function keys from the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the bond_validator function + * @returns {Promise} Proving and verifying keys for the bond_validator function */ - bondValidatorKeys(): Promise; + bondValidatorKeys(): Promise; /** * Cache a set of keys. This will overwrite any existing keys with the same keyId. The user can check if a keyId @@ -84,15 +84,15 @@ interface FunctionKeyProvider { /** * Get unbond_public function keys from the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the unbond_public function + * @returns {Promise} Proving and verifying keys for the unbond_public function */ - claimUnbondPublicKeys(): Promise; + claimUnbondPublicKeys(): Promise; /** * Get arbitrary function keys from a provider * * @param {KeySearchParams | undefined} params - Optional search parameters for the key provider - * @returns {Promise} Proving and verifying keys for the specified program + * @returns {Promise} Proving and verifying keys for the specified program * * @example * // Create a search object which implements the KeySearchParams interface @@ -107,7 +107,7 @@ interface FunctionKeyProvider { * * // Create a new object which implements the KeyProvider interface * class IndexDbKeyProvider implements FunctionKeyProvider { - * async functionKeys(params: KeySearchParams): Promise { + * async functionKeys(params: KeySearchParams): Promise { * return new Promise((resolve, reject) => { * const request = indexedDB.open(params.db, 1); * @@ -153,41 +153,41 @@ interface FunctionKeyProvider { * const searchParams = new IndexDbSearch({db: "keys", keyId: "credits.aleo:transferPrivate"}); * const [transferPrivateProvingKey, transferPrivateVerifyingKey] = await keyProvider.functionKeys(searchParams); */ - functionKeys(params?: KeySearchParams): Promise; + functionKeys(params?: KeySearchParams): Promise; /** * Get fee_private function keys from the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the join function + * @returns {Promise} Proving and verifying keys for the join function */ - feePrivateKeys(): Promise; + feePrivateKeys(): Promise; /** * Get fee_public function keys from the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the join function + * @returns {Promise} Proving and verifying keys for the join function */ - feePublicKeys(): Promise; + feePublicKeys(): Promise; /** * Get join function keys from the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the join function + * @returns {Promise} Proving and verifying keys for the join function */ - joinKeys(): Promise; + joinKeys(): Promise; /** * Get split function keys from the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the join function + * @returns {Promise} Proving and verifying keys for the join function */ - splitKeys(): Promise; + splitKeys(): Promise; /** * Get keys for a variant of the transfer function from the credits.aleo program * * @param {string} visibility Visibility of the transfer function (private, public, privateToPublic, publicToPrivate) - * @returns {Promise} Proving and verifying keys for the specified transfer function + * @returns {Promise} Proving and verifying keys for the specified transfer function * * @example * // Create a new object which implements the KeyProvider interface @@ -202,14 +202,14 @@ interface FunctionKeyProvider { * // Keys can also be fetched manually * const [transferPublicProvingKey, transferPublicVerifyingKey] = await keyProvider.transferKeys("public"); */ - transferKeys(visibility: string): Promise; + transferKeys(visibility: string): Promise; /** * Get unbond_public function keys from the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the join function + * @returns {Promise} Proving and verifying keys for the join function */ - unBondPublicKeys(): Promise; + unBondPublicKeys(): Promise; } @@ -231,8 +231,8 @@ class AleoKeyProvider implements FunctionKeyProvider { const response = await get(url); const data = await response.arrayBuffer(); return new Uint8Array(data); - } catch (error) { - throw new Error("Error fetching data." + error); + } catch (error: any) { + throw new Error("Error fetching data." + error.message); } } @@ -294,15 +294,15 @@ class AleoKeyProvider implements FunctionKeyProvider { * Get a set of keys from the cache * @param keyId keyId of a proving and verifying key pair * - * @returns {FunctionKeyPair | Error} Proving and verifying keys for the specified program + * @returns {FunctionKeyPair} Proving and verifying keys for the specified program */ - getKeys(keyId: string): FunctionKeyPair | Error { + getKeys(keyId: string): FunctionKeyPair { console.debug(`Checking if key exists in cache. KeyId: ${keyId}`) if (this.cache.has(keyId)) { const [provingKeyBytes, verifyingKeyBytes] = this.cache.get(keyId); return [ProvingKey.fromBytes(provingKeyBytes), VerifyingKey.fromBytes(verifyingKeyBytes)]; } else { - return new Error("Key not found in cache."); + throw new Error("Key not found in cache."); } } @@ -310,7 +310,7 @@ class AleoKeyProvider implements FunctionKeyProvider { * Get arbitrary function keys from a provider * * @param {KeySearchParams} params parameters for the key search in form of: {proverUri: string, verifierUri: string, cacheKey: string} - * @returns {Promise} Proving and verifying keys for the specified program + * @returns {Promise} Proving and verifying keys for the specified program * * @example * // Create a new object which implements the KeyProvider interface @@ -326,16 +326,14 @@ class AleoKeyProvider implements FunctionKeyProvider { * const keySearchParams = { "cacheKey": "myProgram:myFunction" }; * const [transferPrivateProvingKey, transferPrivateVerifyingKey] = await keyProvider.functionKeys(keySearchParams); */ - async functionKeys(params?: KeySearchParams): Promise { + async functionKeys(params?: KeySearchParams): Promise { if (params) { let proverUrl; let verifierUrl; let cacheKey; if ("name" in params && typeof params["name"] == "string") { let key = CREDITS_PROGRAM_KEYS.getKey(params["name"]); - if (!(key instanceof Error)) { - return this.fetchCreditsKeys(key); - } + return this.fetchCreditsKeys(key); } if ("proverUri" in params && typeof params["proverUri"] == "string") { @@ -358,7 +356,7 @@ class AleoKeyProvider implements FunctionKeyProvider { return this.getKeys(cacheKey); } } - throw Error("Invalid parameters provided, must provide either a cacheKey and/or a proverUrl and a verifierUrl"); + throw new Error("Invalid parameters provided, must provide either a cacheKey and/or a proverUrl and a verifierUrl"); } /** @@ -368,7 +366,7 @@ class AleoKeyProvider implements FunctionKeyProvider { * @param {string} proverUrl Url the verifying key * @param {string} cacheKey Key to store the keys in the cache * - * @returns {Promise} Proving and verifying keys for the specified program + * @returns {Promise} Proving and verifying keys for the specified program * * @example * // Create a new AleoKeyProvider object @@ -386,7 +384,7 @@ class AleoKeyProvider implements FunctionKeyProvider { * CREDITS_PROGRAM_KEYS.transfer_private.verifier, * ); */ - async fetchRemoteKeys(proverUrl: string, verifierUrl: string, cacheKey?: string): Promise { + async fetchRemoteKeys(proverUrl: string, verifierUrl: string, cacheKey?: string): Promise { try { // If cache is enabled, check if the keys have already been fetched and return them if they have if (this.cacheOption) { @@ -411,8 +409,8 @@ class AleoKeyProvider implements FunctionKeyProvider { const verifyingKey = (await this.getVerifyingKey(verifierUrl)); return [provingKey, verifyingKey]; } - } catch (error) { - throw new Error(`Error: ${error} fetching fee proving and verifying keys from ${proverUrl} and ${verifierUrl}.`); + } catch (error: any) { + throw new Error(`Error: ${error.message} fetching fee proving and verifying keys from ${proverUrl} and ${verifierUrl}.`); } } @@ -422,9 +420,9 @@ class AleoKeyProvider implements FunctionKeyProvider { * @param proverUrl * @param cacheKey * - * @returns {Promise} Proving key for the specified program + * @returns {Promise} Proving key for the specified program */ - async fetchProvingKey(proverUrl: string, cacheKey?: string): Promise { + async fetchProvingKey(proverUrl: string, cacheKey?: string): Promise { try { // If cache is enabled, check if the keys have already been fetched and return them if they have if (this.cacheOption) { @@ -444,12 +442,12 @@ class AleoKeyProvider implements FunctionKeyProvider { const provingKey = ProvingKey.fromBytes(await this.fetchBytes(proverUrl)); return provingKey; } - } catch (error) { - throw new Error(`Error: ${error} fetching fee proving keys from ${proverUrl}`); + } catch (error: any) { + throw new Error(`Error: ${error.message} fetching fee proving keys from ${proverUrl}`); } } - async fetchCreditsKeys(key: Key): Promise { + async fetchCreditsKeys(key: Key): Promise { try { if (!this.cache.has(key.locator) || !this.cacheOption) { const verifying_key = key.verifyingKey() @@ -462,27 +460,27 @@ class AleoKeyProvider implements FunctionKeyProvider { const keyPair = this.cache.get(key.locator); return [ProvingKey.fromBytes(keyPair[0]), VerifyingKey.fromBytes(keyPair[1])]; } - } catch (error) { - throw new Error(`Error: fetching credits.aleo keys: ${error}`); + } catch (error: any) { + throw new Error(`Error: fetching credits.aleo keys: ${error.message}`); } } - async bondPublicKeys(): Promise { + async bondPublicKeys(): Promise { return this.fetchCreditsKeys(CREDITS_PROGRAM_KEYS.bond_public); } - bondValidatorKeys(): Promise { + bondValidatorKeys(): Promise { return this.fetchCreditsKeys(CREDITS_PROGRAM_KEYS.bond_validator); } - claimUnbondPublicKeys(): Promise { + claimUnbondPublicKeys(): Promise { return this.fetchCreditsKeys(CREDITS_PROGRAM_KEYS.claim_unbond_public) } /** * Returns the proving and verifying keys for the transfer functions in the credits.aleo program * @param {string} visibility Visibility of the transfer function - * @returns {Promise} Proving and verifying keys for the transfer functions + * @returns {Promise} Proving and verifying keys for the transfer functions * * @example * // Create a new AleoKeyProvider @@ -497,7 +495,7 @@ class AleoKeyProvider implements FunctionKeyProvider { * // Keys can also be fetched manually * const [transferPublicProvingKey, transferPublicVerifyingKey] = await keyProvider.transferKeys("public"); */ - async transferKeys(visibility: string): Promise { + async transferKeys(visibility: string): Promise { if (PRIVATE_TRANSFER.has(visibility)) { return await this.fetchCreditsKeys(CREDITS_PROGRAM_KEYS.transfer_private); } else if (PRIVATE_TO_PUBLIC_TRANSFER.has(visibility)) { @@ -516,46 +514,46 @@ class AleoKeyProvider implements FunctionKeyProvider { /** * Returns the proving and verifying keys for the join function in the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the join function + * @returns {Promise} Proving and verifying keys for the join function */ - async joinKeys(): Promise { + async joinKeys(): Promise { return await this.fetchCreditsKeys(CREDITS_PROGRAM_KEYS.join); } /** * Returns the proving and verifying keys for the split function in the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the split function + * @returns {Promise} Proving and verifying keys for the split function * */ - async splitKeys(): Promise { + async splitKeys(): Promise { return await this.fetchCreditsKeys(CREDITS_PROGRAM_KEYS.split); } /** * Returns the proving and verifying keys for the fee_private function in the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the fee function + * @returns {Promise} Proving and verifying keys for the fee function */ - async feePrivateKeys(): Promise { + async feePrivateKeys(): Promise { return await this.fetchCreditsKeys(CREDITS_PROGRAM_KEYS.fee_private); } /** * Returns the proving and verifying keys for the fee_public function in the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the fee function + * @returns {Promise} Proving and verifying keys for the fee function */ - async feePublicKeys(): Promise { + async feePublicKeys(): Promise { return await this.fetchCreditsKeys(CREDITS_PROGRAM_KEYS.fee_public); } /** * Gets a verifying key. If the verifying key is for a credits.aleo function, get it from the wasm cache otherwise * - * @returns {Promise} Verifying key for the function + * @returns {Promise} Verifying key for the function */ // attempt to fetch it from the network - async getVerifyingKey(verifierUri: string): Promise { + async getVerifyingKey(verifierUri: string): Promise { switch (verifierUri) { case CREDITS_PROGRAM_KEYS.bond_public.verifier: return CREDITS_PROGRAM_KEYS.bond_public.verifyingKey(); @@ -597,14 +595,14 @@ class AleoKeyProvider implements FunctionKeyProvider { /// If that fails, try to fetch the verifying key from the network as bytes try { return VerifyingKey.fromBytes(await this.fetchBytes(verifierUri)); - } catch (inner) { - return new Error("Invalid verifying key. Error: " + inner); + } catch (inner: any) { + throw new Error("Invalid verifying key. Error: " + inner.message); } } } } - unBondPublicKeys(): Promise { + unBondPublicKeys(): Promise { return this.fetchCreditsKeys(CREDITS_PROGRAM_KEYS.unbond_public); } } diff --git a/sdk/src/index.ts b/sdk/src/index.ts index 46f9a96fb..d785b0aad 100644 --- a/sdk/src/index.ts +++ b/sdk/src/index.ts @@ -43,11 +43,11 @@ const CREDITS_PROGRAM_KEYS = { transfer_public_as_signer: convert(Metadata.transfer_public_as_signer()), transfer_public_to_private: convert(Metadata.transfer_public_to_private()), unbond_public: convert(Metadata.unbond_public()), - getKey: function(key: string): Key | Error { + getKey: function(key: string): Key { if (this.hasOwnProperty(key)) { return (this as any)[key] as Key; } else { - return new Error(`Key "${key}" not found.`); + throw new Error(`Key "${key}" not found.`); } } }; @@ -106,9 +106,9 @@ const PUBLIC_TO_PRIVATE_TRANSFER = new Set([ "transferPublicToPrivate", ]); -function logAndThrow(message: string): Error { +function logAndThrow(message: string): never { console.error(message); - throw message; + throw new Error(message); } import { Account } from "./account"; diff --git a/sdk/src/network-client.ts b/sdk/src/network-client.ts index cba2bd8f5..177ee0294 100644 --- a/sdk/src/network-client.ts +++ b/sdk/src/network-client.ts @@ -124,7 +124,7 @@ class AleoNetworkClient { amounts: number[] | undefined, maxMicrocredits?: number | undefined, nonces?: string[] | undefined, - ): Promise | Error> { + ): Promise> { nonces = nonces || []; // Ensure start height is not negative if (startHeight < 0) { @@ -190,83 +190,81 @@ class AleoNetworkClient { // Get 50 blocks (or the difference between the start and end if less than 50) const blocks = await this.getBlockRange(start, end); end = start; - if (!(blocks instanceof Error)) { - // Iterate through blocks to find unspent records - for (let i = 0; i < blocks.length; i++) { - const block = blocks[i]; - const transactions = block.transactions; - if (!(typeof transactions === "undefined")) { - for (let j = 0; j < transactions.length; j++) { - const confirmedTransaction = transactions[j]; - // Search for unspent records in execute transactions of credits.aleo - if (confirmedTransaction.type == "execute") { - const transaction = confirmedTransaction.transaction; - if (transaction.execution && !(typeof transaction.execution.transitions == "undefined")) { - for (let k = 0; k < transaction.execution.transitions.length; k++) { - const transition = transaction.execution.transitions[k]; - // Only search for unspent records in credits.aleo (for now) - if (transition.program !== "credits.aleo") { - continue; - } - if (!(typeof transition.outputs == "undefined")) { - for (let l = 0; l < transition.outputs.length; l++) { - const output = transition.outputs[l]; - if (output.type === "record") { - try { - // Create a wasm record ciphertext object from the found output - const record = RecordCiphertext.fromString(output.value); - // Determine if the record is owned by the specified view key - if (record.isOwner(viewKey)) { - // Decrypt the record and get the serial number - const recordPlaintext = record.decrypt(viewKey); - - // If the record has already been found, skip it - const nonce = recordPlaintext.nonce(); - if (nonces.includes(nonce)) { - continue; - } + // Iterate through blocks to find unspent records + for (let i = 0; i < blocks.length; i++) { + const block = blocks[i]; + const transactions = block.transactions; + if (!(typeof transactions === "undefined")) { + for (let j = 0; j < transactions.length; j++) { + const confirmedTransaction = transactions[j]; + // Search for unspent records in execute transactions of credits.aleo + if (confirmedTransaction.type == "execute") { + const transaction = confirmedTransaction.transaction; + if (transaction.execution && !(typeof transaction.execution.transitions == "undefined")) { + for (let k = 0; k < transaction.execution.transitions.length; k++) { + const transition = transaction.execution.transitions[k]; + // Only search for unspent records in credits.aleo (for now) + if (transition.program !== "credits.aleo") { + continue; + } + if (!(typeof transition.outputs == "undefined")) { + for (let l = 0; l < transition.outputs.length; l++) { + const output = transition.outputs[l]; + if (output.type === "record") { + try { + // Create a wasm record ciphertext object from the found output + const record = RecordCiphertext.fromString(output.value); + // Determine if the record is owned by the specified view key + if (record.isOwner(viewKey)) { + // Decrypt the record and get the serial number + const recordPlaintext = record.decrypt(viewKey); + + // If the record has already been found, skip it + const nonce = recordPlaintext.nonce(); + if (nonces.includes(nonce)) { + continue; + } - // Otherwise record the nonce that has been found - const serialNumber = recordPlaintext.serialNumberString(resolvedPrivateKey, "credits.aleo", "credits"); - // Attempt to see if the serial number is spent - try { - await this.getTransitionId(serialNumber); - } catch (error) { - // If it's not found, add it to the list of unspent records - if (!amounts) { - records.push(recordPlaintext); - // If the user specified a maximum number of microcredits, check if the search has found enough - if (typeof maxMicrocredits === "number") { - totalRecordValue += recordPlaintext.microcredits(); - // Exit if the search has found the amount specified - if (totalRecordValue >= BigInt(maxMicrocredits)) { - return records; - } + // Otherwise record the nonce that has been found + const serialNumber = recordPlaintext.serialNumberString(resolvedPrivateKey, "credits.aleo", "credits"); + // Attempt to see if the serial number is spent + try { + await this.getTransitionId(serialNumber); + } catch (error) { + // If it's not found, add it to the list of unspent records + if (!amounts) { + records.push(recordPlaintext); + // If the user specified a maximum number of microcredits, check if the search has found enough + if (typeof maxMicrocredits === "number") { + totalRecordValue += recordPlaintext.microcredits(); + // Exit if the search has found the amount specified + if (totalRecordValue >= BigInt(maxMicrocredits)) { + return records; } } - // If the user specified a list of amounts, check if the search has found them - if (!(typeof amounts === "undefined") && amounts.length > 0) { - let amounts_found = 0; - if (recordPlaintext.microcredits() > amounts[amounts_found]) { - amounts_found += 1; - records.push(recordPlaintext); - // If the user specified a maximum number of microcredits, check if the search has found enough - if (typeof maxMicrocredits === "number") { - totalRecordValue += recordPlaintext.microcredits(); - // Exit if the search has found the amount specified - if (totalRecordValue >= BigInt(maxMicrocredits)) { - return records; - } - } - if (records.length >= amounts.length) { + } + // If the user specified a list of amounts, check if the search has found them + if (!(typeof amounts === "undefined") && amounts.length > 0) { + let amounts_found = 0; + if (recordPlaintext.microcredits() > amounts[amounts_found]) { + amounts_found += 1; + records.push(recordPlaintext); + // If the user specified a maximum number of microcredits, check if the search has found enough + if (typeof maxMicrocredits === "number") { + totalRecordValue += recordPlaintext.microcredits(); + // Exit if the search has found the amount specified + if (totalRecordValue >= BigInt(maxMicrocredits)) { return records; } - } + } + if (records.length >= amounts.length) { + return records; + } } } } - } catch (error) { } + } catch (error) { } } } @@ -298,7 +296,7 @@ class AleoNetworkClient { * @example * const block = networkClient.getBlock(1234); */ - async getBlock(height: number): Promise { + async getBlock(height: number): Promise { try { const block = await this.fetchData("/block/" + height); return block; @@ -315,11 +313,11 @@ class AleoNetworkClient { * @example * const blockRange = networkClient.getBlockRange(2050, 2100); */ - async getBlockRange(start: number, end: number): Promise | Error> { + async getBlockRange(start: number, end: number): Promise> { try { return await this.fetchData>("/blocks?start=" + start + "&end=" + end); } catch (error) { - const errorMessage = "Error fetching blocks between " + start + " and " + end + "." + const errorMessage = `Error fetching blocks between ${start} and ${end}.`; throw new Error(errorMessage); } } @@ -328,9 +326,9 @@ class AleoNetworkClient { * Returns the deployment transaction id associated with the specified program * * @param {Program | string} program - * @returns {TransactionModel | Error} + * @returns {TransactionModel} */ - async getDeploymentTransactionIDForProgram(program: Program | string): Promise { + async getDeploymentTransactionIDForProgram(program: Program | string): Promise { if (program instanceof Program) { program = program.toString(); } @@ -346,9 +344,9 @@ class AleoNetworkClient { * Returns the deployment transaction associated with a specified program * * @param {Program | string} program - * @returns {TransactionModel | Error} + * @returns {TransactionModel} */ - async getDeploymentTransactionForProgram(program: Program | string): Promise { + async getDeploymentTransactionForProgram(program: Program | string): Promise { try { const transaction_id = await this.getDeploymentTransactionIDForProgram(program); return await this.getTransaction(transaction_id); @@ -363,7 +361,7 @@ class AleoNetworkClient { * @example * const latestHeight = networkClient.getLatestBlock(); */ - async getLatestBlock(): Promise { + async getLatestBlock(): Promise { try { return await this.fetchData("/latest/block") as Block; } catch (error) { @@ -376,7 +374,7 @@ class AleoNetworkClient { * * @returns {Promise} A javascript object containing the latest committee */ - async getLatestCommittee(): Promise { + async getLatestCommittee(): Promise { try { return await this.fetchData("/committee/latest"); } catch (error) { @@ -390,7 +388,7 @@ class AleoNetworkClient { * @example * const latestHeight = networkClient.getLatestHeight(); */ - async getLatestHeight(): Promise { + async getLatestHeight(): Promise { try { return await this.fetchData("/latest/height"); } catch (error) { @@ -409,7 +407,7 @@ class AleoNetworkClient { * const expectedSource = "program hello_hello.aleo;\n\nfunction hello:\n input r0 as u32.public;\n input r1 as u32.private;\n add r0 r1 into r2;\n output r2 as u32.private;\n" * assert.equal(program, expectedSource); */ - async getProgram(programId: string): Promise { + async getProgram(programId: string): Promise { try { return await this.fetchData("/program/" + programId) } catch (error) { @@ -421,7 +419,7 @@ class AleoNetworkClient { * Returns a program object from a program ID or program source code * * @param {string} inputProgram The program ID or program source code of a program deployed to the Aleo Network - * @return {Promise} Source code of the program + * @return {Promise} Source code of the program * * @example * const programID = "hello_hello.aleo"; @@ -434,7 +432,7 @@ class AleoNetworkClient { * // Both program objects should be equal * assert.equal(programObjectFromID.to_string(), programObjectFromSource.to_string()); */ - async getProgramObject(inputProgram: string): Promise { + async getProgramObject(inputProgram: string): Promise { try { return Program.fromString(inputProgram); } catch (error) { @@ -471,7 +469,7 @@ class AleoNetworkClient { * programImports = await networkClient.getProgramImports(double_test); * assert.deepStrictEqual(programImports, expectedImports); */ - async getProgramImports(inputProgram: Program | string): Promise { + async getProgramImports(inputProgram: Program | string): Promise { try { const imports: ProgramImports = {}; @@ -496,8 +494,8 @@ class AleoNetworkClient { } } return imports; - } catch (error) { - throw logAndThrow("Error fetching program imports: " + error) + } catch (error: any) { + logAndThrow("Error fetching program imports: " + error.message); } } @@ -512,12 +510,12 @@ class AleoNetworkClient { * const expectedImportsNames = ["multiply_test.aleo"]; * assert.deepStrictEqual(programImportsNames, expectedImportsNames); */ - async getProgramImportNames(inputProgram: Program | string): Promise { + async getProgramImportNames(inputProgram: Program | string): Promise { try { const program = inputProgram instanceof Program ? inputProgram : (await this.getProgramObject(inputProgram)); return program.getImports(); - } catch (error) { - throw new Error("Error fetching program imports with error: " + error); + } catch (error: any) { + throw new Error("Error fetching program imports with error: " + error.message); } } @@ -530,7 +528,7 @@ class AleoNetworkClient { * const expectedMappings = ["account"]; * assert.deepStrictEqual(mappings, expectedMappings); */ - async getProgramMappingNames(programId: string): Promise | Error> { + async getProgramMappingNames(programId: string): Promise> { try { return await this.fetchData>("/program/" + programId + "/mappings") } catch (error) { @@ -552,7 +550,7 @@ class AleoNetworkClient { * const expectedValue = "0u64"; * assert.equal(mappingValue, expectedValue); */ - async getProgramMappingValue(programId: string, mappingName: string, key: string): Promise { + async getProgramMappingValue(programId: string, mappingName: string, key: string): Promise { try { return await this.fetchData("/program/" + programId + "/mapping/" + mappingName + "/" + key) } catch (error) { @@ -566,7 +564,7 @@ class AleoNetworkClient { * @example * const stateRoot = networkClient.getStateRoot(); */ - async getStateRoot(): Promise { + async getStateRoot(): Promise { try { return await this.fetchData("/latest/stateRoot"); } catch (error) { @@ -581,7 +579,7 @@ class AleoNetworkClient { * @example * const transaction = networkClient.getTransaction("at1handz9xjrqeynjrr0xay4pcsgtnczdksz3e584vfsgaz0dh0lyxq43a4wj"); */ - async getTransaction(id: string): Promise { + async getTransaction(id: string): Promise { try { return await this.fetchData("/transaction/" + id); } catch (error) { @@ -596,7 +594,7 @@ class AleoNetworkClient { * @example * const transactions = networkClient.getTransactions(654); */ - async getTransactions(height: number): Promise | Error> { + async getTransactions(height: number): Promise> { try { return await this.fetchData>("/block/" + height.toString() + "/transactions"); } catch (error) { @@ -610,7 +608,7 @@ class AleoNetworkClient { * @example * const transactions = networkClient.getTransactionsInMempool(); */ - async getTransactionsInMempool(): Promise | Error> { + async getTransactionsInMempool(): Promise> { try { return await this.fetchData>("/memoryPool/transactions"); } catch (error) { @@ -625,7 +623,7 @@ class AleoNetworkClient { * @example * const transitionId = networkClient.getTransitionId("2429232855236830926144356377868449890830704336664550203176918782554219952323field"); */ - async getTransitionId(inputOrOutputID: string): Promise { + async getTransitionId(inputOrOutputID: string): Promise { try { return await this.fetchData("/find/transitionID/" + inputOrOutputID); } catch (error) { @@ -637,9 +635,9 @@ class AleoNetworkClient { * Submit an execute or deployment transaction to the Aleo network * * @param {Transaction | string} transaction - The transaction to submit to the network - * @returns {string | Error} - The transaction id of the submitted transaction or the resulting error + * @returns {string} - The transaction id of the submitted transaction or the resulting error */ - async submitTransaction(transaction: Transaction | string): Promise { + async submitTransaction(transaction: Transaction | string): Promise { const transaction_string = transaction instanceof Transaction ? transaction.toString() : transaction; try { const response = await post(this.host + "/transaction/broadcast", { @@ -652,11 +650,11 @@ class AleoNetworkClient { try { return await response.json(); - } catch (error) { - throw new Error(`Error posting transaction. Aleo network response: ${(error as Error).message}`); + } catch (error: any) { + throw new Error(`Error posting transaction. Aleo network response: ${error.message}`); } - } catch (error) { - throw new Error(`Error posting transaction: No response received: ${(error as Error).message}`); + } catch (error: any) { + throw new Error(`Error posting transaction: No response received: ${error.message}`); } } } diff --git a/sdk/src/offline-key-provider.ts b/sdk/src/offline-key-provider.ts index b8b404ea4..5beadefed 100644 --- a/sdk/src/offline-key-provider.ts +++ b/sdk/src/offline-key-provider.ts @@ -209,9 +209,9 @@ class OfflineKeyProvider implements FunctionKeyProvider { * Get bond_public function keys from the credits.aleo program. The keys must be cached prior to calling this * method for it to work. * - * @returns {Promise} Proving and verifying keys for the bond_public function + * @returns {Promise} Proving and verifying keys for the bond_public function */ - bondPublicKeys(): Promise { + bondPublicKeys(): Promise { return this.functionKeys(OfflineSearchParams.bondPublicKeyParams()); }; @@ -219,9 +219,9 @@ class OfflineKeyProvider implements FunctionKeyProvider { * Get bond_validator function keys from the credits.aleo program. The keys must be cached prior to calling this * method for it to work. * - * @returns {Promise} Proving and verifying keys for the bond_public function + * @returns {Promise} Proving and verifying keys for the bond_public function */ - bondValidatorKeys(): Promise { + bondValidatorKeys(): Promise { return this.functionKeys(OfflineSearchParams.bondValidatorKeyParams()); }; @@ -242,9 +242,9 @@ class OfflineKeyProvider implements FunctionKeyProvider { * Get unbond_public function keys from the credits.aleo program. The keys must be cached prior to calling this * method for it to work. * - * @returns {Promise} Proving and verifying keys for the unbond_public function + * @returns {Promise} Proving and verifying keys for the unbond_public function */ - claimUnbondPublicKeys(): Promise { + claimUnbondPublicKeys(): Promise { return this.functionKeys(OfflineSearchParams.claimUnbondPublicKeyParams()); }; @@ -252,7 +252,7 @@ class OfflineKeyProvider implements FunctionKeyProvider { * Get arbitrary function key from the offline key provider cache. * * @param {KeySearchParams | undefined} params - Optional search parameters for the key provider - * @returns {Promise} Proving and verifying keys for the specified program + * @returns {Promise} Proving and verifying keys for the specified program * * @example * /// First cache the keys from local offline resources @@ -272,7 +272,7 @@ class OfflineKeyProvider implements FunctionKeyProvider { * /// Then retrieve the keys * const [myFunctionProver, myFunctionVerifier] = await offlineKeyProvider.functionKeys(keyParams); */ - functionKeys(params?: KeySearchParams): Promise { + functionKeys(params?: KeySearchParams): Promise { return new Promise((resolve, reject) => { if (params === undefined) { reject(new Error("No search parameters provided, cannot retrieve keys")); @@ -339,9 +339,9 @@ class OfflineKeyProvider implements FunctionKeyProvider { * Get fee_private function keys from the credits.aleo program. The keys must be cached prior to calling this * method for it to work. * - * @returns {Promise} Proving and verifying keys for the join function + * @returns {Promise} Proving and verifying keys for the join function */ - feePrivateKeys(): Promise { + feePrivateKeys(): Promise { return this.functionKeys(OfflineSearchParams.feePrivateKeyParams()); }; @@ -349,9 +349,9 @@ class OfflineKeyProvider implements FunctionKeyProvider { * Get fee_public function keys from the credits.aleo program. The keys must be cached prior to calling this * method for it to work. * - * @returns {Promise} Proving and verifying keys for the join function + * @returns {Promise} Proving and verifying keys for the join function */ - feePublicKeys(): Promise { + feePublicKeys(): Promise { return this.functionKeys(OfflineSearchParams.feePublicKeyParams()); }; @@ -359,9 +359,9 @@ class OfflineKeyProvider implements FunctionKeyProvider { * Get join function keys from the credits.aleo program. The keys must be cached prior to calling this * method for it to work. * - * @returns {Promise} Proving and verifying keys for the join function + * @returns {Promise} Proving and verifying keys for the join function */ - joinKeys(): Promise { + joinKeys(): Promise { return this.functionKeys(OfflineSearchParams.joinKeyParams()); }; @@ -369,9 +369,9 @@ class OfflineKeyProvider implements FunctionKeyProvider { * Get split function keys from the credits.aleo program. The keys must be cached prior to calling this * method for it to work. * - * @returns {Promise} Proving and verifying keys for the join function + * @returns {Promise} Proving and verifying keys for the join function */ - splitKeys(): Promise { + splitKeys(): Promise { return this.functionKeys(OfflineSearchParams.splitKeyParams()); }; @@ -380,7 +380,7 @@ class OfflineKeyProvider implements FunctionKeyProvider { * * * @param {string} visibility Visibility of the transfer function (private, public, privateToPublic, publicToPrivate) - * @returns {Promise} Proving and verifying keys for the specified transfer function + * @returns {Promise} Proving and verifying keys for the specified transfer function * * @example * // Create a new OfflineKeyProvider @@ -397,7 +397,7 @@ class OfflineKeyProvider implements FunctionKeyProvider { * /// When they're needed, retrieve the keys from the cache * const [transferPublicProvingKey, transferPublicVerifyingKey] = await keyProvider.transferKeys("public"); */ - transferKeys(visibility: string): Promise { + transferKeys(visibility: string): Promise { if (PRIVATE_TRANSFER.has(visibility)) { return this.functionKeys(OfflineSearchParams.transferPrivateKeyParams()); } else if (PRIVATE_TO_PUBLIC_TRANSFER.has(visibility)) { @@ -416,9 +416,9 @@ class OfflineKeyProvider implements FunctionKeyProvider { /** * Get unbond_public function keys from the credits.aleo program * - * @returns {Promise} Proving and verifying keys for the join function + * @returns {Promise} Proving and verifying keys for the join function */ - async unBondPublicKeys(): Promise { + async unBondPublicKeys(): Promise { return this.functionKeys(OfflineSearchParams.unbondPublicKeyParams()); }; diff --git a/sdk/src/program-manager.ts b/sdk/src/program-manager.ts index 539d85cac..81fcec408 100644 --- a/sdk/src/program-manager.ts +++ b/sdk/src/program-manager.ts @@ -78,7 +78,7 @@ class ProgramManager { constructor(host?: string | undefined, keyProvider?: FunctionKeyProvider | undefined, recordProvider?: RecordProvider | undefined) { this.host = host ? host : 'https://api.explorer.aleo.org/v1'; this.networkClient = new AleoNetworkClient(this.host); - + this.keyProvider = keyProvider ? keyProvider : new AleoKeyProvider(); this.recordProvider = recordProvider; } @@ -130,7 +130,7 @@ class ProgramManager { * pay the deployment fee * @param {string | RecordPlaintext | undefined} feeRecord Optional Fee record to use for the transaction * @param {PrivateKey | undefined} privateKey Optional private key to use for the transaction - * @returns {string | Error} The transaction id of the deployed program or a failure message from the network + * @returns {string} The transaction id of the deployed program or a failure message from the network * * @example * // Create a new NetworkClient, KeyProvider, and RecordProvider @@ -158,7 +158,7 @@ class ProgramManager { recordSearchParams?: RecordSearchParams, feeRecord?: string | RecordPlaintext, privateKey?: PrivateKey, - ): Promise { + ): Promise { // Ensure the program is valid and does not exist on the network try { const programObject = Program.fromString(program); @@ -172,8 +172,8 @@ class ProgramManager { if (typeof programSource == "string") { throw (`Program ${programObject.id()} already exists on the network, please rename your program`); } - } catch (e) { - throw logAndThrow(`Error validating program: ${e}`); + } catch (e: any) { + logAndThrow(`Error validating program: ${e.message}`); } // Get the private key from the account if it is not provided in the parameters @@ -189,16 +189,16 @@ class ProgramManager { // Get the fee record from the account if it is not provided in the parameters try { feeRecord = privateFee ? await this.getCreditsRecord(fee, [], feeRecord, recordSearchParams) : undefined; - } catch (e) { - throw logAndThrow(`Error finding fee record. Record finder response: '${e}'. Please ensure you're connected to a valid Aleo network and a record with enough balance exists.`); + } catch (e: any) { + logAndThrow(`Error finding fee record. Record finder response: '${e.message}'. Please ensure you're connected to a valid Aleo network and a record with enough balance exists.`); } // Get the proving and verifying keys from the key provider let feeKeys; try { feeKeys = privateFee ? await this.keyProvider.feePrivateKeys() : await this.keyProvider.feePublicKeys(); - } catch (e) { - throw logAndThrow(`Error finding fee keys. Key finder response: '${e}'. Please ensure your key provider is configured correctly.`); + } catch (e: any) { + logAndThrow(`Error finding fee keys. Key finder response: '${e.message}'. Please ensure your key provider is configured correctly.`); } const [feeProvingKey, feeVerifyingKey] = feeKeys; @@ -206,8 +206,8 @@ class ProgramManager { let imports; try { imports = await this.networkClient.getProgramImports(program); - } catch (e) { - throw logAndThrow(`Error finding program imports. Network response: '${e}'. Please ensure you're connected to a valid Aleo network and the program is deployed to the network.`); + } catch (e: any) { + logAndThrow(`Error finding program imports. Network response: '${e.message}'. Please ensure you're connected to a valid Aleo network and the program is deployed to the network.`); } // Build a deployment transaction and submit it to the network @@ -219,7 +219,7 @@ class ProgramManager { * Builds an execution transaction for submission to the Aleo network. * * @param {ExecuteOptions} options - The options for the execution transaction. - * @returns {Promise} - A promise that resolves to the transaction or an error. + * @returns {Promise} - A promise that resolves to the transaction or an error. * * @example * // Create a new NetworkClient, KeyProvider, and RecordProvider using official Aleo record, key, and network providers @@ -242,7 +242,7 @@ class ProgramManager { * }); * const result = await programManager.networkClient.submitTransaction(transaction); */ - async buildExecutionTransaction(options: ExecuteOptions): Promise { + async buildExecutionTransaction(options: ExecuteOptions): Promise { // Destructure the options object to access the parameters const { programName, @@ -266,8 +266,8 @@ class ProgramManager { if (program === undefined) { try { program = (await this.networkClient.getProgram(programName)); - } catch (e) { - throw logAndThrow(`Error finding ${programName}. Network response: '${e}'. Please ensure you're connected to a valid Aleo network the program is deployed to the network.`); + } catch (e: any) { + logAndThrow(`Error finding ${programName}. Network response: '${e.message}'. Please ensure you're connected to a valid Aleo network the program is deployed to the network.`); } } else if (program instanceof Program) { program = program.toString(); @@ -286,16 +286,16 @@ class ProgramManager { // Get the fee record from the account if it is not provided in the parameters try { feeRecord = privateFee ? await this.getCreditsRecord(fee, [], feeRecord, recordSearchParams) : undefined; - } catch (e) { - throw logAndThrow(`Error finding fee record. Record finder response: '${e}'. Please ensure you're connected to a valid Aleo network and a record with enough balance exists.`); + } catch (e: any) { + logAndThrow(`Error finding fee record. Record finder response: '${e.message}'. Please ensure you're connected to a valid Aleo network and a record with enough balance exists.`); } // Get the fee proving and verifying keys from the key provider let feeKeys; try { feeKeys = privateFee ? await this.keyProvider.feePrivateKeys() : await this.keyProvider.feePublicKeys(); - } catch (e) { - throw logAndThrow(`Error finding fee keys. Key finder response: '${e}'. Please ensure your key provider is configured correctly.`); + } catch (e: any) { + logAndThrow(`Error finding fee keys. Key finder response: '${e.message}'. Please ensure your key provider is configured correctly.`); } const [feeProvingKey, feeVerifyingKey] = feeKeys; @@ -313,8 +313,8 @@ class ProgramManager { if (numberOfImports > 0 && !imports) { try { imports = await this.networkClient.getProgramImports(programName); - } catch (e) { - throw logAndThrow(`Error finding program imports. Network response: '${e}'. Please ensure you're connected to a valid Aleo network and the program is deployed to the network.`); + } catch (e: any) { + logAndThrow(`Error finding program imports. Network response: '${e.message}'. Please ensure you're connected to a valid Aleo network and the program is deployed to the network.`); } } @@ -326,7 +326,7 @@ class ProgramManager { * Builds an execution transaction for submission to the Aleo network. * * @param {ExecuteOptions} options - The options for the execution transaction. - * @returns {Promise} - A promise that resolves to the transaction or an error. + * @returns {Promise} - A promise that resolves to the transaction or an error. * * @example * // Create a new NetworkClient, KeyProvider, and RecordProvider using official Aleo record, key, and network providers @@ -349,7 +349,7 @@ class ProgramManager { * }); * const result = await programManager.networkClient.submitTransaction(transaction); */ - async execute(options: ExecuteOptions): Promise { + async execute(options: ExecuteOptions): Promise { const tx = await this.buildExecutionTransaction(options); return await this.networkClient.submitTransaction(tx); } @@ -369,7 +369,7 @@ class ProgramManager { * @param {VerifyingKey | undefined} verifyingKey Optional verifying key to use for the transaction * @param {PrivateKey | undefined} privateKey Optional private key to use for the transaction * @param {OfflineQuery | undefined} offlineQuery Optional offline query if creating transactions in an offline environment - * @returns {Promise} + * @returns {Promise} * * @example * import { Account, Program } from '@provablehq/sdk'; @@ -437,7 +437,7 @@ class ProgramManager { * @param {RecordPlaintext | string | undefined} feeRecord Fee record to use for the join transaction * @param {PrivateKey | undefined} privateKey Private key to use for the join transaction * @param {OfflineQuery | undefined} offlineQuery Optional offline query if creating transactions in an offline environment - * @returns {Promise} + * @returns {Promise} */ async join( recordOne: RecordPlaintext | string, @@ -448,7 +448,7 @@ class ProgramManager { feeRecord?: RecordPlaintext | string | undefined, privateKey?: PrivateKey, offlineQuery?: OfflineQuery, - ): Promise { + ): Promise { // Get the private key from the account if it is not provided in the parameters let executionPrivateKey = privateKey; if (typeof privateKey === "undefined" && typeof this.account !== "undefined") { @@ -465,8 +465,8 @@ class ProgramManager { try { feeKeys = privateFee ? await this.keyProvider.feePrivateKeys() : await this.keyProvider.feePublicKeys(); joinKeys = await this.keyProvider.joinKeys(); - } catch (e) { - throw logAndThrow(`Error finding fee keys. Key finder response: '${e}'. Please ensure your key provider is configured correctly.`); + } catch (e: any) { + logAndThrow(`Error finding fee keys. Key finder response: '${e.message}'. Please ensure your key provider is configured correctly.`); } const [feeProvingKey, feeVerifyingKey] = feeKeys; const [joinProvingKey, joinVerifyingKey] = joinKeys; @@ -474,16 +474,16 @@ class ProgramManager { // Get the fee record from the account if it is not provided in the parameters try { feeRecord = privateFee ? await this.getCreditsRecord(fee, [], feeRecord, recordSearchParams) : undefined; - } catch (e) { - throw logAndThrow(`Error finding fee record. Record finder response: '${e}'. Please ensure you're connected to a valid Aleo network and a record with enough balance exists.`); + } catch (e: any) { + logAndThrow(`Error finding fee record. Record finder response: '${e.message}'. Please ensure you're connected to a valid Aleo network and a record with enough balance exists.`); } // Validate the records provided are valid plaintext records try { recordOne = recordOne instanceof RecordPlaintext ? recordOne : RecordPlaintext.fromString(recordOne); recordTwo = recordTwo instanceof RecordPlaintext ? recordTwo : RecordPlaintext.fromString(recordTwo); - } catch (e) { - throw logAndThrow('Records provided are not valid. Please ensure they are valid plaintext records.') + } catch (e: any) { + logAndThrow('Records provided are not valid. Please ensure they are valid plaintext records.') } // Build an execution transaction and submit it to the network @@ -498,7 +498,7 @@ class ProgramManager { * @param {RecordPlaintext | string} amountRecord Amount record to use for the split transaction * @param {PrivateKey | undefined} privateKey Optional private key to use for the split transaction * @param {OfflineQuery | undefined} offlineQuery Optional offline query if creating transactions in an offline environment - * @returns {Promise} + * @returns {Promise} * * @example * // Create a new NetworkClient, KeyProvider, and RecordProvider @@ -513,7 +513,7 @@ class ProgramManager { * const tx_id = await programManager.split(25000000, record); * const transaction = await programManager.networkClient.getTransaction(tx_id); */ - async split(splitAmount: number, amountRecord: RecordPlaintext | string, privateKey?: PrivateKey, offlineQuery?: OfflineQuery): Promise { + async split(splitAmount: number, amountRecord: RecordPlaintext | string, privateKey?: PrivateKey, offlineQuery?: OfflineQuery): Promise { // Get the private key from the account if it is not provided in the parameters let executionPrivateKey = privateKey; if (typeof executionPrivateKey === "undefined" && typeof this.account !== "undefined") { @@ -528,16 +528,16 @@ class ProgramManager { let splitKeys; try { splitKeys = await this.keyProvider.splitKeys(); - } catch (e) { - throw logAndThrow(`Error finding fee keys. Key finder response: '${e}'. Please ensure your key provider is configured correctly.`); + } catch (e: any) { + logAndThrow(`Error finding fee keys. Key finder response: '${e.message}'. Please ensure your key provider is configured correctly.`); } const [splitProvingKey, splitVerifyingKey] = splitKeys; // Validate the record to be split try { amountRecord = amountRecord instanceof RecordPlaintext ? amountRecord : RecordPlaintext.fromString(amountRecord); - } catch (e) { - throw logAndThrow("Record provided is not valid. Please ensure it is a valid plaintext record."); + } catch (e: any) { + logAndThrow("Record provided is not valid. Please ensure it is a valid plaintext record."); } // Build an execution transaction and submit it to the network @@ -553,14 +553,14 @@ class ProgramManager { * @param inputs {Array} Sample inputs to the function * @param privateKey {PrivateKey | undefined} Optional private key to use for the key synthesis * - * @returns {Promise} + * @returns {Promise} */ async synthesizeKeys( program: string, function_id: string, inputs: Array, privateKey?: PrivateKey, - ): Promise { + ): Promise { // Resolve the program imports if they exist let imports; @@ -584,8 +584,8 @@ class ProgramManager { imports ); return [keyPair.provingKey(), keyPair.verifyingKey()]; - } catch (e) { - throw logAndThrow(`Could not synthesize keys - error ${e}. Please ensure the program is valid and the inputs are correct.`); + } catch (e: any) { + logAndThrow(`Could not synthesize keys - error ${e.message}. Please ensure the program is valid and the inputs are correct.`); } } @@ -603,7 +603,7 @@ class ProgramManager { * @param {RecordPlaintext | string} feeRecord Optional fee record to use for the transfer * @param {PrivateKey | undefined} privateKey Optional private key to use for the transfer transaction * @param {OfflineQuery | undefined} offlineQuery Optional offline query if creating transactions in an offline environment - * @returns {Promise} The transaction id of the transfer transaction + * @returns {Promise} The transaction id of the transfer transaction * * @example * // Create a new NetworkClient, KeyProvider, and RecordProvider @@ -629,7 +629,7 @@ class ProgramManager { feeRecord?: RecordPlaintext | string, privateKey?: PrivateKey, offlineQuery?: OfflineQuery - ): Promise { + ): Promise { // Validate the transfer type transferType = validateTransferType(transferType); @@ -649,8 +649,8 @@ class ProgramManager { try { feeKeys = privateFee ? await this.keyProvider.feePrivateKeys() : await this.keyProvider.feePublicKeys(); transferKeys = await this.keyProvider.transferKeys(transferType); - } catch (e) { - throw logAndThrow(`Error finding fee keys. Key finder response: '${e}'. Please ensure your key provider is configured correctly.`); + } catch (e: any) { + logAndThrow(`Error finding fee keys. Key finder response: '${e.message}'. Please ensure your key provider is configured correctly.`); } const [feeProvingKey, feeVerifyingKey] = feeKeys; const [transferProvingKey, transferVerifyingKey] = transferKeys; @@ -667,8 +667,8 @@ class ProgramManager { amountRecord = undefined; } feeRecord = privateFee ? await this.getCreditsRecord(fee, nonces, feeRecord, recordSearchParams) : undefined; - } catch (e) { - throw logAndThrow(`Error finding fee record. Record finder response: '${e}'. Please ensure you're connected to a valid Aleo network and a record with enough balance exists.`); + } catch (e: any) { + logAndThrow(`Error finding fee record. Record finder response: '${e.message}'. Please ensure you're connected to a valid Aleo network and a record with enough balance exists.`); } // Build an execution transaction and submit it to the network @@ -689,7 +689,7 @@ class ProgramManager { * @param {RecordPlaintext | string} feeRecord Optional fee record to use for the transfer * @param {PrivateKey | undefined} privateKey Optional private key to use for the transfer transaction * @param {OfflineQuery | undefined} offlineQuery Optional offline query if creating transactions in an offline environment - * @returns {Promise} The transaction id of the transfer transaction + * @returns {Promise} The transaction id of the transfer transaction */ async buildTransferPublicTransaction( amount: number, @@ -697,7 +697,7 @@ class ProgramManager { fee: number, privateKey?: PrivateKey, offlineQuery?: OfflineQuery - ): Promise { + ): Promise { return this.buildTransferTransaction(amount, recipient, "public", fee, false, undefined, undefined, undefined, privateKey, offlineQuery); } @@ -715,7 +715,7 @@ class ProgramManager { * @param {RecordPlaintext | string} feeRecord Optional fee record to use for the transfer * @param {PrivateKey | undefined} privateKey Optional private key to use for the transfer transaction * @param {OfflineQuery | undefined} offlineQuery Optional offline query if creating transactions in an offline environment - * @returns {Promise} The transaction id of the transfer transaction + * @returns {Promise} The transaction id of the transfer transaction */ async buildTransferPublicAsSignerTransaction( amount: number, @@ -723,7 +723,7 @@ class ProgramManager { fee: number, privateKey?: PrivateKey, offlineQuery?: OfflineQuery - ): Promise { + ): Promise { return this.buildTransferTransaction(amount, recipient, "public", fee, false, undefined, undefined, undefined, privateKey, offlineQuery); } @@ -741,7 +741,7 @@ class ProgramManager { * @param {RecordPlaintext | string} feeRecord Optional fee record to use for the transfer * @param {PrivateKey | undefined} privateKey Optional private key to use for the transfer transaction * @param {OfflineQuery | undefined} offlineQuery Optional offline query if creating transactions in an offline environment - * @returns {Promise} The transaction id of the transfer transaction + * @returns {Promise} The transaction id of the transfer transaction * * @example * // Create a new NetworkClient, KeyProvider, and RecordProvider @@ -766,7 +766,7 @@ class ProgramManager { feeRecord?: RecordPlaintext | string, privateKey?: PrivateKey, offlineQuery?: OfflineQuery - ): Promise { + ): Promise { const tx = await this.buildTransferTransaction(amount, recipient, transferType, fee, privateFee, recordSearchParams, amountRecord, feeRecord, privateKey, offlineQuery); return await this.networkClient.submitTransaction(tx); } @@ -963,7 +963,7 @@ class ProgramManager { * @param {string} staker_address - The address of the staker who is unbonding the credits. * @param {number} amount - The amount of credits to unbond (scaled by 1,000,000). * @param {Partial} options - Override default execution options. - * @returns {Promise} - A promise that resolves to the transaction or an error message. + * @returns {Promise} - A promise that resolves to the transaction or an error message. * * @example * // Create a keyProvider to handle key management. @@ -978,7 +978,7 @@ class ProgramManager { * // The transaction can be submitted later to the network using the network client. * programManager.networkClient.submitTransaction(tx); */ - async buildUnbondPublicTransaction(staker_address: string, amount: number, options: Partial = {}): Promise { + async buildUnbondPublicTransaction(staker_address: string, amount: number, options: Partial = {}): Promise { const scaledAmount = Math.trunc(amount * 1000000); const { @@ -1034,7 +1034,7 @@ class ProgramManager { * after the unbond operation, the delegator will be removed from the validator's staking pool. * @param {ExecuteOptions} options Options for the execution */ - async unbondPublic(staker_address: string, amount: number, options: Partial = {}): Promise { + async unbondPublic(staker_address: string, amount: number, options: Partial = {}): Promise { const tx = await this.buildUnbondPublicTransaction(staker_address, amount, options); return await this.networkClient.submitTransaction(tx); } @@ -1044,7 +1044,7 @@ class ProgramManager { * * @param {string} staker_address - The address of the staker who is claiming the credits. * @param {Partial} options - Override default execution options. - * @returns {Promise} - A promise that resolves to the transaction or an error message. + * @returns {Promise} - A promise that resolves to the transaction or an error message. * * @example * // Create a keyProvider to handle key management @@ -1061,7 +1061,7 @@ class ProgramManager { * // The transaction can be submitted later to the network using the network client. * programManager.networkClient.submitTransaction(tx); */ - async buildClaimUnbondPublicTransaction(staker_address: string, options: Partial = {}): Promise { + async buildClaimUnbondPublicTransaction(staker_address: string, options: Partial = {}): Promise { const { programName = "credits.aleo", functionName = "claim_unbond_public", @@ -1110,7 +1110,7 @@ class ProgramManager { * @param {ExecuteOptions} options * @returns string */ - async claimUnbondPublic(staker_address: string, options: Partial = {}): Promise { + async claimUnbondPublic(staker_address: string, options: Partial = {}): Promise { const tx = await this.buildClaimUnbondPublicTransaction(staker_address, options); return await this.networkClient.submitTransaction(tx); } @@ -1228,9 +1228,9 @@ class ProgramManager { * Create a program object from a program's source code * * @param {string} program Program source code - * @returns {Program | Error} The program object + * @returns {Program} The program object */ - createProgramFromSource(program: string): Program | Error { + createProgramFromSource(program: string): Program { return Program.fromString(program); } @@ -1258,15 +1258,15 @@ class ProgramManager { } // Internal utility function for getting a credits.aleo record - async getCreditsRecord(amount: number, nonces: string[], record?: RecordPlaintext | string, params?: RecordSearchParams): Promise { + async getCreditsRecord(amount: number, nonces: string[], record?: RecordPlaintext | string, params?: RecordSearchParams): Promise { try { return record instanceof RecordPlaintext ? record : RecordPlaintext.fromString(record); } catch (e) { try { const recordProvider = this.recordProvider; return (await recordProvider.findCreditsRecord(amount, true, nonces, params)) - } catch (e) { - throw logAndThrow(`Error finding fee record. Record finder response: '${e}'. Please ensure you're connected to a valid Aleo network and a record with enough balance exists.`); + } catch (e: any) { + logAndThrow(`Error finding fee record. Record finder response: '${e.message}'. Please ensure you're connected to a valid Aleo network and a record with enough balance exists.`); } } } @@ -1278,7 +1278,7 @@ function requiresAmountRecord(transferType: string): boolean { } // Validate the transfer type -function validateTransferType(transferType: string): string | Error { +function validateTransferType(transferType: string): string { return VALID_TRANSFER_TYPES.has(transferType) ? transferType : logAndThrow(`Invalid transfer type '${transferType}'. Valid transfer types are 'private', 'privateToPublic', 'public', and 'publicToPrivate'.`); } diff --git a/sdk/src/record-provider.ts b/sdk/src/record-provider.ts index cc508e851..f3d025ec8 100644 --- a/sdk/src/record-provider.ts +++ b/sdk/src/record-provider.ts @@ -26,7 +26,7 @@ interface RecordProvider { * @param {boolean} unspent Whether or not the record is unspent * @param {string[]} nonces Nonces of records already found so they are not found again * @param {RecordSearchParams} searchParameters Additional parameters to search for - * @returns {Promise} The record if found, otherwise an error + * @returns {Promise} The record if found, otherwise an error * * @example * // A class implementing record provider can be used to find a record with a given number of microcredits @@ -41,7 +41,7 @@ interface RecordProvider { * const programManager = new ProgramManager("https://api.explorer.aleo.org/v1", keyProvider, recordProvider); * programManager.transfer(1, "aleo166q6ww6688cug7qxwe7nhctjpymydwzy2h7rscfmatqmfwnjvggqcad0at", "public", 0.5); */ - findCreditsRecord(microcredits: number, unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise; + findCreditsRecord(microcredits: number, unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise; /** * Find a list of credit.aleo records with a given number of microcredits from the chosen provider @@ -50,7 +50,7 @@ interface RecordProvider { * @param {boolean} unspent Whether or not the record is unspent * @param {string[]} nonces Nonces of records already found so that they are not found again * @param {RecordSearchParams} searchParameters Additional parameters to search for - * @returns {Promise} A list of records with a value greater or equal to the amounts specified if such records exist, otherwise an error + * @returns {Promise} A list of records with a value greater or equal to the amounts specified if such records exist, otherwise an error * * @example * // A class implementing record provider can be used to find a record with a given number of microcredits @@ -67,14 +67,14 @@ interface RecordProvider { * const programManager = new ProgramManager("https://api.explorer.aleo.org/v1", keyProvider, recordProvider); * programManager.transfer(1, "aleo166q6ww6688cug7qxwe7nhctjpymydwzy2h7rscfmatqmfwnjvggqcad0at", "public", 0.5); */ - findCreditsRecords(microcreditAmounts: number[], unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise; + findCreditsRecords(microcreditAmounts: number[], unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise; /** * Find an arbitrary record * @param {boolean} unspent Whether or not the record is unspent * @param {string[]} nonces Nonces of records already found so that they are not found again * @param {RecordSearchParams} searchParameters Additional parameters to search for - * @returns {Promise} The record if found, otherwise an error + * @returns {Promise} The record if found, otherwise an error * * @example * // The RecordSearchParams interface can be used to create parameters for custom record searches which can then @@ -100,7 +100,7 @@ interface RecordProvider { * * const record = await recordProvider.findRecord(true, [], params); */ - findRecord(unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise; + findRecord(unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise; /** * Find multiple records from arbitrary programs @@ -108,7 +108,7 @@ interface RecordProvider { * @param {boolean} unspent Whether or not the record is unspent * @param {string[]} nonces Nonces of records already found so that they are not found again * @param {RecordSearchParams} searchParameters Additional parameters to search for - * @returns {Promise} The record if found, otherwise an error + * @returns {Promise} The record if found, otherwise an error * * // The RecordSearchParams interface can be used to create parameters for custom record searches which can then * // be passed to the record provider. An example of how this would be done for the credits.aleo program is shown @@ -134,7 +134,7 @@ interface RecordProvider { * const params = new CustomRecordSearch(0, 100, 5000, 2, "credits.aleo", "credits"); * const records = await recordProvider.findRecord(true, [], params); */ - findRecords(unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise; + findRecords(unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise; } /** @@ -165,7 +165,7 @@ class NetworkRecordProvider implements RecordProvider { * @param {boolean} unspent Whether or not the record is unspent * @param {string[]} nonces Nonces of records already found so that they are not found again * @param {RecordSearchParams} searchParameters Additional parameters to search for - * @returns {Promise} The record if found, otherwise an error + * @returns {Promise} The record if found, otherwise an error * * @example * // Create a new NetworkRecordProvider @@ -186,7 +186,7 @@ class NetworkRecordProvider implements RecordProvider { * programManager.transfer(1, "aleo166q6ww6688cug7qxwe7nhctjpymydwzy2h7rscfmatqmfwnjvggqcad0at", "public", 0.5); * * */ - async findCreditsRecords(microcredits: number[], unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise { + async findCreditsRecords(microcredits: number[], unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise { let startHeight = 0; let endHeight = 0; @@ -202,16 +202,17 @@ class NetworkRecordProvider implements RecordProvider { // If the end height is not specified, use the current block height if (endHeight == 0) { - const end = await this.networkClient.getLatestHeight(); - if (end instanceof Error) { - throw logAndThrow("Unable to get current block height from the network") + try { + const end = await this.networkClient.getLatestHeight(); + endHeight = end; + } catch (e) { + logAndThrow("Unable to get current block height from the network") } - endHeight = end; } // If the start height is greater than the end height, throw an error if (startHeight >= endHeight) { - throw logAndThrow("Start height must be less than end height"); + logAndThrow("Start height must be less than end height"); } return await this.networkClient.findUnspentRecords(startHeight, endHeight, this.account.privateKey(), microcredits, undefined, nonces); @@ -224,7 +225,7 @@ class NetworkRecordProvider implements RecordProvider { * @param {boolean} unspent Whether or not the record is unspent * @param {string[]} nonces Nonces of records already found so that they are not found again * @param {RecordSearchParams} searchParameters Additional parameters to search for - * @returns {Promise} The record if found, otherwise an error + * @returns {Promise} The record if found, otherwise an error * * @example * // Create a new NetworkRecordProvider @@ -244,26 +245,32 @@ class NetworkRecordProvider implements RecordProvider { * const programManager = new ProgramManager("https://api.explorer.aleo.org/v1", keyProvider, recordProvider); * programManager.transfer(1, "aleo166q6ww6688cug7qxwe7nhctjpymydwzy2h7rscfmatqmfwnjvggqcad0at", "public", 0.5); */ - async findCreditsRecord(microcredits: number, unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise { - const records = await this.findCreditsRecords([microcredits], unspent, nonces, searchParameters); - if (!(records instanceof Error) && records.length > 0) { + async findCreditsRecord(microcredits: number, unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise { + let records = null; + + try { + records = await this.findCreditsRecords([microcredits], unspent, nonces, searchParameters); + } catch (e) {} + + if (records && records.length > 0) { return records[0]; } + console.error("Record not found with error:", records); - return new Error("Record not found"); + throw new Error("Record not found"); } /** * Find an arbitrary record. WARNING: This function is not implemented yet and will throw an error. */ - async findRecord(unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise { + async findRecord(unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise { throw new Error("Method not implemented."); } /** * Find multiple arbitrary records. WARNING: This function is not implemented yet and will throw an error. */ - async findRecords(unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise { + async findRecords(unspent: boolean, nonces?: string[], searchParameters?: RecordSearchParams): Promise { throw new Error("Method not implemented."); } diff --git a/sdk/src/worker.ts b/sdk/src/worker.ts index 062d732fb..06be28723 100644 --- a/sdk/src/worker.ts +++ b/sdk/src/worker.ts @@ -36,94 +36,99 @@ async function run( console.log("Web worker: Executing function locally..."); const startTime = performance.now(); + // Ensure the program is valid and that it contains the function specified + let program; + try { - // Ensure the program is valid and that it contains the function specified - const program = programManager.createProgramFromSource(localProgram); - if (program instanceof Error) { - throw "Error creating program from source"; - } - const program_id = program.id(); - if (!program.hasFunction(aleoFunction)) { - throw `Program ${program_id} does not contain function ${aleoFunction}`; - } - const cacheKey = `${program_id}:${aleoFunction}`; - - // Get the program imports - const imports = await programManager.networkClient.getProgramImports( + program = programManager.createProgramFromSource(localProgram); + } catch (e) { + throw new Error("Error creating program from source"); + } + + const program_id = program.id(); + if (!program.hasFunction(aleoFunction)) { + throw new Error(`Program ${program_id} does not contain function ${aleoFunction}`); + } + const cacheKey = `${program_id}:${aleoFunction}`; + + + // Get the program imports + let imports; + + try { + imports = await programManager.networkClient.getProgramImports( localProgram ); + } catch (e) { + throw new Error("Error getting program imports"); + } - if (imports instanceof Error) { - throw "Error getting program imports"; - } - // Get the proving and verifying keys for the function - if (lastLocalProgram !== localProgram) { - const keys = await programManager.synthesizeKeys( - localProgram, - aleoFunction, - inputs, - PrivateKey.from_string(privateKey) - ); - programManager.keyProvider.cacheKeys(cacheKey, keys); - lastLocalProgram = localProgram; - } - - // Pass the cache key to the execute function - const keyParams = new AleoKeyProviderParams({ - cacheKey: cacheKey, - }); - - // Execute the function locally - const response = await programManager.run( + // Get the proving and verifying keys for the function + if (lastLocalProgram !== localProgram) { + const keys = await programManager.synthesizeKeys( localProgram, aleoFunction, inputs, - proveExecution, - imports, - keyParams, - undefined, - undefined, - PrivateKey.from_string(privateKey), + PrivateKey.from_string(privateKey) ); + programManager.keyProvider.cacheKeys(cacheKey, keys); + lastLocalProgram = localProgram; + } + + // Pass the cache key to the execute function + const keyParams = new AleoKeyProviderParams({ + cacheKey: cacheKey, + }); + + // Execute the function locally + const response = await programManager.run( + localProgram, + aleoFunction, + inputs, + proveExecution, + imports, + keyParams, + undefined, + undefined, + PrivateKey.from_string(privateKey), + ); + + // Return the outputs to the main thread + console.log( + `Web worker: Local execution completed in ${ + performance.now() - startTime + } ms` + ); + const outputs = response.getOutputs(); + const execution = response.getExecution(); + let executionString = ""; + + let keys; + + try { + keys = keyProvider.getKeys(cacheKey); + } catch (e) { + throw new Error("Could not get verifying key"); + } + + const verifyingKey = keys[1]; - // Return the outputs to the main thread - console.log( - `Web worker: Local execution completed in ${ - performance.now() - startTime - } ms` + if (execution) { + verifyFunctionExecution( + execution, + verifyingKey, + program, + "hello" ); - const outputs = response.getOutputs(); - const execution = response.getExecution(); - let executionString = ""; - - const keys = keyProvider.getKeys(cacheKey); - - if (keys instanceof Error) { - throw "Could not get verifying key"; - } - - const verifyingKey = keys[1]; - - if (execution) { - verifyFunctionExecution( - execution, - verifyingKey, - program, - "hello" - ); - executionString = execution.toString(); - console.log("Execution verified successfully: " + execution); - } else { - executionString = ""; - } - - console.log(`Function execution response: ${outputs}`); - - return { outputs: outputs, execution: executionString }; - } catch (error) { - console.error(error); - return error ? error.toString() : "Unknown error"; + executionString = execution.toString(); + console.log("Execution verified successfully: " + execution); + } else { + executionString = ""; } + + console.log(`Function execution response: ${outputs}`); + + return { outputs: outputs, execution: executionString }; } async function getPrivateKey() { diff --git a/sdk/tests/network-client.test.ts b/sdk/tests/network-client.test.ts index 1b2118195..48a7814a7 100644 --- a/sdk/tests/network-client.test.ts +++ b/sdk/tests/network-client.test.ts @@ -41,7 +41,7 @@ describe('NodeConnection', () => { it('should return an array of Block objects', async () => { const blockRange = await connection.getBlockRange(1, 3); expect(Array.isArray(blockRange)).toBe(true); - expect((blockRange as Block[]).length).toBe(3); + expect((blockRange as Block[]).length).toBe(2); expect(((blockRange as Block[])[0] as Block).block_hash).toBe("ab1eddc3np4h6duwf5a7ht6u0x5maa08780l885j6xq0s7l88df0qrq3d72me"); expect(((blockRange as Block[])[1] as Block).block_hash).toBe("ab1uqmm97qk5gzhgwh6308h48aszazhfnn0xdq84lrj7e7myyrf9yyqmqdf42"); diff --git a/wasm/src/account/private_key.rs b/wasm/src/account/private_key.rs index e8e9ebbc2..8be4ca796 100644 --- a/wasm/src/account/private_key.rs +++ b/wasm/src/account/private_key.rs @@ -93,7 +93,7 @@ impl PrivateKey { /// and will be needed to decrypt the private key later, so it should be stored securely /// /// @param {string} secret Secret used to encrypt the private key - /// @returns {PrivateKeyCiphertext | Error} Ciphertext representation of the private key + /// @returns {PrivateKeyCiphertext} Ciphertext representation of the private key #[wasm_bindgen(js_name = newEncrypted)] pub fn new_encrypted(secret: &str) -> Result { let key = Self::new(); @@ -106,7 +106,7 @@ impl PrivateKey { /// decrypt the private key later, so it should be stored securely /// /// @param {string} secret Secret used to encrypt the private key - /// @returns {PrivateKeyCiphertext | Error} Ciphertext representation of the private key + /// @returns {PrivateKeyCiphertext} Ciphertext representation of the private key #[wasm_bindgen(js_name = toCiphertext)] pub fn to_ciphertext(&self, secret: &str) -> Result { let ciphertext = @@ -118,7 +118,7 @@ impl PrivateKey { /// /// @param {PrivateKeyCiphertext} ciphertext Ciphertext representation of the private key /// @param {string} secret Secret originally used to encrypt the private key - /// @returns {PrivateKey | Error} Private key + /// @returns {PrivateKey} Private key #[wasm_bindgen(js_name = fromPrivateKeyCiphertext)] pub fn from_private_key_ciphertext(ciphertext: &PrivateKeyCiphertext, secret: &str) -> Result { let private_key = Encryptor::decrypt_private_key_with_secret(ciphertext, secret) diff --git a/wasm/src/account/private_key_ciphertext.rs b/wasm/src/account/private_key_ciphertext.rs index adbb564fb..534b978df 100644 --- a/wasm/src/account/private_key_ciphertext.rs +++ b/wasm/src/account/private_key_ciphertext.rs @@ -32,7 +32,7 @@ impl PrivateKeyCiphertext { /// /// @param {PrivateKey} private_key Private key to encrypt /// @param {string} secret Secret to encrypt the private key with - /// @returns {PrivateKeyCiphertext | Error} Private key ciphertext + /// @returns {PrivateKeyCiphertext} Private key ciphertext #[wasm_bindgen(js_name = encryptPrivateKey)] pub fn encrypt_private_key(private_key: &PrivateKey, secret: &str) -> Result { let ciphertext = Encryptor::encrypt_private_key_with_secret(private_key, secret) @@ -44,7 +44,7 @@ impl PrivateKeyCiphertext { /// encrypt the private key /// /// @param {string} secret Secret used to encrypt the private key - /// @returns {PrivateKey | Error} Private key + /// @returns {PrivateKey} Private key #[wasm_bindgen(js_name = decryptToPrivateKey)] pub fn decrypt_to_private_key(&self, secret: &str) -> Result { let private_key = Encryptor::decrypt_private_key_with_secret(&self.0, secret) @@ -64,7 +64,7 @@ impl PrivateKeyCiphertext { /// Creates a PrivateKeyCiphertext from a string /// /// @param {string} ciphertext Ciphertext string - /// @returns {PrivateKeyCiphertext | Error} Private key ciphertext + /// @returns {PrivateKeyCiphertext} Private key ciphertext #[wasm_bindgen(js_name = fromString)] pub fn from_string(ciphertext: String) -> Result { Self::try_from(ciphertext).map_err(|_| "Invalid ciphertext".to_string()) diff --git a/wasm/src/programs/keypair.rs b/wasm/src/programs/keypair.rs index 62c9c6750..11151d129 100644 --- a/wasm/src/programs/keypair.rs +++ b/wasm/src/programs/keypair.rs @@ -41,7 +41,7 @@ impl KeyPair { /// Get the proving key. This method will remove the proving key from the key pair /// - /// @returns {ProvingKey | Error} + /// @returns {ProvingKey} #[wasm_bindgen(js_name = "provingKey")] pub fn proving_key(&mut self) -> Result { self.proving_key.take().ok_or("Proving key has already been removed".to_string()) @@ -49,7 +49,7 @@ impl KeyPair { /// Get the verifying key. This method will remove the verifying key from the key pair /// - /// @returns {VerifyingKey | Error} + /// @returns {VerifyingKey} #[wasm_bindgen(js_name = "verifyingKey")] pub fn verifying_key(&mut self) -> Result { self.verifying_key.take().ok_or("Proving key has already been removed".to_string()) diff --git a/wasm/src/programs/manager/deploy.rs b/wasm/src/programs/manager/deploy.rs index 5dee56439..24c120563 100644 --- a/wasm/src/programs/manager/deploy.rs +++ b/wasm/src/programs/manager/deploy.rs @@ -50,7 +50,7 @@ impl ProgramManager { /// are a string representing the program source code \{ "hello.aleo": "hello.aleo source code" \} /// @param fee_proving_key (optional) Provide a proving key to use for the fee execution /// @param fee_verifying_key (optional) Provide a verifying key to use for the fee execution - /// @returns {Transaction | Error} + /// @returns {Transaction} #[wasm_bindgen(js_name = buildDeploymentTransaction)] #[allow(clippy::too_many_arguments)] pub async fn deploy( @@ -136,7 +136,7 @@ impl ProgramManager { /// @param imports (optional) Provide a list of imports to use for the deployment fee estimation /// in the form of a javascript object where the keys are a string of the program name and the values /// are a string representing the program source code \{ "hello.aleo": "hello.aleo source code" \} - /// @returns {u64 | Error} + /// @returns {u64} #[wasm_bindgen(js_name = estimateDeploymentFee)] pub async fn estimate_deployment_fee(program: &str, imports: Option) -> Result { log( @@ -172,7 +172,7 @@ impl ProgramManager { /// Disclaimer: Fee estimation is experimental and may not represent a correct estimate on any current or future network /// /// @param name The name of the program to be deployed - /// @returns {u64 | Error} + /// @returns {u64} #[wasm_bindgen(js_name = estimateProgramNameCost)] pub fn program_name_cost(name: &str) -> Result { log( diff --git a/wasm/src/programs/manager/execute.rs b/wasm/src/programs/manager/execute.rs index 7ea1d3e64..b24d8f511 100644 --- a/wasm/src/programs/manager/execute.rs +++ b/wasm/src/programs/manager/execute.rs @@ -143,7 +143,7 @@ impl ProgramManager { /// @param verifying_key (optional) Provide a verifying key to use for the function execution /// @param fee_proving_key (optional) Provide a proving key to use for the fee execution /// @param fee_verifying_key (optional) Provide a verifying key to use for the fee execution - /// @returns {Transaction | Error} + /// @returns {Transaction} #[wasm_bindgen(js_name = buildExecutionTransaction)] #[allow(clippy::too_many_arguments)] pub async fn execute( @@ -241,7 +241,7 @@ impl ProgramManager { /// are a string representing the program source code \{ "hello.aleo": "hello.aleo source code" \} /// @param proving_key (optional) Provide a verifying key to use for the fee estimation /// @param verifying_key (optional) Provide a verifying key to use for the fee estimation - /// @returns {u64 | Error} Fee in microcredits + /// @returns {u64} Fee in microcredits #[wasm_bindgen(js_name = estimateExecutionFee)] #[allow(clippy::too_many_arguments)] pub async fn estimate_execution_fee( @@ -324,7 +324,7 @@ impl ProgramManager { /// /// @param program The program containing the function to estimate the finalize fee for /// @param function The function to estimate the finalize fee for - /// @returns {u64 | Error} Fee in microcredits + /// @returns {u64} Fee in microcredits #[wasm_bindgen(js_name = estimateFinalizeFee)] pub fn estimate_finalize_fee(program: &str, function: &str) -> Result { log( diff --git a/wasm/src/programs/manager/join.rs b/wasm/src/programs/manager/join.rs index a273d2dc6..6d589dc68 100644 --- a/wasm/src/programs/manager/join.rs +++ b/wasm/src/programs/manager/join.rs @@ -54,7 +54,7 @@ impl ProgramManager { /// @param join_verifying_key (optional) Provide a verifying key to use for the join function /// @param fee_proving_key (optional) Provide a proving key to use for the fee execution /// @param fee_verifying_key (optional) Provide a verifying key to use for the fee execution - /// @returns {Transaction | Error} Transaction object + /// @returns {Transaction} Transaction object #[wasm_bindgen(js_name = buildJoinTransaction)] #[allow(clippy::too_many_arguments)] pub async fn join( diff --git a/wasm/src/programs/manager/split.rs b/wasm/src/programs/manager/split.rs index b5ff88b98..8983d29bc 100644 --- a/wasm/src/programs/manager/split.rs +++ b/wasm/src/programs/manager/split.rs @@ -34,7 +34,7 @@ impl ProgramManager { /// @param url The url of the Aleo network node to send the transaction to /// @param split_proving_key (optional) Provide a proving key to use for the split function /// @param split_verifying_key (optional) Provide a verifying key to use for the split function - /// @returns {Transaction | Error} Transaction object + /// @returns {Transaction} Transaction object #[wasm_bindgen(js_name = buildSplitTransaction)] #[allow(clippy::too_many_arguments)] pub async fn split( diff --git a/wasm/src/programs/manager/transfer.rs b/wasm/src/programs/manager/transfer.rs index 6999ccca1..01195fa28 100644 --- a/wasm/src/programs/manager/transfer.rs +++ b/wasm/src/programs/manager/transfer.rs @@ -55,7 +55,7 @@ impl ProgramManager { /// function /// @param fee_proving_key (optional) Provide a proving key to use for the fee execution /// @param fee_verifying_key (optional) Provide a verifying key to use for the fee execution - /// @returns {Transaction | Error} + /// @returns {Transaction} #[wasm_bindgen(js_name = buildTransferTransaction)] #[allow(clippy::too_many_arguments)] pub async fn transfer( diff --git a/wasm/src/programs/program.rs b/wasm/src/programs/program.rs index f40b0465e..236d1f86e 100644 --- a/wasm/src/programs/program.rs +++ b/wasm/src/programs/program.rs @@ -33,7 +33,7 @@ impl Program { /// Create a program from a program string /// /// @param {string} program Aleo program source code - /// @returns {Program | Error} Program object + /// @returns {Program} Program object #[wasm_bindgen(js_name = "fromString")] pub fn from_string(program: &str) -> Result { Ok(Self(ProgramNative::from_str(program).map_err(|err| err.to_string())?)) @@ -91,7 +91,7 @@ impl Program { /// to generate a web form to capture user inputs for an execution of a function. /// /// @param {string} function_name Name of the function to get inputs for - /// @returns {Array | Error} Array of function inputs + /// @returns {Array} Array of function inputs /// /// @example /// const expected_inputs = [ @@ -188,7 +188,7 @@ impl Program { /// Get a the list of a program's mappings and the names/types of their keys and values. /// - /// @returns {Array | Error} - An array of objects representing the mappings in the program + /// @returns {Array} - An array of objects representing the mappings in the program /// @example /// const expected_mappings = [ /// { @@ -273,7 +273,7 @@ impl Program { /// Get a javascript object representation of a program record and its types /// /// @param {string} record_name Name of the record to get members for - /// @returns {Object | Error} Object containing the record name, type, and members + /// @returns {Object} Object containing the record name, type, and members /// /// @example /// @@ -344,7 +344,7 @@ impl Program { /// Get a javascript object representation of a program struct and its types /// /// @param {string} struct_name Name of the struct to get members for - /// @returns {Array | Error} Array containing the struct members + /// @returns {Array} Array containing the struct members /// /// @example /// diff --git a/wasm/src/programs/proving_key/mod.rs b/wasm/src/programs/proving_key/mod.rs index 9c08bc14c..452e835f6 100644 --- a/wasm/src/programs/proving_key/mod.rs +++ b/wasm/src/programs/proving_key/mod.rs @@ -48,7 +48,7 @@ impl ProvingKey { /// Construct a new proving key from a byte array /// /// @param {Uint8Array} bytes Byte array representation of a proving key - /// @returns {ProvingKey | Error} + /// @returns {ProvingKey} #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: &[u8]) -> Result { Ok(Self(ProvingKeyNative::from_bytes_le(bytes).map_err(|e| e.to_string())?)) @@ -56,7 +56,7 @@ impl ProvingKey { /// Create a proving key from string /// - /// @param {string | Error} String representation of the proving key + /// @param {string} String representation of the proving key #[wasm_bindgen(js_name = "fromString")] pub fn from_string(string: &str) -> Result { Ok(Self(ProvingKeyNative::from_str(string).map_err(|e| e.to_string())?)) @@ -64,7 +64,7 @@ impl ProvingKey { /// Return the byte representation of a proving key /// - /// @returns {Uint8Array | Error} Byte array representation of a proving key + /// @returns {Uint8Array} Byte array representation of a proving key #[wasm_bindgen(js_name = "toBytes")] pub fn to_bytes(&self) -> Result, String> { self.0.to_bytes_le().map_err(|_| "Failed to serialize proving key".to_string()) diff --git a/wasm/src/programs/transaction.rs b/wasm/src/programs/transaction.rs index 42909d7cc..48a81d5e5 100644 --- a/wasm/src/programs/transaction.rs +++ b/wasm/src/programs/transaction.rs @@ -32,7 +32,7 @@ impl Transaction { /// Create a transaction from a string /// /// @param {string} transaction String representation of a transaction - /// @returns {Transaction | Error} + /// @returns {Transaction} #[wasm_bindgen(js_name = fromString)] pub fn from_string(transaction: &str) -> Result { Transaction::from_str(transaction) diff --git a/wasm/src/programs/verifying_key/mod.rs b/wasm/src/programs/verifying_key/mod.rs index 5dbc5400f..72bd0aef1 100644 --- a/wasm/src/programs/verifying_key/mod.rs +++ b/wasm/src/programs/verifying_key/mod.rs @@ -51,7 +51,7 @@ impl VerifyingKey { /// Construct a new verifying key from a byte array /// /// @param {Uint8Array} bytes Byte representation of a verifying key - /// @returns {VerifyingKey | Error} + /// @returns {VerifyingKey} #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: &[u8]) -> Result { Ok(Self(VerifyingKeyNative::from_bytes_le(bytes).map_err(|e| e.to_string())?)) @@ -60,7 +60,7 @@ impl VerifyingKey { /// Create a verifying key from string /// /// @param {String} string String representation of a verifying key - /// @returns {VerifyingKey | Error} + /// @returns {VerifyingKey} #[wasm_bindgen(js_name = "fromString")] pub fn from_string(string: &str) -> Result { Ok(Self(VerifyingKeyNative::from_str(string).map_err(|e| e.to_string())?)) @@ -68,7 +68,7 @@ impl VerifyingKey { /// Create a byte array from a verifying key /// - /// @returns {Uint8Array | Error} Byte representation of a verifying key + /// @returns {Uint8Array} Byte representation of a verifying key #[wasm_bindgen(js_name = "toBytes")] pub fn to_bytes(&self) -> Result, String> { self.0.to_bytes_le().map_err(|_| "Failed to serialize verifying key".to_string()) diff --git a/wasm/src/record/record_ciphertext.rs b/wasm/src/record/record_ciphertext.rs index 8d5d25df5..d26ebd9d4 100644 --- a/wasm/src/record/record_ciphertext.rs +++ b/wasm/src/record/record_ciphertext.rs @@ -31,7 +31,7 @@ impl RecordCiphertext { /// Create a record ciphertext from a string /// /// @param {string} record String representation of a record ciphertext - /// @returns {RecordCiphertext | Error} Record ciphertext + /// @returns {RecordCiphertext} Record ciphertext #[wasm_bindgen(js_name = fromString)] pub fn from_string(record: &str) -> Result { Self::from_str(record).map_err(|_| "The record ciphertext string provided was invalid".to_string()) @@ -50,7 +50,7 @@ impl RecordCiphertext { /// decrypt if the record was encrypted by the account corresponding to the view key /// /// @param {ViewKey} view_key View key used to decrypt the ciphertext - /// @returns {RecordPlaintext | Error} Record plaintext object + /// @returns {RecordPlaintext} Record plaintext object pub fn decrypt(&self, view_key: &ViewKey) -> Result { Ok(RecordPlaintext::from( self.0.decrypt(view_key).map_err(|_| "Decryption failed - view key did not match record".to_string())?, diff --git a/wasm/src/record/record_plaintext.rs b/wasm/src/record/record_plaintext.rs index c8d182c16..5a4ddc552 100644 --- a/wasm/src/record/record_plaintext.rs +++ b/wasm/src/record/record_plaintext.rs @@ -43,7 +43,7 @@ impl RecordPlaintext { /// Return a record plaintext from a string. /// /// @param {string} record String representation of a plaintext representation of an Aleo record - /// @returns {RecordPlaintext | Error} Record plaintext + /// @returns {RecordPlaintext} Record plaintext #[wasm_bindgen(js_name = fromString)] pub fn from_string(record: &str) -> Result { Self::from_str(record).map_err(|_| "The record plaintext string provided was invalid".into()) @@ -78,7 +78,7 @@ impl RecordPlaintext { /// @param {PrivateKey} private_key Private key of the account that owns the record /// @param {string} program_id Program ID of the program that the record is associated with /// @param {string} record_name Name of the record - /// @returns {string | Error} Serial number of the record + /// @returns {string} Serial number of the record #[wasm_bindgen(js_name = serialNumberString)] pub fn serial_number_string( &self, diff --git a/website/src/workers/worker.js b/website/src/workers/worker.js index b60097bfd..0691804da 100644 --- a/website/src/workers/worker.js +++ b/website/src/workers/worker.js @@ -26,7 +26,7 @@ self.addEventListener("message", (ev) => { const program = programManager.createProgramFromSource(localProgram); const program_id = program.id(); if (!program.hasFunction(aleoFunction)) { - throw `Program ${program_id} does not contain function ${aleoFunction}`; + throw new Error(`Program ${program_id} does not contain function ${aleoFunction}`); } const cacheKey = `${program_id}:${aleoFunction}`; @@ -104,7 +104,7 @@ self.addEventListener("message", (ev) => { const program = await programManager.networkClient.getProgramObject(remoteProgram); const program_id = program.id(); if (!program.hasFunction(aleoFunction)) { - throw `Program ${program_id} does not contain function ${aleoFunction}`; + throw new Error(`Program ${program_id} does not contain function ${aleoFunction}`); } // Get the proving and verifying keys for the function @@ -161,7 +161,7 @@ self.addEventListener("message", (ev) => { const program = await programManager.networkClient.getProgramObject(remoteProgram); const program_id = program.id(); if (!program.getFunctions().includes(aleoFunction)) { - throw `Program ${program_id} does not contain function ${aleoFunction}`; + throw new Error(`Program ${program_id} does not contain function ${aleoFunction}`); } const cacheKey = `${program_id}:${aleoFunction}`; const imports = await programManager.networkClient.getProgramImports(remoteProgram); @@ -312,7 +312,7 @@ self.addEventListener("message", (ev) => { } if (programExists) { - throw `Program ${programObject.id()} already exists on the network`; + throw new Error(`Program ${programObject.id()} already exists on the network`); } console.log("fee is: ", fee); diff --git a/yarn.lock b/yarn.lock index dea1c76ba..66b677c2e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -94,7 +94,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz" integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.17.2", "@babel/core@^7.22.20", "@babel/core@^7.22.9", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.7.5", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.17.2", "@babel/core@^7.22.20", "@babel/core@^7.22.9", "@babel/core@^7.7.5": version "7.23.2" resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz" integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== @@ -1253,7 +1253,7 @@ style-mod "^4.0.0" w3c-keyname "^2.2.4" -"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@>=6.0.0": +"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0": version "6.21.3" resolved "https://registry.npmjs.org/@codemirror/view/-/view-6.21.3.tgz" integrity sha512-8l1aSQ6MygzL4Nx7GVYhucSXvW4jQd0F6Zm3v9Dg+6nZEfwzJVqi4C2zHfDljID+73gsQrWp9TgHc81xU15O4A== @@ -1289,6 +1289,36 @@ resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@esbuild/android-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" + integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== + +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" + integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" + integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + "@esbuild/darwin-arm64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz" @@ -1299,6 +1329,186 @@ resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz" integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== +"@esbuild/darwin-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" + integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/freebsd-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" + integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" + integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/linux-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" + integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" + integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-ia32@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" + integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-loong64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" + integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-mips64el@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" + integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-ppc64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" + integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-riscv64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" + integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-s390x@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" + integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" + integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/netbsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" + integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/openbsd-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" + integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/sunos-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" + integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/win32-arm64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" + integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-ia32@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" + integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-x64@0.17.19": + version "0.17.19" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" + integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" @@ -1558,7 +1768,7 @@ slash "^3.0.0" write-file-atomic "^4.0.2" -"@jest/types@^29.0.0", "@jest/types@^29.6.3": +"@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== @@ -1602,14 +1812,6 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - "@jridgewell/trace-mapping@0.3.9": version "0.3.9" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" @@ -1618,6 +1820,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.19" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@jsdoc/salty@^0.2.4": version "0.2.5" resolved "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.5.tgz" @@ -1671,6 +1881,46 @@ resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.4.tgz" integrity sha512-Df8SHuXgF1p+aonBMcDPEsaahNo2TCwuie7VXED4FVyECvdXfRT9unapm54NssV9tF3OQFKBFOdlje4T43VO0w== +"@next/swc-darwin-x64@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.4.tgz#fa11bb97bf06cd45cbd554354b46bf93e22c025b" + integrity sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw== + +"@next/swc-linux-arm64-gnu@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.4.tgz#dd3a482cd6871ed23b049066a0f3c4c2f955dc88" + integrity sha512-l/k/fvRP/zmB2jkFMfefmFkyZbDkYW0mRM/LB+tH5u9pB98WsHXC0WvDHlGCYp3CH/jlkJPL7gN8nkTQVrQ/2w== + +"@next/swc-linux-arm64-musl@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.4.tgz#ed6d7abaf5712cff2752ce5300d6bacc6aff1b18" + integrity sha512-YYGb7SlLkI+XqfQa8VPErljb7k9nUnhhRrVaOdfJNCaQnHBcvbT7cx/UjDQLdleJcfyg1Hkn5YSSIeVfjgmkTg== + +"@next/swc-linux-x64-gnu@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.4.tgz#977a040388e8a685a3a85e0dbdff90a4ee2a7189" + integrity sha512-uE61vyUSClnCH18YHjA8tE1prr/PBFlBFhxBZis4XBRJoR+txAky5d7gGNUIbQ8sZZ7LVkSVgm/5Fc7mwXmRAg== + +"@next/swc-linux-x64-musl@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.4.tgz#3e29a0ad8efc016196c3a120da04397eea328b2a" + integrity sha512-qVEKFYML/GvJSy9CfYqAdUexA6M5AklYcQCW+8JECmkQHGoPxCf04iMh7CPR7wkHyWWK+XLt4Ja7hhsPJtSnhg== + +"@next/swc-win32-arm64-msvc@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.4.tgz#18a236c3fe5a48d24b56d939e6a05488bb682b7e" + integrity sha512-mDSQfqxAlfpeZOLPxLymZkX0hYF3juN57W6vFHTvwKlnHfmh12Pt7hPIRLYIShk8uYRsKPtMTth/EzpwRI+u8w== + +"@next/swc-win32-ia32-msvc@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.4.tgz#255132243ab6fb20d3c7c92a585e2c4fa50368fe" + integrity sha512-aoqAT2XIekIWoriwzOmGFAvTtVY5O7JjV21giozBTP5c6uZhpvTWRbmHXbmsjZqY4HnEZQRXWkSAppsIBweKqw== + +"@next/swc-win32-x64-msvc@13.5.4": + version "13.5.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.4.tgz#cc542907b55247c5634d9a8298e1c143a1847e25" + integrity sha512-cyRvlAxwlddlqeB9xtPSfNSCRy8BOa4wtMo0IuI9P7Y0XT2qpDrpFKRyZ7kUngZis59mPVla5k8X1oOJ8RxDYg== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" @@ -1679,7 +1929,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -1697,19 +1947,6 @@ resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@provablehq/sdk@^0.6.0", "@provablehq/sdk@^0.6.2", "@provablehq/sdk@file:/Users/jake/Documents/GitHub/sdk/sdk": - version "0.6.12" - resolved "file:sdk" - dependencies: - "@provablehq/wasm" "^0.6.0" - comlink "^4.4.1" - mime "^3.0.0" - sync-request "^6.1.0" - -"@provablehq/wasm@^0.6.0", "@provablehq/wasm@file:/Users/jake/Documents/GitHub/sdk/wasm": - version "0.6.12" - resolved "file:wasm" - "@rc-component/color-picker@~1.4.1": version "1.4.1" resolved "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-1.4.1.tgz" @@ -1868,15 +2105,85 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@rollup/rollup-darwin-arm64@4.1.4": - version "4.1.4" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.1.4.tgz" - integrity sha512-7vTYrgEiOrjxnjsgdPB+4i7EMxbVp7XXtS+50GJYj695xYTTEMn3HZVEvgtwjOUkAP/Q4HDejm4fIAjLeAfhtg== - -"@rollup/rollup-darwin-arm64@4.19.2": - version "4.19.2" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.2.tgz" - integrity sha512-IIARRgWCNWMTeQH+kr/gFTHJccKzwEaI0YSvtqkEBPj7AshElFq89TyreKNFAGh5frLfDCbodnq+Ye3dqGKPBw== +"@rollup/rollup-android-arm-eabi@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz#c3f5660f67030c493a981ac1d34ee9dfe1d8ec0f" + integrity sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA== + +"@rollup/rollup-android-arm64@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz#64161f0b67050023a3859e723570af54a82cff5c" + integrity sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ== + +"@rollup/rollup-darwin-arm64@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz#25f3d57b1da433097cfebc89341b355901615763" + integrity sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q== + +"@rollup/rollup-darwin-x64@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz#d8ddaffb636cc2f59222c50316e27771e48966df" + integrity sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz#41bd4fcffa20fb84f3dbac6c5071638f46151885" + integrity sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA== + +"@rollup/rollup-linux-arm-musleabihf@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz#842077c5113a747eb5686f19f2f18c33ecc0acc8" + integrity sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw== + +"@rollup/rollup-linux-arm64-gnu@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz#65d1d5b6778848f55b7823958044bf3e8737e5b7" + integrity sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ== + +"@rollup/rollup-linux-arm64-musl@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz#50eef7d6e24d0fe3332200bb666cad2be8afcf86" + integrity sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q== + +"@rollup/rollup-linux-powerpc64le-gnu@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz#8837e858f53c84607f05ad0602943e96d104c6b4" + integrity sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw== + +"@rollup/rollup-linux-riscv64-gnu@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz#c894ade2300caa447757ddf45787cca246e816a4" + integrity sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA== + +"@rollup/rollup-linux-s390x-gnu@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz#5841e5390d4c82dd5cdf7b2c95a830e3c2f47dd3" + integrity sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg== + +"@rollup/rollup-linux-x64-gnu@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz#cc1f26398bf777807a99226dc13f47eb0f6c720d" + integrity sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew== + +"@rollup/rollup-linux-x64-musl@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz#1507465d9056e0502a590d4c1a00b4d7b1fda370" + integrity sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg== + +"@rollup/rollup-win32-arm64-msvc@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz#86a221f01a2c248104dd0defb4da119f2a73642e" + integrity sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA== + +"@rollup/rollup-win32-ia32-msvc@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz#8bc8f77e02760aa664694b4286d6fbea7f1331c5" + integrity sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A== + +"@rollup/rollup-win32-x64-msvc@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz#601fffee719a1e8447f908aca97864eec23b2784" + integrity sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg== "@sinclair/typebox@^0.27.8": version "0.27.8" @@ -1902,7 +2209,52 @@ resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.93.tgz" integrity sha512-gEKgk7FVIgltnIfDO6GntyuQBBlAYg5imHpRgLxB1zSI27ijVVkksc6QwISzFZAhKYaBWIsFSVeL9AYSziAF7A== -"@swc/core@^1.3.85", "@swc/core@>=1.2.50": +"@swc/core-darwin-x64@1.3.93": + version "1.3.93" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.93.tgz#18409c6effdf508ddf1ebccfa77d35aaa6cd72f0" + integrity sha512-ZQPxm/fXdDQtn3yrYSL/gFfA8OfZ5jTi33yFQq6vcg/Y8talpZ+MgdSlYM0FkLrZdMTYYTNFiuBQuuvkA+av+Q== + +"@swc/core-linux-arm-gnueabihf@1.3.93": + version "1.3.93" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.93.tgz#23a97bc94a8b2f23fb6cc4bc9d8936899e5eeff5" + integrity sha512-OYFMMI2yV+aNe3wMgYhODxHdqUB/jrK0SEMHHS44GZpk8MuBXEF+Mcz4qjkY5Q1EH7KVQqXb/gVWwdgTHpjM2A== + +"@swc/core-linux-arm64-gnu@1.3.93": + version "1.3.93" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.93.tgz#7a17406a7cf76a959a617626d5ee2634ae9afa26" + integrity sha512-BT4dT78odKnJMNiq5HdjBsv29CiIdcCcImAPxeFqAeFw1LL6gh9nzI8E96oWc+0lVT5lfhoesCk4Qm7J6bty8w== + +"@swc/core-linux-arm64-musl@1.3.93": + version "1.3.93" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.93.tgz#a30be7780090afefd3b8706398418cbe1d23db49" + integrity sha512-yH5fWEl1bktouC0mhh0Chuxp7HEO4uCtS/ly1Vmf18gs6wZ8DOOkgAEVv2dNKIryy+Na++ljx4Ym7C8tSJTrLw== + +"@swc/core-linux-x64-gnu@1.3.93": + version "1.3.93" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.93.tgz#41e903fd82e059952d16051b442cbe65ee5b8cb3" + integrity sha512-OFUdx64qvrGJhXKEyxosHxgoUVgba2ztYh7BnMiU5hP8lbI8G13W40J0SN3CmFQwPP30+3oEbW7LWzhKEaYjlg== + +"@swc/core-linux-x64-musl@1.3.93": + version "1.3.93" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.93.tgz#0866807545c44eac9b3254b374310ad5e1c573f9" + integrity sha512-4B8lSRwEq1XYm6xhxHhvHmKAS7pUp1Q7E33NQ2TlmFhfKvCOh86qvThcjAOo57x8DRwmpvEVrqvpXtYagMN6Ig== + +"@swc/core-win32-arm64-msvc@1.3.93": + version "1.3.93" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.93.tgz#c72411dea2fd4f62a832f71a6e15424d849e7610" + integrity sha512-BHShlxtkven8ZjjvZ5QR6sC5fZCJ9bMujEkiha6W4cBUTY7ce7qGFyHmQd+iPC85d9kD/0cCiX/Xez8u0BhO7w== + +"@swc/core-win32-ia32-msvc@1.3.93": + version "1.3.93" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.93.tgz#05c2b031b976af4ef81f5073ee114254678a5d5d" + integrity sha512-nEwNWnz4JzYAK6asVvb92yeylfxMYih7eMQOnT7ZVlZN5ba9WF29xJ6kcQKs9HRH6MvWhz9+wRgv3FcjlU6HYA== + +"@swc/core-win32-x64-msvc@1.3.93": + version "1.3.93" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.93.tgz#f8748b3fd1879f13084b1b0814edf328c662935c" + integrity sha512-jibQ0zUr4kwJaQVwgmH+svS04bYTPnPw/ZkNInzxS+wFAtzINBYcU8s2PMWbDb2NGYiRSEeoSGyAvS9H+24JFA== + +"@swc/core@^1.3.85": version "1.3.93" resolved "https://registry.npmjs.org/@swc/core/-/core-1.3.93.tgz" integrity sha512-690GRr1wUGmGYZHk7fUduX/JUwViMF2o74mnZYIWEcJaCcd9MQfkhsxPBtjeg6tF+h266/Cf3RPYhsFBzzxXcA== @@ -1926,7 +2278,7 @@ resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz" integrity sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw== -"@swc/helpers@^0.5.0", "@swc/helpers@0.5.2": +"@swc/helpers@0.5.2": version "0.5.2" resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz" integrity sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw== @@ -1958,6 +2310,11 @@ resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== +"@types/babel-types@*", "@types/babel-types@^7.0.0": + version "7.0.12" + resolved "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.12.tgz" + integrity sha512-HKFKGgwbKpfvjPuEKveybTYHUTSsbBRS72aLI7Gp1X/egZlgtXzmvCqBrmoFdbsh7U7CsLYFmULNIt7nmS89xw== + "@types/babel__core@^7.1.14", "@types/babel__core@^7.20.2": version "7.20.2" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz" @@ -1998,11 +2355,6 @@ dependencies: "@babel/types" "^7.20.7" -"@types/babel-types@*", "@types/babel-types@^7.0.0": - version "7.0.12" - resolved "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.12.tgz" - integrity sha512-HKFKGgwbKpfvjPuEKveybTYHUTSsbBRS72aLI7Gp1X/egZlgtXzmvCqBrmoFdbsh7U7CsLYFmULNIt7nmS89xw== - "@types/babylon@^6.16.2": version "6.16.7" resolved "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.7.tgz" @@ -2063,7 +2415,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@1.0.5": +"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0": version "1.0.5" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -2161,7 +2513,7 @@ resolved "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.3.tgz" integrity sha512-pTjcqY9E4nOI55Wgpz7eiI8+LzdYnw3qxXCfHyBDdPbYvbyLgWLJGh8EdPvqawwMK1Uo1794AUkkR38Fr0g+2g== -"@types/markdown-it@*", "@types/markdown-it@^12.2.3": +"@types/markdown-it@^12.2.3": version "12.2.3" resolved "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz" integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== @@ -2189,7 +2541,7 @@ resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.3.tgz" integrity sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A== -"@types/node@*", "@types/node@^20", "@types/node@^20.8.7", "@types/node@>= 14": +"@types/node@*", "@types/node@^20", "@types/node@^20.8.7": version "20.14.13" resolved "https://registry.npmjs.org/@types/node/-/node-20.14.13.tgz" integrity sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w== @@ -2336,7 +2688,7 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.41.0": +"@typescript-eslint/parser@^5.41.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== @@ -2495,7 +2847,7 @@ globby "^13.2.2" magic-string "^0.30.0" -"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6": +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": version "1.11.6" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== @@ -2596,7 +2948,7 @@ "@webassemblyjs/wasm-gen" "1.11.6" "@webassemblyjs/wasm-parser" "1.11.6" -"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.6": +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": version "1.11.6" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== @@ -2681,21 +3033,16 @@ acorn@^3.1.0: resolved "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" integrity sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw== -acorn@^4.0.4: +acorn@^4.0.4, acorn@~4.0.2: version "4.0.13" resolved "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz" integrity sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.10.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.10.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.10.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== -acorn@~4.0.2: - version "4.0.13" - resolved "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz" - integrity sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug== - ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" @@ -2715,7 +3062,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: +ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2725,7 +3072,7 @@ ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.9.0: version "8.12.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -2735,58 +3082,6 @@ ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0: require-from-string "^2.0.2" uri-js "^4.2.2" -"aleo-react-leo-starter@file:/Users/jake/Documents/GitHub/sdk/create-leo-app/template-react-leo": - version "0.0.0" - resolved "file:create-leo-app/template-react-leo" - dependencies: - "@provablehq/sdk" "^0.6.0" - comlink "^4.4.1" - react "^18.2.0" - react-dom "^18.2.0" - -"aleo-react-managed-worker-starter@file:/Users/jake/Documents/GitHub/sdk/create-leo-app/template-react-managed-worker": - version "0.0.0" - resolved "file:create-leo-app/template-react-managed-worker" - dependencies: - "@provablehq/sdk" "^0.6.0" - react "^18.2.0" - react-dom "^18.2.0" - -"aleo-react-typescript-starter@file:/Users/jake/Documents/GitHub/sdk/create-leo-app/template-react-ts": - version "0.0.0" - resolved "file:create-leo-app/template-react-ts" - dependencies: - "@provablehq/sdk" "^0.6.2" - comlink "^4.4.1" - react "^18.2.0" - react-dom "^18.2.0" - -"aleo-starter@file:/Users/jake/Documents/GitHub/sdk/create-leo-app/template-vanilla": - version "0.0.0" - resolved "file:create-leo-app/template-vanilla" - -"aleo-website@file:/Users/jake/Documents/GitHub/sdk/website": - version "0.1.0" - resolved "file:website" - dependencies: - "@ant-design/icons" "^4.4.0" - "@codemirror/language" "^6.8.0" - "@codemirror/legacy-modes" "^6.3.3" - "@codemirror/stream-parser" "^0.19.9" - "@provablehq/sdk" "^0.6.2" - "@uiw/codemirror-theme-noctis-lilac" "^4.21.8" - "@uiw/codemirror-theme-okaidia" "^4.21.7" - "@uiw/react-codemirror" "^4.21.7" - antd "^5.6.4" - axios "^1.6.0" - babel-loader "^8.2.3" - copy-to-clipboard "^3.3.1" - gh-pages "^3.1.0" - react "^18.2.0" - react-dom "^18.2.0" - react-router-dom "^6.14.1" - web-vitals "^0.2.4" - align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz" @@ -2929,16 +3224,16 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" -array-flatten@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== +array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + array-includes@^3.1.6: version "3.1.7" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz" @@ -3032,7 +3327,7 @@ asap@~2.0.3, asap@~2.0.6: resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -ast-types@^0.12.2, ast-types@0.12.4: +ast-types@0.12.4, ast-types@^0.12.2: version "0.12.4" resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.12.4.tgz" integrity sha512-ky/YVYCbtVAS8TdMIaTiPFHwEpRB5z1hctepJplTr3UW5q8TDrpIMCILyk8pmLxGtn2KCtC/lSn7zOsaI7nzDw== @@ -3094,7 +3389,7 @@ axios@^1.6.0: form-data "^4.0.0" proxy-from-env "^1.1.0" -babel-jest@^29.0.0, babel-jest@^29.7.0: +babel-jest@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== @@ -3324,7 +3619,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.14.5, browserslist@^4.21.9, browserslist@^4.22.1, "browserslist@>= 4.21.0": +browserslist@^4.14.5, browserslist@^4.21.9, browserslist@^4.22.1: version "4.22.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz" integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== @@ -3535,7 +3830,7 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== -classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2, classnames@2.x: +classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2: version "2.3.2" resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== @@ -3645,16 +3940,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + colorette@^2.0.10, colorette@^2.0.14: version "2.0.20" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" @@ -3672,12 +3967,7 @@ comlink@^4.4.1: resolved "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz" integrity sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q== -commander@^10.0.0: - version "10.0.1" - resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -commander@^10.0.1: +commander@^10.0.0, commander@^10.0.1: version "10.0.1" resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== @@ -3848,10 +4138,6 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -"create-leo-app@file:/Users/jake/Documents/GitHub/sdk/create-leo-app": - version "0.0.13" - resolved "file:create-leo-app" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" @@ -3911,7 +4197,7 @@ csstype@^3.0.10, csstype@^3.0.2: resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== -dayjs@^1.11.1, "dayjs@>= 1.x": +dayjs@^1.11.1: version "1.11.10" resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== @@ -3921,6 +4207,13 @@ de-indent@^1.0.2: resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz" integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + debug@^3.2.7: version "3.2.7" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" @@ -3935,13 +4228,6 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - decamelize@^1.0.0: version "1.2.0" resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" @@ -4002,16 +4288,16 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - depd@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + destroy@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" @@ -4467,7 +4753,7 @@ eslint-plugin-react@^7.32.2: semver "^6.3.1" string.prototype.matchall "^4.0.8" -eslint-scope@^5.1.1, eslint-scope@5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -4488,7 +4774,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@^8.26.0, eslint@^8.38.0, eslint@^8.45.0, eslint@>=7, eslint@>=7.0.0: +eslint@^8.26.0, eslint@^8.38.0, eslint@^8.45.0: version "8.51.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz" integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== @@ -4671,10 +4957,6 @@ express@^4.17.3: utils-merge "1.0.1" vary "~1.1.2" -"extension-starter@file:/Users/jake/Documents/GitHub/sdk/create-leo-app/template-extension": - version "0.0.0" - resolved "file:create-leo-app/template-extension" - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" @@ -4691,7 +4973,7 @@ fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.0: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -5003,14 +5285,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-parent@^6.0.2: +glob-parent@^6.0.1, glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -5022,18 +5297,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^10.2.2: - version "10.3.10" - resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - -glob@^10.3.7: +glob@^10.2.2, glob@^10.3.7: version "10.3.10" resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== @@ -5283,16 +5547,6 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -5304,6 +5558,16 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" @@ -5387,7 +5651,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5411,16 +5675,16 @@ interpret@^3.1.1: resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== -ipaddr.js@^2.0.1: - version "2.1.0" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" - integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== - ipaddr.js@1.9.1: 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== +ipaddr.js@^2.0.1: + version "2.1.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" + integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" @@ -5970,7 +6234,7 @@ jest-resolve-dependencies@^29.7.0: jest-regex-util "^29.6.3" jest-snapshot "^29.7.0" -jest-resolve@*, jest-resolve@^29.7.0: +jest-resolve@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== @@ -6123,7 +6387,7 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.0.0, jest@^29.7.0: +jest@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== @@ -6170,7 +6434,7 @@ js2xmlparser@^4.0.2: dependencies: xmlcreate "^2.0.4" -jsdoc@^3.6.11, "jsdoc@>=3.x <=4.x": +jsdoc@^3.6.11: version "3.6.11" resolved "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz" integrity sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg== @@ -6497,7 +6761,7 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" -make-error@^1.1.1, make-error@1.x: +make-error@1.x, make-error@^1.1.1: version "1.3.6" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -6514,7 +6778,7 @@ markdown-it-anchor@^8.4.1: resolved "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz" integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA== -markdown-it@*, markdown-it@^12.3.2: +markdown-it@^12.3.2: version "12.3.2" resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz" integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== @@ -6575,7 +6839,7 @@ micromatch@^4.0.2, micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -6587,16 +6851,16 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, dependencies: mime-db "1.52.0" -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - mime@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" @@ -6652,16 +6916,16 @@ minipass@^3.0.0: dependencies: yallist "^4.0.0" -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.4" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - minipass@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + minizlib@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" @@ -6712,16 +6976,16 @@ mri@^1.2.0: resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== -ms@^2.1.1, ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + ms@2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" @@ -6815,29 +7079,11 @@ node-int64@^0.4.0: resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -"node-offline-transaction-example@file:/Users/jake/Documents/GitHub/sdk/create-leo-app/template-offline-public-transaction-ts": - version "0.0.0" - resolved "file:create-leo-app/template-offline-public-transaction-ts" - dependencies: - "@provablehq/sdk" "^0.6.0" - node-releases@^2.0.13: version "2.0.13" resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== -"node-starter@file:/Users/jake/Documents/GitHub/sdk/create-leo-app/template-node": - version "0.0.0" - resolved "file:create-leo-app/template-node" - dependencies: - "@provablehq/sdk" "^0.6.0" - -"node-ts-starter@file:/Users/jake/Documents/GitHub/sdk/create-leo-app/template-node-ts": - version "0.0.0" - resolved "file:create-leo-app/template-node-ts" - dependencies: - "@provablehq/sdk" "^0.6.0" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" @@ -7195,7 +7441,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.1.0, postcss@^8.4.21, postcss@^8.4.27, postcss@8.4.31: +postcss@8.4.31, postcss@^8.4.21, postcss@^8.4.27: version "8.4.31" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -7209,16 +7455,16 @@ prelude-ls@^1.2.1: resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@^3.0.0, prettier@3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz" - integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== - prettier@2.7.1: version "2.7.1" resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +prettier@3.0.3, prettier@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== + pretty-bytes@^6.1.0: version "6.1.1" resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz" @@ -7273,7 +7519,7 @@ prompts@^2.0.1, prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.5.9, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -7420,13 +7666,6 @@ qrcode.react@^3.1.0: resolved "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz" integrity sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q== -qs@^6.4.0: - version "6.11.2" - resolved "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz" - integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== - dependencies: - side-channel "^1.0.4" - qs@6.11.0: version "6.11.0" resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" @@ -7434,6 +7673,13 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +qs@^6.4.0: + version "6.11.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" @@ -7824,15 +8070,7 @@ rc-upload@~4.3.5: classnames "^2.2.5" rc-util "^5.2.0" -rc-util@^5.0.1, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2.0, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.26.0, rc-util@^5.27.0, rc-util@^5.28.0, rc-util@^5.30.0, rc-util@^5.32.2, rc-util@^5.33.0, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.9.4: - version "5.37.0" - resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.37.0.tgz" - integrity sha512-cPMV8DzaHI1KDaS7XPRXAf4J7mtBqjvjikLpQieaeOO7+cEbqY2j7Kso/T0R0OiEZTNcLS/8Zl9YrlXiO9UbjQ== - dependencies: - "@babel/runtime" "^7.18.3" - react-is "^16.12.0" - -rc-util@^5.31.1: +rc-util@^5.0.1, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2.0, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.26.0, rc-util@^5.27.0, rc-util@^5.28.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.33.0, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.9.4: version "5.37.0" resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.37.0.tgz" integrity sha512-cPMV8DzaHI1KDaS7XPRXAf4J7mtBqjvjikLpQieaeOO7+cEbqY2j7Kso/T0R0OiEZTNcLS/8Zl9YrlXiO9UbjQ== @@ -7885,7 +8123,7 @@ react-docgen@^5.4.0: node-dir "^0.1.10" strip-indent "^3.0.0" -react-dom@*, "react-dom@^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0", react-dom@^17.0.2, react-dom@^18, react-dom@^18.2.0, "react-dom@>= 16.3", react-dom@>=16.0.0, react-dom@>=16.11.0, react-dom@>=16.8, react-dom@>=16.8.0, react-dom@>=16.9.0: +react-dom@^18, react-dom@^18.2.0: version "18.2.0" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== @@ -7903,12 +8141,7 @@ react-is@^16.12.0, react-is@^16.13.1: resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^18.0.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -react-is@^18.2.0: +react-is@^18.0.0, react-is@^18.2.0: version "18.2.0" resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== @@ -7933,7 +8166,7 @@ react-router@6.16.0: dependencies: "@remix-run/router" "1.9.0" -react@*, "react@^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", react@^17.0.2, react@^18, react@^18.2.0, "react@>= 16.3", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", react@>=16.0.0, react@>=16.11.0, react@>=16.8, react@>=16.8.0, react@>=16.9.0: +react@^18, react@^18.2.0: version "18.2.0" resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== @@ -8201,13 +8434,38 @@ rollup-plugin-typescript2@^0.36.0: semver "^7.5.4" tslib "^2.6.2" -rollup@^1.20.0||^2.0.0||^3.0.0||^4.0.0, rollup@^2.68.0||^3.0.0, rollup@^2.78.0||^3.0.0||^4.0.0, rollup@^3.0, rollup@^3.20.2, rollup@^3.27.1, rollup@^3.27.2, rollup@^4.0.0, rollup@>=1.26.3: +rollup@^3.20.2, rollup@^3.27.1, rollup@^3.27.2: version "3.29.4" resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz" integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== optionalDependencies: fsevents "~2.3.2" +rollup@^4.0.0: + version "4.20.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.20.0.tgz#f9d602161d29e178f0bf1d9f35f0a26f83939492" + integrity sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.20.0" + "@rollup/rollup-android-arm64" "4.20.0" + "@rollup/rollup-darwin-arm64" "4.20.0" + "@rollup/rollup-darwin-x64" "4.20.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.20.0" + "@rollup/rollup-linux-arm-musleabihf" "4.20.0" + "@rollup/rollup-linux-arm64-gnu" "4.20.0" + "@rollup/rollup-linux-arm64-musl" "4.20.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.20.0" + "@rollup/rollup-linux-riscv64-gnu" "4.20.0" + "@rollup/rollup-linux-s390x-gnu" "4.20.0" + "@rollup/rollup-linux-x64-gnu" "4.20.0" + "@rollup/rollup-linux-x64-musl" "4.20.0" + "@rollup/rollup-win32-arm64-msvc" "4.20.0" + "@rollup/rollup-win32-ia32-msvc" "4.20.0" + "@rollup/rollup-win32-x64-msvc" "4.20.0" + fsevents "~2.3.2" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" @@ -8225,25 +8483,15 @@ safe-array-concat@^1.0.1: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex-test@^1.0.0: version "1.0.0" @@ -8323,28 +8571,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.7: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.8: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.5.3: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.5.4: +semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -8498,14 +8725,6 @@ source-map-js@^1.0.2: resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-support@0.5.13: version "0.5.13" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" @@ -8514,6 +8733,14 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" @@ -8559,28 +8786,21 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - statuses@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== -string_decoder@^1.1.1, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - string-convert@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz" @@ -8663,6 +8883,13 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" +string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + "strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -8811,16 +9038,6 @@ tar@^6.1.11: mkdirp "^1.0.3" yallist "^4.0.0" -"template-nextjs@file:/Users/jake/Documents/GitHub/sdk/create-leo-app/template-nextjs-ts": - version "0.1.0" - resolved "file:create-leo-app/template-nextjs-ts" - dependencies: - "@provablehq/sdk" "^0.6.2" - next "13.5.4" - react "^18" - react-dom "^18" - terser-webpack-plugin "^5.3.9" - terser-webpack-plugin@^5.3.7, terser-webpack-plugin@^5.3.9: version "5.3.9" resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz" @@ -8832,7 +9049,7 @@ terser-webpack-plugin@^5.3.7, terser-webpack-plugin@^5.3.9: serialize-javascript "^6.0.1" terser "^5.16.8" -terser@^5.10.0, terser@^5.15.1, terser@^5.16.8, terser@^5.4.0: +terser@^5.10.0, terser@^5.15.1, terser@^5.16.8: version "5.21.0" resolved "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz" integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw== @@ -8956,7 +9173,7 @@ ts-map@^1.0.3: resolved "https://registry.npmjs.org/ts-map/-/ts-map-1.0.3.tgz" integrity sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w== -ts-node@^10.9.1, ts-node@>=9.0.0: +ts-node@^10.9.1: version "10.9.2" resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== @@ -9081,16 +9298,16 @@ typescript@^3.2.2: resolved "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz" integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== -"typescript@^4.1 || ^5.0", typescript@^5, typescript@^5.0.4, typescript@^5.2.2, typescript@>=2.4.0, typescript@>=2.7, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=4.3 <6", typescript@>=5.1.6: - version "5.2.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" - integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== - typescript@^4.5.4: version "4.9.5" resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@^5, typescript@^5.0.4, typescript@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz" @@ -9200,7 +9417,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unpipe@~1.0.0, unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -9272,7 +9489,7 @@ vary@~1.1.2: resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -vite@^4, vite@^4.2.0, vite@^4.4.12: +vite@^4.4.12: version "4.4.12" resolved "https://registry.npmjs.org/vite/-/vite-4.4.12.tgz" integrity sha512-KtPlUbWfxzGVul8Nut8Gw2Qe8sBzWY+8QVc5SL8iRFnpnrcoCaNlzO40c1R6hPmcdTwIPEDkq0Y9+27a5tVbdQ== @@ -9338,7 +9555,7 @@ wasm-pack@^0.12.1: dependencies: binary-install "^1.0.1" -watchpack@^2.4.0, watchpack@2.4.0: +watchpack@2.4.0, watchpack@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== @@ -9363,7 +9580,7 @@ webidl-conversions@^3.0.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -webpack-cli@^5.1.4, webpack-cli@5.x.x: +webpack-cli@^5.1.4: version "5.1.4" resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz" integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== @@ -9442,7 +9659,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.76.0, webpack@>=2, webpack@5.x.x: +webpack@^5.76.0: version "5.88.2" resolved "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz" integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== @@ -9472,7 +9689,7 @@ webpack-sources@^3.2.3: watchpack "^2.4.0" webpack-sources "^3.2.3" -websocket-driver@^0.7.4, websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -9649,12 +9866,7 @@ yargs-parser@^20.2.2, yargs-parser@^20.2.9: resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.0.1: - version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs-parser@^21.1.1: +yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==