diff --git a/e2e-nodejs/group-rli/test-rli-from-lit-node-client-no-delegatee.mjs b/e2e-nodejs/group-rli/test-rli-from-lit-node-client-no-delegatee.mjs new file mode 100644 index 0000000000..aa35694e46 --- /dev/null +++ b/e2e-nodejs/group-rli/test-rli-from-lit-node-client-no-delegatee.mjs @@ -0,0 +1,184 @@ +// Usage: +// DEBUG=true NETWORK=manzano MINT_NEW=true yarn test:e2e:nodejs --filter=test-rli-from-lit-node-client-no-delegatee.mjs +import path from 'path'; +import { success, fail, testThis } from '../../tools/scripts/utils.mjs'; +import LITCONFIG from '../../lit.config.json' assert { type: 'json' }; +import { LitNodeClient } from '@lit-protocol/lit-node-client'; +import { LitAbility, LitActionResource } from '@lit-protocol/auth-helpers'; + +import { LitContracts } from '@lit-protocol/contracts-sdk'; +import { ethers } from 'ethers'; +import * as siwe from 'siwe'; + +export async function main() { + if (process.env.LOAD_ENV === 'false') { + console.log('❗️ This test cannot be run with LOAD_ENV=false'); + process.exit(); + } + + // NOTE: In this example, there will be no delegatees in the array + // ==================== Setup ==================== + + // ==================================================== + // = dApp Owner's Perspetive = + // ==================================================== + const provider = new ethers.providers.JsonRpcProvider( + LITCONFIG.CHRONICLE_RPC + ); + globalThis.LitCI.wallet = new ethers.Wallet( + LITCONFIG.CONTROLLER_PRIVATE_KEY, + provider + ); + const dAppOwnerWallet = globalThis.LitCI.wallet; + + // As a dApp owner, I want to mint a Rate Limit Increase NFT so he who owns or delegated to + // would be able to perform 14400 requests per day + let contractClient = new LitContracts({ + signer: dAppOwnerWallet, + debug: process.env.DEBUG === 'true' ?? LITCONFIG.TEST_ENV.debug, + network: process.env.NETWORK ?? LITCONFIG.TEST_ENV.litNetwork, + }); + + await contractClient.connect(); + + // -- mint new Capacity Credits NFT + const { capacityTokenIdStr } = await contractClient.mintCapacityCreditsNFT({ + requestsPerDay: 14400, // 10 request per minute + daysUntilUTCMidnightExpiration: 2, + }); + + const litNodeClient = new LitNodeClient({ + litNetwork: process.env.NETWORK ?? LITCONFIG.TEST_ENV.litNetwork, + debug: process.env.DEBUG === 'true' ?? LITCONFIG.TEST_ENV.debug, + minNodeCount: undefined, + checkNodeAttestation: process.env.CHECK_SEV ?? false, + }); + + await litNodeClient.connect(); + + // we will create an delegation auth sig, which internally we will create + // a recap object, add the resource "lit-ratelimitincrease://{tokenId}" to it, and add it to the siwe + // message. We will then sign the siwe message with the dApp owner's wallet. + const { capacityDelegationAuthSig } = + await litNodeClient.createCapacityDelegationAuthSig({ + uses: '1', + dAppOwnerWallet: dAppOwnerWallet, + capacityTokenId: capacityTokenIdStr, + }); + + // ==================================================== + // = As an end user = + // ==================================================== + const endUserContractClient = new LitContracts({ + signer: dAppOwnerWallet, + debug: process.env.DEBUG === 'true' ?? LITCONFIG.TEST_ENV.debug, + network: process.env.NETWORK ?? LITCONFIG.TEST_ENV.litNetwork, + }); + + await endUserContractClient.connect(); + + let endUserPkpMintRes = + await endUserContractClient.pkpNftContractUtils.write.mint(); + + const endUserPkpInfo = endUserPkpMintRes.pkp; + + // We need to setup a generic siwe auth callback that will be called by the lit-node-client + const endUserControllerAuthNeededCallback = async ({ + resources, + expiration, + uri, + }) => { + const litResource = new LitActionResource('*'); + + const recapObject = + await litNodeClient.generateSessionCapabilityObjectWithWildcards([ + litResource, + ]); + + recapObject.addCapabilityForResource( + litResource, + LitAbility.LitActionExecution + ); + + const verified = recapObject.verifyCapabilitiesForResource( + litResource, + LitAbility.LitActionExecution + ); + + if (!verified) { + throw new Error('Failed to verify capabilities for resource'); + } + + console.log('authCallback verified:', verified); + + let siweMessage = new siwe.SiweMessage({ + domain: 'localhost:3000', + address: dAppOwnerWallet.address, + statement: 'Some custom statement.', + uri, + version: '1', + chainId: '1', + expirationTime: expiration, + resources, + }); + + siweMessage = recapObject.addToSiweMessage(siweMessage); + + const messageToSign = siweMessage.prepareMessage(); + const signature = await dAppOwnerWallet.signMessage(messageToSign); + + const authSig = { + sig: signature.replace('0x', ''), + derivedVia: 'web3.eth.personal.sign', + signedMessage: messageToSign, + address: dAppOwnerWallet.address, + }; + + return authSig; + }; + + // - When generating a session sigs, we need to specify the resourceAbilityRequests, which + // is a list of resources and abilities that we want to be able to perform. + // "lit-ratelimitincrease://{tokenId}" that the dApp owner has delegated to us. + // - We also included the capacityDelegationAuthSig that we created earlier, which would be + // added to the capabilities array in the signing template. + let sessionSigs = await litNodeClient.getSessionSigs({ + expiration: new Date(Date.now() + 1000 * 60 * 60 * 24).toISOString(), // 24 hours + chain: 'ethereum', + resourceAbilityRequests: [ + { + resource: new LitActionResource('*'), + ability: LitAbility.LitActionExecution, + }, + ], + authNeededCallback: endUserControllerAuthNeededCallback, + capacityDelegationAuthSig, + }); + + // /web/execute + const res = await litNodeClient.executeJs({ + sessionSigs, + code: `(async () => { + const sigShare = await LitActions.signEcdsa({ + toSign: dataToSign, + publicKey, + sigName: "sig", + }); + })();`, + authMethods: [], + jsParams: { + dataToSign: ethers.utils.arrayify( + ethers.utils.keccak256([1, 2, 3, 4, 5]) + ), + publicKey: endUserPkpInfo.publicKey, + }, + }); + + if (res) { + return success('delegatee able to sign'); + } + + return fail(`Failed to get proof from Recap Session Capability`); +} + +await testThis({ name: path.basename(import.meta.url), fn: main }); diff --git a/packages/lit-node-client-nodejs/src/lib/lit-node-client-nodejs.ts b/packages/lit-node-client-nodejs/src/lib/lit-node-client-nodejs.ts index a7d51b5af0..c1511a9d1d 100644 --- a/packages/lit-node-client-nodejs/src/lib/lit-node-client-nodejs.ts +++ b/packages/lit-node-client-nodejs/src/lib/lit-node-client-nodejs.ts @@ -118,7 +118,7 @@ import * as siwe from 'siwe'; interface CapacityCreditsReq { dAppOwnerWallet: ethers.Wallet; capacityTokenId: string; - delegateeAddresses: string[]; + delegateeAddresses?: string[]; uses?: string; domain?: string; expiration?: string; @@ -135,8 +135,7 @@ interface CapacityCreditsRes { export class LitNodeClientNodeJs extends LitCore - implements LitClientSessionManager -{ + implements LitClientSessionManager { defaultAuthCallback?: (authSigParams: AuthCallbackParams) => Promise; // ========== Constructor ========== @@ -195,6 +194,11 @@ export class LitNodeClientNodeJs statement, } = params; + // -- if delegateeAddresses is not provided, set it to an empty array + if (!delegateeAddresses) { + delegateeAddresses = []; + } + // -- This is the owner address who holds the Capacity Credits NFT token and wants to delegate its // usage to a list of delegatee addresses const dAppOwnerWalletAddress = ethers.utils.getAddress( @@ -221,8 +225,8 @@ export class LitNodeClientNodeJs } // -- validate - if (!dAppOwnerWallet || !delegateeAddresses) { - throw new Error('Both parameters must exist'); + if (!dAppOwnerWallet) { + throw new Error('dAppOwnerWallet must exist'); } // -- validate dAppOwnerWallet is an ethers wallet @@ -230,10 +234,10 @@ export class LitNodeClientNodeJs // throw new Error('dAppOwnerWallet must be an ethers wallet'); // } - // -- validate delegateeAddresses has to be an array and has to have at least one address - if (!Array.isArray(delegateeAddresses) || delegateeAddresses.length === 0) { - throw new Error( - 'delegateeAddresses must be an array and has to have at least one' + // -- Strip the 0x prefix from each element in the addresses array if it exists + if (delegateeAddresses && delegateeAddresses.length > 0) { + delegateeAddresses = delegateeAddresses.map((address) => + address.startsWith('0x') ? address.slice(2) : address ); } @@ -242,11 +246,6 @@ export class LitNodeClientNodeJs // lit-ratelimitincrease://{tokenId} const litResource = new LitRLIResource(capacityTokenId); - // Strip the 0x prefix from each element in the addresses array - delegateeAddresses = delegateeAddresses.map((address) => - address.startsWith('0x') ? address.slice(2) : address - ); - const recapObject = await this.generateSessionCapabilityObjectWithWildcards( [litResource] ); @@ -2768,8 +2767,8 @@ export class LitNodeClientNodeJs const sessionCapabilityObject = params.sessionCapabilityObject ? params.sessionCapabilityObject : await this.generateSessionCapabilityObjectWithWildcards( - params.resourceAbilityRequests.map((r) => r.resource) - ); + params.resourceAbilityRequests.map((r) => r.resource) + ); const expiration = params.expiration || LitNodeClientNodeJs.getExpiration(); if (!this.latestBlockhash) { diff --git a/yarn.lock b/yarn.lock index d27c910b89..6c85aab44f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3269,10 +3269,10 @@ resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.2.tgz#d693d972974a354034454ec1317eb6afd0b00312" integrity sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g== -"@lit-protocol/accs-schemas@0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@lit-protocol/accs-schemas/-/accs-schemas-0.0.3.tgz#fdcabd16b78df5b065e8ea581af7ba21eccf7182" - integrity sha512-hjdJzeHHRABnelu3dZVQFEJUVdtJ9bs7in6uknvWonhTgr4N2m4uMMmYSMGMLXFBpMC53F8V3iF47KxZllCHtQ== +"@lit-protocol/accs-schemas@0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@lit-protocol/accs-schemas/-/accs-schemas-0.0.5.tgz#d75bf5f4dfa7e2bb04e0138187aa4694ec3e6c06" + integrity sha512-1FCnF4b5YUoT2+8uyJodaKGsjtHvRdGNHPa9IMeo5Q5rRys3LB9OXuJkXApdePrN+sYe55C6/KXqpPIJzkc5Kw== dependencies: ajv "^8.12.0" @@ -3383,11 +3383,6 @@ "@motionone/dom" "^10.16.4" tslib "^2.3.1" -"@multiformats/base-x@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" - integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== - "@multiformats/murmur3@^2.0.0": version "2.1.8" resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-2.1.8.tgz#81c1c15b6391109f3febfca4b3205196615a04e9" @@ -9736,16 +9731,6 @@ cids@^0.7.1: multicodec "^1.0.0" multihashes "~0.4.15" -cids@^1.0.0, cids@^1.1.5, cids@^1.1.6: - version "1.1.9" - resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.9.tgz#402c26db5c07059377bcd6fb82f2a24e7f2f4a4f" - integrity sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg== - dependencies: - multibase "^4.0.1" - multicodec "^3.0.1" - multihashes "^4.0.1" - uint8arrays "^3.0.0" - cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -12014,7 +11999,7 @@ err-code@^2.0.2: resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -err-code@^3.0.0, err-code@^3.0.1: +err-code@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== @@ -14974,14 +14959,6 @@ h3@^1.10.0, h3@^1.8.2: uncrypto "^0.1.3" unenv "^1.8.0" -hamt-sharding@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-2.0.1.tgz#f45686d0339e74b03b233bee1bde9587727129b6" - integrity sha512-vnjrmdXG9dDs1m/H4iJ6z0JFI2NtgsW5keRkTcM85NGak69Mkf5PHUqBz+Xs0T4sg0ppvj9O5EGAJo40FTxmmA== - dependencies: - sparse-array "^1.3.1" - uint8arrays "^3.0.0" - hamt-sharding@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-3.0.2.tgz#a3fba1e4e6b58469388a0e1458768c78c0cd95f6" @@ -15856,15 +15833,6 @@ interface-datastore@^6.0.2: nanoid "^3.0.2" uint8arrays "^3.0.0" -interface-ipld-format@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/interface-ipld-format/-/interface-ipld-format-1.0.1.tgz#bee39c70c584a033e186ff057a2be89f215963e3" - integrity sha512-WV/ar+KQJVoQpqRDYdo7YPGYIUHJxCuOEhdvsRpzLqoOIVCqPKdMMYmsLL1nCRsF3yYNio+PAJbCKiv6drrEAg== - dependencies: - cids "^1.1.6" - multicodec "^3.0.1" - multihashes "^4.0.2" - interface-store@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-2.0.2.tgz#83175fd2b0c501585ed96db54bb8ba9d55fce34c" @@ -16008,14 +15976,6 @@ ipfs-http-client@56.0.0: stream-to-it "^0.2.2" uint8arrays "^3.0.0" -ipfs-only-hash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/ipfs-only-hash/-/ipfs-only-hash-4.0.0.tgz#b3bd60a244d9eb7394961aa9d812a2e5ac7c04d6" - integrity sha512-TE1DZCvfw8i3gcsTq3P4TFx3cKFJ3sluu/J3XINkJhIN9OwJgNMqKA+WnKx6ByCb1IoPXsTp1KM7tupElb6SyA== - dependencies: - ipfs-unixfs-importer "^7.0.1" - meow "^9.0.0" - ipfs-unixfs-importer@^12.0.0: version "12.0.1" resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-12.0.1.tgz#316a52d8a793e9e006b1ee43edc50b83e00ef306" @@ -16037,34 +15997,6 @@ ipfs-unixfs-importer@^12.0.0: uint8arraylist "^2.3.3" uint8arrays "^4.0.2" -ipfs-unixfs-importer@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-7.0.3.tgz#b850e831ca9647d589ef50bc33421f65bab7bba6" - integrity sha512-qeFOlD3AQtGzr90sr5Tq1Bi8pT5Nr2tSI8z310m7R4JDYgZc6J1PEZO3XZQ8l1kuGoqlAppBZuOYmPEqaHcVQQ== - dependencies: - bl "^5.0.0" - cids "^1.1.5" - err-code "^3.0.1" - hamt-sharding "^2.0.0" - ipfs-unixfs "^4.0.3" - ipld-dag-pb "^0.22.2" - it-all "^1.0.5" - it-batch "^1.0.8" - it-first "^1.0.6" - it-parallel-batch "^1.0.9" - merge-options "^3.0.4" - multihashing-async "^2.1.0" - rabin-wasm "^0.1.4" - uint8arrays "^2.1.2" - -ipfs-unixfs@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-4.0.3.tgz#7c43e5726052ade4317245358ac541ef3d63d94e" - integrity sha512-hzJ3X4vlKT8FQ3Xc4M1szaFVjsc1ZydN+E4VQ91aXxfpjFn9G2wsMo1EFdAXNq/BUnN5dgqIOMP5zRYr3DTsAw== - dependencies: - err-code "^3.0.1" - protobufjs "^6.10.2" - ipfs-unixfs@^6.0.3: version "6.0.9" resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz#f6613b8e081d83faa43ed96e016a694c615a9374" @@ -16103,19 +16035,6 @@ ipfs-utils@^9.0.2, ipfs-utils@^9.0.6: react-native-fetch-api "^3.0.0" stream-to-it "^0.2.2" -ipld-dag-pb@^0.22.2: - version "0.22.3" - resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.22.3.tgz#6d5af28b5752236a5cb0e0a1888c87dd733b55cd" - integrity sha512-dfG5C5OVAR4FEP7Al2CrHWvAyIM7UhAQrjnOYOIxXGQz5NlEj6wGX0XQf6Ru6or1na6upvV3NQfstapQG8X2rg== - dependencies: - cids "^1.0.0" - interface-ipld-format "^1.0.0" - multicodec "^3.0.1" - multihashing-async "^2.0.0" - protobufjs "^6.10.2" - stable "^0.1.8" - uint8arrays "^2.0.5" - iron-webcrypto@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.0.0.tgz#e3b689c0c61b434a0a4cb82d0aeabbc8b672a867" @@ -16880,7 +16799,7 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" -it-all@^1.0.4, it-all@^1.0.5: +it-all@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== @@ -16890,11 +16809,6 @@ it-all@^2.0.0: resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== -it-batch@^1.0.8, it-batch@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-1.0.9.tgz#7e95aaacb3f9b1b8ca6c8b8367892171d6a5b37f" - integrity sha512-7Q7HXewMhNFltTsAMdSz6luNhyhkhEtGGbYek/8Xb/GiqYMtwUmopE1ocPSiJKKp3rM4Dt045sNFoUu+KZGNyA== - it-batch@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-2.0.1.tgz#a0822be9b18743c41d8525835f788a7f297ba41f" @@ -16938,13 +16852,6 @@ it-map@^1.0.4: resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.6.tgz#6aa547e363eedcf8d4f69d8484b450bc13c9882c" integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== -it-parallel-batch@^1.0.9: - version "1.0.11" - resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-1.0.11.tgz#f889b4e1c7a62ef24111dbafbaaa010b33d00f69" - integrity sha512-UWsWHv/kqBpMRmyZJzlmZeoAMA0F3SZr08FBdbhtbe+MtoEBgr/ZUAKrnenhXCBrsopy76QjRH2K/V8kNdupbQ== - dependencies: - it-batch "^1.0.9" - it-parallel-batch@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-2.0.1.tgz#23eb07bbeb73521253d7c8a1566b53137103077c" @@ -19180,24 +19087,6 @@ meow@^8.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" -meow@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" - integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize "^1.2.0" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -19695,13 +19584,6 @@ multibase@^0.7.0: base-x "^3.0.8" buffer "^5.5.0" -multibase@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" - integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== - dependencies: - "@multiformats/base-x" "^4.0.1" - multibase@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" @@ -19733,14 +19615,6 @@ multicodec@^1.0.0: buffer "^5.6.0" varint "^5.0.0" -multicodec@^3.0.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.2.1.tgz#82de3254a0fb163a107c1aab324f2a91ef51efb2" - integrity sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw== - dependencies: - uint8arrays "^3.0.0" - varint "^6.0.0" - multiformats@^11.0.0, multiformats@^11.0.2: version "11.0.2" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" @@ -19770,27 +19644,6 @@ multihashes@^0.4.15, multihashes@~0.4.15: multibase "^0.7.0" varint "^5.0.0" -multihashes@^4.0.1, multihashes@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.3.tgz#426610539cd2551edbf533adeac4c06b3b90fb05" - integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== - dependencies: - multibase "^4.0.1" - uint8arrays "^3.0.0" - varint "^5.0.2" - -multihashing-async@^2.0.0, multihashing-async@^2.1.0: - version "2.1.4" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-2.1.4.tgz#26dce2ec7a40f0e7f9e732fc23ca5f564d693843" - integrity sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg== - dependencies: - blakejs "^1.1.0" - err-code "^3.0.0" - js-sha3 "^0.8.0" - multihashes "^4.0.1" - murmurhash3js-revisited "^3.0.0" - uint8arrays "^3.0.0" - multimatch@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" @@ -25935,13 +25788,6 @@ uint8arraylist@^2.3.3: dependencies: uint8arrays "^5.0.1" -uint8arrays@^2.0.5, uint8arrays@^2.1.2: - version "2.1.10" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-2.1.10.tgz#34d023c843a327c676e48576295ca373c56e286a" - integrity sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A== - dependencies: - multiformats "^9.4.2" - uint8arrays@^3.0.0, uint8arrays@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" @@ -26474,7 +26320,7 @@ valtio@1.11.0: proxy-compare "2.5.1" use-sync-external-store "1.2.0" -varint@^5.0.0, varint@^5.0.2: +varint@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==