From edb88064a0a34fff3392444a0e0fa8b6a7f3503f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szymon=20Mas=C5=82owski?= Date: Thu, 6 Feb 2025 17:14:57 +0100 Subject: [PATCH] feat: integrate persistent cache with blockchain providers --- apps/browser-extension-wallet/package.json | 20 +- .../src/lib/scripts/background/config.ts | 4 +- packages/cardano/package.json | 22 +- .../blockfrost-input-resolver.test.ts | 20 +- .../wallet/lib/blockfrost-input-resolver.ts | 24 +- packages/cardano/src/wallet/lib/providers.ts | 70 +++- packages/common/package.json | 2 +- packages/core/package.json | 4 +- packages/nami/package.json | 10 +- packages/staking/package.json | 22 +- yarn.lock | 350 +++++++++--------- 11 files changed, 319 insertions(+), 229 deletions(-) diff --git a/apps/browser-extension-wallet/package.json b/apps/browser-extension-wallet/package.json index 17551c5c3..9e9b617bd 100644 --- a/apps/browser-extension-wallet/package.json +++ b/apps/browser-extension-wallet/package.json @@ -41,15 +41,15 @@ }, "dependencies": { "@ant-design/icons": "^4.7.0", - "@cardano-sdk/cardano-services-client": "0.26.2", - "@cardano-sdk/core": "0.45.1", - "@cardano-sdk/dapp-connector": "0.13.4", - "@cardano-sdk/input-selection": "0.14.2", - "@cardano-sdk/tx-construction": "0.26.1", - "@cardano-sdk/util": "0.15.6", - "@cardano-sdk/util-rxjs": "0.9.5", - "@cardano-sdk/wallet": "0.51.9", - "@cardano-sdk/web-extension": "0.38.10", + "@cardano-sdk/cardano-services-client": "0.26.3", + "@cardano-sdk/core": "0.45.2", + "@cardano-sdk/dapp-connector": "0.13.5", + "@cardano-sdk/input-selection": "0.14.3", + "@cardano-sdk/tx-construction": "0.26.2", + "@cardano-sdk/util": "0.15.7", + "@cardano-sdk/util-rxjs": "0.9.6", + "@cardano-sdk/wallet": "0.51.10", + "@cardano-sdk/web-extension": "0.38.12", "@emurgo/cip14-js": "~3.0.1", "@input-output-hk/lace-ui-toolkit": "1.21.0", "@lace/cardano": "0.1.0", @@ -104,7 +104,7 @@ "zustand": "3.5.14" }, "devDependencies": { - "@cardano-sdk/hardware-ledger": "0.15.2", + "@cardano-sdk/hardware-ledger": "0.15.3", "@emurgo/cardano-message-signing-asmjs": "1.0.1", "@openpgp/web-stream-tools": "0.0.11-patch-0", "@pdfme/common": "^4.0.2", diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/config.ts b/apps/browser-extension-wallet/src/lib/scripts/background/config.ts index 79406eb54..31996f671 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/config.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/config.ts @@ -1,3 +1,4 @@ +import { storage } from 'webextension-polyfill'; import axiosFetchAdapter from '@shiroyasha9/axios-fetch-adapter'; import { Wallet } from '@lace/cardano'; import { RemoteApiProperties, RemoteApiPropertyType } from '@cardano-sdk/web-extension'; @@ -62,7 +63,8 @@ export const getProviders = async (chainName: Wallet.ChainName): Promise { warn: jest.fn() } as unknown as jest.Mocked; - resolver = new BlockfrostInputResolver(clientMock, loggerMock); + // eslint-disable-next-line unicorn/consistent-function-scoping + const createProviderCache = () => { + const cache = new Map(); + return { + async get(key: string) { + return cache.get(key); + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + async set(key: string, val: any) { + cache.set(key, val); + } + }; + }; + + resolver = new BlockfrostInputResolver({ + cache: createProviderCache(), + client: clientMock, + logger: loggerMock + }); }); afterEach(() => { diff --git a/packages/cardano/src/wallet/lib/blockfrost-input-resolver.ts b/packages/cardano/src/wallet/lib/blockfrost-input-resolver.ts index 3fb31f12f..6547e77eb 100644 --- a/packages/cardano/src/wallet/lib/blockfrost-input-resolver.ts +++ b/packages/cardano/src/wallet/lib/blockfrost-input-resolver.ts @@ -1,6 +1,7 @@ /* eslint-disable unicorn/no-null, @typescript-eslint/no-non-null-assertion */ import { Cardano } from '@cardano-sdk/core'; import { BlockfrostClient, BlockfrostError, BlockfrostToCore } from '@cardano-sdk/cardano-services-client'; +import type { Cache } from '@cardano-sdk/util'; import { Logger } from 'ts-log'; import { Responses } from '@blockfrost/blockfrost-js'; @@ -14,21 +15,29 @@ const NOT_FOUND_STATUS = 404; */ const txInToId = (txIn: Cardano.TxIn): string => `${txIn.txId}#${txIn.index}`; +type BlockfrostInputResolverDependencies = { + cache: Cache; + client: BlockfrostClient; + logger: Logger; +}; + /** * A resolver class to fetch and resolve transaction inputs using Blockfrost API. */ export class BlockfrostInputResolver implements Cardano.InputResolver { readonly #logger: Logger; readonly #client: BlockfrostClient; - readonly #txCache = new Map(); + readonly #txCache: Cache; /** * Constructs a new BlockfrostInputResolver. * + * @param cache - A caching interface. * @param client - The Blockfrost client instance to interact with the Blockfrost API. * @param logger - The logger instance to log messages to. */ - constructor(client: BlockfrostClient, logger: Logger) { + constructor({ cache, client, logger }: BlockfrostInputResolverDependencies) { + this.#txCache = cache; this.#client = client; this.#logger = logger; } @@ -44,9 +53,10 @@ export class BlockfrostInputResolver implements Cardano.InputResolver { public async resolveInput(input: Cardano.TxIn, options?: Cardano.ResolveOptions): Promise { this.#logger.debug(`Resolving input ${input.txId}#${input.index}`); - if (this.#txCache.has(txInToId(input))) { + const cached = await this.#txCache.get(txInToId(input)); + if (cached) { this.#logger.debug(`Resolved input ${input.txId}#${input.index} from cache`); - return this.#txCache.get(txInToId(input))!; + return cached; } const resolved = this.resolveFromHints(input, options); @@ -69,7 +79,7 @@ export class BlockfrostInputResolver implements Cardano.InputResolver { for (const hint of options.hints.transactions) { if (input.txId === hint.id && hint.body.outputs.length > input.index) { this.#logger.debug(`Resolved input ${input.txId}#${input.index} from hint`); - this.#txCache.set(txInToId(input), hint.body.outputs[input.index]); + void this.#txCache.set(txInToId(input), hint.body.outputs[input.index]); return hint.body.outputs[input.index]; } @@ -80,7 +90,7 @@ export class BlockfrostInputResolver implements Cardano.InputResolver { for (const utxo of options.hints.utxos) { if (input.txId === utxo[0].txId && input.index === utxo[0].index) { this.#logger.debug(`Resolved input ${input.txId}#${input.index} from hint`); - this.#txCache.set(txInToId(input), utxo[1]); + void this.#txCache.set(txInToId(input), utxo[1]); return utxo[1]; } @@ -119,7 +129,7 @@ export class BlockfrostInputResolver implements Cardano.InputResolver { const coreTxOut = BlockfrostToCore.txOut(blockfrostUTxO); - this.#txCache.set(txInToId(txIn), coreTxOut); + void this.#txCache.set(txInToId(txIn), coreTxOut); this.#logger.debug(`Resolved input ${txIn.txId}#${txIn.index} from Blockfrost`); return coreTxOut; diff --git a/packages/cardano/src/wallet/lib/providers.ts b/packages/cardano/src/wallet/lib/providers.ts index bcf82f32c..ec8fc3e16 100644 --- a/packages/cardano/src/wallet/lib/providers.ts +++ b/packages/cardano/src/wallet/lib/providers.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable no-new, complexity, sonarjs/cognitive-complexity */ +import { Storage } from 'webextension-polyfill'; import { AxiosAdapter } from 'axios'; import { Logger } from 'ts-log'; import { @@ -33,7 +34,7 @@ import { BlockfrostNetworkInfoProvider, BlockfrostRewardAccountInfoProvider } from '@cardano-sdk/cardano-services-client'; -import { RemoteApiProperties, RemoteApiPropertyType } from '@cardano-sdk/web-extension'; +import { RemoteApiProperties, RemoteApiPropertyType, createPersistentCacheStorage } from '@cardano-sdk/web-extension'; import { BlockfrostAddressDiscovery } from '@wallet/lib/blockfrost-address-discovery'; import { WalletProvidersDependencies } from './cardano-wallet'; import { BlockfrostInputResolver } from './blockfrost-input-resolver'; @@ -86,6 +87,7 @@ interface ProvidersConfig { experiments: { useWebSocket?: boolean; }; + extensionLocalStorage: Storage.LocalStorageArea; } /** @@ -94,11 +96,41 @@ interface ProvidersConfig { * If a new one needs to be created (ex. on network change) the previous instance needs to be closed. */ let wsProvider: CardanoWsClient; +enum CacheName { + chainHistoryProvider = 'chain-history-provider-cache', + inputResolver = 'input-resolver-cache', + utxoProvider = 'utxo-provider-cache' +} + +// eslint-disable-next-line no-magic-numbers +const sizeOf1mb = 1024 * 1024; + +// The count values have been calculated by filling the cache by impersonating a few +// rich wallets and then getting the average size of a single item per each cache collection +const cacheAssignment: Record = { + [CacheName.chainHistoryProvider]: { + count: 5_180_160_021, + // eslint-disable-next-line no-magic-numbers + size: 20 * sizeOf1mb + }, + [CacheName.inputResolver]: { + count: 65_529_512_340, + // eslint-disable-next-line no-magic-numbers + size: 20 * sizeOf1mb + }, + [CacheName.utxoProvider]: { + count: 6_530_251_302, + // eslint-disable-next-line no-magic-numbers + size: 20 * sizeOf1mb + } +}; + export const createProviders = ({ axiosAdapter, env: { baseCardanoServicesUrl: baseUrl, customSubmitTxUrl, blockfrostConfig }, logger = console, - experiments: { useWebSocket } + experiments: { useWebSocket }, + extensionLocalStorage }: ProvidersConfig): WalletProvidersDependencies => { const httpProviderConfig: CreateHttpProviderConfig = { baseUrl, logger, adapter: axiosAdapter }; @@ -107,7 +139,17 @@ export const createProviders = ({ }); const assetProvider = new BlockfrostAssetProvider(blockfrostClient, logger); const networkInfoProvider = new BlockfrostNetworkInfoProvider(blockfrostClient, logger); - const chainHistoryProvider = new BlockfrostChainHistoryProvider(blockfrostClient, networkInfoProvider, logger); + const chainHistoryProvider = new BlockfrostChainHistoryProvider({ + client: blockfrostClient, + cache: createPersistentCacheStorage({ + extensionLocalStorage, + fallbackMaxCollectionItemsGuard: cacheAssignment[CacheName.chainHistoryProvider].count, + resourceName: CacheName.chainHistoryProvider, + quotaInBytes: cacheAssignment[CacheName.chainHistoryProvider].size + }), + networkInfoProvider, + logger + }); const rewardsProvider = new BlockfrostRewardsProvider(blockfrostClient, logger); const stakePoolProvider = stakePoolHttpProvider(httpProviderConfig); const txSubmitProvider = createTxSubmitProvider(blockfrostClient, httpProviderConfig, customSubmitTxUrl); @@ -122,7 +164,16 @@ export const createProviders = ({ stakePoolProvider }); - const inputResolver = new BlockfrostInputResolver(blockfrostClient, logger); + const inputResolver = new BlockfrostInputResolver({ + cache: createPersistentCacheStorage({ + extensionLocalStorage, + fallbackMaxCollectionItemsGuard: cacheAssignment[CacheName.inputResolver].count, + resourceName: CacheName.inputResolver, + quotaInBytes: cacheAssignment[CacheName.inputResolver].size + }), + client: blockfrostClient, + logger + }); if (useWebSocket) { const url = new URL(baseUrl); @@ -152,7 +203,16 @@ export const createProviders = ({ }; } - const utxoProvider = new BlockfrostUtxoProvider(blockfrostClient, logger); + const utxoProvider = new BlockfrostUtxoProvider({ + cache: createPersistentCacheStorage({ + extensionLocalStorage, + fallbackMaxCollectionItemsGuard: cacheAssignment[CacheName.utxoProvider].count, + resourceName: CacheName.utxoProvider, + quotaInBytes: cacheAssignment[CacheName.utxoProvider].size + }), + client: blockfrostClient, + logger + }); return { assetProvider, diff --git a/packages/common/package.json b/packages/common/package.json index 252e4eee6..0d4e46940 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -39,7 +39,7 @@ "watch": "yarn build --watch" }, "dependencies": { - "@cardano-sdk/util": "0.15.6", + "@cardano-sdk/util": "0.15.7", "antd": "^4.24.10", "classnames": "^2.3.1", "jdenticon": "3.1.0", diff --git a/packages/core/package.json b/packages/core/package.json index c8b044775..db6967195 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -43,8 +43,8 @@ }, "dependencies": { "@ant-design/icons": "^4.7.0", - "@cardano-sdk/wallet": "0.51.9", - "@cardano-sdk/web-extension": "0.38.10", + "@cardano-sdk/wallet": "0.51.10", + "@cardano-sdk/web-extension": "0.38.12", "@input-output-hk/lace-ui-toolkit": "1.19.0", "@lace/cardano": "0.1.0", "@lace/common": "0.1.0", diff --git a/packages/nami/package.json b/packages/nami/package.json index 278abd873..f0c901836 100644 --- a/packages/nami/package.json +++ b/packages/nami/package.json @@ -57,11 +57,11 @@ }, "dependencies": { "@biglup/is-cid": "^1.0.3", - "@cardano-sdk/core": "0.45.1", - "@cardano-sdk/crypto": "0.2.1", - "@cardano-sdk/tx-construction": "0.26.1", - "@cardano-sdk/util": "0.15.6", - "@cardano-sdk/web-extension": "0.38.10", + "@cardano-sdk/core": "0.45.2", + "@cardano-sdk/crypto": "0.2.2", + "@cardano-sdk/tx-construction": "0.26.2", + "@cardano-sdk/util": "0.15.7", + "@cardano-sdk/web-extension": "0.38.12", "@chakra-ui/css-reset": "1.0.0", "@chakra-ui/icons": "1.0.13", "@chakra-ui/react": "1.6.4", diff --git a/packages/staking/package.json b/packages/staking/package.json index 6e7bc3332..a002852bc 100644 --- a/packages/staking/package.json +++ b/packages/staking/package.json @@ -76,12 +76,12 @@ }, "devDependencies": { "@babel/core": "^7.21.0", - "@cardano-sdk/core": "0.45.1", - "@cardano-sdk/input-selection": "0.14.2", - "@cardano-sdk/tx-construction": "0.26.1", - "@cardano-sdk/util": "0.15.6", - "@cardano-sdk/wallet": "0.51.9", - "@cardano-sdk/web-extension": "0.38.10", + "@cardano-sdk/core": "0.45.2", + "@cardano-sdk/input-selection": "0.14.3", + "@cardano-sdk/tx-construction": "0.26.2", + "@cardano-sdk/util": "0.15.7", + "@cardano-sdk/wallet": "0.51.10", + "@cardano-sdk/web-extension": "0.38.12", "@storybook/addon-actions": "^7.6.7", "@storybook/addon-essentials": "^7.6.7", "@storybook/addon-interactions": "^7.6.7", @@ -126,11 +126,11 @@ "wait-on": "^7.0.1" }, "peerDependencies": { - "@cardano-sdk/input-selection": "0.14.2", - "@cardano-sdk/tx-construction": "0.26.1", - "@cardano-sdk/util": "0.15.6", - "@cardano-sdk/wallet": "0.51.9", - "@cardano-sdk/web-extension": "0.38.10", + "@cardano-sdk/input-selection": "0.14.3", + "@cardano-sdk/tx-construction": "0.26.2", + "@cardano-sdk/util": "0.15.7", + "@cardano-sdk/wallet": "0.51.10", + "@cardano-sdk/web-extension": "0.38.12", "@lace/cardano": "^0.1.0", "@lace/common": "^0.1.0", "@lace/core": "0.1.0", diff --git a/yarn.lock b/yarn.lock index a93424897..3bd278e3c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9097,13 +9097,13 @@ __metadata: languageName: node linkType: hard -"@cardano-sdk/cardano-services-client@npm:0.26.2": - version: 0.26.2 - resolution: "@cardano-sdk/cardano-services-client@npm:0.26.2" +"@cardano-sdk/cardano-services-client@npm:0.26.3": + version: 0.26.3 + resolution: "@cardano-sdk/cardano-services-client@npm:0.26.3" dependencies: - "@cardano-sdk/core": ~0.45.1 - "@cardano-sdk/crypto": ~0.2.1 - "@cardano-sdk/util": ~0.15.6 + "@cardano-sdk/core": ~0.45.2 + "@cardano-sdk/crypto": ~0.2.2 + "@cardano-sdk/util": ~0.15.7 axios: ^1.7.4 class-validator: ^0.14.0 isomorphic-ws: ^5.0.0 @@ -9113,19 +9113,19 @@ __metadata: ts-custom-error: ^3.2.0 ts-log: ^2.2.4 ws: ^8.17.1 - checksum: 7e7f552d323e310ac4b469b1c9fec15c8370df63dadfc99cf754c3f5b0b5202e51550588f84723b656bb2b8002bc3310b0fbdfa054982cb1fac71af0b0cbe51c + checksum: ed1b8b8cecf43f9c68262e544528ea35428baadc6287f312de96e7106b1cf926054e5832a41c397f9f2c393c9eb2985f6ef2317994f2acb298e29705052783cf languageName: node linkType: hard -"@cardano-sdk/core@npm:0.45.1, @cardano-sdk/core@npm:~0.45.1": - version: 0.45.1 - resolution: "@cardano-sdk/core@npm:0.45.1" +"@cardano-sdk/core@npm:0.45.2, @cardano-sdk/core@npm:~0.45.2": + version: 0.45.2 + resolution: "@cardano-sdk/core@npm:0.45.2" dependencies: "@biglup/is-cid": ^1.0.3 "@cardano-ogmios/client": 6.9.0 "@cardano-ogmios/schema": 6.9.0 - "@cardano-sdk/crypto": ~0.2.1 - "@cardano-sdk/util": ~0.15.6 + "@cardano-sdk/crypto": ~0.2.2 + "@cardano-sdk/util": ~0.15.7 "@foxglove/crc": ^0.0.3 "@scure/base": ^1.1.1 fraction.js: 4.0.1 @@ -9139,15 +9139,15 @@ __metadata: peerDependenciesMeta: rxjs: optional: true - checksum: 46b79df65767110e0fde1bcf1fef2b9ca659ee35cddb32197e606dbff7c1f4ea9c11557622b5bfc804819b612e9d44f9d811f1fbde2f7391ec832b645a8135cb + checksum: 27ad62b2b1f2c7fa0c1f35442dfd7bcd29d5ecf22d3f4bda0100dc8fdf25b896c87de9caa90226780d22145c5c6385419e6ac7613c3a1b1259f746afd7c0447f languageName: node linkType: hard -"@cardano-sdk/crypto@npm:0.2.1, @cardano-sdk/crypto@npm:~0.2.1": - version: 0.2.1 - resolution: "@cardano-sdk/crypto@npm:0.2.1" +"@cardano-sdk/crypto@npm:0.2.2, @cardano-sdk/crypto@npm:~0.2.2": + version: 0.2.2 + resolution: "@cardano-sdk/crypto@npm:0.2.2" dependencies: - "@cardano-sdk/util": ~0.15.6 + "@cardano-sdk/util": ~0.15.7 blake2b: ^2.1.4 i: ^0.3.7 libsodium-wrappers-sumo: ^0.7.5 @@ -9167,35 +9167,35 @@ __metadata: optional: true "@dcspark/cardano-multiplatform-lib-nodejs": optional: true - checksum: da38cced626c981d15e222201574949397c6c8ac04c6ab05ee1f7d96bc4be0c1df23bd5f2db091413ee3d108f1839a2c3dcc3858ae10988abf2ee21136e11cb2 + checksum: 9b3c0e3aa9824c7f7d3ebde5ee7e05b52944e14d3428e370255791fe1b6ff102f426ada4e81dca75d69f4da3a5f0f480ec8ce064b8fd8941f75916df583a0f92 languageName: node linkType: hard -"@cardano-sdk/dapp-connector@npm:0.13.4, @cardano-sdk/dapp-connector@npm:~0.13.4": - version: 0.13.4 - resolution: "@cardano-sdk/dapp-connector@npm:0.13.4" +"@cardano-sdk/dapp-connector@npm:0.13.5, @cardano-sdk/dapp-connector@npm:~0.13.5": + version: 0.13.5 + resolution: "@cardano-sdk/dapp-connector@npm:0.13.5" dependencies: - "@cardano-sdk/core": ~0.45.1 - "@cardano-sdk/crypto": ~0.2.1 - "@cardano-sdk/util": ~0.15.6 + "@cardano-sdk/core": ~0.45.2 + "@cardano-sdk/crypto": ~0.2.2 + "@cardano-sdk/util": ~0.15.7 ts-custom-error: ^3.2.0 ts-log: ^2.2.4 webextension-polyfill: ^0.8.0 - checksum: 820d4e6fc5c2aa02b7a3d9f8ccae01478a4a5dfb9f8b2688526a1f9144b134c16065fea0ac77fdb074d79cb29f5d152b0231ef0f69d9162063785764ef3eac53 + checksum: fd85760842bc8d782f38f8ecdb305e6fa1c3590f7c45afa606734ceb4e4e73f89c81649a15b27a038087593a9ca4777a862946c56db49b0a30f5e6d403ef7db6 languageName: node linkType: hard -"@cardano-sdk/hardware-ledger@npm:0.15.2, @cardano-sdk/hardware-ledger@npm:~0.15.2": - version: 0.15.2 - resolution: "@cardano-sdk/hardware-ledger@npm:0.15.2" +"@cardano-sdk/hardware-ledger@npm:0.15.3, @cardano-sdk/hardware-ledger@npm:~0.15.3": + version: 0.15.3 + resolution: "@cardano-sdk/hardware-ledger@npm:0.15.3" dependencies: "@cardano-foundation/ledgerjs-hw-app-cardano": ^7.1.4 - "@cardano-sdk/core": ~0.45.1 - "@cardano-sdk/crypto": ~0.2.1 - "@cardano-sdk/dapp-connector": ~0.13.4 - "@cardano-sdk/key-management": ~0.27.1 - "@cardano-sdk/tx-construction": ~0.26.1 - "@cardano-sdk/util": ~0.15.6 + "@cardano-sdk/core": ~0.45.2 + "@cardano-sdk/crypto": ~0.2.2 + "@cardano-sdk/dapp-connector": ~0.13.5 + "@cardano-sdk/key-management": ~0.27.2 + "@cardano-sdk/tx-construction": ~0.26.2 + "@cardano-sdk/util": ~0.15.7 "@emurgo/cardano-message-signing-nodejs": ^1.0.1 "@ledgerhq/hw-transport": ^6.31.4 "@ledgerhq/hw-transport-node-hid-noevents": ^6.30.5 @@ -9203,51 +9203,51 @@ __metadata: node-hid: ^2.1.2 ts-custom-error: ^3.2.0 ts-log: ^2.2.4 - checksum: 193884643adc273b02a3d77b4e1152f9df25a9c20845235dfd32a2a93cff4e99c61d7f52e631552255dfe0144c0676caec89a2e7d86556d6393d31cf2f9ca08a + checksum: 9649d552b1b0f548cb8d70ee0309b2b9f332629193e1c85afe89610f58eee51bd649fcfd7dc273f932518e45a5f3d3086d01a6cbaf68da242fe8ce8fe4e9b007 languageName: node linkType: hard -"@cardano-sdk/hardware-trezor@npm:0.7.1, @cardano-sdk/hardware-trezor@npm:~0.7.1": - version: 0.7.1 - resolution: "@cardano-sdk/hardware-trezor@npm:0.7.1" - dependencies: - "@cardano-sdk/core": ~0.45.1 - "@cardano-sdk/crypto": ~0.2.1 - "@cardano-sdk/dapp-connector": ~0.13.4 - "@cardano-sdk/key-management": ~0.27.1 - "@cardano-sdk/tx-construction": ~0.26.1 - "@cardano-sdk/util": ~0.15.6 +"@cardano-sdk/hardware-trezor@npm:0.7.2, @cardano-sdk/hardware-trezor@npm:~0.7.2": + version: 0.7.2 + resolution: "@cardano-sdk/hardware-trezor@npm:0.7.2" + dependencies: + "@cardano-sdk/core": ~0.45.2 + "@cardano-sdk/crypto": ~0.2.2 + "@cardano-sdk/dapp-connector": ~0.13.5 + "@cardano-sdk/key-management": ~0.27.2 + "@cardano-sdk/tx-construction": ~0.26.2 + "@cardano-sdk/util": ~0.15.7 "@trezor/connect": 9.4.0 "@trezor/connect-web": 9.4.0 lodash: ^4.17.21 ts-custom-error: ^3.2.0 ts-log: ^2.2.4 - checksum: d300a1053458ef7d91babf9091ba14eea265435d54034c1ba31881ea5661895f85843758b4bf8733da3cf53a200917986df174f8c5e4091a51076f0a9d6531d5 + checksum: 4733fcaf46f1a56626f9ea63c6fea4c9c1ae03e85c2a01b3fe97d578ade83d2a99fb4e417cfff76e6a8482d6a6f7ef5396c687fb094dbe5620cd22186cb81f6b languageName: node linkType: hard -"@cardano-sdk/input-selection@npm:0.14.2, @cardano-sdk/input-selection@npm:~0.14.2": - version: 0.14.2 - resolution: "@cardano-sdk/input-selection@npm:0.14.2" +"@cardano-sdk/input-selection@npm:0.14.3, @cardano-sdk/input-selection@npm:~0.14.3": + version: 0.14.3 + resolution: "@cardano-sdk/input-selection@npm:0.14.3" dependencies: - "@cardano-sdk/core": ~0.45.1 - "@cardano-sdk/key-management": ~0.27.1 - "@cardano-sdk/util": ~0.15.6 + "@cardano-sdk/core": ~0.45.2 + "@cardano-sdk/key-management": ~0.27.2 + "@cardano-sdk/util": ~0.15.7 bignumber.js: ^9.1.1 lodash: ^4.17.21 ts-custom-error: ^3.2.0 - checksum: 5749225ab341b3804371982951cfd3e20efba4c81d0c9ea8f86c3992e9621d0d917b2d8f3fcacdddc02e1d75e1f8d1dff58b712e8046838f28cc9f90cc26014b + checksum: 4b582e327f8e3b53d4a9259e7287804e597c43dfeff2a0e3c8e186fa4fd7ce97c8527d7b7daf23c88a7769f6f407f6dcc65f51c120a05ddfb5dfc91d57ac4eab languageName: node linkType: hard -"@cardano-sdk/key-management@npm:0.27.1, @cardano-sdk/key-management@npm:~0.27.1": - version: 0.27.1 - resolution: "@cardano-sdk/key-management@npm:0.27.1" +"@cardano-sdk/key-management@npm:0.27.2, @cardano-sdk/key-management@npm:~0.27.2": + version: 0.27.2 + resolution: "@cardano-sdk/key-management@npm:0.27.2" dependencies: - "@cardano-sdk/core": ~0.45.1 - "@cardano-sdk/crypto": ~0.2.1 - "@cardano-sdk/dapp-connector": ~0.13.4 - "@cardano-sdk/util": ~0.15.6 + "@cardano-sdk/core": ~0.45.2 + "@cardano-sdk/crypto": ~0.2.2 + "@cardano-sdk/dapp-connector": ~0.13.5 + "@cardano-sdk/util": ~0.15.7 "@emurgo/cardano-message-signing-nodejs": ^1.0.1 bip39: ^3.0.4 chacha: ^2.1.0 @@ -9257,20 +9257,20 @@ __metadata: rxjs: ^7.4.0 ts-custom-error: ^3.2.0 ts-log: ^2.2.4 - checksum: 96b4d29afe9fd4a9ff35b5da14d1e2df7a294890d6f39973d24c6a91b3a735214958a7450e499a1686e5c5c017e8d2c79980cdfe2549a5471d52032ffd8e7c59 + checksum: db925c4d894849559167b9f736c0a951ee1f43d6a3d491f3c64ac3978111801847ab29a6da071ef451fa3bb97c016eaf621bdbbfec3beb1d225919a32dc69a9b languageName: node linkType: hard -"@cardano-sdk/ogmios@npm:~0.18.26": - version: 0.18.26 - resolution: "@cardano-sdk/ogmios@npm:0.18.26" +"@cardano-sdk/ogmios@npm:~0.18.27": + version: 0.18.27 + resolution: "@cardano-sdk/ogmios@npm:0.18.27" dependencies: "@cardano-ogmios/client": 6.9.0 "@cardano-ogmios/schema": 6.9.0 - "@cardano-sdk/core": ~0.45.1 - "@cardano-sdk/crypto": ~0.2.1 - "@cardano-sdk/projection": ~0.12.26 - "@cardano-sdk/util": ~0.15.6 + "@cardano-sdk/core": ~0.45.2 + "@cardano-sdk/crypto": ~0.2.2 + "@cardano-sdk/projection": ~0.12.27 + "@cardano-sdk/util": ~0.15.7 backoff-rxjs: ^7.0.0 buffer: 5.7.1 fraction.js: ^4.2.0 @@ -9278,56 +9278,56 @@ __metadata: nanoid: ^3.1.31 rxjs: ^7.4.0 ts-log: ^2.2.3 - checksum: bf7038a93b3ca6aa2c16fb0b26ea556e0bca9ea738cd7cbfb830c8b7be4cb035bb37e3fb721adb1c437865c5d79ab0ffa0ef84e9b80131b8cabe94ef60d1ad90 + checksum: 7549814c51d01e0a4cb74ee10c89cda95bfaf27ab12bb0781eb87f237bb9b5f913ecf457f9ac9adfff7e3546fbb8bfdee8332a542d23831289f781dca5da371c languageName: node linkType: hard -"@cardano-sdk/projection@npm:~0.12.26": - version: 0.12.26 - resolution: "@cardano-sdk/projection@npm:0.12.26" +"@cardano-sdk/projection@npm:~0.12.27": + version: 0.12.27 + resolution: "@cardano-sdk/projection@npm:0.12.27" dependencies: - "@cardano-sdk/core": ~0.45.1 - "@cardano-sdk/crypto": ~0.2.1 - "@cardano-sdk/ogmios": ~0.18.26 - "@cardano-sdk/util": ~0.15.6 - "@cardano-sdk/util-rxjs": ~0.9.5 + "@cardano-sdk/core": ~0.45.2 + "@cardano-sdk/crypto": ~0.2.2 + "@cardano-sdk/ogmios": ~0.18.27 + "@cardano-sdk/util": ~0.15.7 + "@cardano-sdk/util-rxjs": ~0.9.6 lodash: ^4.17.21 rxjs: ^7.4.0 ts-custom-error: ^3.2.0 ts-log: ^2.2.4 tsc-alias: ^1.8.10 - checksum: 363779634faeb0087e0f07e97de7ec6ad7f169c861fd5600714379fde6c694b3da9644c66cac1ace9e9e8e57b8cfd381701136417e16a580b22170b44c4f1855 + checksum: cfe946a90a0209ea9e347eb171b21523839972362df2f6998b2f026fe7fafac71f0b85ca14e18697209017ac9ad95c4b84efb55387007c1ccc9731aaf5426494 languageName: node linkType: hard -"@cardano-sdk/tx-construction@npm:0.26.1, @cardano-sdk/tx-construction@npm:~0.26.1": - version: 0.26.1 - resolution: "@cardano-sdk/tx-construction@npm:0.26.1" - dependencies: - "@cardano-sdk/core": ~0.45.1 - "@cardano-sdk/crypto": ~0.2.1 - "@cardano-sdk/input-selection": ~0.14.2 - "@cardano-sdk/key-management": ~0.27.1 - "@cardano-sdk/util": ~0.15.6 - "@cardano-sdk/util-rxjs": ~0.9.5 +"@cardano-sdk/tx-construction@npm:0.26.2, @cardano-sdk/tx-construction@npm:~0.26.2": + version: 0.26.2 + resolution: "@cardano-sdk/tx-construction@npm:0.26.2" + dependencies: + "@cardano-sdk/core": ~0.45.2 + "@cardano-sdk/crypto": ~0.2.2 + "@cardano-sdk/input-selection": ~0.14.3 + "@cardano-sdk/key-management": ~0.27.2 + "@cardano-sdk/util": ~0.15.7 + "@cardano-sdk/util-rxjs": ~0.9.6 lodash: ^4.17.21 npm: ^9.3.0 rxjs: ^7.4.0 ts-custom-error: ^3.2.0 ts-log: ^2.2.4 - checksum: 9f73593084a0722d4d5e84461eae57db301df51bb4e52dd0e11ea4adca6be9c8c8f7b0f1e36724241f9f87d2ec70b5bcfbf1c903706040b799e27d25afe03a5a + checksum: cc5c3207749b06e55034e9efbd58d13f3aa5a5b166e5b987cdaf83b6e4addbc368b6c0f52faec82d87d5cce67c74ed3f41693e3c2f1d55d5717ab445716b3240 languageName: node linkType: hard -"@cardano-sdk/util-dev@npm:0.25.4": - version: 0.25.4 - resolution: "@cardano-sdk/util-dev@npm:0.25.4" +"@cardano-sdk/util-dev@npm:0.25.5": + version: 0.25.5 + resolution: "@cardano-sdk/util-dev@npm:0.25.5" dependencies: - "@cardano-sdk/core": ~0.45.1 - "@cardano-sdk/crypto": ~0.2.1 - "@cardano-sdk/key-management": ~0.27.1 - "@cardano-sdk/projection": ~0.12.26 - "@cardano-sdk/util": ~0.15.6 + "@cardano-sdk/core": ~0.45.2 + "@cardano-sdk/crypto": ~0.2.2 + "@cardano-sdk/key-management": ~0.27.2 + "@cardano-sdk/projection": ~0.12.27 + "@cardano-sdk/util": ~0.15.7 "@types/dockerode": ^3.3.8 axios: ^1.7.4 delay: ^5.0.0 @@ -9340,25 +9340,25 @@ __metadata: lodash: ^4.17.21 rxjs: ^7.4.0 ts-log: ^2.2.4 - checksum: 1bf3e78a5f33914711b388b8269307872d91976133f5557f6fb5a215afb63a5113b308b542ee149758ce98dee9c6486fc168385cd13a8308b0adaaef2d8efae9 + checksum: 4d8177e4722a5daa4c151b5905eabbeb3f5c699c2511c84917ac3387b38d2054d754457ff2f4d67f92160d71eefe1bbf0a0497b2513c4e9dfaa479c3031ebf66 languageName: node linkType: hard -"@cardano-sdk/util-rxjs@npm:0.9.5, @cardano-sdk/util-rxjs@npm:~0.9.5": - version: 0.9.5 - resolution: "@cardano-sdk/util-rxjs@npm:0.9.5" +"@cardano-sdk/util-rxjs@npm:0.9.6, @cardano-sdk/util-rxjs@npm:~0.9.6": + version: 0.9.6 + resolution: "@cardano-sdk/util-rxjs@npm:0.9.6" dependencies: - "@cardano-sdk/util": ~0.15.6 + "@cardano-sdk/util": ~0.15.7 backoff-rxjs: ^7.0.0 rxjs: ^7.4.0 ts-log: ^2.2.7 - checksum: a8336a8fd664e55350f5059fc33cbf4d733afbecc02ed2c85b73311c1e8febb1fe50d82b6a8d0738ce72cbb51093c89f0f6cd596eff436427580dabdd156c3bc + checksum: 0f61f578e54dd146e82f300b77fa37823c04607ca425d1906bd4fcbce33abaf03f0c5e04c6f6431fd43ad05db5138e056418a06654c3c27426270c118299f641 languageName: node linkType: hard -"@cardano-sdk/util@npm:0.15.6, @cardano-sdk/util@npm:~0.15.6": - version: 0.15.6 - resolution: "@cardano-sdk/util@npm:0.15.6" +"@cardano-sdk/util@npm:0.15.7, @cardano-sdk/util@npm:~0.15.7": + version: 0.15.7 + resolution: "@cardano-sdk/util@npm:0.15.7" dependencies: bech32: ^2.0.0 lodash: ^4.17.21 @@ -9366,24 +9366,24 @@ __metadata: ts-custom-error: ^3.2.0 ts-log: ^2.2.4 type-fest: ^2.19.0 - checksum: 21dc416ee521d462eb262339b66324e9bfbdbcd483bf8d5f686c671de5fe0a3f77ccbdd7b2e12e316b31b79eeb359d024575faddc5a81f2ce690e6eadeed0dfb + checksum: c190de0afb3df87f4cd0094a27a497bee69475e4f9387fcd29c9e3237d25be413033fb7e01c30bf9015c61a9b245acf9f85963c6104f750008b572421f8615d2 languageName: node linkType: hard -"@cardano-sdk/wallet@npm:0.51.9, @cardano-sdk/wallet@npm:~0.51.9": - version: 0.51.9 - resolution: "@cardano-sdk/wallet@npm:0.51.9" +"@cardano-sdk/wallet@npm:0.51.10, @cardano-sdk/wallet@npm:~0.51.10": + version: 0.51.10 + resolution: "@cardano-sdk/wallet@npm:0.51.10" dependencies: - "@cardano-sdk/core": ~0.45.1 - "@cardano-sdk/crypto": ~0.2.1 - "@cardano-sdk/dapp-connector": ~0.13.4 - "@cardano-sdk/hardware-ledger": ~0.15.2 - "@cardano-sdk/hardware-trezor": ~0.7.1 - "@cardano-sdk/input-selection": ~0.14.2 - "@cardano-sdk/key-management": ~0.27.1 - "@cardano-sdk/tx-construction": ~0.26.1 - "@cardano-sdk/util": ~0.15.6 - "@cardano-sdk/util-rxjs": ~0.9.5 + "@cardano-sdk/core": ~0.45.2 + "@cardano-sdk/crypto": ~0.2.2 + "@cardano-sdk/dapp-connector": ~0.13.5 + "@cardano-sdk/hardware-ledger": ~0.15.3 + "@cardano-sdk/hardware-trezor": ~0.7.2 + "@cardano-sdk/input-selection": ~0.14.3 + "@cardano-sdk/key-management": ~0.27.2 + "@cardano-sdk/tx-construction": ~0.26.2 + "@cardano-sdk/util": ~0.15.7 + "@cardano-sdk/util-rxjs": ~0.9.6 backoff-rxjs: ^7.0.0 bignumber.js: ^9.1.1 delay: ^5.0.0 @@ -9394,24 +9394,24 @@ __metadata: ts-custom-error: ^3.2.0 ts-log: ^2.2.3 uuid: ^8.3.2 - checksum: 18d0179c03023de9b6336c4b9679d771d0e89bf6af971896593622e1a9a6346bae3f60ebe37ca4878f1d558b4961c2f24ddf4d58e68aa0ee3252916437e9bad3 + checksum: f0b33230161c744e6e612a1ed676da64e88c0ccb03ac04c30bd5231abfff07b991e7b50ae2cb7ef40a3b1caed017d5ab83086a2c0958d752d3ad993f3b1d345b languageName: node linkType: hard -"@cardano-sdk/web-extension@npm:0.38.10": - version: 0.38.10 - resolution: "@cardano-sdk/web-extension@npm:0.38.10" +"@cardano-sdk/web-extension@npm:0.38.12": + version: 0.38.12 + resolution: "@cardano-sdk/web-extension@npm:0.38.12" dependencies: - "@cardano-sdk/core": ~0.45.1 - "@cardano-sdk/crypto": ~0.2.1 - "@cardano-sdk/dapp-connector": ~0.13.4 - "@cardano-sdk/hardware-ledger": ~0.15.2 - "@cardano-sdk/hardware-trezor": ~0.7.1 - "@cardano-sdk/key-management": ~0.27.1 - "@cardano-sdk/tx-construction": ~0.26.1 - "@cardano-sdk/util": ~0.15.6 - "@cardano-sdk/util-rxjs": ~0.9.5 - "@cardano-sdk/wallet": ~0.51.9 + "@cardano-sdk/core": ~0.45.2 + "@cardano-sdk/crypto": ~0.2.2 + "@cardano-sdk/dapp-connector": ~0.13.5 + "@cardano-sdk/hardware-ledger": ~0.15.3 + "@cardano-sdk/hardware-trezor": ~0.7.2 + "@cardano-sdk/key-management": ~0.27.2 + "@cardano-sdk/tx-construction": ~0.26.2 + "@cardano-sdk/util": ~0.15.7 + "@cardano-sdk/util-rxjs": ~0.9.6 + "@cardano-sdk/wallet": ~0.51.10 backoff-rxjs: ^7.0.0 lodash: ^4.17.21 rxjs: ^7.4.0 @@ -9419,7 +9419,7 @@ __metadata: ts-log: ^2.2.3 uuid: ^8.3.2 webextension-polyfill: ^0.8.0 - checksum: b63559f8949f62ea3942ae3d09e785b8a9b6f10e666590e33f71e74733d68121f1565f84df8a615a4edfa52645f72d31952574452b6aa5ff740cfe488c0f3072 + checksum: 6bbe4fdb45ec7f5fd7357f0ccba05406bc3dfa64a27991b5bc0532198acebcfbed37c8fbfea9d7595828d65320264be3efafb402c11a7b29c57a174e15b19651 languageName: node linkType: hard @@ -13485,16 +13485,16 @@ __metadata: resolution: "@lace/browser-extension-wallet@workspace:apps/browser-extension-wallet" dependencies: "@ant-design/icons": ^4.7.0 - "@cardano-sdk/cardano-services-client": 0.26.2 - "@cardano-sdk/core": 0.45.1 - "@cardano-sdk/dapp-connector": 0.13.4 - "@cardano-sdk/hardware-ledger": 0.15.2 - "@cardano-sdk/input-selection": 0.14.2 - "@cardano-sdk/tx-construction": 0.26.1 - "@cardano-sdk/util": 0.15.6 - "@cardano-sdk/util-rxjs": 0.9.5 - "@cardano-sdk/wallet": 0.51.9 - "@cardano-sdk/web-extension": 0.38.10 + "@cardano-sdk/cardano-services-client": 0.26.3 + "@cardano-sdk/core": 0.45.2 + "@cardano-sdk/dapp-connector": 0.13.5 + "@cardano-sdk/hardware-ledger": 0.15.3 + "@cardano-sdk/input-selection": 0.14.3 + "@cardano-sdk/tx-construction": 0.26.2 + "@cardano-sdk/util": 0.15.7 + "@cardano-sdk/util-rxjs": 0.9.6 + "@cardano-sdk/wallet": 0.51.10 + "@cardano-sdk/web-extension": 0.38.12 "@emurgo/cardano-message-signing-asmjs": 1.0.1 "@emurgo/cip14-js": ~3.0.1 "@input-output-hk/lace-ui-toolkit": 1.21.0 @@ -13578,17 +13578,17 @@ __metadata: resolution: "@lace/cardano@workspace:packages/cardano" dependencies: "@blockfrost/blockfrost-js": ^5.5.0 - "@cardano-sdk/cardano-services-client": 0.26.2 - "@cardano-sdk/core": 0.45.1 - "@cardano-sdk/crypto": 0.2.1 - "@cardano-sdk/hardware-ledger": 0.15.2 - "@cardano-sdk/hardware-trezor": 0.7.1 - "@cardano-sdk/key-management": 0.27.1 - "@cardano-sdk/tx-construction": 0.26.1 - "@cardano-sdk/util": 0.15.6 - "@cardano-sdk/util-dev": 0.25.4 - "@cardano-sdk/wallet": 0.51.9 - "@cardano-sdk/web-extension": 0.38.10 + "@cardano-sdk/cardano-services-client": 0.26.3 + "@cardano-sdk/core": 0.45.2 + "@cardano-sdk/crypto": 0.2.2 + "@cardano-sdk/hardware-ledger": 0.15.3 + "@cardano-sdk/hardware-trezor": 0.7.2 + "@cardano-sdk/key-management": 0.27.2 + "@cardano-sdk/tx-construction": 0.26.2 + "@cardano-sdk/util": 0.15.7 + "@cardano-sdk/util-dev": 0.25.5 + "@cardano-sdk/wallet": 0.51.10 + "@cardano-sdk/web-extension": 0.38.12 "@emurgo/cardano-message-signing-browser": 1.0.1 "@lace/common": 0.1.0 "@ledgerhq/devices": ^8.4.4 @@ -13626,7 +13626,7 @@ __metadata: version: 0.0.0-use.local resolution: "@lace/common@workspace:packages/common" dependencies: - "@cardano-sdk/util": 0.15.6 + "@cardano-sdk/util": 0.15.7 antd: ^4.24.10 classnames: ^2.3.1 jdenticon: 3.1.0 @@ -13653,8 +13653,8 @@ __metadata: "@babel/preset-env": ^7.22.20 "@babel/preset-react": ^7.22.15 "@babel/preset-typescript": ^7.22.15 - "@cardano-sdk/wallet": 0.51.9 - "@cardano-sdk/web-extension": 0.38.10 + "@cardano-sdk/wallet": 0.51.10 + "@cardano-sdk/web-extension": 0.38.12 "@input-output-hk/lace-ui-toolkit": 1.19.0 "@lace/cardano": 0.1.0 "@lace/common": 0.1.0 @@ -13749,11 +13749,11 @@ __metadata: resolution: "@lace/nami@workspace:packages/nami" dependencies: "@biglup/is-cid": ^1.0.3 - "@cardano-sdk/core": 0.45.1 - "@cardano-sdk/crypto": 0.2.1 - "@cardano-sdk/tx-construction": 0.26.1 - "@cardano-sdk/util": 0.15.6 - "@cardano-sdk/web-extension": 0.38.10 + "@cardano-sdk/core": 0.45.2 + "@cardano-sdk/crypto": 0.2.2 + "@cardano-sdk/tx-construction": 0.26.2 + "@cardano-sdk/util": 0.15.7 + "@cardano-sdk/web-extension": 0.38.12 "@chakra-ui/css-reset": 1.0.0 "@chakra-ui/icons": 1.0.13 "@chakra-ui/react": 1.6.4 @@ -13832,12 +13832,12 @@ __metadata: dependencies: "@ant-design/icons": ^4.7.0 "@babel/core": ^7.21.0 - "@cardano-sdk/core": 0.45.1 - "@cardano-sdk/input-selection": 0.14.2 - "@cardano-sdk/tx-construction": 0.26.1 - "@cardano-sdk/util": 0.15.6 - "@cardano-sdk/wallet": 0.51.9 - "@cardano-sdk/web-extension": 0.38.10 + "@cardano-sdk/core": 0.45.2 + "@cardano-sdk/input-selection": 0.14.3 + "@cardano-sdk/tx-construction": 0.26.2 + "@cardano-sdk/util": 0.15.7 + "@cardano-sdk/wallet": 0.51.10 + "@cardano-sdk/web-extension": 0.38.12 "@input-output-hk/lace-ui-toolkit": 1.19.0 "@lace/cardano": ^0.1.0 "@lace/common": ^0.1.0 @@ -13902,11 +13902,11 @@ __metadata: wait-on: ^7.0.1 zustand: ^4.4.1 peerDependencies: - "@cardano-sdk/input-selection": 0.14.2 - "@cardano-sdk/tx-construction": 0.26.1 - "@cardano-sdk/util": 0.15.6 - "@cardano-sdk/wallet": 0.51.9 - "@cardano-sdk/web-extension": 0.38.10 + "@cardano-sdk/input-selection": 0.14.3 + "@cardano-sdk/tx-construction": 0.26.2 + "@cardano-sdk/util": 0.15.7 + "@cardano-sdk/wallet": 0.51.10 + "@cardano-sdk/web-extension": 0.38.12 "@lace/cardano": ^0.1.0 "@lace/common": ^0.1.0 "@lace/core": 0.1.0