diff --git a/.knip.json b/.knip.json index 6e629a38f71..31d3c192d79 100644 --- a/.knip.json +++ b/.knip.json @@ -15,6 +15,7 @@ "bun", "@/sway-api/*", "@fuel-ts/*", + "@fuels/connectors", "@internal/fuel-core", "@internal/forc", "@types/jest", diff --git a/apps/docs-snippets/src/guide/wallets/access.test.ts b/apps/docs-snippets/src/guide/wallets/access.test.ts deleted file mode 100644 index 4cb269c5b72..00000000000 --- a/apps/docs-snippets/src/guide/wallets/access.test.ts +++ /dev/null @@ -1,78 +0,0 @@ -import type { WalletLocked, WalletUnlocked } from 'fuels'; -import { Wallet } from 'fuels'; -import { launchTestNode } from 'fuels/test-utils'; - -/** - * @group node - * @group browser - */ -describe('Wallet Access', () => { - it('wallets', async () => { - using launched = await launchTestNode(); - const { provider } = launched; - - // #region wallets - // #import { Wallet, WalletLocked, WalletUnlocked }; - - // We can use the `generate` to create a new unlocked wallet. - const myWallet: WalletUnlocked = Wallet.generate({ provider }); - - // or use an Address to create a wallet - const someWallet: WalletLocked = Wallet.fromAddress(myWallet.address, provider); - // #endregion wallets - - expect(myWallet.address).toBeTruthy(); - expect(someWallet.address).toBeTruthy(); - }); - - it('wallet-locked-to-unlocked', async () => { - using launched = await launchTestNode(); - const { provider } = launched; - - const myWallet: WalletUnlocked = Wallet.generate({ provider }); - const PRIVATE_KEY = myWallet.privateKey; - - // #region wallet-locked-to-unlocked - // #import { Wallet, WalletLocked, WalletUnlocked }; - - // Lock an existing wallet - const lockedWallet: WalletLocked = Wallet.fromAddress(myWallet.address, provider); - - // Unlock an existing wallet - const unlockedWallet: WalletUnlocked = lockedWallet.unlock(PRIVATE_KEY); - // #endregion wallet-locked-to-unlocked - - expect(myWallet.address).toBeTruthy(); - expect(unlockedWallet.address).toEqual(myWallet.address); - }); - - it('wallet-unlocked-to-locked', async () => { - using launched = await launchTestNode(); - const { provider } = launched; - - const unlockedWallet: WalletUnlocked = Wallet.generate({ provider }); - - // #region wallet-unlocked-to-locked - const newlyLockedWallet = unlockedWallet.lock(); - // #endregion wallet-unlocked-to-locked - - expect(unlockedWallet).toBeTruthy(); - expect(newlyLockedWallet.address).toEqual(unlockedWallet.address); - }); - - it('it can be created without a provider', async () => { - // #region wallet-optional-provider - // #context import { Wallet, WalletUnlocked } from 'fuels'; - - // You can create a wallet, without a provider - let unlockedWallet: WalletUnlocked = Wallet.generate(); - unlockedWallet = Wallet.fromPrivateKey(unlockedWallet.privateKey); - - // All non-provider dependent methods are available - unlockedWallet.lock(); - - // All provider dependent methods will throw - await expect(() => unlockedWallet.getCoins()).rejects.toThrow(/Provider not set/); - // #endregion wallet-optional-provider - }); -}); diff --git a/apps/docs-snippets/src/guide/wallets/checking-balances-and-coins.test.ts b/apps/docs-snippets/src/guide/wallets/checking-balances-and-coins.test.ts deleted file mode 100644 index 1fb2b8cb8f8..00000000000 --- a/apps/docs-snippets/src/guide/wallets/checking-balances-and-coins.test.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { BigNumberish, WalletUnlocked } from 'fuels'; -import { Wallet } from 'fuels'; -import { launchTestNode } from 'fuels/test-utils'; - -/** - * @group node - * @group browser - */ -describe('Checking balances and coins', () => { - it('wallet-check-balance', async () => { - using launched = await launchTestNode(); - const { provider } = launched; - - const myWallet: WalletUnlocked = Wallet.generate({ provider }); - - // #region wallet-check-balance - // #import { BigNumberish }; - - const balance: BigNumberish = await myWallet.getBalance(provider.getBaseAssetId()); - // #endregion wallet-check-balance - - expect(balance.toNumber()).toEqual(0); - }); - - it('wallet-check-balances', async () => { - using launched = await launchTestNode(); - const { provider } = launched; - - const myWallet: WalletUnlocked = Wallet.generate({ provider }); - - // #region wallet-check-balances - // #context import { CoinQuantity } from 'fuels'; - - const { balances } = await myWallet.getBalances(); - // #endregion wallet-check-balances - - expect(balances).toEqual([]); - }); -}); diff --git a/apps/docs-snippets/src/guide/wallets/checking-balances.test.ts b/apps/docs-snippets/src/guide/wallets/checking-balances.test.ts deleted file mode 100644 index b9cf92ea312..00000000000 --- a/apps/docs-snippets/src/guide/wallets/checking-balances.test.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { BN } from 'fuels'; -import { Wallet } from 'fuels'; -import { launchTestNode } from 'fuels/test-utils'; - -/** - * @group node - * @group browser - */ -describe('Checking balances', () => { - it('should fetch specific balance just fine', async () => { - using launched = await launchTestNode(); - const { - provider, - wallets: [testWallet], - } = launched; - - const privateKey = testWallet.privateKey; - - // #region checking-balances-1 - const myWallet = Wallet.fromPrivateKey(privateKey, provider); - - // The returned amount is a BigNumber - const balance: BN = await myWallet.getBalance(provider.getBaseAssetId()); - // #endregion checking-balances-1 - - expect(balance).toBeDefined(); - }); - - it('should fetch all balances just fine', async () => { - using launched = await launchTestNode(); - const { - provider, - wallets: [testWallet], - } = launched; - - const privateKey = testWallet.privateKey; - // #region checking-balances-2 - const myWallet = Wallet.fromPrivateKey(privateKey, provider); - - const { balances } = await myWallet.getBalances(); - // #endregion checking-balances-2 - - expect(balances).toBeDefined(); - }); -}); diff --git a/apps/docs-snippets/src/guide/wallets/encrypting-and-decrypting-json-wallets.test.ts b/apps/docs-snippets/src/guide/wallets/encrypting-and-decrypting-json-wallets.test.ts deleted file mode 100644 index 6664b1b16e5..00000000000 --- a/apps/docs-snippets/src/guide/wallets/encrypting-and-decrypting-json-wallets.test.ts +++ /dev/null @@ -1,61 +0,0 @@ -import fs from 'fs'; -import { Wallet } from 'fuels'; -import { launchTestNode } from 'fuels/test-utils'; - -/** - * @group node - */ -describe('Encrypting and decrypting JSON wallets', () => { - it('should successfully encrypt wallet', async () => { - using launched = await launchTestNode(); - const { provider } = launched; - - // #region encrypting-and-decrypting-json-wallets-1 - // #import { Wallet, fs }; - - const wallet = Wallet.generate({ provider }); - - // Encrypt the wallet - const password = 'my-password'; - const jsonWallet = await wallet.encrypt(password); - - // Save the encrypted wallet to a file - // #context fs.writeFileSync('secure-path/my-wallet.json', jsonWallet); - // #endregion encrypting-and-decrypting-json-wallets-1 - - expect(jsonWallet).toBeDefined(); - }); - - it('should successfully decrypt a wallet', async () => { - using launched = await launchTestNode(); - const { provider } = launched; - - const jsonWallet = await Wallet.generate({ - provider, - }).encrypt('my-password'); - // #region encrypting-and-decrypting-json-wallets-2 - // #import { Wallet, fs }; - - // Load the encrypted wallet from a file - // #context const jsonWallet = fs.readFileSync('secure-path/my-wallet.json', 'utf-8'); - - // Decrypt the wallet - const password = 'my-password'; - const decryptedWallet = await Wallet.fromEncryptedJson(jsonWallet, password, provider); - - // Use the decrypted wallet - const myBalance = await decryptedWallet.getBalance(); - // #endregion encrypting-and-decrypting-json-wallets-2 - - expect(myBalance).toBeDefined(); - }, 10000); - - it('should validate that fs was imported on this file', () => { - /** - * This test exists only to validate that the fs import is present on this file. - * This is required because the fs import is being used in code snippets declared - * on within this file therefore its import will be extracted from this same file. - */ - expect(fs).toBeDefined(); - }); -}); diff --git a/apps/docs-snippets2/src/wallets/access.ts b/apps/docs-snippets2/src/wallets/access.ts new file mode 100644 index 00000000000..5c6340fee18 --- /dev/null +++ b/apps/docs-snippets2/src/wallets/access.ts @@ -0,0 +1,45 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +// #region full +// #region wallets +import type { WalletLocked, WalletUnlocked } from 'fuels'; +import { Provider, Wallet } from 'fuels'; + +import { LOCAL_NETWORK_URL } from '../env'; + +// We can use the `generate` to create a new unlocked wallet. +const provider = await Provider.create(LOCAL_NETWORK_URL); +const myWallet: WalletUnlocked = Wallet.generate({ provider }); + +// or use an Address to create a wallet +const someWallet: WalletLocked = Wallet.fromAddress(myWallet.address, provider); +// #endregion wallets + +const wallet: WalletUnlocked = Wallet.generate({ provider }); +const PRIVATE_KEY = wallet.privateKey; + +// Lock an existing wallet +const lockedWallet: WalletLocked = Wallet.fromAddress( + myWallet.address, + provider +); + +// Unlock an existing wallet +const someUnlockedWallet: WalletUnlocked = lockedWallet.unlock(PRIVATE_KEY); + +const unlockedWallet: WalletUnlocked = Wallet.generate({ provider }); +const newlyLockedWallet = unlockedWallet.lock(); + +// You can create a wallet, without a provider +let unlockedWalletWithoutProvider: WalletUnlocked = Wallet.generate(); +unlockedWalletWithoutProvider = Wallet.fromPrivateKey( + unlockedWalletWithoutProvider.privateKey +); + +// All non-provider dependent methods are available +unlockedWalletWithoutProvider.lock(); + +// All provider dependent methods will throw +await expect(() => unlockedWalletWithoutProvider.getCoins()).rejects.toThrow( + /Provider not set/ +); +// #endregion full diff --git a/apps/docs-snippets2/src/wallets/checking-balances-two.ts b/apps/docs-snippets2/src/wallets/checking-balances-two.ts new file mode 100644 index 00000000000..1ef62c05c5c --- /dev/null +++ b/apps/docs-snippets2/src/wallets/checking-balances-two.ts @@ -0,0 +1,11 @@ +// #region checking-balances-2 +import { Provider, Wallet } from 'fuels'; + +import { WALLET_PVT_KEY_2, LOCAL_NETWORK_URL } from '../env'; + +const provider = await Provider.create(LOCAL_NETWORK_URL); +const myOtherWallet = Wallet.fromPrivateKey(WALLET_PVT_KEY_2, provider); + +const { balances } = await myOtherWallet.getBalances(); +// #endregion checking-balances-2 +console.log('balances:', balances); diff --git a/apps/docs-snippets2/src/wallets/checking-balances.ts b/apps/docs-snippets2/src/wallets/checking-balances.ts new file mode 100644 index 00000000000..88bab34d0b1 --- /dev/null +++ b/apps/docs-snippets2/src/wallets/checking-balances.ts @@ -0,0 +1,15 @@ +// #region checking-balances-1 +import type { BN } from 'fuels'; +import { Provider, Wallet } from 'fuels'; + +import { LOCAL_NETWORK_URL, WALLET_PVT_KEY } from '../env'; + +const provider = await Provider.create(LOCAL_NETWORK_URL); + +const myWallet = Wallet.fromPrivateKey(WALLET_PVT_KEY, provider); + +// The returned amount is a BigNumber +const balance: BN = await myWallet.getBalance(provider.getBaseAssetId()); + +// #endregion checking-balances-1 +console.log('balance', balance); diff --git a/apps/docs-snippets/src/guide/wallets/connectors.test.ts b/apps/docs-snippets2/src/wallets/connectors.ts similarity index 57% rename from apps/docs-snippets/src/guide/wallets/connectors.test.ts rename to apps/docs-snippets2/src/wallets/connectors.ts index ff7dce6832e..117be5d3318 100644 --- a/apps/docs-snippets/src/guide/wallets/connectors.test.ts +++ b/apps/docs-snippets2/src/wallets/connectors.ts @@ -1,6 +1,7 @@ /* eslint-disable max-classes-per-file */ -import { Fuel, LocalStorage, MemoryStorage, FuelConnector } from 'fuels'; -import type { TargetObject, Network, Asset, FuelABI } from 'fuels'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { MemoryStorage, FuelConnector } from 'fuels'; +import type { Network, Asset, FuelABI } from 'fuels'; // prettier-ignore // #region fuel-connector-extends @@ -76,8 +77,6 @@ class WalletConnector extends FuelConnector { // #endregion fuel-connector-events-currentAccount // #region fuel-connector-events-networks - // #import { Network }; - const network: Network = { chainId: 1, url: 'https://example.com/rpc', @@ -87,8 +86,6 @@ class WalletConnector extends FuelConnector { // #endregion fuel-connector-events-networks // #region fuel-connector-events-currentNetwork - // #import { Network }; - const currentNetwork: Network = { chainId: 1, url: 'https://example.com/rpc', @@ -98,8 +95,6 @@ class WalletConnector extends FuelConnector { // #endregion fuel-connector-events-currentNetwork // #region fuel-connector-events-assets - // #import { Asset }; - const assets: Array = [ { name: 'Ethereum', @@ -137,94 +132,3 @@ class WalletConnector extends FuelConnector { // #endregion fuel-connector-events-abis } } - -/** - * @group node - */ -describe('connectors', () => { - describe('instantiation', () => { - test('should be able to instantiate a Fuel SDK', async () => { - // #region fuel-instantiation-1 - // #import { Fuel }; - - const sdk = new Fuel(); - - /* - Awaits for initialization to mitigate potential race conditions - derived from the async nature of instantiating a connector. - */ - await sdk.init(); - // #endregion fuel-instantiation-1 - - expect(sdk).toBeDefined(); - }); - - test('should be able to instantiate with connectors', async () => { - const defaultConnectors = (_opts: { devMode: boolean }): Array => [ - new WalletConnector(), - ]; - - // #region fuel-options-connectors - // #import { Fuel }; - // #context import { defaultConnectors } from '@fuels/connectors'; - - const sdk = await new Fuel({ - connectors: defaultConnectors({ - devMode: true, - }), - }).init(); - // #endregion fuel-options-connectors - - expect(sdk).toBeDefined(); - }); - - test('should be able to instantiate with memory storage', async () => { - // #region fuel-options-storage-memory - // #import { Fuel, MemoryStorage }; - - const sdk = await new Fuel({ - storage: new MemoryStorage(), - }).init(); - // #endregion fuel-options-storage-memory - - expect(sdk).toBeDefined(); - }); - - test('should be able to instantiate with local storage', async () => { - const window = { - localStorage: { - setItem: vi.fn(), - getItem: vi.fn(), - removeItem: vi.fn(), - clear: vi.fn(), - } as unknown as Storage, - }; - - // #region fuel-options-storage-local - // #import { Fuel, LocalStorage }; - - const sdk = await new Fuel({ - storage: new LocalStorage(window.localStorage), - }).init(); - // #endregion fuel-options-storage-local - - expect(sdk).toBeDefined(); - }); - - test('should be able to instantiate with targetObject', async () => { - const window = {} as unknown as TargetObject; - - // #region fuel-options-target-object - // #import { Fuel, TargetObject }; - - const targetObject: TargetObject = window || document; - - const sdk = await new Fuel({ - targetObject, - }).init(); - // #endregion fuel-options-target-object - - expect(sdk).toBeDefined(); - }); - }); -}); diff --git a/apps/docs-snippets2/src/wallets/encrypting-and-decrypting-json-wallets-two.ts b/apps/docs-snippets2/src/wallets/encrypting-and-decrypting-json-wallets-two.ts new file mode 100644 index 00000000000..65348b9b1ca --- /dev/null +++ b/apps/docs-snippets2/src/wallets/encrypting-and-decrypting-json-wallets-two.ts @@ -0,0 +1,31 @@ +// #region encrypting-and-decrypting-json-wallets-2 +import { Provider, Wallet } from 'fuels'; + +import { LOCAL_NETWORK_URL } from '../env'; + +const provider = await Provider.create(LOCAL_NETWORK_URL); + +const newJsonWallet = await Wallet.generate({ + provider, +}).encrypt('my-password'); + +// Load the encrypted wallet from a file +// const jsonWallet = fs.readFileSync('secure-path/my-wallet.json', 'utf-8'); + +// Decrypt the wallet +const newPassword = 'my-password'; +const decryptedWallet = await Wallet.fromEncryptedJson( + newJsonWallet, + newPassword, + provider +); + +// Use the decrypted wallet +const myBalance = await decryptedWallet.getBalance(); +// #endregion encrypting-and-decrypting-json-wallets-2 + +/** + * @group node + */ + +console.log('myBalance', myBalance); diff --git a/apps/docs-snippets2/src/wallets/encrypting-and-decrypting-wallets.ts b/apps/docs-snippets2/src/wallets/encrypting-and-decrypting-wallets.ts new file mode 100644 index 00000000000..a23a47a91ef --- /dev/null +++ b/apps/docs-snippets2/src/wallets/encrypting-and-decrypting-wallets.ts @@ -0,0 +1,22 @@ +// #region encrypting-and-decrypting-json-wallets-1 +import { Provider, Wallet } from 'fuels'; + +import { LOCAL_NETWORK_URL } from '../env'; + +const provider = await Provider.create(LOCAL_NETWORK_URL); + +const wallet = Wallet.generate({ provider }); + +// Encrypt the wallet +const password = 'my-password'; +const jsonWallet = await wallet.encrypt(password); + +// Save the encrypted wallet to a file +// e.g. const jsonWallet = fs.writeFileSync('secure-path/my-wallet.json', jsonWallet); +// #endregion encrypting-and-decrypting-json-wallets-1 + +console.log('jsonWallet', jsonWallet); + +/** + * @group node + */ diff --git a/apps/docs-snippets2/src/wallets/fuel-instantiation-one.ts b/apps/docs-snippets2/src/wallets/fuel-instantiation-one.ts new file mode 100644 index 00000000000..dc262a96cfe --- /dev/null +++ b/apps/docs-snippets2/src/wallets/fuel-instantiation-one.ts @@ -0,0 +1,13 @@ +import { Fuel } from 'fuels'; + +// #region fuel-instantiation-1 + +const sdk = new Fuel(); + +/* + Awaits for initialization to mitigate potential race conditions + derived from the async nature of instantiating a connector. +*/ +await sdk.init(); +// #endregion fuel-instantiation-1 +console.log('sdk', sdk); diff --git a/apps/docs-snippets2/src/wallets/fuel-instantiation-options.ts b/apps/docs-snippets2/src/wallets/fuel-instantiation-options.ts new file mode 100644 index 00000000000..bb596c73a5a --- /dev/null +++ b/apps/docs-snippets2/src/wallets/fuel-instantiation-options.ts @@ -0,0 +1,19 @@ +// #region fuel-options-connectors +import { Fuel, FuelConnector } from 'fuels'; + +class WalletConnector extends FuelConnector { + name: string = 'My Wallet Connector'; +} + +const defaultConnectors = (_opts: { + devMode: boolean; +}): Array => [new WalletConnector()]; + +const sdkDevMode = await new Fuel({ + connectors: defaultConnectors({ + devMode: true, + }), +}).init(); + +// #endregion fuel-options-connectors +console.log('sdkDevMode', sdkDevMode); diff --git a/apps/docs-snippets2/src/wallets/fuel-options-storage-local.ts b/apps/docs-snippets2/src/wallets/fuel-options-storage-local.ts new file mode 100644 index 00000000000..a5500d011bb --- /dev/null +++ b/apps/docs-snippets2/src/wallets/fuel-options-storage-local.ts @@ -0,0 +1,17 @@ +// #region fuel-options-storage-local +import { Fuel, LocalStorage } from 'fuels'; + +const window = { + localStorage: { + setItem: vi.fn(), + getItem: vi.fn(), + removeItem: vi.fn(), + clear: vi.fn(), + } as unknown as Storage, +}; + +const sdkWithLocalStorage = await new Fuel({ + storage: new LocalStorage(window.localStorage), +}).init(); +// #endregion fuel-options-storage-local +console.log('sdkWithLocalStorage', sdkWithLocalStorage); diff --git a/apps/docs-snippets2/src/wallets/fuel-options-storage-memory.ts b/apps/docs-snippets2/src/wallets/fuel-options-storage-memory.ts new file mode 100644 index 00000000000..2353241abdf --- /dev/null +++ b/apps/docs-snippets2/src/wallets/fuel-options-storage-memory.ts @@ -0,0 +1,8 @@ +// #region fuel-options-storage-memory +import { Fuel, MemoryStorage } from 'fuels'; + +const sdkWithMemoryStorage = await new Fuel({ + storage: new MemoryStorage(), +}).init(); +// #endregion fuel-options-storage-memory +console.log('sdkWithMemoryStorage', sdkWithMemoryStorage); diff --git a/apps/docs-snippets2/src/wallets/fuel-options-target-object.ts b/apps/docs-snippets2/src/wallets/fuel-options-target-object.ts new file mode 100644 index 00000000000..f4398f48087 --- /dev/null +++ b/apps/docs-snippets2/src/wallets/fuel-options-target-object.ts @@ -0,0 +1,13 @@ +// #region fuel-options-target-object +import { Fuel } from 'fuels'; +import type { TargetObject } from 'fuels'; + +const emptyWindow = {} as unknown as TargetObject; + +const targetObject: TargetObject = emptyWindow || document; + +const sdkWithTargetObject = await new Fuel({ + targetObject, +}).init(); +// #endregion fuel-options-target-object +console.log('sdkWithTargetObject', sdkWithTargetObject); diff --git a/apps/docs-snippets2/src/wallets/locked-to-unlocked.ts b/apps/docs-snippets2/src/wallets/locked-to-unlocked.ts new file mode 100644 index 00000000000..5367244e0cc --- /dev/null +++ b/apps/docs-snippets2/src/wallets/locked-to-unlocked.ts @@ -0,0 +1,17 @@ +// #region wallet-locked-to-unlocked +import type { WalletLocked, WalletUnlocked } from 'fuels'; +import { Provider, Wallet } from 'fuels'; + +import { LOCAL_NETWORK_URL } from '../env'; + +const provider = await Provider.create(LOCAL_NETWORK_URL); +const wallet: WalletUnlocked = Wallet.generate({ provider }); +const PRIVATE_KEY = wallet.privateKey; + +// Lock an existing wallet +const lockedWallet: WalletLocked = Wallet.fromAddress(wallet.address, provider); + +// Unlock an existing wallet +const someUnlockedWallet: WalletUnlocked = lockedWallet.unlock(PRIVATE_KEY); +// #endregion wallet-locked-to-unlocked +console.log('unlocked wallet address', someUnlockedWallet.address); diff --git a/apps/docs-snippets2/src/wallets/unlocked-to-locked.ts b/apps/docs-snippets2/src/wallets/unlocked-to-locked.ts new file mode 100644 index 00000000000..419ab12d20c --- /dev/null +++ b/apps/docs-snippets2/src/wallets/unlocked-to-locked.ts @@ -0,0 +1,12 @@ +// #region wallet-unlocked-to-locked +import type { WalletUnlocked } from 'fuels'; +import { Provider, Wallet } from 'fuels'; + +import { LOCAL_NETWORK_URL } from '../env'; + +const provider = await Provider.create(LOCAL_NETWORK_URL); + +const unlockedWallet: WalletUnlocked = Wallet.generate({ provider }); +const newlyLockedWallet = unlockedWallet.lock(); +// #endregion wallet-unlocked-to-locked +console.log('newly locked wallet address', newlyLockedWallet.address); diff --git a/apps/docs-snippets2/src/wallets/wallet-optional-provider.ts b/apps/docs-snippets2/src/wallets/wallet-optional-provider.ts new file mode 100644 index 00000000000..fb0928852d3 --- /dev/null +++ b/apps/docs-snippets2/src/wallets/wallet-optional-provider.ts @@ -0,0 +1,20 @@ +// #region wallet-optional-provider +import type { WalletUnlocked } from 'fuels'; +import { Wallet } from 'fuels'; + +// You can create a wallet, without a provider +let unlockedWalletWithoutProvider: WalletUnlocked = Wallet.generate(); +unlockedWalletWithoutProvider = Wallet.fromPrivateKey( + unlockedWalletWithoutProvider.privateKey +); + +// All non-provider dependent methods are available +unlockedWalletWithoutProvider.lock(); + +// All provider dependent methods will throw +try { + await unlockedWalletWithoutProvider.getCoins(); +} catch (e) { + console.log('error', e); +} +// #endregion wallet-optional-provider diff --git a/apps/docs/src/guide/testing/setting-up-test-wallets.md b/apps/docs/src/guide/testing/setting-up-test-wallets.md index 2c44b47ac63..a4c131be4ac 100644 --- a/apps/docs/src/guide/testing/setting-up-test-wallets.md +++ b/apps/docs/src/guide/testing/setting-up-test-wallets.md @@ -4,7 +4,7 @@ You'll often want to create one or more test wallets when testing your contracts ## Create a single wallet -<<< @/../../docs-snippets/src/guide/wallets/access.test.ts#wallets{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/access.ts#wallets{ts:line-numbers} ## Setting up multiple test wallets diff --git a/apps/docs/src/guide/wallets/checking-balances.md b/apps/docs/src/guide/wallets/checking-balances.md index ff112bb7446..fa26d640ed9 100644 --- a/apps/docs/src/guide/wallets/checking-balances.md +++ b/apps/docs/src/guide/wallets/checking-balances.md @@ -2,8 +2,8 @@ To check the balance of a specific asset, you can use [`getBalance`](../../api/Account/Account.md#getbalance) method. This function aggregates the amounts of all unspent coins of the given asset in your wallet. -<<< @/../../docs-snippets/src/guide/wallets/checking-balances.test.ts#checking-balances-1{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/checking-balances.ts#checking-balances-1{ts:line-numbers} To retrieve the balances of all assets in your wallet, use the [`getBalances`](../../api/Account/Account.md#getbalances) method, it returns an array of [`CoinQuantity`](../../api/Account/index.md#coinquantity). This is useful for getting a comprehensive view of your holdings. -<<< @/../../docs-snippets/src/guide/wallets/checking-balances.test.ts#checking-balances-2{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/checking-balances-two.ts#checking-balances-2{ts:line-numbers} diff --git a/apps/docs/src/guide/wallets/connectors.md b/apps/docs/src/guide/wallets/connectors.md index 136f2264c20..552f1d67a4b 100644 --- a/apps/docs/src/guide/wallets/connectors.md +++ b/apps/docs/src/guide/wallets/connectors.md @@ -8,7 +8,7 @@ Fuel Wallet Connectors offer a standardized interface to integrate multiple wall To build your own wallet integration, you can create a custom connector that extends the abstract [`FuelConnector`](../../api/Account/FuelConnector.md) class. This interface provides a set of methods and events that allow you to interact with the wallet and handle various operations such as connecting, disconnecting, signing messages, and sending transactions. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-extends{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-extends{ts:line-numbers} ### Properties @@ -18,7 +18,7 @@ The `FuelConnector` abstract class provides several properties that should be im The `name` property is simply a `string` on the connector that serves as an identifier and will be displayed to the end-user when selecting a connector. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-name{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-name{ts:line-numbers} ### `external` The `external` property is simply a `boolean` that indicates when a connector is external or not. @@ -42,17 +42,17 @@ The `install` object requires three properties: - `description` (_required_) - a `string` that will contain a description of the installation process. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-metadata-install{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-metadata-install{ts:line-numbers} ##### `image` The `metadata.image` property (_optional_) provides an image that will be displayed to the end-user when selecting a connector. The image will be a URL to the image to be displayed (this can be an inline data URI, encoded in base64). -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-metadata-image{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-metadata-image{ts:line-numbers} You can even define a `light` and `dark` theme for the image by providing an object with the `light` and `dark` keys (these will take a similar URI as above). -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-metadata-image-theme{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-metadata-image-theme{ts:line-numbers} ### Events @@ -62,55 +62,55 @@ The `FuelConnector` class provides a number of events that enable developers to The `accounts` event is emitted every time a connector's accounts change. The event data is an array of `string` addresses available on the network. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-events-accounts{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-events-accounts{ts:line-numbers} #### `connectors` The `connectors` event is emitted when the connectors are initialized. The event data is an array of [`FuelConnector`](../../api/Account/FuelConnector.md) objects available on the network. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-events-connectors{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-events-connectors{ts:line-numbers} #### `currentConnector` The `currentConnector` event is emitted every time the current connector changes. The event data is a [`FuelConnector`](../../api/Account/FuelConnector.md) object that is currently connected. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-events-currentConnector{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-events-currentConnector{ts:line-numbers} #### `currentAccount` The `currentAccount` event is emitted every time the current account changes. The event data is a string containing the current account address. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-events-currentAccount{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-events-currentAccount{ts:line-numbers} #### `connection` The `connection` event is emitted every time the connection status changes. The event data is a `boolean` value that is `true` if the connection is established and `false` otherwise. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-events-connection{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-events-connection{ts:line-numbers} #### `networks` The `networks` event is emitted every time the network changes. The event data will be a [`Network`](../../api/Account/index.md#network) object containing the current network information. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-events-networks{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-events-networks{ts:line-numbers} #### `currentNetwork` The `currentNetwork` event is emitted every time the current network changes. The event data will be a [`Network`](../../api/Account/index.md#network) object containing the current network information. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-events-currentNetwork{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-events-currentNetwork{ts:line-numbers} #### `assets` The `assets` event is emitted every time the assets change. The event data will be an array of [`Asset`](../../api/Account/index.md#asset) objects available on the network. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-events-assets{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-events-assets{ts:line-numbers} #### `abis` The `abis` event is emitted every time an ABI is added to a connector. The event data will be an array of [`FuelABI`](../../api/Account/index.md#fuelabi) object. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-connector-events-assets{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/connectors.ts#fuel-connector-events-assets{ts:line-numbers} ### Methods @@ -323,7 +323,7 @@ The TS SDK exports the `Fuel` class, which serves as the connectors manager. Thi It can be instantiated as follows: -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-instantiation-1{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/fuel-instantiation-one.ts#fuel-instantiation-1{ts:line-numbers} > [!NOTE] Note > We recommend initializing the Fuel class with the `init` method to avoid any potential race conditions that may arise from the async nature of instantiating a connector. @@ -340,25 +340,25 @@ Several options can be passed to the `Fuel` connector manager: The `connectors` option provides a list of connectors with which the `Fuel` connector manager can interact. The manager interacts with the connectors, which in turn handle communication with the respective wallet. You can find a list of all the connectors in our [`FuelLabs/fuel-connectors`](https://github.com/FuelLabs/fuel-connectors). -Below, we initialize the manager using the `defaultConnectors` method which provides an array of all the default connectors available in the `fuel-connectors` package. Supplying the `devMode` flag as `true` will enable the development wallet for the connectors (to install visit our [wallet documentation](https://docs.fuel.network/docs/wallet/install/)). +Below, we initialize the manager using the `defaultConnectors` method which provides an array of all the default connectors available in the `fuel-connectors` package. It's being mocked here for the purposes of this example, but you can provide your own custom connectors. Supplying the `devMode` flag as `true` will enable the development wallet for the connectors (to install visit our [wallet documentation](https://docs.fuel.network/docs/wallet/install/)). -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-options-connectors{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/fuel-instantiation-options.ts#fuel-options-connectors{ts:line-numbers} #### `storage` The `storage` is used internally to store the current connector state. It can be overridden by passing an instance that extends the `StorageAbstract` class. -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-options-storage-memory{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/fuel-options-storage-memory.ts#fuel-options-storage-memory{ts:line-numbers} The default behavior will use `LocalStorage` if the `window` is available: -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-options-storage-local{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/fuel-options-storage-local.ts#fuel-options-storage-local{ts:line-numbers} #### `targetObject` The `targetObject` provides a target with which the `Fuel` manager can interact. Used for registering events and can be overridden as follows: -<<< @/../../docs-snippets/src/guide/wallets/connectors.test.ts#fuel-options-target-object{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/fuel-options-target-object.ts#fuel-options-target-object{ts:line-numbers} ### Methods diff --git a/apps/docs/src/guide/wallets/encrypting-and-decrypting.md b/apps/docs/src/guide/wallets/encrypting-and-decrypting.md index 7d793490d9a..3a6992ad955 100644 --- a/apps/docs/src/guide/wallets/encrypting-and-decrypting.md +++ b/apps/docs/src/guide/wallets/encrypting-and-decrypting.md @@ -8,7 +8,7 @@ We will be calling `encrypt` from the [`WalletUnlocked`](../../api/Account/Walle Here is an example of how you can accomplish this: -<<< @/../../docs-snippets/src/guide/wallets/encrypting-and-decrypting-json-wallets.test.ts#encrypting-and-decrypting-json-wallets-1{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/encrypting-and-decrypting-wallets.ts#encrypting-and-decrypting-json-wallets-1{ts:line-numbers} Please note that `encrypt` must be called within an instance of [`WalletUnlocked`](../../api/Account/WalletUnlocked.md). This instance can only be achieved through passing a private key or mnemonic phrase to a locked wallet. @@ -18,10 +18,11 @@ To decrypt the JSON wallet and retrieve your private key, you can call `fromEncr Here is an example: -<<< @/../../docs-snippets/src/guide/wallets/encrypting-and-decrypting-json-wallets.test.ts#encrypting-and-decrypting-json-wallets-2{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/encrypting-and-decrypting-json-wallets-two.ts#encrypting-and-decrypting-json-wallets-2{ts:line-numbers} In this example, `decryptedWallet` is an instance of [`WalletUnlocked`](../../api/Account/WalletUnlocked.md) class, now available for use. ## Important Remember to securely store your encrypted JSON wallet and password. If you lose them, there will be no way to recover your wallet. For security reasons, avoid sharing your private key, encrypted JSON wallet or password with anyone. + diff --git a/apps/docs/src/guide/wallets/locking-and-unlocking.md b/apps/docs/src/guide/wallets/locking-and-unlocking.md index 9be9a63e31b..80a0296f0d0 100644 --- a/apps/docs/src/guide/wallets/locking-and-unlocking.md +++ b/apps/docs/src/guide/wallets/locking-and-unlocking.md @@ -24,23 +24,23 @@ provides greater access via its private key. ## Basic Example -<<< @/../../docs-snippets/src/guide/wallets/access.test.ts#wallets{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/access.ts#wallets{ts:line-numbers} ## Optional Provider You can choose not to pass through a provider argument on `Wallet` construction: -<<< @/../../docs-snippets/src/guide/wallets/access.test.ts#wallet-optional-provider{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/wallet-optional-provider.ts#wallet-optional-provider{ts:line-numbers} ## Transitioning States A [`WalletLocked`](../../api/Account/WalletLocked.md) instance can be unlocked by providing the private key: -<<< @/../../docs-snippets/src/guide/wallets/access.test.ts#wallet-locked-to-unlocked{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/locked-to-unlocked.ts#wallet-locked-to-unlocked{ts:line-numbers} A [`WalletUnlocked`](../../api/Account/WalletUnlocked.md) instance can be locked using the `lock` method: -<<< @/../../docs-snippets/src/guide/wallets/access.test.ts#wallet-unlocked-to-locked{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/unlocked-to-locked.ts#wallet-unlocked-to-locked{ts:line-numbers} Most wallet constructors that create or generate a new wallet are provided on the [`WalletUnlocked`](../../api/Account/WalletUnlocked.md) type. Consider locking the wallet with the `lock` method after the new private @@ -54,3 +54,9 @@ about the kind of access that we require. API developers should aim to minimise their usage of [`WalletUnlocked`](../../api/Account/WalletUnlocked.md) in order to ensure private keys are stored in memory no longer than necessary to reduce the surface area for attacks and vulnerabilities in downstream libraries and applications. + +## Full Example + +For a full example of how to lock and unlock a wallet, see the snippet below: + +<<< @/../../docs-snippets2/src/wallets/access.ts#full{ts:line-numbers} diff --git a/apps/docs/src/guide/wallets/private-keys.md b/apps/docs/src/guide/wallets/private-keys.md index c553b2559bf..c3fa8b8506e 100644 --- a/apps/docs/src/guide/wallets/private-keys.md +++ b/apps/docs/src/guide/wallets/private-keys.md @@ -2,7 +2,7 @@ A new wallet with a randomly generated private key can be created by supplying `Wallet.generate`. -<<< @/../../docs-snippets/src/guide/wallets/access.test.ts#wallets{ts:line-numbers} +<<< @/../../docs-snippets2/src/wallets/access.ts#wallets{ts:line-numbers} Alternatively, you can create a wallet from a Private Key: diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f320ee8a0b4..cd16940106f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -163,7 +163,7 @@ importers: version: 0.1.1 tsup: specifier: ^6.7.0 - version: 6.7.0(@swc/core@1.7.14)(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(typescript@5.6.3) + version: 6.7.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(typescript@5.6.3) tsx: specifier: ^4.19.1 version: 4.19.1 @@ -266,7 +266,7 @@ importers: version: 8.4.47 tailwindcss: specifier: ^3.4.14 - version: 3.4.14(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3)) + version: 3.4.14(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3)) typescript: specifier: ~5.6.3 version: 5.6.3 @@ -363,7 +363,7 @@ importers: version: 18.3.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.25.7(@babel/core@7.22.5))(@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.22.5))(eslint@9.9.1(jiti@2.3.3))(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10))(typescript@5.6.3) + version: 7.0.1(@babel/plugin-syntax-flow@7.25.7(@babel/core@7.22.5))(@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.22.5))(eslint@9.9.1(jiti@2.3.3))(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10))(typescript@5.6.3) fuels: specifier: workspace:* version: link:../../packages/fuels @@ -375,7 +375,7 @@ importers: version: 18.3.1(react@18.3.1) react-scripts: specifier: 5.0.1 - version: 5.0.1(@babel/plugin-syntax-flow@7.25.7(@babel/core@7.22.5))(@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.22.5))(@swc/core@1.7.14)(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.17.19)(eslint@9.9.1(jiti@2.3.3))(react@18.3.1)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(type-fest@3.1.0)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 5.0.1(@babel/plugin-syntax-flow@7.25.7(@babel/core@7.22.5))(@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.22.5))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.17.19)(eslint@9.9.1(jiti@2.3.3))(react@18.3.1)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(type-fest@3.1.0)(typescript@5.6.3)(utf-8-validate@5.0.10) typescript: specifier: ~5.6.3 version: 5.6.3 @@ -496,7 +496,7 @@ importers: version: 6.0.1(jiti@2.3.3)(postcss@8.4.47)(tsx@4.19.1)(yaml@2.6.0) tailwindcss: specifier: ^3.4.14 - version: 3.4.14(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3)) + version: 3.4.14(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3)) typescript: specifier: ~5.6.3 version: 5.6.3 @@ -566,7 +566,7 @@ importers: version: link:../../packages/fuels vitest: specifier: ~2.0.5 - version: 2.0.5(@types/node@22.7.7)(@vitest/browser@2.0.5)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(terser@5.36.0) + version: 2.0.5(@types/node@22.7.7)(@vitest/browser@2.0.5)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(terser@5.36.0) apps/docs-snippets2: dependencies: @@ -1319,7 +1319,7 @@ importers: version: 8.4.47 tailwindcss: specifier: ^3.4.14 - version: 3.4.14(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3)) + version: 3.4.14(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3)) typescript: specifier: ~5.6.3 version: 5.6.3 @@ -1401,7 +1401,7 @@ importers: version: 8.4.47 tailwindcss: specifier: ^3.4.14 - version: 3.4.14(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.7.7)(typescript@5.6.3)) + version: 3.4.14(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.7.7)(typescript@5.6.3)) typescript: specifier: ~5.6.3 version: 5.6.3 @@ -20432,7 +20432,7 @@ snapshots: jest-util: 28.1.3 slash: 3.0.0 - '@jest/core@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10)': + '@jest/core@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10)': dependencies: '@jest/console': 27.5.1 '@jest/reporters': 27.5.1 @@ -20446,7 +20446,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 27.5.1 - jest-config: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) + jest-config: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) jest-haste-map: 27.5.1 jest-message-util: 27.5.1 jest-regex-util: 27.5.1 @@ -21299,7 +21299,7 @@ snapshots: dependencies: playwright: 1.47.2 - '@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.11.0)(type-fest@3.1.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)))(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.11.0)(type-fest@3.1.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)))(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -21311,10 +21311,10 @@ snapshots: react-refresh: 0.11.0 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) optionalDependencies: type-fest: 3.1.0 - webpack-dev-server: 4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + webpack-dev-server: 4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) '@polka/url@1.0.0-next.24': {} @@ -22396,7 +22396,7 @@ snapshots: '@swc/core-win32-x64-msvc@1.7.14': optional: true - '@swc/core@1.7.14': + '@swc/core@1.7.14(@swc/helpers@0.5.12)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.12 @@ -22411,6 +22411,7 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.7.14 '@swc/core-win32-ia32-msvc': 1.7.14 '@swc/core-win32-x64-msvc': 1.7.14 + '@swc/helpers': 0.5.12 optional: true '@swc/counter@0.1.3': {} @@ -23380,7 +23381,7 @@ snapshots: vite: 5.4.9(@types/node@22.7.7)(terser@5.36.0) vue: 3.5.12(typescript@5.6.3) - '@vitest/browser@2.0.5(bufferutil@4.0.8)(playwright@1.47.2)(typescript@5.6.3)(utf-8-validate@5.0.10)(vitest@2.0.5)(webdriverio@9.0.9(bufferutil@4.0.8)(utf-8-validate@6.0.4))': + '@vitest/browser@2.0.5(bufferutil@4.0.8)(playwright@1.47.2)(typescript@5.6.3)(utf-8-validate@5.0.10)(vitest@2.0.5)(webdriverio@9.0.9(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: '@testing-library/dom': 10.4.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) @@ -23392,7 +23393,7 @@ snapshots: ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) optionalDependencies: playwright: 1.47.2 - webdriverio: 9.0.9(bufferutil@4.0.8)(utf-8-validate@6.0.4) + webdriverio: 9.0.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - typescript @@ -23407,7 +23408,7 @@ snapshots: magic-string: 0.30.11 msw: 2.4.7(typescript@5.6.3) sirv: 2.0.4 - vitest: 2.0.5(@types/node@22.7.7)(@vitest/browser@2.0.5)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(terser@5.36.0) + vitest: 2.0.5(@types/node@22.5.5)(@vitest/browser@2.0.5)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(terser@5.36.0) ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) optionalDependencies: playwright: 1.47.2 @@ -25366,14 +25367,14 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@8.3.0(@babel/core@7.22.5)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + babel-loader@8.3.0(@babel/core@7.22.5)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: '@babel/core': 7.22.5 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) babel-plugin-istanbul@6.1.1: dependencies: @@ -26717,7 +26718,7 @@ snapshots: dependencies: hyphenate-style-name: 1.0.4 - css-loader@6.8.1(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + css-loader@6.8.1(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: icss-utils: 5.1.0(postcss@8.4.47) postcss: 8.4.47 @@ -26727,9 +26728,9 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.4.47) postcss-value-parser: 4.2.0 semver: 7.3.8 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) - css-minimizer-webpack-plugin@3.4.1(esbuild@0.17.19)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + css-minimizer-webpack-plugin@3.4.1(esbuild@0.17.19)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: cssnano: 5.1.15(postcss@8.4.47) jest-worker: 27.5.1 @@ -26737,7 +26738,7 @@ snapshots: schema-utils: 4.2.0 serialize-javascript: 6.0.1 source-map: 0.6.1 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) optionalDependencies: esbuild: 0.17.19 @@ -27825,7 +27826,7 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.25.7(@babel/core@7.22.5))(@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.22.5))(eslint@9.9.1(jiti@2.3.3))(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10))(typescript@5.6.3): + eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.25.7(@babel/core@7.22.5))(@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.22.5))(eslint@9.9.1(jiti@2.3.3))(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10))(typescript@5.6.3): dependencies: '@babel/core': 7.22.5 '@babel/eslint-parser': 7.22.5(@babel/core@7.22.5)(eslint@9.9.1(jiti@2.3.3)) @@ -27837,7 +27838,7 @@ snapshots: eslint: 9.9.1(jiti@2.3.3) eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.25.7(@babel/core@7.22.5))(@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.22.5))(eslint@9.9.1(jiti@2.3.3)) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.59.0(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3))(eslint@9.9.1(jiti@2.3.3)) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.0(@typescript-eslint/parser@5.59.0(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3))(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3))(eslint@9.9.1(jiti@2.3.3))(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10))(typescript@5.6.3) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.0(@typescript-eslint/parser@5.59.0(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3))(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3))(eslint@9.9.1(jiti@2.3.3))(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10))(typescript@5.6.3) eslint-plugin-jsx-a11y: 6.9.0(eslint@9.9.1(jiti@2.3.3)) eslint-plugin-react: 7.35.0(eslint@9.9.1(jiti@2.3.3)) eslint-plugin-react-hooks: 4.6.2(eslint@9.9.1(jiti@2.3.3)) @@ -28004,13 +28005,13 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.0(@typescript-eslint/parser@5.59.0(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3))(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3))(eslint@9.9.1(jiti@2.3.3))(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10))(typescript@5.6.3): + eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.0(@typescript-eslint/parser@5.59.0(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3))(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3))(eslint@9.9.1(jiti@2.3.3))(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10))(typescript@5.6.3): dependencies: '@typescript-eslint/experimental-utils': 5.60.1(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3) eslint: 9.9.1(jiti@2.3.3) optionalDependencies: '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3))(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3) - jest: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) + jest: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) transitivePeerDependencies: - supports-color - typescript @@ -28192,7 +28193,7 @@ snapshots: eslint-visitor-keys@4.1.0: {} - eslint-webpack-plugin@3.2.0(eslint@9.9.1(jiti@2.3.3))(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + eslint-webpack-plugin@3.2.0(eslint@9.9.1(jiti@2.3.3))(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: '@types/eslint': 8.40.2 eslint: 9.9.1(jiti@2.3.3) @@ -28200,7 +28201,7 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 schema-utils: 4.2.0 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) eslint@8.57.0: dependencies: @@ -28659,11 +28660,11 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-loader@6.2.0(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + file-loader@6.2.0(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) file-uri-to-path@1.0.0: {} @@ -28799,7 +28800,7 @@ snapshots: forever-agent@0.6.1: {} - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: '@babel/code-frame': 7.25.7 '@types/json-schema': 7.0.12 @@ -28815,7 +28816,7 @@ snapshots: semver: 7.6.3 tapable: 1.1.3 typescript: 5.6.3 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) optionalDependencies: eslint: 9.9.1(jiti@2.3.3) @@ -29379,14 +29380,14 @@ snapshots: relateurl: 0.2.7 terser: 5.18.2 - html-webpack-plugin@5.5.3(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + html-webpack-plugin@5.5.3(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) htmlescape@1.1.1: {} @@ -30123,16 +30124,16 @@ snapshots: transitivePeerDependencies: - supports-color - jest-cli@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10): + jest-cli@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10): dependencies: - '@jest/core': 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) + '@jest/core': 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) + jest-config: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) jest-util: 27.5.1 jest-validate: 27.5.1 prompts: 2.4.2 @@ -30144,7 +30145,7 @@ snapshots: - ts-node - utf-8-validate - jest-config@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10): + jest-config@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10): dependencies: '@babel/core': 7.25.8 '@jest/test-sequencer': 27.5.1 @@ -30171,7 +30172,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - ts-node: 10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3) + ts-node: 10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3) transitivePeerDependencies: - bufferutil - canvas @@ -30508,11 +30509,11 @@ snapshots: leven: 3.1.0 pretty-format: 29.7.0 - jest-watch-typeahead@1.1.0(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10)): + jest-watch-typeahead@1.1.0(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10)): dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 - jest: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) + jest: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) jest-regex-util: 28.0.2 jest-watcher: 28.1.3 slash: 4.0.0 @@ -30565,11 +30566,11 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10): + jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10): dependencies: - '@jest/core': 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) + '@jest/core': 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) import-local: 3.1.0 - jest-cli: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) + jest-cli: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - canvas @@ -31630,10 +31631,10 @@ snapshots: mimic-response@1.0.1: {} - mini-css-extract-plugin@2.7.6(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + mini-css-extract-plugin@2.7.6(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: schema-utils: 4.2.0 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) minify-stream@2.1.0: dependencies: @@ -32891,29 +32892,29 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-load-config@3.1.4(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3)): + postcss-load-config@3.1.4(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.4.47 - ts-node: 10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3) + ts-node: 10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3) - postcss-load-config@4.0.1(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3)): + postcss-load-config@4.0.1(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3)): dependencies: lilconfig: 2.1.0 yaml: 2.6.0 optionalDependencies: postcss: 8.4.47 - ts-node: 10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3) + ts-node: 10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3) - postcss-load-config@4.0.1(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.7.7)(typescript@5.6.3)): + postcss-load-config@4.0.1(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.7.7)(typescript@5.6.3)): dependencies: lilconfig: 2.1.0 yaml: 2.6.0 optionalDependencies: postcss: 8.4.47 - ts-node: 10.9.1(@swc/core@1.7.14)(@types/node@22.7.7)(typescript@5.6.3) + ts-node: 10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.7.7)(typescript@5.6.3) postcss-load-config@6.0.1(jiti@2.3.3)(postcss@8.4.47)(tsx@4.19.1)(yaml@2.6.0): dependencies: @@ -32924,13 +32925,13 @@ snapshots: tsx: 4.19.1 yaml: 2.6.0 - postcss-loader@6.2.1(postcss@8.4.47)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + postcss-loader@6.2.1(postcss@8.4.47)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 postcss: 8.4.47 semver: 7.3.8 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) postcss-logical@5.0.4(postcss@8.4.47): dependencies: @@ -33493,7 +33494,7 @@ snapshots: regenerator-runtime: 0.13.11 whatwg-fetch: 3.6.2 - react-dev-utils@12.0.1(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + react-dev-utils@12.0.1(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: '@babel/code-frame': 7.22.5 address: 1.2.2 @@ -33504,7 +33505,7 @@ snapshots: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -33519,7 +33520,7 @@ snapshots: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -33686,56 +33687,56 @@ snapshots: optionalDependencies: '@types/react': 18.3.1 - react-scripts@5.0.1(@babel/plugin-syntax-flow@7.25.7(@babel/core@7.22.5))(@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.22.5))(@swc/core@1.7.14)(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.17.19)(eslint@9.9.1(jiti@2.3.3))(react@18.3.1)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(type-fest@3.1.0)(typescript@5.6.3)(utf-8-validate@5.0.10): + react-scripts@5.0.1(@babel/plugin-syntax-flow@7.25.7(@babel/core@7.22.5))(@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.22.5))(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/babel__core@7.20.5)(bufferutil@4.0.8)(esbuild@0.17.19)(eslint@9.9.1(jiti@2.3.3))(react@18.3.1)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(type-fest@3.1.0)(typescript@5.6.3)(utf-8-validate@5.0.10): dependencies: '@babel/core': 7.22.5 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.11.0)(type-fest@3.1.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)))(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.11.0)(type-fest@3.1.0)(webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)))(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) '@svgr/webpack': 5.5.0 babel-jest: 27.5.1(@babel/core@7.22.5) - babel-loader: 8.3.0(@babel/core@7.22.5)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + babel-loader: 8.3.0(@babel/core@7.22.5)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) babel-plugin-named-asset-import: 0.3.8(@babel/core@7.22.5) babel-preset-react-app: 10.0.1 bfj: 7.0.2 browserslist: 4.21.9 camelcase: 6.3.0 case-sensitive-paths-webpack-plugin: 2.4.0 - css-loader: 6.8.1(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) - css-minimizer-webpack-plugin: 3.4.1(esbuild@0.17.19)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + css-loader: 6.8.1(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) + css-minimizer-webpack-plugin: 3.4.1(esbuild@0.17.19)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) dotenv: 10.0.0 dotenv-expand: 5.1.0 eslint: 9.9.1(jiti@2.3.3) - eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.25.7(@babel/core@7.22.5))(@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.22.5))(eslint@9.9.1(jiti@2.3.3))(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10))(typescript@5.6.3) - eslint-webpack-plugin: 3.2.0(eslint@9.9.1(jiti@2.3.3))(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) - file-loader: 6.2.0(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.25.7(@babel/core@7.22.5))(@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.22.5))(eslint@9.9.1(jiti@2.3.3))(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10))(typescript@5.6.3) + eslint-webpack-plugin: 3.2.0(eslint@9.9.1(jiti@2.3.3))(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) + file-loader: 6.2.0(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) fs-extra: 10.1.0 - html-webpack-plugin: 5.5.3(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + html-webpack-plugin: 5.5.3(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) identity-obj-proxy: 3.0.0 - jest: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) + jest: 27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10) jest-resolve: 27.5.1 - jest-watch-typeahead: 1.1.0(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10)) - mini-css-extract-plugin: 2.7.6(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + jest-watch-typeahead: 1.1.0(jest@27.5.1(bufferutil@4.0.8)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(utf-8-validate@5.0.10)) + mini-css-extract-plugin: 2.7.6(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) postcss: 8.4.47 postcss-flexbugs-fixes: 5.0.2(postcss@8.4.47) - postcss-loader: 6.2.1(postcss@8.4.47)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + postcss-loader: 6.2.1(postcss@8.4.47)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) postcss-normalize: 10.0.1(browserslist@4.21.9)(postcss@8.4.47) postcss-preset-env: 7.8.3(postcss@8.4.47) prompts: 2.4.2 react: 18.3.1 react-app-polyfill: 3.0.0 - react-dev-utils: 12.0.1(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + react-dev-utils: 12.0.1(eslint@9.9.1(jiti@2.3.3))(typescript@5.6.3)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) react-refresh: 0.11.0 resolve: 1.22.2 resolve-url-loader: 4.0.0 - sass-loader: 12.6.0(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + sass-loader: 12.6.0(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) semver: 7.3.8 - source-map-loader: 3.0.2(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) - style-loader: 3.3.3(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) - tailwindcss: 3.4.14(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3)) - terser-webpack-plugin: 5.3.9(@swc/core@1.7.14)(esbuild@0.17.19)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) - webpack-dev-server: 4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) - webpack-manifest-plugin: 4.1.1(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) - workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + source-map-loader: 3.0.2(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) + style-loader: 3.3.3(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) + tailwindcss: 3.4.14(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3)) + terser-webpack-plugin: 5.3.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) + webpack-dev-server: 4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) + webpack-manifest-plugin: 4.1.1(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) + workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) optionalDependencies: fsevents: 2.3.3 typescript: 5.6.3 @@ -34284,11 +34285,11 @@ snapshots: sanitize.css@13.0.0: {} - sass-loader@12.6.0(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + sass-loader@12.6.0(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: klona: 2.0.6 neo-async: 2.6.2 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) sax@1.2.4: {} @@ -34667,12 +34668,12 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@3.0.2(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + source-map-loader@3.0.2(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: abab: 2.0.6 iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) source-map-support@0.5.21: dependencies: @@ -35063,9 +35064,9 @@ snapshots: dependencies: boundary: 2.0.0 - style-loader@3.3.3(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + style-loader@3.3.3(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) styled-jsx@5.1.1(@babel/core@7.25.8)(react@18.3.1): dependencies: @@ -35208,7 +35209,7 @@ snapshots: tachyons@4.12.0: {} - tailwindcss@3.4.14(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3)): + tailwindcss@3.4.14(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -35227,7 +35228,7 @@ snapshots: postcss: 8.4.47 postcss-import: 15.1.0(postcss@8.4.47) postcss-js: 4.0.1(postcss@8.4.47) - postcss-load-config: 4.0.1(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3)) + postcss-load-config: 4.0.1(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3)) postcss-nested: 6.0.1(postcss@8.4.47) postcss-selector-parser: 6.0.13 resolve: 1.22.8 @@ -35235,7 +35236,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.4.14(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.7.7)(typescript@5.6.3)): + tailwindcss@3.4.14(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.7.7)(typescript@5.6.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -35254,7 +35255,7 @@ snapshots: postcss: 8.4.47 postcss-import: 15.1.0(postcss@8.4.47) postcss-js: 4.0.1(postcss@8.4.47) - postcss-load-config: 4.0.1(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.7.7)(typescript@5.6.3)) + postcss-load-config: 4.0.1(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.7.7)(typescript@5.6.3)) postcss-nested: 6.0.1(postcss@8.4.47) postcss-selector-parser: 6.0.13 resolve: 1.22.8 @@ -35300,16 +35301,16 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.9(@swc/core@1.7.14)(esbuild@0.17.19)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + terser-webpack-plugin@5.3.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.34.1 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) optionalDependencies: - '@swc/core': 1.7.14 + '@swc/core': 1.7.14(@swc/helpers@0.5.12) esbuild: 0.17.19 terser@4.8.1: @@ -35586,7 +35587,7 @@ snapshots: ts-log@2.2.5: {} - ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3): + ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -35604,10 +35605,10 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.7.14 + '@swc/core': 1.7.14(@swc/helpers@0.5.12) optional: true - ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.7.7)(typescript@5.6.3): + ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.7.7)(typescript@5.6.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -35625,7 +35626,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.7.14 + '@swc/core': 1.7.14(@swc/helpers@0.5.12) optional: true ts-toolbelt@9.6.0: {} @@ -35649,7 +35650,7 @@ snapshots: tslib@2.8.0: {} - tsup@6.7.0(@swc/core@1.7.14)(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3))(typescript@5.6.3): + tsup@6.7.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3))(typescript@5.6.3): dependencies: bundle-require: 4.0.1(esbuild@0.17.19) cac: 6.7.14 @@ -35659,14 +35660,14 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 3.1.4(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14)(@types/node@22.5.5)(typescript@5.6.3)) + postcss-load-config: 3.1.4(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.7.14(@swc/helpers@0.5.12))(@types/node@22.5.5)(typescript@5.6.3)) resolve-from: 5.0.0 rollup: 3.25.3 source-map: 0.8.0-beta.0 sucrase: 3.32.0 tree-kill: 1.2.2 optionalDependencies: - '@swc/core': 1.7.14 + '@swc/core': 1.7.14(@swc/helpers@0.5.12) postcss: 8.4.47 typescript: 5.6.3 transitivePeerDependencies: @@ -36374,7 +36375,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.5.5 - '@vitest/browser': 2.0.5(bufferutil@4.0.8)(playwright@1.47.2)(typescript@5.6.3)(utf-8-validate@5.0.10)(vitest@2.0.5)(webdriverio@9.0.9(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@vitest/browser': 2.0.5(bufferutil@4.0.8)(playwright@1.47.2)(typescript@5.6.3)(utf-8-validate@5.0.10)(vitest@2.0.5)(webdriverio@9.0.9(bufferutil@4.0.8)(utf-8-validate@5.0.10)) jsdom: 16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - less @@ -36444,7 +36445,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.7.7 - '@vitest/browser': 2.0.5(bufferutil@4.0.8)(playwright@1.47.2)(typescript@5.6.3)(utf-8-validate@5.0.10)(vitest@2.0.5)(webdriverio@9.0.9(bufferutil@4.0.8)(utf-8-validate@6.0.4)) + '@vitest/browser': 2.0.5(bufferutil@4.0.8)(playwright@1.47.2)(typescript@5.6.3)(utf-8-validate@5.0.10)(vitest@2.0.5)(webdriverio@9.0.9(bufferutil@4.0.8)(utf-8-validate@5.0.10)) jsdom: 16.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - less @@ -36456,41 +36457,6 @@ snapshots: - supports-color - terser - vitest@2.0.5(@types/node@22.7.7)(@vitest/browser@2.0.5)(jsdom@16.7.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(terser@5.36.0): - dependencies: - '@ampproject/remapping': 2.3.0 - '@vitest/expect': 2.0.5 - '@vitest/pretty-format': 2.1.1 - '@vitest/runner': 2.0.5 - '@vitest/snapshot': 2.0.5 - '@vitest/spy': 2.0.5 - '@vitest/utils': 2.0.5 - chai: 5.1.1 - debug: 4.3.7(supports-color@5.5.0) - execa: 8.0.1 - magic-string: 0.30.11 - pathe: 1.1.2 - std-env: 3.7.0 - tinybench: 2.9.0 - tinypool: 1.0.1 - tinyrainbow: 1.2.0 - vite: 5.4.9(@types/node@22.7.7)(terser@5.36.0) - vite-node: 2.0.5(@types/node@22.7.7)(terser@5.36.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 22.7.7 - '@vitest/browser': 2.0.5(bufferutil@4.0.8)(playwright@1.47.2)(typescript@5.6.3)(utf-8-validate@6.0.4)(vitest@2.0.5)(webdriverio@9.0.9(bufferutil@4.0.8)(utf-8-validate@6.0.4)) - jsdom: 16.7.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) - transitivePeerDependencies: - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - vlq@1.0.1: {} vm-browserify@1.1.2: {} @@ -36551,6 +36517,23 @@ snapshots: '@noble/curves': 1.6.0 '@noble/hashes': 1.5.0 + webdriver@9.0.8(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@types/node': 20.14.15 + '@types/ws': 8.5.12 + '@wdio/config': 9.0.8 + '@wdio/logger': 9.0.8 + '@wdio/protocols': 9.0.8 + '@wdio/types': 9.0.8 + '@wdio/utils': 9.0.8 + deepmerge-ts: 7.1.0 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + optional: true + webdriver@9.0.8(bufferutil@4.0.8)(utf-8-validate@6.0.4): dependencies: '@types/node': 20.14.15 @@ -36567,6 +36550,41 @@ snapshots: - supports-color - utf-8-validate + webdriverio@9.0.9(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@types/node': 20.14.15 + '@types/sinonjs__fake-timers': 8.1.5 + '@wdio/config': 9.0.8 + '@wdio/logger': 9.0.8 + '@wdio/protocols': 9.0.8 + '@wdio/repl': 9.0.8 + '@wdio/types': 9.0.8 + '@wdio/utils': 9.0.8 + archiver: 7.0.1 + aria-query: 5.3.0 + cheerio: 1.0.0 + css-shorthand-properties: 1.1.1 + css-value: 0.0.1 + grapheme-splitter: 1.0.4 + htmlfy: 0.2.1 + import-meta-resolve: 4.1.0 + is-plain-obj: 4.1.0 + jszip: 3.10.1 + lodash.clonedeep: 4.5.0 + lodash.zip: 4.2.0 + minimatch: 9.0.5 + query-selector-shadow-dom: 1.0.1 + resq: 1.11.0 + rgb2hex: 0.2.5 + serialize-error: 11.0.3 + urlpattern-polyfill: 10.0.0 + webdriver: 9.0.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + optional: true + webdriverio@9.0.9(bufferutil@4.0.8)(utf-8-validate@6.0.4): dependencies: '@types/node': 20.14.15 @@ -36613,16 +36631,16 @@ snapshots: webidl-conversions@6.1.0: {} - webpack-dev-middleware@5.3.3(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + webpack-dev-middleware@5.3.3(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) - webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + webpack-dev-server@4.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: '@types/bonjour': 3.5.10 '@types/connect-history-api-fallback': 1.5.0 @@ -36652,20 +36670,20 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.3(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + webpack-dev-middleware: 5.3.3(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) optionalDependencies: - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate - webpack-manifest-plugin@4.1.1(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + webpack-manifest-plugin@4.1.1(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: tapable: 2.2.1 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) webpack-sources: 2.3.1 webpack-sources@1.4.3: @@ -36682,7 +36700,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19): + webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19): dependencies: '@types/eslint-scope': 3.7.4 '@types/estree': 1.0.5 @@ -36705,7 +36723,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(@swc/core@1.7.14)(esbuild@0.17.19)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)) + terser-webpack-plugin: 5.3.9(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -36931,12 +36949,12 @@ snapshots: workbox-sw@6.6.0: {} - workbox-webpack-plugin@6.6.0(@types/babel__core@7.20.5)(webpack@5.88.0(@swc/core@1.7.14)(esbuild@0.17.19)): + workbox-webpack-plugin@6.6.0(@types/babel__core@7.20.5)(webpack@5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19)): dependencies: fast-json-stable-stringify: 2.1.0 pretty-bytes: 5.6.0 upath: 1.2.0 - webpack: 5.88.0(@swc/core@1.7.14)(esbuild@0.17.19) + webpack: 5.88.0(@swc/core@1.7.14(@swc/helpers@0.5.12))(esbuild@0.17.19) webpack-sources: 1.4.3 workbox-build: 6.6.0(@types/babel__core@7.20.5) transitivePeerDependencies: