diff --git a/crates/iota-sdk/README.md b/crates/iota-sdk/README.md index bb3ca4e99dc..843b15fe901 100644 --- a/crates/iota-sdk/README.md +++ b/crates/iota-sdk/README.md @@ -1,4 +1,4 @@ -This crate provides the IOTA Rust SDK, containing APIs to interact with the IOTA network. Auto-generated documentation for this crate is [here](https://github.com/iotaledger/iota/iota_sdk/index.html). +This crate provides the IOTA Rust SDK, containing APIs to interact with the IOTA network. Auto-generated documentation for this crate is [here](https://iotaledger.github.io/iota/iota_sdk/index.html). ## Getting started diff --git a/docs/content/about-iota/iota-architecture/consensus.mdx b/docs/content/about-iota/iota-architecture/consensus.mdx index a612cb4e227..253688f9952 100644 --- a/docs/content/about-iota/iota-architecture/consensus.mdx +++ b/docs/content/about-iota/iota-architecture/consensus.mdx @@ -1,153 +1,18 @@ --- -description: Overview of the IOTA mempool and consensus engines, Narwhal and Bullshark. -sidebar_label: Mempool and Consensus +title: Consensus on IOTA +sidebar_label: Consensus +description: Overview of the IOTA consensus. --- -import Quiz from '@site/src/components/Quiz'; -import {questions} from '../../../site/static/json/about-iota/iota-architecture/consensus.json'; +The basic purpose of consensus in blockchains is to agree on a consistent order and ensure the availability of transactions. -# Consensus on IOTA +On IOTA, consensus has a simple API: validators submit different user transactions to consensus concurrently, and the consensus outputs a consistent stream of transactions across all well-behaving validators. -## Narwall and Bullshark +Byzantine-fault tolerant (BFT) consensus protocols are a rich area of research. The next-generation consensus engine in IOTA is based on the **Mysticeti** protocol. +The protocol optimizes for both low latency and high throughput because: +- It allows multiple validators to propose blocks in parallel, utilizing the full bandwidth of the network and providing censorship resistance. These are features of the DAG-based consensus protocols. +- It takes only three rounds of messages to commit blocks from the DAGs, same as pBFT and matches the theoretical minimum. +- The commit rule allows voting and certifying leaders on blocks in parallel, further reducing the median and tail latencies. +- The commit rule also tolerates unavailable leaders without significantly increasing the commit latencies. -IOTA uses [Narwhal](https://github.com/iotaledger/iota/tree/develop/narwhal), -and [Bullshark](https://arxiv.org/abs/2209.05633), the high-throughput mempool and consensus engines developed by Mysten -Labs, to sequence transactions that require total ordering, synchronize transactions between validators, and -periodically checkpoint the -network's state. - -[Narwhal](https://arxiv.org/abs/2105.11827) ensures that data that was submitted for consensus is readily available, -while [Bullshark](https://dl.acm.org/doi/abs/10.1145/3548606.3559361) is in charge of generating a consensus on the -specific ordering of said data. - -The IOTA consensus engine is a cutting-edge advancement in multi-proposer, high-throughput consensus algorithms. It can -achieve over 125,000 transactions per second with a two-second latency for a deployment of 50 participants. This -includes production-level cryptography, permanent storage, and a scaled-out primary-worker architecture. - -The IOTA consensus engine offers significant scalability advantages in the following scenarios: - -* A blockchain that has experimented with larger blocks and encountered increased latency before the execution phase. -* A blockchain with fast execution (e.g., focused on transactions or using a UTXO data model) where the mempool and - consensus processes cannot keep up. - -## Key Features - -The Narwhal mempool offers: - -* A high-throughput data availability engine with cryptographic proofs of data availability at - a [primary node](https://github.com/iotaledger/iota/blob/develop/narwhal/primary) -* A structured graph data structure for traversing information. -* A scaled architecture that splits disk I/O and networking requirements across - several [workers](https://github.com/iotaledger/iota/blob/develop/narwhal/worker) - -## Architecture - -A Narwhal instance sets up a message-passing system with a set of $3f+1$ units of stake divided among nodes. It assumes -a computationally bounded adversary that controls the network and can corrupt parties holding up to $f$ units of stake. -The validators collaborate to form a leaderless graph of transaction batches, referred to as collections in IOTA (often -called blocks in DAG-based consensus literature). This process uses mempool data with an unspecified consensus -algorithm. - -The graph's _vertices_ are certified collections. Each valid collection, signed by its validator-author, must include a -round number and a certificate of availability signed by a quorum (2f+1) of validator stake. Each collection must also -contain hash pointers to a quorum of valid certificates (from validators with 2f + 1 units of stake) from the previous -round, forming the _edges_ of the graph. - -Collections are formed as follows: each validator reliably broadcasts a collection for each round. Subject to specified -validity conditions, if validators with 2f + 1 stake receive a collection, they acknowledge it with a signature. -Signatures from 2f + 1 validators by stake form a certificate of availability, which is then shared and potentially -included in collections at round r + 1. - -The following figure represents five rounds of constructing such a DAG (1 to 5), with validators A, B, C, and D -participating. For simplicity, each validator holds 1 unit of stake. The collections transitively acknowledged by A's -latest round in A5 are represented with solid lines in the graph. - -```mermaid -flowchart TB; - subgraph A; - A5 --> A4 --> A3 --> A2 --> A1; - end; - subgraph B; - B5 -.-> B4 --> B3 --> B2 --> B1; - end; - subgraph C; - C5 -.-> C4 --> C3 --> C2 --> C1; - end; - subgraph D; - D5 -.-> D4 -.-> D3 --> D2 --> D1; - end; - A5 --> B4 & C4; - A4 --> C3 & D3; - A3 --> B2 & C2; - A2 --> C1 & D1; - B5 -.-> A4 & C4; - B4 --> C3 & D3; - B3 --> A2 & C2; - B2 --> C1 & D1; - C5 -.-> A4 & B4; - C4 --> B3 & D3; - C3 --> A2 & B2; - C2 --> B1 & D1; - D5 -.-> A4 & B4; - D4 -.-> B3 & C3; - D3 --> A2 & B2; - D2 --> B1 & C1; -``` - -## How It Works - -* The graph construction enables the insertion of more transactions into the system by each authority and in each round. -* Certificates prove the data availability of each collection or block in every round. -* The contents form a DAG that can be identically traversed by each honest node. - -## Dependencies - -Narwhal is implemented using: - -* [Tokio](https://github.com/tokio-rs/tokio) -* [RocksDB](https://github.com/facebook/rocksdb/) - -Generic cryptography is implemented in [fastcrypto](https://github.com/MystenLabs/fastcrypto). - -## Configuration - -You can follow the instructions -on [Running Benchmarks](https://github.com/iotaledger/iota/blob/develop/narwhal/benchmark) to conduct a fresh deployment -of IOTA Consensus Engine. - -## Further Reading - -Narwhal and Tusk (Danezis et al., 2021) is a consensus system that leverages directed acyclic graphs (DAGs). DAG-based -consensus has been developed over the last 30 years, with some history summarized in Wang et al. (2020). The theoretical -ancestor of Narwhal and Tusk is DAG-Rider (Keidar et al., 2021). - -Narwhal and Tusk are developed in -the [asynchronous model](https://decentralizedthoughts.github.io/2019-06-01-2019-5-31-models/). A partially synchronous -variant of Narwhal and Tusk is called Bullshark (Spiegelman et al. 2022). - -Narwhal and Tusk started [as a research prototype](https://github.com/facebookresearch/narwhal) at Facebook Novi. - -[Bullshark: DAG BFT Protocols Made Practical](https://arxiv.org/pdf/2201.05677.pdf) - -Bullshark replaces Tusk for even greater performance. - -[Bullshark: The Partially Synchronous Version](https://arxiv.org/pdf/2209.05633.pdf) - -A simplified version of Bullshark that is used in IOTA today. - -[DAG Meets BFT - The Next Generation of BFT Consensus](https://decentralizedthoughts.github.io/2022-06-28-DAG-meets-BFT/) - -Explains the evolution of the consensus protocol used by IOTA. - -## Bibliography - -* Danezis, G., Kogias, E. K., Sonnino, A., & Spiegelman, A. (2021). Narwhal and Tusk: A DAG-based Mempool and Efficient - BFT Consensus. ArXiv:2105.11827 [Cs]. http://arxiv.org/abs/2105.11827 -* Spiegelman, A., Giridharan, N., Sonnino, A., & Kokoris-Kogias, L. (2022). Bullshark: DAG BFT Protocols Made Practical. - ArXiv:2201.05677 [Cs]. https://dl.acm.org/doi/abs/10.1145/3548606.3559361 -* Spiegelman, A., Giridharan, N., Sonnino, A., & Kokoris-Kogias, L. (2022). Bullshark: The Partially Synchronous - Version. ArXiv:2209.05633 [Cs]. https://arxiv.org/abs/2209.05633 -* Keidar, I., Kokoris-Kogias, E., Naor, O., & Spiegelman, A. (2021). All You Need is DAG. ArXiv: - 2102.08325 [Cs]. http://arxiv.org/abs/2102.08325 -* Wang, Q., Yu, J., Chen, S., & Xiang, Y. (2020). SoK: Diving into DAG-based Blockchain Systems. ArXiv: - 2012.06128 [Cs]. http://arxiv.org/abs/2012.06128 - - ## Quizzes - +For more details including correctness proofs, the [Mysticeti paper](https://arxiv.org/pdf/2310.14821) is the best source. diff --git a/docs/content/about-iota/iota-architecture/iota-architecture.mdx b/docs/content/about-iota/iota-architecture/iota-architecture.mdx index 540a16fa536..f6632242f75 100644 --- a/docs/content/about-iota/iota-architecture/iota-architecture.mdx +++ b/docs/content/about-iota/iota-architecture/iota-architecture.mdx @@ -1,6 +1,7 @@ --- title: IOTA Architecture --- +import ThemedImage from '@theme/ThemedImage'; IOTA shares some similarities with other blockchains but is unique in many ways. Use the topics in this section to understand the features that define the IOTA network. @@ -16,11 +17,12 @@ Life of a Transaction details the transitions that all transactions on IOTA go t Go to [Life of a Transaction](transaction-lifecycle.mdx). -## Mempool and Consensus Engines +## Consensus -Narwhal and Bullshark combine to form the basis of the IOTA mempool and consensus engine. This topic offers a brief introduction to the technologies that keep the activities on IOTA synchronized and secure. +Every transaction on IOTA is sequenced by consensus, where validators agree to the same order of execution of the transactions, even if a minority of them are down or are malicious actors that want to harm the network and users. +IOTA currently uses the [Mysticeti](https://arxiv.org/pdf/2310.14821) consensus algorithm. -Go to [Mempool and Consensus Engines](consensus.mdx). +Go to [Consensus](consensus.mdx). ## Protocol Upgrades @@ -39,4 +41,10 @@ The core components are: - [IOTA RPC](../../references/iota-api) - [IOTA CLI](../../references/cli) -![IOTA Architecture](/img/concepts/execution-architecture/iota-architecture.svg) \ No newline at end of file + diff --git a/docs/content/about-iota/iota-architecture/staking-rewards.mdx b/docs/content/about-iota/iota-architecture/staking-rewards.mdx index 33790c21906..21c7ab5d878 100644 --- a/docs/content/about-iota/iota-architecture/staking-rewards.mdx +++ b/docs/content/about-iota/iota-architecture/staking-rewards.mdx @@ -32,8 +32,9 @@ epoch. Similarly, when a user withdraws their stake, it stops counting from the ## Rewards Distribution -At the end of each [epoch](epochs.mdx), gas fees and stake subsidies are distributed among validators and stakers as -rewards. The amount of rewards a validator gets depends on: +At the end of each [epoch](epochs.mdx), newly minted IOTA tokens are distributed as rewards among validators and stakers. Within each validator staking pool, stakers receive rewards proportionally through the appreciation of the pool's exchange rate. Validators also earn additional rewards, represented as StakedIOTA objects, which they receive at the end of each epoch in proportion to the commissions generated by their staking pool. + +Each epoch's rewards are funded by newly minted IOTA tokens, totaling 767k IOTA per epoch. This amount is distributed across staking pools based on their voting power and the specified tallying rule. The amount of rewards a validator gets depends on: ### Performance diff --git a/docs/content/about-iota/iota-architecture/transaction-lifecycle.mdx b/docs/content/about-iota/iota-architecture/transaction-lifecycle.mdx index c5c4a396447..f2146ee274a 100644 --- a/docs/content/about-iota/iota-architecture/transaction-lifecycle.mdx +++ b/docs/content/about-iota/iota-architecture/transaction-lifecycle.mdx @@ -1,11 +1,18 @@ import Quiz from '@site/src/components/Quiz'; import {questions} from '../../../site/static/json/about-iota/iota-architecture/transaction-lifecycle.json'; +import ThemedImage from '@theme/ThemedImage'; # Transaction Life Cycle ## High-level Overview -![Transaction life cycle](/img/about-iota/iota-architecture/txn-lifecycle.png) + 1. **Create a Transaction**: A user [submits](#submission) a transaction and signs it with a private key. The transaction can affect objects owned by the user, as well as [shared objects](../../developer/iota-101/objects/object-ownership/shared.mdx). diff --git a/docs/content/about-iota/tokenomics/tokenomics.mdx b/docs/content/about-iota/tokenomics/tokenomics.mdx index e08f4161722..981e93ea2e2 100644 --- a/docs/content/about-iota/tokenomics/tokenomics.mdx +++ b/docs/content/about-iota/tokenomics/tokenomics.mdx @@ -1,9 +1,9 @@ --- title: IOTA Tokenomics --- - import Quiz from '@site/src/components/Quiz'; import {questions} from '../../../site/static/json/about-iota/tokenomics/tokenomics.json'; +import ThemedImage from '@theme/ThemedImage'; The collective ideation that the term tokenomics encompasses includes a wide range of concepts that define the science and behavior of blockchain economies. In basic terms, tokenomics are the financial foundation of blockchains. Much the same way a building with a poor foundation is doomed to fail, a blockchain without a well-researched, extensively planned, and painstakingly implemented token economy eventually crumbles. @@ -23,7 +23,7 @@ Three main types of participants characterize the IOTA economy: The IOTA economy is composed of four core components: - **[IOTA](iota-token.mdx):** The IOTA token is the IOTA platform native asset. -- **[Gas fees](gas-in-iota.mdx):** Gas fees are charged on all network operations, consisting of a computation fee component and a fully rebated storage deposit component. Gas is used to reward participants of the proof-of-stake mechanism and prevent spam and denial-of-service attacks. +- **[Gas fees](gas-in-iota.mdx):** Gas fees are charged on all network operations, consisting of a computation fees which are burnt and a fully rebated storage deposits. - **[Staking rewards](proof-of-stake.mdx):** Staking rewards are provided to users participating in the delegated proof-of-stake mechanism, namely delegators and validators. This incentivizes honest behavior by IOTA Validators and the IOTA token holder that delegate to them. - **Voting:** On-chain voting is used for governance and protocol upgrades. @@ -32,7 +32,13 @@ The IOTA economy is composed of four core components: The following flowchart presents the tokenomic flow of IOTA at a high level. Referring back to this chart after you learn concepts in this section should provide additional clarity. -![IOTA tokenomics flow](/img/about-iota/tokenomics/iota-tokenomics-flow.png "Flowchart showing the tokenomics structure.") + ## Quizzes \ No newline at end of file diff --git a/docs/content/developer/advanced/asset-tokenization.mdx b/docs/content/developer/advanced/asset-tokenization.mdx index 1257b3cb300..bc897ad67f9 100644 --- a/docs/content/developer/advanced/asset-tokenization.mdx +++ b/docs/content/developer/advanced/asset-tokenization.mdx @@ -734,7 +734,7 @@ Afterward, it's necessary to modify the `Move.toml` file. Under the `[addresses] ##### Automatically -The fields that are automatically filled are: `SUI_NETWORK`, `ASSET_TOKENIZATION_PACKAGE_ID` and `REGISTRY`. +The fields that are automatically filled are: `IOTA_NETWORK`, `ASSET_TOKENIZATION_PACKAGE_ID` and `REGISTRY`. To publish with the bash script run: diff --git a/docs/content/developer/getting-started/local-network.mdx b/docs/content/developer/getting-started/local-network.mdx index 05383670af8..1ff44584ec4 100644 --- a/docs/content/developer/getting-started/local-network.mdx +++ b/docs/content/developer/getting-started/local-network.mdx @@ -167,7 +167,15 @@ The response resembles the following, but with different IDs: ``` :::tip explorer + In order to use the explorer locally users can use the deployed explorer and set another endpoint like this: [https://explorer.iota.cafe/?network=http%3A%2F%2F127.0.0.1%3A9000](https://explorer.iota.cafe/?network=http%3A%2F%2F127.0.0.1%3A9000) or manually provide a Custom RPC URL on the [Explorer](https://explorer.iota.cafe/) page in the top right corner. + +::: + +:::warning HTTPS only + +The [IOTA Explorer](https://explorer.iota.cafe) requires a secure HTTPS connection. If your local network doesn't support HTTPS, consider [running your own instance of the Explorer](https://github.com/iotaledger/iota/tree/develop/apps/explorer#iota-explorer). + ::: ## Install IOTA Wallet Locally diff --git a/docs/content/developer/iota-101/move-overview/package-upgrades/custom-policies.mdx b/docs/content/developer/iota-101/move-overview/package-upgrades/custom-policies.mdx index 0fa83d1f834..3068fc2ce60 100644 --- a/docs/content/developer/iota-101/move-overview/package-upgrades/custom-policies.mdx +++ b/docs/content/developer/iota-101/move-overview/package-upgrades/custom-policies.mdx @@ -594,7 +594,7 @@ import { homedir } from 'os'; import path from 'path'; import { Ed25519Keypair } from '@iota/iota-sdk/keypairs/ed25519'; -import { fromB64 } from '@iota/iota-sdk/utils'; +import { fromBase64 } from '@iota/iota-sdk/utils'; const sender = execSync(`${IOTA} client active-address`, { encoding: 'utf8' }).trim(); const signer = (() => { @@ -606,7 +606,7 @@ const signer = (() => { ); for (const priv of keystore) { - const raw = fromB64(priv); + const raw = fromBase64(priv); if (raw[0] !== 0) { continue; } @@ -708,7 +708,7 @@ import { fileURLToPath } from 'url'; import { getFullnodeUrl, IotaClient } from '@iota/iota-sdk/client'; import { Ed25519Keypair } from '@iota/iota-sdk/keypairs/ed25519'; import { Transaction } from '@iota/iota-sdk/transactions'; -import { fromB64 } from '@iota/iota-sdk/utils'; +import { fromBase64 } from '@iota/iota-sdk/utils'; const IOTA = 'iota'; const POLICY_PACKAGE_ID = ''; @@ -722,7 +722,7 @@ const signer = (() => { ); for (const priv of keystore) { - const raw = fromB64(priv); + const raw = fromBase64(priv); if (raw[0] !== 0) { continue; } @@ -963,7 +963,7 @@ import { fileURLToPath } from 'url'; import { getFullnodeUrl, IotaClient } from '@iota/iota-sdk/client'; import { Ed25519Keypair } from '@iota/iota-sdk/keypairs/ed25519'; import { Transaction, UpgradePolicy } from '@iota/iota-sdk/transactions'; -import { fromB64 } from '@iota/iota-sdk/utils'; +import { fromBase64 } from '@iota/iota-sdk/utils'; const IOTA = 'iota'; const POLICY_PACKAGE_ID = ''; @@ -979,7 +979,7 @@ const signer = (() => { ); for (const priv of keystore) { - const raw = fromB64(priv); + const raw = fromBase64(priv); if (raw[0] !== 0) { continue; } diff --git a/docs/content/developer/standards/wallet-standard.mdx b/docs/content/developer/standards/wallet-standard.mdx index 11da54df47e..8cc9142dde4 100644 --- a/docs/content/developer/standards/wallet-standard.mdx +++ b/docs/content/developer/standards/wallet-standard.mdx @@ -23,20 +23,20 @@ Create a class that represents your wallet. Use the `Wallet` interface from import { IOTA_DEVNET_CHAIN, Wallet } from '@iota/wallet-standard'; class YourWallet implements Wallet { - get version() { - // Return the version of the Wallet Standard this implements (in this case, 1.0.0). - return '1.0.0'; - } - get name() { - return 'Wallet Name'; - } - get icon() { - return 'some-icon-data-url'; - } - // Return the IOTA chains that your wallet supports. - get chains() { - return [IOTA_DEVNET_CHAIN]; - } + get version() { + // Return the version of the Wallet Standard this implements (in this case, 1.0.0). + return '1.0.0'; + } + get name() { + return 'Wallet Name'; + } + get icon() { + return 'some-icon-data-url'; + } + // Return the IOTA chains that your wallet supports. + get chains() { + return [IOTA_DEVNET_CHAIN]; + } } ``` @@ -57,9 +57,6 @@ wallet adapter, you must implement the following features in your wallet: for execution to the blockchain. - `iota:reportTransactionEffects` - Use to report the effects of a transaction executed in the dApp to the wallet. This allows the wallet to update its internal state to reflect the changes the transaction makes. -- `iota:signTransactionBlock` - The previous version of `iota:signTransaction`. Still - implemented for compatibility with dApps that have not updated to the new feature. -- `iota:signAndExecuteTransactionBlock` - The previous version of `iota:signAndExecuteTransaction`. Still implemented for compatibility with dApps that have not updated to the new feature. Implement these features in your wallet class under the `features` property: @@ -77,7 +74,7 @@ import { } from "@iota/wallet-standard"; class YourWallet implements Wallet { - /* ... existing code from above ... */ + /* ... existing code from above ... */ get features(): ConnectFeature & EventsFeature & IOTAFeatures { return { @@ -89,17 +86,17 @@ class YourWallet implements Wallet { version: "1.0.0", on: this.#on, }, - "iota:signPersonalMessage": { + "iota:signPersonalMessage": { version: "1.0.0", - signPersonalMessage: this.#signPersonalMessage, - }, + signPersonalMessage: this.#signPersonalMessage, + }, "iota:signTransaction": { version: "2.0.0", signTransaction: this.#signTransaction, }, "iota:signAndExecuteTransaction": { version: "2.0.0", - signAndExecuteTransaction: this.#signAndExecuteTransactionBlock, + signAndExecuteTransaction: this.#signAndExecuteTransaction, }, "iota:reportTransactionEffects": { version: "1.0.0", @@ -115,7 +112,7 @@ class YourWallet implements Wallet { // Your wallet's connect implementation }; - #signPersonalMessage: IOTASignPersonalMessageMethod = () => { + #signPersonalMessage: IOTASignPersonalMessageMethod = () => { // Your wallet's signTransaction implementation }; @@ -146,26 +143,26 @@ required interface. import { ReadonlyWalletAccount } from '@iota/wallet-standard'; class YourWallet implements Wallet { - get accounts() { - // Assuming we already have some internal representation of accounts: - return someWalletAccounts.map( - (walletAccount) => - // Return - new ReadonlyWalletAccount({ - address: walletAccount.iotaAddress, - publicKey: walletAccount.pubkey, - // The IOTA chains that your wallet supports. - chains: [IOTA_DEVNET_CHAIN], - // The features that this account supports. This can be a subset of the wallet's supported features. - // These features must exist on the wallet as well. - features: [ - 'iota:signPersonalMessage', - 'iota:signTransactionBlock', - 'iota:signAndExecuteTransactionBlock', - ], - }), - ); - } + get accounts() { + // Assuming we already have some internal representation of accounts: + return someWalletAccounts.map( + (walletAccount) => + // Return + new ReadonlyWalletAccount({ + address: walletAccount.iotaAddress, + publicKey: walletAccount.pubkey, + // The IOTA chains that your wallet supports. + chains: [IOTA_DEVNET_CHAIN], + // The features that this account supports. This can be a subset of the wallet's supported features. + // These features must exist on the wallet as well. + features: [ + 'iota:signPersonalMessage', + 'iota:signTransaction', + 'iota:signAndExecuteTransaction', + ], + }), + ); + } } ``` @@ -182,10 +179,9 @@ registerWallet(new YourWallet()); ### Best Practices for Efficient Transaction Execution -The Wallet standard has been updated from its original design to better support changes in the IOTA ecosystem. For example, the GraphQL service was introduced after Mainnet launched. The `iota:signAndExecuteTransactionBlock` feature is closely tied to the JSON RPC options and data structures, so its continued maintenance becomes increasingly difficult as the GraphQL service becomes more ubiquitous. - -Consequently, the Wallet standard introduced the `iota:signAndExecuteTransaction` feature. The features of this method are more useful, regardless of which API you use to execute transactions. This usefulness comes at the expense -of flexibility in what `iota:signAndExecuteTransaction` returns. +The Wallet standard uses the `iota:signAndExecuteTransaction` feature. +The features of this method are useful, regardless of which API you use to execute transactions. +However, this usefulness comes at the expense of flexibility in what `iota:signAndExecuteTransaction` returns. To solve this problem, use the `iota:signTransaction` feature to sign transactions, and leave transaction execution to the dApp. The dApp can query for additional data during diff --git a/docs/content/developer/stardust/migration-process.mdx b/docs/content/developer/stardust/migration-process.mdx index a5685028e55..eaba3cea200 100644 --- a/docs/content/developer/stardust/migration-process.mdx +++ b/docs/content/developer/stardust/migration-process.mdx @@ -3,6 +3,7 @@ title: Migration Process description: Explains how IOTA assets are handled during migration --- import MigrationWarning from '../../_snippets/migration-warning.mdx'; +import ThemedImage from '@theme/ThemedImage'; @@ -116,7 +117,13 @@ which they can be identified as vesting reward objects. The full decision graph (without the vesting reward output case) is depicted here (with `coin` being `IOTA`): -![Stardust on Move Migration Graph](/img/guides/developer/advanced/stardust-on-move/stardust-on-move-migration-graph.svg) + ## Alias Outputs diff --git a/docs/content/operator/validator-config.mdx b/docs/content/operator/validator-config.mdx index b75c2b4f41e..0c8f36e7b4c 100644 --- a/docs/content/operator/validator-config.mdx +++ b/docs/content/operator/validator-config.mdx @@ -13,7 +13,7 @@ Validators on the IOTA network run special nodes and have additional tasks and r To run an IOTA validator, you must set up and configure an IOTA Validator node. After you have a running node, you must have a minimum of 2 million IOTA in your staking pool to join the validator set on the IOTA network. -To learn how to set up and configure an IOTA Validator node, see [IOTA for Node Operators](https://github.com/iotaledger/iota/blob/main/nre/iota_for_node_operators.md) on GitHub. The guide includes all of the information you need to configure your Validator node. It also provides guidance on the tasks you must perform after you join the validator set. +To learn how to set up and configure an IOTA Validator node, see [IOTA for Node Operators](../operator/validator-operation/validator-tasks.mdx) on GitHub. The guide includes all of the information you need to configure your Validator node. It also provides guidance on the tasks you must perform after you join the validator set. Specific steps you must take include: @@ -28,15 +28,24 @@ Specific steps you must take include: -## Hardware requirements to run a Validator node +## Hardware requirements to run a Validator node on Mainnet -Suggested minimum hardware specifications to run an IOTA Validator node: +Suggested minimum hardware specifications to run an IOTA Validator node on Mainnet: - CPU: 24 physical cores (or 48 virtual cores) - Memory: 128 GB - Storage: 4 TB NVME - Network: 1 Gbps +## Hardware requirements to run a Validator node on Testnet + +Suggested minimum hardware specifications to run an IOTA Validator node on Testnet: + +- CPU: 8 cores +- Memory: 64 GB +- Storage: 2 TB NVME +- Network: 1 Gbps + ## Validator consensus and voting power The total voting power on IOTA is always 10,000, regardless of the amount staked. Therefore, the quorum threshold is 6,667. There is no limit to the amount of IOTA users can stake with a validator. Each validator has consensus voting power proportional to IOTA in its staking pool, with one exception: the voting power of an individual validator is capped at 1,000 (10% of the total). If a validator accumulates more than 10% of total stake, the validator's voting power remains fixed at 10%, and the remaining voting power is spread across the rest of the validator set. diff --git a/docs/content/references/cli/ceremony.mdx b/docs/content/references/cli/ceremony.mdx index cee2316d766..eb4c2acc734 100644 --- a/docs/content/references/cli/ceremony.mdx +++ b/docs/content/references/cli/ceremony.mdx @@ -12,7 +12,7 @@ that can be shared (for instance, via GitHub) with the validators. Typing `iota genesis-ceremony --help` into your terminal or console displays the following information on available commands. ```shell -Create an Iota Genesis Ceremony with multiple remote validators +Create an IOTA Genesis Ceremony with multiple remote validators Usage: iota genesis-ceremony [OPTIONS] @@ -89,19 +89,19 @@ iota genesis-ceremony add-validator \ ```yaml info: name: validator0 - account-address: 0xae12525173c83e472daf8c30e80ec6e220675c329029fe81dcae9bb3e53d4aef - authority-key: l5SIw1DYpic0kkkKDQm5NuLxWhzICh2WymxnVCutKkIzsaJx8u71qWdvRzN7QoRqEsGONoGpkCu8VbRFp0+prU/lTzeozmJTeou5JmW8JWSIZ1aLrZ41+vKluYoV2tVB - protocol-key: bjoiPMq9KY38ug6fwYKLIz/uPegBrghszVphlEHbX4c= - network-key: lMg+5fuSD/E65lxbk6bqB1QWPuVsxGAUIQWHEmSKJWg= + account-address: "0x3906e94925f3622aaf35a4b7462fa0f22fa6a9c5df160c07e050ca1ff0bf55bb" + authority-key: tNswfm+q76ecEQwe6OkR/lnBOcQnt4dnlQozhMEhQ+4eQ4+JoDX+3J0RMVUUT1P6AMue5TJApqa0a5TguBAvYrDjdJs8NDaGU2aJsb1/HQ7UKCL5IiEnFSLAOO12HszU + protocol-key: E7uErkWEg6ac1MWMHHEYmDJ6mTk0Pd2QNV9H0feXSiI= + network-key: E7uErkWEg6ac1MWMHHEYmDJ6mTk0Pd2QNV9H0feXSiI= gas-price: 1000 commission-rate: 200 network-address: /ip4/127.0.0.1/tcp/38189/http p2p-address: /ip4/127.0.0.1/udp/34523 primary-address: /ip4/127.0.0.1/udp/38603 description: validator0 - image-url: https://www.iota.org/favicon.png - project-url: https://www.iota.org -proof_of_possession: iOnFPnGqbXbQGhI3H4bokzt2FRuWb/VzEWq4/k7xiKIz8JGDJdZvwC+56fqz534f + image-url: "https://www.iota.org/favicon.png" + project-url: "https://www.iota.org" +proof_of_possession: pk+5HoByE1fuHjkDVHOaKxazKnHLEOYf9IoDP9+C5eeG06Ji30Y9lXCHmB/swVdf ``` @@ -120,7 +120,7 @@ iota genesis-ceremony list-validators ```shell Validator Name Account Address -------------- ------------------------------------------------------------------ -validator0 0xae12525173c83e472daf8c30e80ec6e220675c329029fe81dcae9bb3e53d4aef +validator0 0x3906e94925f3622aaf35a4b7462fa0f22fa6a9c5df160c07e050ca1ff0bf55bb validator1 0xba55e3ce221bb7edfbbef4d59b68893f5550b6302a9456b738ad8cf06919be0c ``` @@ -176,7 +176,7 @@ iota genesis-ceremony examine-genesis-checkpoint Each validator must sign the created checkpoint before finalizing the genesis blob. ```shell -iota genesis-ceremony verify-and-sign --key-file validator.key +iota genesis-ceremony verify-and-sign --key-file authority.key ``` ### Finalize the Genesis blob diff --git a/docs/content/references/execution-architecture/adapter.mdx b/docs/content/references/execution-architecture/adapter.mdx index 5a9c24f88ec..22459fd4a05 100644 --- a/docs/content/references/execution-architecture/adapter.mdx +++ b/docs/content/references/execution-architecture/adapter.mdx @@ -2,6 +2,7 @@ title: Adapter description: This document describes the architectural approach and execution flow for the adapter and related components. --- +import ThemedImage from '@theme/ThemedImage'; ## Move Adapter @@ -78,4 +79,11 @@ Also used as a cache that is used after the execution to populate the created/mo ### Flow -![IOTA Adapter Flow](/img/concepts/execution-architecture/iota-adapter.svg) \ No newline at end of file + + diff --git a/docs/content/references/execution-architecture/iota-execution.mdx b/docs/content/references/execution-architecture/iota-execution.mdx index b0544e335ab..24896c30caf 100644 --- a/docs/content/references/execution-architecture/iota-execution.mdx +++ b/docs/content/references/execution-architecture/iota-execution.mdx @@ -3,10 +3,18 @@ title: IOTA Execution Crate description: This document describes the architectural approach for iota execution crate. --- -## IOTA Execution Architecture +import ThemedImage from '@theme/ThemedImage'; + +# IOTA Execution Architecture The IOTA Execution Architecture, depicted in the included architectural diagram, outlines the technical approach for the iota execution crate to have a general view of component interaction. The following diagram is a visual representation of the iota_execution crate with its subcrates ([iota_adapter](adapter.mdx), [iota_move_natives](natives.mdx), iota_verifier). The main purposes of iota execution are executing transactions (including PTBs), gas accounting, and supporting native functions. -![IOTA Execution Architecture](/img/concepts/execution-architecture/iota-execution.svg) \ No newline at end of file + diff --git a/docs/content/references/execution-architecture/natives.mdx b/docs/content/references/execution-architecture/natives.mdx index 0919e420e05..e49c37329bb 100644 --- a/docs/content/references/execution-architecture/natives.mdx +++ b/docs/content/references/execution-architecture/natives.mdx @@ -2,6 +2,7 @@ title: Natives & Object Runtime description: This document describes the object runtime and native functions flow. --- +import ThemedImage from '@theme/ThemedImage'; ## IOTA Move Natives @@ -16,7 +17,14 @@ pub fn all_natives(silent: bool) -> NativeFunctionTable Contains all registered native functions. The resulting NativeFunctionTable object contains information about all the native functions that can be called from a Move contract. -![Native functions](/img/concepts/execution-architecture/native-fns-flow.svg) + + ## Object runtime @@ -29,4 +37,4 @@ It serves as the core interface for interacting, transferring the objects, manag - Child object management etc Also handles information about transaction objects, which are stored in the ObjectRuntimeState as an internal state. -Object store - manages child/dynamic objects(inner store). \ No newline at end of file +Object store - manages child/dynamic objects(inner store). diff --git a/docs/content/references/iota-compared.mdx b/docs/content/references/iota-compared.mdx index bf55cfdd1c7..90de98f1d04 100644 --- a/docs/content/references/iota-compared.mdx +++ b/docs/content/references/iota-compared.mdx @@ -57,9 +57,7 @@ Unlike most existing blockchain systems (and as the reader may have guessed from ## State-of-the-art consensus -Narwhal and Bullshark represent the latest variant of decades of work on multi-proposer, high-throughput consensus algorithms that reaches throughputs more than 130,000 transactions per second on a WAN, with production cryptography, permanent storage, and a scaled-out primary-worker architecture. - -The [Narwhal mempool](https://github.com/iotaledger/iota/tree/develop/narwhal) offers a high-throughput data availability engine and a scaled architecture, splitting the disk I/O and networking requirements across several workers. And Bullshark is a zero-message overhead consensus algorithm, leveraging graph traversals. +[Mysticeti](https://arxiv.org/pdf/2310.14821) represents the latest variant of decades of work on multi-proposer, high-throughput consensus algorithms that reaches throughput more than 400,000 transactions per second on a WAN, with production cryptography and permanent storage. ## Where IOTA excels @@ -126,6 +124,4 @@ IOTA uses the state commitment that arrives upon epoch change. IOTA requires a s ## Conclusion -In summary, IOTA offers many performance and usability gains at the cost of some complexity in less simple use cases. Direct sender transactions excel in IOTA. And complex smart contracts may benefit from shared objects where more than one user can mutate those objects (following smart contract specific rules). In this case, IOTA totally orders all transactions involving shared objects using a consensus protocol. - -IOTA uses a novel peer-reviewed consensus protocol based on [Narwhal and Bullshark](https://github.com/iotaledger/iota/tree/develop/narwhal), which provides a DAG-based mempool and efficient Byzantine Fault Tolerant (BFT) consensus. This is state-of-the-art in terms of both performance and robustness. +In summary, IOTA provides significant performance and usability enhancements. It introduces an innovative fastpath consensus for simple send transactions and utilizes a state-of-the-art consensus protocol that leads the industry with its low latency and high throughput. diff --git a/docs/content/references/iota-glossary.mdx b/docs/content/references/iota-glossary.mdx index 4a73b448ba4..d6b592a54d5 100644 --- a/docs/content/references/iota-glossary.mdx +++ b/docs/content/references/iota-glossary.mdx @@ -85,7 +85,7 @@ IOTA refers to the IOTA blockchain, and the [IOTA open source project](https://g A transaction in IOTA is a change to the blockchain. This may be a _simple transaction_ affecting only single-writer, single-address objects, such as minting an NFT or transferring an NFT or another token. These transactions may bypass the consensus protocol in IOTA. -More _complex transactions_ affecting objects that are shared or owned by multiple addresses, such as asset management and other DeFi use cases, go through the [Narwhal and Bullshark](https://github.com/iotaledger/iota/tree/develop/narwhal) DAG-based mempool and efficient Byzantine Fault Tolerant (BFT) consensus. +More _complex transactions_ affecting objects that are shared or owned by multiple addresses, such as asset management and other DeFi use cases, do go through consensus. ### Transfer diff --git a/docs/content/references/ts-sdk/bcs.mdx b/docs/content/references/ts-sdk/bcs.mdx index 74db26bcf59..67a641f1c4c 100644 --- a/docs/content/references/ts-sdk/bcs.mdx +++ b/docs/content/references/ts-sdk/bcs.mdx @@ -19,7 +19,7 @@ npm i @iota/bcs import { bcs } from '@iota/bcs'; // define UID as a 32-byte array, then add a transform to/from hex strings -const UID = bcs.array(32, bcs.u8()).transform({ +const UID = bcs.fixedArray(32, bcs.u8()).transform({ input: (id: string) => fromHex(id), output: (id) => toHex(id), }); @@ -124,10 +124,10 @@ const nullOption = bcs.option(bcs.string()).serialize(null).toBytes(); // Enum const MyEnum = bcs.enum('MyEnum', { - NoType: null, - Int: bcs.u8(), - String: bcs.string(), - Array: bcs.array(3, bcs.u8()), + NoType: null, + Int: bcs.u8(), + String: bcs.string(), + Array: bcs.array(3, bcs.u8()), }); const noTypeEnum = MyEnum.serialize({ NoType: null }).toBytes(); @@ -137,8 +137,8 @@ const arrayEnum = MyEnum.serialize({ Array: [1, 2, 3] }).toBytes(); // Struct const MyStruct = bcs.struct('MyStruct', { - id: bcs.u8(), - name: bcs.string(), + id: bcs.u8(), + name: bcs.string(), }); const struct = MyStruct.serialize({ id: 1, name: 'name' }).toBytes(); @@ -147,10 +147,15 @@ const struct = MyStruct.serialize({ id: 1, name: 'name' }).toBytes(); const tuple = bcs.tuple([bcs.u8(), bcs.string()]).serialize([1, 'name']).toBytes(); // Map -const map = bcs.map(bcs.u8(), bcs.string()).serialize(.toBytes()[ - [1, 'one'], - [2, 'two'], -]); +const map = bcs + .map(bcs.u8(), bcs.string()) + .serialize( + new Map([ + [1, 'one'], + [2, 'two'], + ]), + ) + .toBytes(); // Parsing data back into original types @@ -191,10 +196,10 @@ import { bcs, BcsType } from '@iota/bcs'; // The T typescript generic is a placeholder for the typescript type of the generic value // The T argument will be the bcs type passed in when creating a concrete instance of the Container type -function Container(T: BcsType) { - return bcs.struct('Container', { - contents: T, - }), +function Container>(T: T) { + return bcs.struct('Container', { + contents: T, + }), } // When serializing, we have to pass the type to use for `T` @@ -205,25 +210,25 @@ const U8Container = Container(bcs.u8()); const bytes = U8Container.serialize({ contents: 100 }).toBytes(); // Using multiple generics -function VecMap(K: BcsType, V: BcsType) { - // You can use the names of the generic params in the type name to - return bcs.struct( - // You can use the names of the generic params to give your type a more useful name - `VecMap<${K.name}, ${V.name}>`, - { - keys: bcs.vector(K), - values: bcs.vector(V), - } - ) +function VecMap, V extends BcsType>(K: K, V: V) { + // You can use the names of the generic params in the type name to + return bcs.struct( + // You can use the names of the generic params to give your type a more useful name + `VecMap<${K.name}, ${V.name}>`, + { + keys: bcs.vector(K), + values: bcs.vector(V), + } + ) } // To serialize VecMap, we can use: VecMap(bcs.string(), bcs.string()) - .serialize({ - keys: ['key1', 'key2', 'key3'], - values: ['value1', 'value2', 'value3'], - }) - .toBytes(); + .serialize({ + keys: ['key1', 'key2', 'key3'], + values: ['value1', 'value2', 'value3'], + }) + .toBytes(); ``` ## Transforms @@ -239,8 +244,8 @@ array. To handle this, you can use the `transform` API to map between the two fo ```ts const Address = bcs.bytes(32).transform({ // To change the input type, you need to provide a type definition for the input - input: (val: string) => fromHEX(val), - output: (val) => toHEX(val), + input: (val: string) => fromHex(val), + output: (val) => toHex(val), }); const serialized = Address.serialize('0x000000...').toBytes(); diff --git a/docs/content/references/ts-sdk/dapp-kit/rpc-hooks.mdx b/docs/content/references/ts-sdk/dapp-kit/rpc-hooks.mdx index 193c3fc7c75..471a09e36eb 100644 --- a/docs/content/references/ts-sdk/dapp-kit/rpc-hooks.mdx +++ b/docs/content/references/ts-sdk/dapp-kit/rpc-hooks.mdx @@ -136,7 +136,7 @@ function MyComponent() {
Signature: {signature}
@@ -71,17 +64,16 @@ const UseSignTransactionBlockExample = withProviders(() => { )} ); -}); +} -render() +render() ``` ## Arguments -- `transactionBlock`: The transaction block to sign. -- `chain`: (optional) The chain identifier the transaction block should be signed for. - -## Result - -- `signature`: The signature of the message, as a Base64-encoded `string`. -- `transactionBlockBytes`: The serialized transaction bytes, as a a Base64-encoded `string`. +- `effects`: The effects of an executed transaction. This can either be the `rawEffects` returned + from the JSON-RPC `executeTransaction` method (returned when showRawEffects is set to true), + or the `effects.bcs` when executing with the GraphQL API. +- `chain`: (optional) The chain identifier the transaction was executed on. +- `account` (optional) the account that signed the transaction, defaults to the currently connected + account diff --git a/docs/content/references/ts-sdk/dapp-kit/wallet-hooks/useSignAndExecuteTransaction.mdx b/docs/content/references/ts-sdk/dapp-kit/wallet-hooks/useSignAndExecuteTransaction.mdx new file mode 100644 index 00000000000..cb914a3d3f1 --- /dev/null +++ b/docs/content/references/ts-sdk/dapp-kit/wallet-hooks/useSignAndExecuteTransaction.mdx @@ -0,0 +1,151 @@ +# `useSignAndExecuteTransaction` + +Use the `useSignAndExecuteTransaction` hook to prompt the user to sign and execute a transaction +with their wallet. + +```ts live noInline +function withProviders( + Component: React.FunctionComponent, + walletProviderProps?: Omit, 'children'>, +) { + // Work around server-side pre-rendering + const queryClient = new QueryClient(); + const networks = { + mainnet: { url: getFullnodeUrl('testnet') }, + }; + + return () => { + const [shouldRender, setShouldRender] = useState(false); + useEffect(() => { + setShouldRender(true); + }, [setShouldRender]); + + if (!shouldRender) { + return null; + } + + return ( + + + + + + + + ); + }; +} + +const UseSignAndExecuteTransactionExample = withProviders(() => { + const { mutate: signAndExecuteTransaction } = useSignAndExecuteTransaction(); + const [digest, setDigest] = useState(''); + const currentAccount = useCurrentAccount(); + + return ( +
+ + {currentAccount && ( + <> +
+ +
+
Digest: {digest}
+ + )} +
+ ); +}); + +render() +``` + +## Return additional data, or execute through GraphQL + +To customize how transactions are executed, and what data is returned when executing a transaction, +you can pass a custom `execute` function. + +```ts +import { + ConnectButton, + useIotaClient, + useCurrentAccount, + useSignAndExecuteTransaction, +} from '@iota/dapp-kit'; +import { useState } from 'react'; + +function MyComponent() { + const client = useIotaClient(); + const { mutate: signAndExecuteTransaction } = useSignAndExecuteTransaction({ + execute: async ({ bytes, signature }) => + await client.executeTransactionBlock({ + transactionBlock: bytes, + signature, + options: { + // Raw effects are required so the effects can be reported back to the wallet + showRawEffects: true, + // Select additional data to return + showObjectChanges: true, + }, + }), + }); + + const [digest, setDigest] = useState(''); + const currentAccount = useCurrentAccount(); + + return ( +
+ + {currentAccount && ( + <> +
+ +
+
Digest: {digest}
+ + )} +
+ ); +} +``` + +## Arguments + +- `transaction`: The transaction to sign and execute. +- `chain`: (optional) The chain identifier the transaction should be signed for. +- `execute`: (optional) A custom function to execute the transaction + +In addition to these options, you can also pass any options that the +[IotaClient.signAndExecuteTransaction](../../api/client/classes/IotaClient.md#signandexecutetransaction) +method accepts. diff --git a/docs/content/references/ts-sdk/dapp-kit/wallet-hooks/useSignAndExecuteTransactionBlock.mdx b/docs/content/references/ts-sdk/dapp-kit/wallet-hooks/useSignAndExecuteTransactionBlock.mdx deleted file mode 100644 index d57407b8607..00000000000 --- a/docs/content/references/ts-sdk/dapp-kit/wallet-hooks/useSignAndExecuteTransactionBlock.mdx +++ /dev/null @@ -1,86 +0,0 @@ -# useSignAndExecuteTransactionBlock - -Use the `useSignAndExecuteTransactionBlock` hook to prompt the user to sign and execute a -transaction block with their wallet. - -```ts live noInline -function withProviders( - Component: React.FunctionComponent, - walletProviderProps?: Omit, 'children'>, -) { - // Work around server-side pre-rendering - const queryClient = new QueryClient(); - const networks = { - testnet: { url: getFullnodeUrl('testnet') }, - }; - - return () => { - const [shouldRender, setShouldRender] = useState(false); - useEffect(() => { - setShouldRender(true); - }, [setShouldRender]); - - if (!shouldRender) { - return null; - } - - return ( - - - - - - - - ); - }; -} - -const UseSignAndExecuteTransactionBlockExample = withProviders(() => { - const { mutate: signAndExecuteTransactionBlock } = useSignAndExecuteTransactionBlock(); - const [digest, setDigest] = useState(''); - const currentAccount = useCurrentAccount(); - - return ( -
- - {currentAccount && ( - <> -
- -
-
Digest: {digest}
- - )} -
- ); -}); - -render() -``` - -## Arguments - -- `transactionBlock`: The transaction block to sign and execute. -- `chain`: (optional) The chain identifier the transaction block should be signed for. - -In addition to these options, you can also pass any options that the -[IotaClient.signAndExecuteTransactionBlock](http://localhost:3000/typescript/iota-client#signandexecutetransactionblock) -method accepts. diff --git a/docs/content/references/ts-sdk/dapp-kit/wallet-hooks/useSignTransaction.mdx b/docs/content/references/ts-sdk/dapp-kit/wallet-hooks/useSignTransaction.mdx new file mode 100644 index 00000000000..c4909a02619 --- /dev/null +++ b/docs/content/references/ts-sdk/dapp-kit/wallet-hooks/useSignTransaction.mdx @@ -0,0 +1,95 @@ +# `useSignTransaction` + +Use the `useSignTransaction` hook to prompt the user to sign a transaction with their wallet. + +```ts live noInline +function withProviders( + Component: React.FunctionComponent, + walletProviderProps?: Omit, 'children'>, +) { + // Work around server-side pre-rendering + const queryClient = new QueryClient(); + const networks = { + mainnet: { url: getFullnodeUrl('mainnet') }, + }; + + return () => { + const [shouldRender, setShouldRender] = useState(false); + useEffect(() => { + setShouldRender(true); + }, [setShouldRender]); + + if (!shouldRender) { + return null; + } + + return ( + + + + + + + + ); + }; +} + +function UseSignTransactionExample() { + const { mutateAsync: signTransaction } = useSignTransaction(); + const [signature, setSignature] = useState(''); + const client = useIotaClient(); + const currentAccount = useCurrentAccount(); + + return ( +
+ + {currentAccount && ( + <> +
+ +
+
Signature: {signature}
+ + )} +
+ ); +} +render() +``` + + +## Arguments + +- `transaction`: The transaction to sign. +- `chain`: (optional) The chain identifier the transaction should be signed for. + +## Returns + +- `signature`: The signature of the message, as a Base64-encoded `string`. +- `bytes`: The serialized transaction bytes, as a a Base64-encoded `string`. +- `reportTransactionEffects`: A function to report the transaction effects to the wallet. This + callback should always be invoked after executing the signed transaction. This function accepts + the `rawEffects` returned from JSON-RPC `executeTransactionBlock` method, or the `effects.bcs` + when executing with the GraphQL API. diff --git a/docs/content/references/ts-sdk/dapp-kit/wallet-provider.mdx b/docs/content/references/ts-sdk/dapp-kit/wallet-provider.mdx index 3222ebfe68b..86a7526b341 100644 --- a/docs/content/references/ts-sdk/dapp-kit/wallet-provider.mdx +++ b/docs/content/references/ts-sdk/dapp-kit/wallet-provider.mdx @@ -23,9 +23,9 @@ to other dApp Kit hooks and components. All props are optional. - `preferredWallets` - A list of wallets that are sorted to the top of the wallet list. -- `requiredFeatures` - A list of features that are required for the dApp to function. This filters - the list of wallets presented to users when selecting a wallet to connect from, ensuring that - only wallets that meet the dApp requirements can connect. +- `walletFilter` - A filter function that accepts a wallet and returns a boolean. This filters the + list of wallets presented to users when selecting a wallet to connect from, ensuring that only + wallets that meet the dApp requirements can connect. - `enableUnsafeBurner` - Enables the development-only unsafe burner wallet, useful for testing. - `autoConnect` - Enables automatically reconnecting to the most recently used wallet account upon mounting. diff --git a/docs/content/references/ts-sdk/kiosk/advanced-examples.mdx b/docs/content/references/ts-sdk/kiosk/advanced-examples.mdx index 329e5816c13..181ec1ed41d 100644 --- a/docs/content/references/ts-sdk/kiosk/advanced-examples.mdx +++ b/docs/content/references/ts-sdk/kiosk/advanced-examples.mdx @@ -29,14 +29,14 @@ async function mintMyCoin(address: string) { // Choose the first kiosk for simplicity. We could have extra logic here (e.g. let the user choose, pick a personal one, etc). const cap = kioskOwnerCaps[0]; - const txb = new TransactionBlock(); - const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); + const tx = new Transaction(); + const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); // We're mixing the logic here. If the cap is undefined, we create a new kiosk. if (!cap) kioskTx.create(); // Let's mint a MyCoin here into the kiosk (either a new or an existing one). - txb.moveCall({ + tx.moveCall({ target: `${packageId}::my_module::mint_app::mint`, arguments: [kioskTx.getKiosk(), kioskTx.getKioskCap()], typeArguments: [myType], @@ -47,8 +47,8 @@ async function mintMyCoin(address: string) { kioskTx.finalize(); - // sign and execute transaction block. - await signAndExecuteTransactionBlock({ tx: txb }); + // sign and execute transaction. + await signAndExecuteTransaction({ tx }); } ``` @@ -59,8 +59,8 @@ This example demonstrates how to use the Kiosk SDK to mix two `MyCoins`. ```typescript // We're mixing two coins. async function mixMyCoins(firstCoinObjectId: string, secondCoinObjectId: string, cap: KioskOwnerCap) { - const txb = new TransactionBlock(); - const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); + const tx = new Transaction(); + const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); // borrow both coins. const [coin1, promise1] = kioskTx.borrow({ @@ -74,7 +74,7 @@ async function mixMyCoins(firstCoinObjectId: string, secondCoinObjectId: string, }); // Let's call the mix function. We skip any payment related stuff here. - txb.moveCall({ + tx.moveCall({ target: `${packageId}::mix_app::mix`, arguments: [ coin1, @@ -96,7 +96,7 @@ async function mixMyCoins(firstCoinObjectId: string, secondCoinObjectId: string, promise: promise2 }).finalize(); - // sign and execute transaction block. - await signAndExecuteTransactionBlock({ tx: txb }); + // sign and execute transaction. + await signAndExecuteTransaction({ tx }); } ``` diff --git a/docs/content/references/ts-sdk/kiosk/from-v1.mdx b/docs/content/references/ts-sdk/kiosk/from-v1.mdx deleted file mode 100644 index 1ca2a06d3cf..00000000000 --- a/docs/content/references/ts-sdk/kiosk/from-v1.mdx +++ /dev/null @@ -1,312 +0,0 @@ -# Migrating from Kiosk SDK V1 - -The original version of Kiosk SDK provided basic experimentation with the Kiosk API. The new version -of the SDK (0.7+) provides a more robust experience for building kiosk/transfer policy transactions. - -The new SDK offers a builder-pattern API, which provides better autocomplete capabilities, and also -makes code more readable. - -While a one-to-one mapping between the old and new SDK is not possible, the following examples -should help you get started. - -> An important benefit of the new SDK is that it works seamlessly with Personal Kiosk, which was not -> the case with the previous SDK (you would always have to wrap the transaction with `borrow_cap` / -> `return_cap` calls depending on whether the kiosk is personal or not). - -## Placing an item to kiosk and listing it for sale - -The following example is from the original Kiosk SDK V1 documentation. - -### Before - -```typescript -import { placeAndList } from '@iota/kiosk'; -import { TransactionBlock } from '@iota/iota-sdk/transactions'; - -const placeAndListToKiosk = async () => { - const kiosk = 'SomeKioskId'; - const kioskCap = 'KioskCapObjectId'; - const itemType = '0xItemAddr::some:ItemType'; - const item = 'SomeItemId'; - const price = '100000'; - - const tx = new TransactionBlock(); - - placeAndList(tx, itemType, kiosk, kioskCap, item, price); - - // ... continue to sign and execute the transaction - // ... -}; -``` - -### After - -Using the new SDK, you can build the same transaction as follows: - -```typescript -/// You need to do this only once and re-use it in the application. -const kioskClient = new KioskClient({ - client: new IotaClient({ - url: getFullnodeUrl('testnet'), - }), - network: Network.TESTNET, -}); - -const placeAndListToKiosk = async () => { - // Assume you have saved the user's preferred kiosk Cap somewhere in your app's state. - const { kioskOwnerCaps } = await kioskClient.getOwnedKiosks({ address: '0xSomeAddress' }); - - const txb = new TransactionBlock(); - - // Assume you use the first owned kiosk. - new KioskTransaction({ transactionBlock: txb, kioskClient, cap: kioskOwnerCaps[0] }) - .placeAndList({ - itemType: '0xItemAddr::some:ItemType', - item: 'SomeItemId', - price: '100000', - }) - .finalize(); - - // ... continue to sign and execute the transaction -}; -``` - -## Create a new kiosk - -The following example is from the original Kiosk SDK V1 documentation. - -### Before - -```typescript -import { createKioskAndShare } from '@iota/kiosk'; -import { TransactionBlock } from '@iota/iota-sdk/transactions'; - -const createKiosk = async () => { - const accountAddress = '0xSomeIotaAddress'; - - const tx = new TransactionBlock(); - const kiosk_cap = createKioskAndShare(tx); - - tx.transferObjects([kiosk_cap], accountAddress); - - // ... continue to sign and execute the transaction - // ... -}; -``` - -### After - -Using the new SDK, you can build the same transaction as follows: - -```typescript -/// You need to do this only once and re-use it in the application. -const kioskClient = new KioskClient({ - client: new IotaClient({ - url: getFullnodeUrl('testnet'), - }), - network: Network.TESTNET, -}); - -const placeAndListToKiosk = async () => { - const txb = new TransactionBlock(); - - const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient }); - - kioskTx.shareAndTransferCap('0xSomeIotaAddress').finalize(); - - // ... continue to sign and execute the transaction -}; -``` - -## Purchasing an item and resolving rules - -The following example is from the original Kiosk SDK V1 documentation. - -### Before - -```typescript -import { queryTransferPolicy, purchaseAndResolvePolicies, place, testnetEnvironment } from '@iota/kiosk'; -import { IotaClient } from '@iota/iota-sdk/client'; - -const client = new IotaClient( - url: 'https://api.testnet.iota.cafe:443', -); - -// The kiosk we're purchasing from. -const kioskId = `0xSomeKioskAddress`; -// A sample item retrieved from `fetchKiosk` function (or hard-coded). -const item = { - isLocked: false, - objectId: "0xb892d61a9992a10c9453efcdbd14ca9720d7dc1000a2048224209c9e544ed223" - type: "0x52852c4ba80040395b259c641e70b702426a58990ff73cecf5afd31954429090::test::TestItem", - listing: { - isExclusive: false, - listingId: "0x368b512ff2514dbea814f26ec9a3d41198c00e8ed778099961e9ed22a9f0032b", - price: "20000000000" // in NANOS - } -} -const ownedKiosk = `0xMyKioskAddress`; -const ownedKioskCap = `0xMyKioskOwnerCap`; - -const purchaseItem = async (item, kioskId) => { - - // Fetch the policy of the item (could be an array, if there's more than one transfer policy) - const policies = await queryTransferPolicy(client, item.type); - // Selecting the first one for simplicity. - const policyId = policy[0]?.id; - // Initialize tx block. - const tx = new TransactionBlock(); - - // Both are required if you there is a `kiosk_lock_rule`. - // Optional otherwise. Function throws an error if there's a kiosk_lock_rule and these are missing. - const extraParams = { - ownedKiosk, - ownedKioskCap - } - // Define the environment. - // To use a custom package address for rules, you could call: - // const environment = customEnvironment(''); - const environment = testnetEnvironment; - - // Extra params. Optional, but required if the user tries to resolve a `kiosk_lock_rule`. - // Purchases the item. Supports `kiosk_lock_rule`, `royalty_rule` (accepts combination too). - const result = purchaseAndResolvePolicies(tx, item.type, item.listing.price, kioskId, item.objectId, policy[0], environment, extraParams); - - // result = {item: , canTransfer: true/false // depending on whether there was a kiosk lock rule } - // If the item didn't have a kiosk_lock_rule, you need to do something with it. - // For example, place it in your own kiosk. (demonstrated below) - if(result.canTransfer) place(tx, item.type, ownedKiosk, ownedKioskCap , result.item); - - // ...finally, sign PTB & execute it. - -}; -``` - -### After - -Using the new SDK, you can build the same transaction as follows: - -> This works with both personal and non-personal kiosks. - -```typescript -/// You need to do this only once and re-use it in the application. -const kioskClient = new KioskClient({ - client: new IotaClient({ - url: getFullnodeUrl('testnet'), - }), - network: Network.TESTNET, -}); - -// An Item as returned from `kioskClient.getKiosk()` call. -const item = { - isLocked: false, - objectId: "0xb892d61a9992a10c9453efcdbd14ca9720d7dc1000a2048224209c9e544ed223" - type: "0x52852c4ba80040395b259c641e70b702426a58990ff73cecf5afd31954429090::test::TestItem", - kioskId: '0xSomeKioskAddress', - listing: { - isExclusive: false, - listingId: "0x368b512ff2514dbea814f26ec9a3d41198c00e8ed778099961e9ed22a9f0032b", - price: "20000000000" // in NANOS - } -} - -const purchase = async () => { - // Assume you have saved the user's preferred kiosk Cap somewhere in your app's state. - // You wouldn't need to query this for every purchase. - const { kioskOwnerCaps } = await kioskClient.getOwnedKiosks({ address: '0xSomeAddress' }); - - const txb = new TransactionBlock(); - - const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap: kioskOwnerCaps[0] }); - - // Purchase the item and resolve the rules. - await kioskTx.purchaseAndResolve({ - itemType: item.type, - itemId: item.objectId, - price: item.listing.price, - sellerKiosk: item.kioskId, - }); - - kioskTx.finalize(); -}; -``` - -## Attach rules to transfer policy - -The following example was taken from the original Kiosk SDK V1 documentation. - -### Before - -```typescript -import { - attachKioskLockRule, - attachRoyaltyRule, - createTransferPolicy, - percentageToBasisPoints, - testnetEnvironment, -} from '@iota/kiosk'; -import { TransactionBlock } from '@iota/iota-sdk/transactions'; - -// Attaches a royalty rule of 1% or 0.1 IOTA (whichever is bigger) -// as well as a kiosk lock, making the objects trade-able only from/to a kiosk. -const attachStrongRoyalties = async () => { - const type = 'SomePackageId::type::MyType'; // the Type for which we're attaching rules. - const policyId = 'policyObjectId'; // the transfer Policy ID that was created for that Type. - const transferPolicyCap = 'transferPolicyCapId'; // the transferPolicyCap for that policy. - - // Royalties configuration. - const percentage = 2.55; // 2.55% - const minAmount = 100_000_000; // 0.1 IOTA. - - // The environment on which we're referecing the rules package. - // Use `mainnetEnvironment` for mainnet. - const environment = testnetEnvironment; - - const tx = new TransactionBlock(); - - attachKioskLockRule(tx, type, policyId, policyCapId, environment); - attachRoyaltyRule( - tx, - type, - policyId, - policyCapId, - percentageToBasisPoints(percentage), - minAmount, - environment, - ); - - // ... continue to sign and execute the transaction - // ... -}; -``` - -### After - -On the new SDK, the same transaction can be built as follows: - -```typescript -/// You need to do this only once and re-use it in the application. -const kioskClient = new KioskClient({ - client: new IotaClient({ - url: getFullnodeUrl('testnet'), - }), - network: Network.TESTNET, -}); - -const adjustPolicy = async () => { - const txb = new TransactionBlock(); - - // You could have more than one cap, since you can create more than one transfer policy. - const policyCaps = await kioskClient.getOwnedTransferPoliciesByType({ - type: `SomePackageId::type::MyType`, - address: '0xOwnerAddress', - }); - - new TransferPolicyTransaction({ transactionBlock: txb, kioskClient, cap: policyCaps[0] }) - .addRoyaltyRule(percentageToBasisPoints(2.55), 100_000_000) - .addLockRule(); - - // ... continue to sign and execute the transaction - // ... -}; -``` diff --git a/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/examples.mdx b/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/examples.mdx index 1258a92d336..40c0b1442b3 100644 --- a/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/examples.mdx +++ b/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/examples.mdx @@ -8,7 +8,7 @@ For every scenario using Kiosk in dApps, the user who has connected their wallet one kiosk already or you must create it for them. The SDK supports the scenario of `silently` creating the kiosk, as part of our Programmable -Transaction Blocks. +Transaction. Assume that the mint function of the contract is: @@ -33,14 +33,14 @@ const getCap = async () => { // The mint function could be like the following. const mint = async () => { - const txb = new TransactionBlock(); - const kioskTx = new KioskTransaction({ kioskClient, transactionBlock: txb, cap: await getCap() }}); + const tx = new Transaction(); + const kioskTx = new KioskTransaction({ kioskClient, transaction: tx, cap: await getCap() }}); // Assume it costs one IOTA - let coin = txb.splitCoins(txb.gas, [1_000_000_000]); + let coin = tx.splitCoins(txb.gas, [1_000_000_000]); // A function that mints directly into the kiosk. - txb.moveCall({ + tx.moveCall({ target: '0xMyGame::hero::mint', arguments: [ coin, // the payment @@ -51,8 +51,8 @@ const mint = async () => { kioskTx.finalize(); - // Sign and execute transaction block. - await signAndExecuteTransactionBlock({ tx: txb }); + // Sign and execute transaction. + await signAndExecuteTransaction({ tx }); } ``` @@ -64,17 +64,17 @@ const kioskClient = new KioskClient({...}); // Our mint function. const mint = async () => { - const txb = new TransactionBlock(); - const kioskTx = new KioskTransaction({ kioskClient, transactionBlock: txb }}); + const tx = new Transaction(); + const kioskTx = new KioskTransaction({ kioskClient, transaction: tx }}); // Creates a kiosk. kioskTx.create(); // We'll assume it costs 1 IOTA - let coin = txb.splitCoins(txb.gas, [1_000_000_000]); + let coin = tx.splitCoins(tx.gas, [1_000_000_000]); // A function that mints directly into the kiosk. - txb.moveCall({ + tx.moveCall({ target: '0xMyGame::hero::mint', arguments: [ coin, // the payment @@ -86,8 +86,8 @@ const mint = async () => { kioskTx.shareAndTransferCap('0xAddressToTransferCapTo'); kioskTx.finalize(); - // Sign and execute transaction block. - await signAndExecuteTransactionBlock({ tx: txb }); + // Sign and execute transaction. + await signAndExecuteTransaction({ tx }); } ``` @@ -96,19 +96,19 @@ const mint = async () => { ```typescript // A sample function that borrows an item from kiosk and levels it up. const levelUp = async (object) => { - const txb = new TransactionBlock(); + const tx = new Transaction(); - new KioskTransaction({ kioskClient, transactionBlock: txb, cap }) + new KioskTransaction({ kioskClient, transaction: tx, cap }) .borrowTx(object, (item) => { - txb.moveCall({ + tx.moveCall({ target: '0xMyGame::hero::level_up', arguments: [item], }); }) .finalize(); - // Sign and execute transaction block. - await signAndExecuteTransactionBlock({ tx: txb }); + // Sign and execute transaction. + await signAndExecuteTransaction({ tx }); }; levelUp({ diff --git a/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/kiosk-transaction.mdx b/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/kiosk-transaction.mdx index d95ac9a7a42..442f6c8eaa5 100644 --- a/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/kiosk-transaction.mdx +++ b/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/kiosk-transaction.mdx @@ -1,7 +1,7 @@ # `KioskTransaction` `KioskTransaction` is the client to build transactions that involve Kiosk. It's used similar to -`TransactionBlock`, and helps in building a transaction. +`Transaction`, and helps in building a transaction. You need to instantiate it once in every Programmable Transaction Block (PTB) that you're building. @@ -20,8 +20,8 @@ If you have already retrieved a kiosk from `kioskClient.getOwnedKiosks()`, you c const kioskClient = new KioskClient({...}); const { kioskOwnerCaps } = await kioskClient.getOwnedKiosks({ address: '0xMyAddress'}); -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap: kioskOwnerCaps[0] }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap: kioskOwnerCaps[0] }); // Now you can do whatever you want with kioskTx. // For example, you could withdraw the profits from the kiosk. @@ -42,8 +42,8 @@ kioskTx // Always called as our last kioskTx interaction. kioskTx.finalize(); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({tx: txb}); +// Sign and execute transaction. +await signAndExecuteTransaction({tx}); ``` ## Creating a new kiosk @@ -55,8 +55,8 @@ use of the newly created kiosk to execute some functionality in the same PTB. // Initialized somewhere in the app. const kioskClient = new KioskClient({...}); -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient }); // Calls the creation function. kioskTx.create(); @@ -74,8 +74,8 @@ kioskTx.shareAndTransferCap('0xMyAddress'); // Always called as our last kioskTx interaction. kioskTx.finalize(); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({tx: txb}); +// Sign and execute transaction. +await signAndExecuteTransaction({tx}); ``` ## Creating a new personal kiosk @@ -86,8 +86,8 @@ await signAndExecuteTransactionBlock({tx: txb}); // Initialized somewhere in the app. const kioskClient = new KioskClient({...}); -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient }); // An example that creates a personal kiosk, uses it to place an item, and shares it. // The `PersonalKioskCap` is automatically transferred to the sender when calling `.finalize()`. @@ -100,6 +100,6 @@ kioskTx }) .finalize(); // finalize is always our last call. -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({tx: txb}); +// Sign and execute transaction. +await signAndExecuteTransaction({tx}); ``` diff --git a/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/managing.mdx b/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/managing.mdx index a1b8f923fdd..594c4f53348 100644 --- a/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/managing.mdx +++ b/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/managing.mdx @@ -2,7 +2,7 @@ `KioskClient` helps in managing a kiosk. -You need to follow the steps explained in [Kiosk Transaction](./kiosk-transaction.mdx) to +You need to follow the steps explained in the [Kiosk Transaction section](kiosk-transaction.mdx) to create a `KioskTransaction`. ## Available functions @@ -17,8 +17,8 @@ const item = '0xHeroAddress'; const itemType = '0x..::hero::Hero'; /// Assume `kioskClient` and `cap` are supplied to the function as explained in the previous section. -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); // Take item from kiosk. const item = kioskTx.take({ @@ -27,13 +27,13 @@ const item = kioskTx.take({ }); // Do something with `item`, like transfer it to someone else. -txb.transferObjects([item], 'address_to_transfer_the_object'); +tx.transferObjects([item], 'address_to_transfer_the_object'); // Finalize the kiosk Tx. kioskTx.finalize(); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({ tx: txb }); +// Sign and execute transaction. +await signAndExecuteTransaction({ tx }); ``` ### transfer @@ -45,8 +45,8 @@ const item = '0xHeroAddress'; const itemType = '0x..::hero::Hero'; /// Assume `kioskClient` and `cap` are supplied to the function as explained in the previous section. -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); // Take item from kiosk. kioskTx @@ -57,8 +57,8 @@ kioskTx }) .finalize(); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({ tx: txb }); +// Sign and execute transaction. +await signAndExecuteTransaction({ tx }); ``` ### place @@ -70,8 +70,8 @@ const item = '0xHeroAddress'; const itemType = '0x..::hero::Hero'; /// Assume `kioskClient` and `cap` are supplied to the function as explained in the previous section. -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); kioskTx .place({ @@ -80,8 +80,8 @@ kioskTx }) .finalize(); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({ tx: txb }); +// Sign and execute transaction. +await signAndExecuteTransaction({ tx }); ``` ### list @@ -93,8 +93,8 @@ const itemId = '0xHeroAddress'; const itemType = '0x..::hero::Hero'; // Assume `kioskClient` and `cap` are supplied to the function as explained in the previous section. -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); kioskTx .list({ @@ -104,8 +104,8 @@ kioskTx }) .finalize(); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({ tx: txb }); +// Sign and execute transaction. +await signAndExecuteTransaction({ tx }); ``` ### placeAndList @@ -118,8 +118,8 @@ const item = '0xHeroAddress'; const itemType = '0x..::hero::Hero'; // Assume `kioskClient` and `cap` are supplied to the function as explained in the previous section. -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); kioskTx .placeAndList({ @@ -129,8 +129,8 @@ kioskTx }) .finalize(); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({ tx: txb }); +// Sign and execute transaction. +await signAndExecuteTransaction({ tx }); ``` ### delist @@ -142,8 +142,8 @@ const itemId = '0xHeroAddress'; const itemType = '0x..::hero::Hero'; /// assume `kioskClient` and `cap` are supplied to the function as explained in the previous section. -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); kioskTx .delist({ @@ -152,8 +152,8 @@ kioskTx }) .finalize(); -// sign and execute transaction block. -await signAndExecuteTransactionBlock({ tx: txb }); +// sign and execute transaction. +await signAndExecuteTransaction({ tx }); ``` ### withdraw @@ -164,8 +164,8 @@ Withdraw (all or specific amount) from a kiosk. ```typescript // Assume `kioskClient` and `cap` are supplied to the function as explained in the previous section. -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); kioskTx .withdraw({ @@ -174,8 +174,8 @@ kioskTx }) .finalize(); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({ tx: txb }); +// Sign and execute transaction. +await signAndExecuteTransaction({ tx }); ``` ### borrowTx (callback) @@ -188,8 +188,8 @@ const itemId = '0xHeroAddress'; const itemType = '0x..::hero::Hero'; /// assume `kioskClient` and `cap` are supplied to the function as explained in the previous section. -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); kioskTx .borrowTx( @@ -198,7 +198,7 @@ kioskTx itemType, }, (item) => { - txb.moveCall({ + tx.moveCall({ target: '0xMyGame::hero::level_up', arguments: [item], }); @@ -206,8 +206,8 @@ kioskTx ) .finalize(); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({ tx: txb }); +// Sign and execute transaction. +await signAndExecuteTransaction({ tx }); ``` ### borrow / return @@ -221,15 +221,15 @@ const itemId = '0xHeroAddress'; const itemType = '0x..::hero::Hero'; // Assume `kioskClient` and `cap` are supplied to the function as explained in the previous section. -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); const [item, promise] = kioskTx.borrow({ itemId, itemType, }); -txb.moveCall({ +tx.moveCall({ target: '0xMyGame::hero::level_up', arguments: [item], }); @@ -242,6 +242,6 @@ kioskClient }) .finalize(); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({ tx: txb }); +// Sign and execute transaction. +await signAndExecuteTransaction({ tx }); ``` diff --git a/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/purchasing.mdx b/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/purchasing.mdx index 46c1c8b8536..0e2492241ce 100644 --- a/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/purchasing.mdx +++ b/docs/content/references/ts-sdk/kiosk/kiosk-client/kiosk-transaction/purchasing.mdx @@ -21,8 +21,8 @@ const item = { }; // Assume `kioskClient` and `cap` are supplied to the function as explained in the previous section. -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); await kioskTx.purchaseAndResolve({ itemType: item.itemType, @@ -33,8 +33,8 @@ await kioskTx.purchaseAndResolve({ kioskTx.finalize(); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({ tx: txb }); +// Sign and execute transaction. +await signAndExecuteTransaction({ tx }); ``` > The function queries for a TransferPolicy for that item, and if a policy is found, it @@ -49,21 +49,21 @@ You can use the `purchaseAndResolve` function to support a custom rule. ```typescript const kioskClient = new KioskClient({...}); const myCustomRule = { - rule: `0xMyRuleAddress::game_rule::Rule`, - packageId: `0xMyRuleAddress`, + rule: `0xMyRuleAddress::game_rule::Rule`, + packageId: `0xMyRuleAddress`, // The resolving function. This is called when calling the `purchaseAndResolve`. - resolveRuleFunction: (params: RuleResolvingParams) => { + resolveRuleFunction: (params: RuleResolvingParams) => { // By knowing the params we have here, we can extract the variables we need to resolve this rule. - const { transactionBlock, itemType, packageId, extraArgs } = params; + const { transaction, itemType, packageId, extraArgs } = params; const { gamePass } = extraArgs; if(!gamePass) throw new Error("GamePass not supplied"); // Calls the game's rule prove function, which could, for example // allow rules to resolve only if the holder has a gamePass object. - transactionBlock.moveCall({ + transaction.moveCall({ target: `${packageId}::game_rule::prove_pass`, typeArguments: [itemType], - arguments: [transferRequest, transactionBlock.object(gamePass)], + arguments: [transferRequest, transaction.object(gamePass)], }); }, }; @@ -71,29 +71,29 @@ const myCustomRule = { kioskClient.addRuleResolver(myCustomRule); // Assume `cap` is supplied to the function as explained in the introduction section. -const txb = new TransactionBlock(); -const kioskTx = new KioskTransaction({ transactionBlock: txb, kioskClient, cap }); +const tx = new Transaction(); +const kioskTx = new KioskTransaction({ transaction: tx, kioskClient, cap }); await kioskTx.purchaseAndResolve({ - itemType: item.itemType, - itemId: item.itemId, - price: item.price, - sellerKiosk: item.sellerKiosk, - extraArgs: { - gamePass: '0xMyGamePassObjectId' - } + itemType: item.itemType, + itemId: item.itemId, + price: item.price, + sellerKiosk: item.sellerKiosk, + extraArgs: { + gamePass: '0xMyGamePassObjectId' + } }); kioskTx.finalize(); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({ tx: txb }); +// Sign and execute transaction. +await signAndExecuteTransaction({ tx }); ``` ```typescript // For reference, here's the RuleResolvingParams contents. type RuleResolvingParams = { - transactionBlock: TransactionBlock; + transaction: Transaction; itemType: string; itemId: string; price: string; diff --git a/docs/content/references/ts-sdk/kiosk/kiosk-client/transfer-policy-transaction/introduction.mdx b/docs/content/references/ts-sdk/kiosk/kiosk-client/transfer-policy-transaction/introduction.mdx index 0beb747a768..75059fd8552 100644 --- a/docs/content/references/ts-sdk/kiosk/kiosk-client/transfer-policy-transaction/introduction.mdx +++ b/docs/content/references/ts-sdk/kiosk/kiosk-client/transfer-policy-transaction/introduction.mdx @@ -24,9 +24,9 @@ const heroPolicyCaps = await kioskClient.getOwnedTransferPoliciesByType({ address: '0xConnectedAddress', }); -const txb = new TransactionBlock(); +const tx = new Transaction(); // You can choose to use any of the caps you have. For this example, use the first one. -const tpTx = new TransferPolicyTransaction({ kioskClient, transactionBlock: txb, cap: heroPolicyCaps[0] }); +const tpTx = new TransferPolicyTransaction({ kioskClient, transaction: tx, cap: heroPolicyCaps[0] }); // A demonstration of using all the available rule add/remove functions. // You can chain these commands. @@ -40,8 +40,8 @@ tpTx // .removeRoyaltyRule() // .removePersonalKioskRule() -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({tx: txb}); +// Sign and execute transaction. +await signAndExecuteTransaction({tx}); ``` ## Creating a new transfer policy @@ -51,9 +51,9 @@ in the same PTB. ```typescript const publisher = '0xPackagePublisherObject'; -const txb = new TransactionBlock(); +const tx = new Transaction(); -const tpTx = new TransferPolicyTransaction({ kioskClient, transactionBlock: txb }); +const tpTx = new TransferPolicyTransaction({ kioskClient, transaction: tx }); // This is an async call, as the SDK protects from accidentally creating // a second transfer policy. @@ -70,6 +70,6 @@ tpTx.addLockRule() // Transfers the `TransferPolicyCap` to the user and shares the transfer policy. .shareAndTransferCap('address_to_transfer_cap_to'); -// Sign and execute transaction block. -await signAndExecuteTransactionBlock({ tx: txb }); +// Sign and execute transaction. +await signAndExecuteTransaction({ tx }); ``` diff --git a/docs/content/references/ts-sdk/typescript/cryptography/keypairs.mdx b/docs/content/references/ts-sdk/typescript/cryptography/keypairs.mdx index 77b6cdcb42d..03ef7636b9e 100644 --- a/docs/content/references/ts-sdk/typescript/cryptography/keypairs.mdx +++ b/docs/content/references/ts-sdk/typescript/cryptography/keypairs.mdx @@ -169,6 +169,21 @@ const { schema, secretKey } = decodeIotaPrivateKey(encoded); const keypair = Ed25519Keypair.fromSecretKey(secretKey); ``` +If you know your keypair schema, you can use the `fromSecretKey` method of the appropriate keypair +to directly derive the keypair from the secret key. + +```typescript +const secretKey = 'iotaprivkey1qzse89atw7d3zum8ujep76d2cxmgduyuast0y9fu23xcl0mpafgkktllhyc'; + +const keypair = Ed25519Keypair.fromSecretKey(secretKey); +``` + +You can also export a keypair to a Bech32 encoded secret key using the `getSecretKey` method. + +```typescript +const secretKey = keypair.getSecretKey(); +``` + ## Deriving a `Keypair` from a hex encoded secret key If you have an existing secret key formatted as a hex encoded string, you can derive a `Keypair` by diff --git a/docs/content/references/ts-sdk/typescript/executors.mdx b/docs/content/references/ts-sdk/typescript/executors.mdx new file mode 100644 index 00000000000..4e73a441b79 --- /dev/null +++ b/docs/content/references/ts-sdk/typescript/executors.mdx @@ -0,0 +1,144 @@ +# Transaction Executors + +The Typescript SDK ships 2 Transaction executor classes that simplify the processes of efficiently +executing multiple transactions signed by the same address. These executors help manage object +versions and gas coins which significantly reduces the number of requests made to RPC nodes, and for +many cases avoids the need to wait for the RPC nodes to index previously executed transactions. + +## `SerialTransactionExecutor` + +The `SerialTransactionExecutor` is designed for use in wallet implementations, and dapps where the +objects owned by the address executing transactions are unlikely to be changed by transactions not +executed through the executor. + +To fund transactions, the `SerialTransactionExecutor` will select all of the senders IOTA coins for +the first transaction, which will result in a single coin that will then be used as the gas payment +on all subsequent transactions. This allows executing multiple transactions, without needing to +re-query for gas coins, or wait for the RPC node to index the previous transactions. + +To further improve execution efficiency, the `SerialTransactionExecutor` caches the object versions +of every object used or created by a transaction. This will significantly speed up the execution +when multiple transactions use the same objects. + +`SerialTransactionExecutor` maintains an internal queue, so you don't need to wait for previous +transactions to finish before sending the next one. + +`SerialTransactionExecutor` can be configured with a number of options: + +- `client`: An instance of `IotaClient` used to execute transactions. +- `signer`: The signer/keypair used for signed transactions. +- `defaultBudget`: The default budget for transactions, which will be used if the transaction does + not specify a budget (default `50_000_000n`), + +```ts +import { getFullnodeUrl, IotaClient } from '@iota/iota-sdk/client'; +import { SerialTransactionExecutor } from '@iota/iota-sdk/transactions'; + +const client = new IotaClient({ url: getFullnodeUrl('devnet') }); + +const executor = new SerialTransactionExecutor({ + client, + signer: yourKeyPair, +}); + +const tx1 = new Transaction(); +const [coin1] = tx1.splitCoins(tx1.gas, [1]); +tx1.transferObjects([coin1], address1); +const tx2 = new Transaction(); +const [coin2] = tx2.splitCoins(tx2.gas, [1]); +tx2.transferObjects([coin2], address2); + +const [{ digest: digest1 }, { digest: digest2 }] = await Promise.all([ + executor.executeTransaction(tx1), + executor.executeTransaction(tx2), +]); +``` + +## `ParallelTransactionExecutor` + +:::warning + +`ParallelTransactionExecutor` is experimental and may change rapidly as it is being developed. + +::: + +The `ParallelTransactionExecutor` class works similarly to the `SerialTransactionExecutor`, but +allows for parallel execution of transactions. To make this work, the `ParallelTransactionExecutor` +will maintain a pool of gas coins, and automatically execute additional transactions to refill the +gas pool as needed. + +:::warning + +Using IotaClient or wallets to execute additional transactions while `ParallelTransactionExecutor` +is in use may consume/combine gas coins in the gasPool, causing transactions to fail. This may +also result in the coins becoming locked for the remainder of the current epoch, preventing them +from being used in future transactions. + +Running multiple instances of `ParallelTransactionExecutor` using the same `sourceCoins` will +result in the same issues. + +::: + +In addition to managing gas and caching object versions, the `ParallelTransactionExecutor` will +automatically detect what objects are being used by transactions, and schedules transactions in a +way that avoids conflicts between transactions using the same object ids. + +`ParallelTransactionExecutor` can be configured with a number of options: + +- `client`: An instance of `IotaClient` used to execute transactions. +- `signer`: The signer/keypair used for signed transactions. +- `coinBatchSize`: The maximum number of new coins to create when refilling the gas pool + (default 20) +- `initialCoinBalance`: The balance of new coins created for the gas pool in MIST (default + `200_000_000n`), +- `minimumCoinBalance`: After executing a transaction, the gasCoin will be reused unless it's + balance is below this value (default `50_000_000n`), +- `defaultBudget`: The default budget for transactions, which will be used if the transaction does + not specify a budget (default `minimumCoinBalance`), +- `maxPoolSize`: The maximum number of gas coins to keep in the gas pool, which also limits the + maximum number of concurrent transactions (default 50), +- `sourceCoins`: An array of coins to use to create the gas pool, defaults to using all coins owned + by the signer. +- `epochBoundaryWindow` Time to wait before/after the expected epoch boundary before re-fetching the + gas pool (in milliseconds). Building transactions will be paused for up to 2x this duration around + each epoch boundary to ensure the gas price is up-to-date for the next epoch. (default `1000`) + +```ts +import { getFullnodeUrl, IotaClient } from '@iota/iota-sdk/client'; +import { ParallelTransactionExecutor } from '@iota/iota-sdk/transactions'; + +const client = new IotaClient({ url: getFullnodeUrl('devnet') }); + +const executor = new ParallelTransactionExecutor({ + client, + signer: yourKeyPair, +}); + +const tx1 = new Transaction(); +const [coin1] = tx1.splitCoins(tx1.gas, [1]); +tx1.transferObjects([coin1], address1); +const tx2 = new Transaction(); +const [coin2] = tx2.splitCoins(tx2.gas, [1]); +tx2.transferObjects([coin2], address2); + +const [{ digest: digest1 }, { digest: digest2 }] = await Promise.all([ + executor.executeTransaction(tx1), + executor.executeTransaction(tx2), +]); +``` + +## Building and Executing Transactions with Executors + +The executor classes will significantly improve efficiency when executing multiple transactions, but +to get the best results there are some best practices to follow: + +When building transactions, always prefer using unresolved object IDs rather than specifying the +full `id`/`version`/`digest` for an object input (eg use `tx.object(id)` rather than +`tx.objectRef({ objectId, version, digest })`). By doing this, you allow the executor to use object +versions and digests from the cache, and will avoid executing transactions using stale object +versions. + +If the signer executes transactions that are not sent through the executor that may cause +transactions to fail. The executor classes will handle this by invalidating the cache for any +objects used in the transaction, so you will often be able to recover by re-trying a failed +transaction once. If it was caused by a stale cache, it should succeed on the second execution. diff --git a/docs/content/references/ts-sdk/typescript/faucet.mdx b/docs/content/references/ts-sdk/typescript/faucet.mdx index 76662bcdd23..81ec7928660 100644 --- a/docs/content/references/ts-sdk/typescript/faucet.mdx +++ b/docs/content/references/ts-sdk/typescript/faucet.mdx @@ -16,9 +16,15 @@ Use `requestIotaFromFaucetV0` in your TypeScript code to request IOTA from the n ```typescript await requestIotaFromFaucetV0({ - host: getFaucetHost('testnet'), - recipient: , + host: getFaucetHost('testnet'), + recipient: , }); ``` + + +:::warning Rate Limit + Faucets on Devnet and Testnet are rate limited. If you run the script too many times, you surpass + the limit and must wait to successfully run it again. +::: diff --git a/docs/content/references/ts-sdk/typescript/graphql.mdx b/docs/content/references/ts-sdk/typescript/graphql.mdx new file mode 100644 index 00000000000..6aae5cdac25 --- /dev/null +++ b/docs/content/references/ts-sdk/typescript/graphql.mdx @@ -0,0 +1,108 @@ +# IotaGraphQLClient + +:::warning + +IotaGraphQLClient is still in development and may change rapidly as it is being developed. + +::: + +To support GraphQL Queries, the Typescript SDK includes the `IotaGraphQLClient` which can help you +write and execute GraphQL queries against the Iota GraphQL API that are type-safe and easy to use. + +## Writing your first query + +We'll start by creating our client, and executing a very basic query: + +```typescript +import { IotaGraphQLClient } from '@iota/iota-sdk/graphql'; +import { graphql } from '@iota/iota-sdk/graphql/schemas/2024.4'; + +const gqlClient = new IotaGraphQLClient({ + url: 'https://graphql.testnet.iota.cafe/', +}); + +const chainIdentifierQuery = graphql(` + query { + chainIdentifier + } +`); + +async function getChainIdentifier() { + const result = await gqlClient.query({ + query: chainIdentifierQuery, + }); + + return result.data?.chainIdentifier; +} +``` + +## Type-safety for GraphQL queries + +You may have noticed the example above does not include any type definitions for the query. The +`graphql` function used in the example is powered by [`gql.tada`](https://gql-tada.0no.co/) and will +automatically provide the required type information to ensure that your queries are properly typed +when executed through `IotaGraphQLClient`. + +The `graphql` function itself is imported from a versioned schema file, and you should ensure that +you are using the version that corresponds to the latest release of the GraphQL API. + +The `graphql` also detects variables used by your query, and will ensure that the variables passed +to your query are properly typed. + +```typescript +const queryTransactionBalanceChanges = graphql(` + query ($address: IOTAAddress!) { + transactionBlocks(filter: { + function: "0x3::iota_system::request_add_stake" + signAddress: $address + }) { + nodes { + digest + effects { + balanceChanges { + nodes { + owner { + address + } + amount + } + } + } + } + } + } +`); + +async function getTransactionBalanceChanges(address: string) { + const result = await gqlClient.query({ + query: queryTransactionBalanceChanges, + variables: { + address, + }, + }); + + return result.data?.address?.defaultIotansName; +} +``` + +## Using typed GraphQL queries with other GraphQL clients + +The `graphql` function returns document nodes that implement the +[TypedDocumentNode](https://github.com/dotansimha/graphql-typed-document-node) standard, and will +work with the majority of popular GraphQL clients to provide queries that are automatically typed. + +```typescript +import { useQuery } from '@apollo/client'; + +const chainIdentifierQuery = graphql(` + query { + chainIdentifier + } +`); + +function ChainIdentifier() { + const { loading, error, data } = useQuery(getPokemonsQuery); + + return
{data?.chainIdentifier}
; +} +``` diff --git a/docs/content/references/ts-sdk/typescript/index.mdx b/docs/content/references/ts-sdk/typescript/index.mdx index 5311b2a0349..f155c2b3822 100644 --- a/docs/content/references/ts-sdk/typescript/index.mdx +++ b/docs/content/references/ts-sdk/typescript/index.mdx @@ -54,27 +54,6 @@ The IOTA TypeScript SDK is now divided into modular components. Before version 0 the complete SDK module. Now, you upload the individual packages of the SDK module instead. See the [Module Packages section](#module-packages) for the list of packages. -### Deprecated classes - -The IOTA TypeScript SDK deprecates the following classes with version 0.38.0: - -- `JsonRpcProvider` - The `JsonRpcProvider` class is deprecated in favor of the `iotaClient` class - when creating a client for a IOTA network. See - [Network Interactions with IOTAClient](./iota-client.mdx) for more information. -- `SignerWithProver` and `RawSigner` - Key pairs now directly support signing transactions and - messages without the need of a `Signer` class. See the - [Key pairs](./cryptography/keypairs.mdx) topic for more information. -- `signAndExecuteTransactionBlock` - This method was not deprecated, but is now part of - `IotaClient`. -- `Connection` classes - The `Connection` classes (`Connection`, `devnetConnection`, and so on) - have been deprecated in favor of using `iotaClient` for establishing the connection. See - [Network Interactions with IotaClient](./iota-client.mdx) for more information. -- The `superstruct` type definitions for `JsonRPCProvider` types are replaced with generated types - exported from `@iota/iota-sdk/client`. The new type definitions are pure TypeScript types that - you can't use for runtime validation. -- A more stable JSON-RPC API has reduced the need for many of the SDK "getter" methods, which are - now deprecated. - ### Signing transactions Signing and sending transactions changes slightly with the deprecation of the `Signer` diff --git a/docs/content/references/ts-sdk/typescript/owned-object-pool/overview.mdx b/docs/content/references/ts-sdk/typescript/owned-object-pool/overview.mdx index 7e44ffa7bc9..0978437e67b 100644 --- a/docs/content/references/ts-sdk/typescript/owned-object-pool/overview.mdx +++ b/docs/content/references/ts-sdk/typescript/owned-object-pool/overview.mdx @@ -69,7 +69,7 @@ transaction. If you need IOTA for a test network, you can import { IotaClient } from '@iota/iota-sdk/client'; import { Ed25519Keypair } from '@iota/iota-sdk/keypairs/ed25519'; import { Transaction } from '@iota/iota-sdk/transactions'; -import { fromB64 } from '@iota/iota-sdk/utils'; +import { fromBase64 } from '@iota/iota-sdk/utils'; /* HERE ARE DEFINED THE PREPARATORY STEPS IF YOU WANT TO CODE ALONG*/ // Define the transaction @@ -84,7 +84,7 @@ function createPaymenttx(recipient: string): Transaction { } // Define your admin keypair and client const ADMIN_SECRET_KEY: string = ''; -const adminPrivateKeyArray = Uint8Array.from(Array.from(fromB64(ADMIN_SECRET_KEY))); +const adminPrivateKeyArray = Uint8Array.from(Array.from(fromBase64(ADMIN_SECRET_KEY))); const adminKeypair = Ed25519Keypair.fromSecretKey(adminPrivateKeyArray.slice(1)); const client = new IotaClient({ diff --git a/docs/content/references/ts-sdk/typescript/plugins.mdx b/docs/content/references/ts-sdk/typescript/plugins.mdx new file mode 100644 index 00000000000..8f069c38ee9 --- /dev/null +++ b/docs/content/references/ts-sdk/typescript/plugins.mdx @@ -0,0 +1,259 @@ +# Transaction Plugins + +:::warning +The `Transaction` plugin API is experimental and may change rapidly as it is being developed. +::: + +This document describes the plugin API for the `Transaction` builder. It covers internal details +intended for developers interested in extending the `Transaction` builder. Developers using the +`Transaction` builder to build transactions do not need this level of detail. The `Transaction` +builder includes a plugin system designed to extend how transactions are built. The two primary +goals are: + +1. Allow developers to customize how data is resolved when building transactions. +2. Provide a way for developers to extend the core commands that can be added to transactions. + +The Plugin API consists of three main components: serialization plugins, build plugins, and +Transaction Intents. Serialization and build plugins act like middleware, allowing developers to +modify the data and commands added to a transaction before it is serialized to JSON or built into +BCS bytes. Transaction Intents are custom representations of user intents for a transaction, +eventually resolved to one or more commands in the transaction. + +## Contents of a Transaction + +When a `Transaction` is created (e.g., `new Transaction()`), it is initialized with an empty +[TransactionDataBuilder](../api/transactions/classes/TransactionDataBuilder.md) +instance which stores the state of the partially built transaction. + +As commands are added to the `Transaction`, they are stored in the `TransactionDataBuilder`. The +`TransactionData` contains a list of commands and their arguments. The exact arguments a command +takes depend on the command, but they will be one of a few different types: + +- `GasCoin`: A reference to the coin used to pay for gas. +- `Input`: An input to the transaction (described below). +- `Result`: The result of a previous command. +- `NestedResult`: If a previous command returns a tuple (e.g., `SplitCoin`), a `NestedResult` is + used to refer to a specific value in that tuple. + +Transactions also store a list of Inputs, which refer to user-provided values. Inputs can either be +objects or Pure values and can be represented in several different ways: + +- `Pure`: An input value serialized to BCS. Pure values are generally scalar values or simple + wrappers like options or vectors and cannot represent object types. +- `Object`: A fully resolved object reference, which will be one of the following types: + - `ImmOrOwnedObject`: A reference to an object, including the object's `id`, `version`, and + `digest`. + - `SharedObject`: A reference to a shared object, including the object's `id`, + `initialSharedVersion`, and whether the shared object is used mutably. + - `Receiving`: A reference to a receiving object, including the object's `id`, `version`, and + `digest`. +- `UnresolvedPure`: A placeholder for a pure value that has not been serialized to BCS. +- `UnresolvedObject`: A partial reference to an object, often containing just the object's `id`, but + may also include a version, digest, or initialSharedVersion. + +## Lifecycle of a Transaction + +Because transactions can contain `UnresolvedPure` and `UnresolvedObject` inputs, these values need +to be resolved before the transaction can be serialized to BCS. However, these unresolved inputs can +be represented in JSON. What may not be able to be represented in JSON are Transaction Intents. +Transaction Intents represent custom concepts added by plugins or third-party SDKs. To account for +this, the build process of a transaction is split into two phases: serialization and building. +Serialization prepares the transaction to be serialized to JSON by running serialization plugins, +and resolving any unsupported intents. The Build phase then runs, which runs build plugins and +resolves any UnresolvedPure and UnresolvedObject inputs, before the transaction is serialized to +BCS. + +## Serialization Plugins + +Serialization plugins can be added to a `Transaction` by calling the `addSerializationPlugin` method +on a `Transaction` instance. Serialization plugins are called in the order they are added and are +passed the `TransactionDataBuilder` instance of the transaction. + +```typescript +const transaction = new Transaction(); + +transaction.addSerializationPlugin(async (transactionData, buildOptions, next) => { + // Modify the data before running other serialization steps + await next(); + // Modify the data after running other serialization steps +}); +``` + +## Build Plugins + +The build phase is responsible for taking unresolved objects and unresolved pure values and +converting them to their resolved versions by querying the RPC API to fetch the missing data. Build +plugins can hook into this phase to resolve some of this data from a cache instead, avoiding extra +API calls. + +Build plugins work just like serialization plugins and can be added to a `Transaction` by calling +the `addBuildPlugin` method on a `Transaction` instance. Build plugins are called in the order they +are added and are passed the `TransactionDataBuilder` instance of the transaction. + +The following example demonstrates a simplified version of the caching plugin used by the +`SerialTransactionExecutor` and `ParallelTransactionExecutor` classes. This example works by adding +missing object versions and digest from a cache. Updating the cache (which could be done by looking +at transaction effects of previous transactions) is not covered in this example. + +```typescript +import { + BuildTransactionOptions, + Transaction, + TransactionDataBuilder, +} from '@iota/iota-sdk/transactions'; + +const objectCache = new Map(); + +function simpleObjectCachePlugin( + transactionData: TransactionDataBuilder, + _options: BuildTransactionOptions, + next: () => Promise, +) { + for (const input of transactionData.inputs) { + if (!input.UnresolvedObject) continue; + + const cached = objectCache.get(input.UnresolvedObject.objectId); + + if (!cached) continue; + + if (cached.version && !input.UnresolvedObject.version) { + input.UnresolvedObject.version = cached.version; + } + + if (cached.digest && !input.UnresolvedObject.digest) { + input.UnresolvedObject.digest = cached.digest; + } + } + + return next(); +} + +// Example usage of the build plugin +const transaction = new Transaction(); +transaction.addBuildPlugin(simpleObjectCachePlugin); +``` + +## Transaction Intents + +Transaction Intents consist of two parts: adding the intent to the transaction and resolving the +intent to standard commands. + +Adding an intent is similar to adding any other command to a transaction: + +```typescript +import { Commands, Transaction } from '@iota/iota-sdk/transactions'; + +const transaction = new Transaction(); + +transaction.add( + Commands.Intent({ + name: 'TransferToSender', + inputs: { + objects: [transaction.object(someId)], + }, + }), +); +``` + +To make our custom `TransferToSender` intent easier to use, we can write a helper function that +wraps things up a bit. The `add` method on transactions accepts a function that will be passed the +current transaction instance. This allows us to create a helper that automatically adds the intent: + +```typescript +import { Commands, Transaction, TransactionObjectInput } from '@iota/iota-sdk/transactions'; + +function transferToSender(objects: TransactionObjectInput[]) { + return (tx: Transaction) => { + tx.add( + Commands.Intent({ + name: 'TransferToSender', + inputs: { + objects: objects.map((obj) => tx.object(obj)), + }, + }), + ); + }; +} + +const transaction = new Transaction(); + +transaction.add(transferToSender(['0x1234'])); +``` + +Now that we've added the intent to the transaction, we need to resolve the intent to standard +commands. To do this, we'll use the `addIntentResolver` method on the `Transaction` instance. The +`addIntentResolver` method works like serialization and build plugins but will only be called if the +intent is present in the transaction. + +```typescript +import { Transaction } from '@iota/iota-sdk/transactions'; + +const transaction = new Transaction(); + +transaction.addIntentResolver('TransferToSender', resolveTransferToSender); + +async function resolveTransferToSender( + transactionData: TransactionDataBuilder, + buildOptions: BuildTransactionOptions, + next: () => Promise, +) { + if (!transactionData.sender) { + throw new Error('Sender must be set to resolve TransferToSender'); + } + + // Add an input that references the sender's address + const addressInput = Inputs.Pure(bcs.Address.serialize(transactionData.sender)); + transactionData.inputs.push(addressInput); + // Get the index of the input to use when adding the TransferObjects command + const addressIndex = transactionData.inputs.length - 1; + + for (const [index, transaction] of transactionData.commands.entries()) { + if (transaction.$kind !== '$Intent' || transaction.$Intent.name !== 'TransferToSender') { + continue; + } + + // This will replace the intent command with the correct TransferObjects command + transactionData.replaceCommand(index, [ + Commands.TransferObjects( + // The inputs for intents are not currently typed, so we need to cast to the correct type here + transaction.$Intent.inputs.objects as Extract< + TransactionObjectArgument, + { $kind: 'Input' } + >, + // This is a CallArg referencing the addressInput we added above + { + Input: addressIndex, + }, + ), + ]); + } + + // Plugins always need to call next() to continue the build process + return next(); +} +``` + +Manually adding intent resolvers to a transaction can be cumbersome, so we can add the resolver +automatically when our `transferToSender` helper is called: + +```typescript +import { Commands, Transaction, TransactionObjectInput } from '@iota/iota-sdk/transactions'; + +function transferToSender(objects: TransactionObjectInput[]) { + return (tx: Transaction) => { + // As long as we are adding the same function reference, it will only be added once + tx.addIntentResolver('TransferToSender', resolveTransferToSender); + tx.add( + Commands.Intent({ + name: 'TransferToSender', + inputs: { + objects: objects.map((obj) => tx.object(obj)), + }, + }), + ); + }; +} + +const transaction = new Transaction(); +transaction.add(transferToSender(['0x1234'])); +``` diff --git a/docs/content/references/ts-sdk/typescript/transaction-building/gas.mdx b/docs/content/references/ts-sdk/typescript/transaction-building/gas.mdx index 636b04716d8..5c3cb85d198 100644 --- a/docs/content/references/ts-sdk/typescript/transaction-building/gas.mdx +++ b/docs/content/references/ts-sdk/typescript/transaction-building/gas.mdx @@ -54,3 +54,6 @@ will be the coin that all others are merged into. // of the input objects for the transaction tx.setGasPayment([coin1, coin2]); ``` + +Gas coins should be objects containing the coins objectId, version, and digest (ie +`{ objectId: string, version: string | number, digest: string }`). diff --git a/docs/content/references/ts-sdk/typescript/transaction-building/intents.mdx b/docs/content/references/ts-sdk/typescript/transaction-building/intents.mdx index 8d08d166471..41466e13796 100644 --- a/docs/content/references/ts-sdk/typescript/transaction-building/intents.mdx +++ b/docs/content/references/ts-sdk/typescript/transaction-building/intents.mdx @@ -1,6 +1,6 @@ # Transaction Intents -Transaction Intents enable 3rd party SDKs and Transaction Plugins to more easily add +Transaction Intents enable 3rd party SDKs and [Transaction Plugins](../plugins) to more easily add complex operations to a Transaction. The Typescript SDK currently only includes a single Intent (CoinWithBalance), but more will be added in the future. @@ -30,13 +30,13 @@ const tx = new Transaction(); tx.setSender(keypair.toIotaAddress()); tx.transferObjects( - [ - // Create a IOTA coin (balance is in NANOS) - coinWithBalance({ balance: 100 }), - // Create a coin of another type - coinWithBalance({ balance: 100, type: '0x123::foo:Bar' }), - ], - recipient, + [ + // Create a IOTA coin (balance is in NANOS) + coinWithBalance({ balance: 100 }), + // Create a coin of another type + coinWithBalance({ balance: 100, type: '0x123::foo:Bar' }), + ], + recipient, ); ``` diff --git a/docs/content/sidebars/references.js b/docs/content/sidebars/references.js index fbfcb147ed0..58d623d801e 100644 --- a/docs/content/sidebars/references.js +++ b/docs/content/sidebars/references.js @@ -83,6 +83,7 @@ const references = [ 'references/ts-sdk/typescript/hello-iota', 'references/ts-sdk/typescript/faucet', 'references/ts-sdk/typescript/iota-client', + 'references/ts-sdk/typescript/graphql', { type: 'category', label: 'Transaction Building', @@ -103,6 +104,8 @@ const references = [ }, 'references/ts-sdk/typescript/utils', 'references/ts-sdk/typescript/bcs', + 'references/ts-sdk/typescript/executors', + 'references/ts-sdk/typescript/plugins', { type: 'category', label: 'Owned Object Pool', @@ -145,9 +148,10 @@ const references = [ 'references/ts-sdk/dapp-kit/wallet-hooks/useConnectWallet', 'references/ts-sdk/dapp-kit/wallet-hooks/useDisconnectWallet', 'references/ts-sdk/dapp-kit/wallet-hooks/useSwitchAccount', + 'references/ts-sdk/dapp-kit/wallet-hooks/useReportTransactionEffects', 'references/ts-sdk/dapp-kit/wallet-hooks/useSignPersonalMessage', - 'references/ts-sdk/dapp-kit/wallet-hooks/useSignTransactionBlock', - 'references/ts-sdk/dapp-kit/wallet-hooks/useSignAndExecuteTransactionBlock', + 'references/ts-sdk/dapp-kit/wallet-hooks/useSignTransaction', + 'references/ts-sdk/dapp-kit/wallet-hooks/useSignAndExecuteTransaction', ], }, 'references/ts-sdk/dapp-kit/themes', @@ -185,7 +189,6 @@ const references = [ ], }, 'references/ts-sdk/kiosk/advanced-examples', - 'references/ts-sdk/kiosk/from-v1', ], }, 'references/ts-sdk/bcs', diff --git a/docs/site/docusaurus.config.js b/docs/site/docusaurus.config.js index a789f2b0a80..30c0edb3c5d 100644 --- a/docs/site/docusaurus.config.js +++ b/docs/site/docusaurus.config.js @@ -108,6 +108,7 @@ const config = { intentionallyNotExported: [], }, ], + 'plugin-image-zoom' ], presets: [ [ @@ -272,6 +273,14 @@ const config = { darkTheme: themes.vsDark, additionalLanguages: ["rust", "typescript", "solidity"], }, + imageZoom: { + selector: '.markdown img', + // Optional medium-zoom options + // see: https://www.npmjs.com/package/medium-zoom#options + options: { + background: 'rgba(0, 0, 0, 0.6)', + }, + } }), }; diff --git a/docs/site/package.json b/docs/site/package.json index 1e6741e64c2..28d0b5926e7 100644 --- a/docs/site/package.json +++ b/docs/site/package.json @@ -49,6 +49,7 @@ "hast-util-is-element": "^1.1.0", "lodash": "^4.17.21", "markdown-to-jsx": "^7.4.7", + "plugin-image-zoom": "github:flexanalytics/plugin-image-zoom", "postcss": "^8.4.31", "prism-react-renderer": "^2.3.1", "prismjs": "^1.29.0", diff --git a/docs/site/src/components/API/api-ref/examples.js b/docs/site/src/components/API/api-ref/examples.js index a70026e8375..e9809d4f15e 100644 --- a/docs/site/src/components/API/api-ref/examples.js +++ b/docs/site/src/components/API/api-ref/examples.js @@ -6,21 +6,23 @@ import React, { useState, useEffect } from "react"; import Markdown from "markdown-to-jsx"; import { Light as SyntaxHighlighter } from "react-syntax-highlighter"; import js from "react-syntax-highlighter/dist/esm/languages/hljs/json"; -import docco from "react-syntax-highlighter/dist/esm/styles/hljs/docco"; -import dark from "react-syntax-highlighter/dist/esm/styles/hljs/dracula"; - +import { a11yLight, vs2015 } from "react-syntax-highlighter/dist/esm/styles/hljs"; SyntaxHighlighter.registerLanguage("json", js); const Examples = (props) => { - const [light, setLight] = useState(true); + + const [light, setLight] = useState(false); + + useEffect(() => { + const theme = localStorage.getItem("theme"); + setLight(theme === "light" ? true : false); + },[]) + useEffect(() => { const checkTheme = () => { const theme = localStorage.getItem("theme"); - - if (theme !== "light") { - setLight(false); - } + setLight(theme === "light" ? true : false); }; window.addEventListener("storage", checkTheme); @@ -66,13 +68,17 @@ const Examples = (props) => {

Request

-
-            
-              
-                {stringRequest}
-              
-            
-          
+ + {stringRequest} + + )} {examples[0].result.value && ( @@ -80,17 +86,18 @@ const Examples = (props) => {

Response

-
-            
-              
-                {JSON.stringify(response, null, 2)}
-              
-            
-          
+ + {JSON.stringify(response, null, 2)} + )} ); }; -export default Examples; +export default Examples; \ No newline at end of file diff --git a/docs/site/src/components/API/api-ref/method.js b/docs/site/src/components/API/api-ref/method.js index 902befa1a9a..44fd00bcc19 100644 --- a/docs/site/src/components/API/api-ref/method.js +++ b/docs/site/src/components/API/api-ref/method.js @@ -42,7 +42,7 @@ const Method = (props) => { @@ -72,7 +72,7 @@ const Method = (props) => { > { const [selection, setSelection] = useState(() => { + if (ExecutionEnvironment.canUseDOM) { const network = localStorage.getItem("RPC"); if (network === null) { @@ -23,8 +24,10 @@ const NetworkSelect = () => { }); useEffect(() => { - localStorage.setItem("RPC", selection); - window.dispatchEvent(new Event("storage")); + if (typeof window !== "undefined") { + localStorage.setItem("RPC", selection); + window.dispatchEvent(new Event("storage")); + } }, [selection]); const handleChange = (e) => { @@ -33,7 +36,7 @@ const NetworkSelect = () => { return ( -
+
{ return (
{hasParams && ( -
-
+
+
Name<Type>
-
+
Required
-
+
Description
diff --git a/docs/site/src/components/API/api-ref/refnav.js b/docs/site/src/components/API/api-ref/refnav.js index 7d03700b651..e88b41d0233 100644 --- a/docs/site/src/components/API/api-ref/refnav.js +++ b/docs/site/src/components/API/api-ref/refnav.js @@ -1,51 +1,61 @@ // Copyright (c) Mysten Labs, Inc. // Modifications Copyright (c) 2024 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 - -import React from "react"; +import React, { useState } from "react"; import Link from "@docusaurus/Link"; import NetworkSelect from "./networkselect"; - const RefNav = (props) => { - const { json, apis } = props; - + const { json, apis, openDropdown, setOpenDropdown } = props; + const [page, setPage] = useState(null) + const toggleDropdown = (index) => { + setOpenDropdown(openDropdown === index ? null : index); + }; return (
-
+
- - {apis.map((api) => { + {apis.map((api, index) => { return (
- - {api} - - {json["methods"] - .filter((method) => method.tags[0].name == api) - .map((method) => { - return ( - - {method.name} - - ); - })} +
toggleDropdown(index)}> + +
+
{api}
+
+

>

+
+
+ +
+
+ {json["methods"] + .filter((method) => method.tags[0].name == api) + .map((method) => { + return ( + setPage(method.name)} + > + {method.name} + + ); + })} +
); })}
); }; - -export default RefNav; +export default RefNav; \ No newline at end of file diff --git a/docs/site/src/components/API/api-ref/typedef.js b/docs/site/src/components/API/api-ref/typedef.js index e24ab20a061..3d9b86bdccd 100644 --- a/docs/site/src/components/API/api-ref/typedef.js +++ b/docs/site/src/components/API/api-ref/typedef.js @@ -1,15 +1,36 @@ // Copyright (c) Mysten Labs, Inc. // Modifications Copyright (c) 2024 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -import React from "react"; + +import React, { useState, useEffect } from "react"; import _ from "lodash"; import { getRef } from "../index"; - import { Light as SyntaxHighlighter } from "react-syntax-highlighter"; -import json from "react-syntax-highlighter/dist/esm/languages/hljs/json"; -import dark from "react-syntax-highlighter/dist/esm/styles/hljs/dracula"; +import { a11yLight, vs2015 } from "react-syntax-highlighter/dist/esm/styles/hljs"; const TypeDef = (props) => { + const [light, setLight] = useState(() => { + if (typeof window !== "undefined") { + const theme = localStorage.getItem("theme"); + return theme === "light"; + } + return false; + }); + + useEffect(() => { + const checkTheme = () => { + if (typeof window !== "undefined") { + const theme = localStorage.getItem("theme"); + setLight(theme === "light"); + } + }; + + window.addEventListener("storage", checkTheme); + return () => { + window.removeEventListener("storage", checkTheme); + }; + }, []); + const { schema, schemas } = props; const schemaObj = schemas[schema]; let refs = [{ title: schema, ...schemaObj }]; @@ -23,36 +44,35 @@ const TypeDef = (props) => { } else if (value && typeof value === "object") { collectRefs(value); } - if (key == "$ref") + if (key === "$ref") { refs.push({ title: getRef(value), ...schemas[getRef(value)] }); + } } }; collectRefs(schemaObj); - refs.map((ref) => { - collectRefs(schemas[ref.title]); - }); - - refs.map((ref) => { - collectRefs(schemas[ref.title]); - }); + refs.map((ref) => collectRefs(schemas[ref.title])); + refs.map((ref) => collectRefs(schemas[ref.title])); return (
- {_.uniqWith(refs, (a, b) => { - return a.title === b.title; - }).map((curObj, idx) => { - return ( -
-

{curObj.title}

-
- - {JSON.stringify(_.omit(curObj, "title"), null, 4)} - -
- ); - })} + {_.uniqWith(refs, (a, b) => a.title === b.title).map((curObj, idx) => ( +
+

{curObj.title}

+
+ + {JSON.stringify(_.omit(curObj, "title"), null, 4)} + +
+ ))}
); }; diff --git a/docs/site/src/components/API/index.js b/docs/site/src/components/API/index.js index d22de0515ad..0dd3a5dc9f0 100644 --- a/docs/site/src/components/API/index.js +++ b/docs/site/src/components/API/index.js @@ -3,11 +3,9 @@ // SPDX-License-Identifier: Apache-2.0 import React, { useState, useEffect } from "react"; -import ExecutionEnvironment from "@docusaurus/ExecutionEnvironment"; import Heading from "@theme/Heading"; import RefNav from "./api-ref/refnav"; import Methods from "./api-ref/method"; - import ScrollSpy from "react-ui-scrollspy"; // TODO: Once the repo is public, we can use the old imports again and reactivate the ../../utils/getopenrpcspecs.js script @@ -21,7 +19,7 @@ export function getRef(url) { const Rpc = () => { const [openrpc, setOpenRpc] = useState(() => { - if (ExecutionEnvironment.canUseDOM) { + if (typeof window !== "undefined") { const network = localStorage.getItem("RPC"); switch (network) { case "mainnet": @@ -33,15 +31,17 @@ const Rpc = () => { default: return openrpc_mainnet; } - } else { - return openrpc_mainnet; } + return openrpc_mainnet; }); + const [openDropdown, setOpenDropdown] = useState(null); + useEffect(() => { - const rpcswitch = () => { - if (localStorage.getItem("RPC")) { - switch (localStorage.getItem("RPC")) { + const rpcSwitch = () => { + if (typeof window !== "undefined") { + const network = localStorage.getItem("RPC"); + switch (network) { case "mainnet": setOpenRpc(openrpc_mainnet); break; @@ -54,47 +54,41 @@ const Rpc = () => { default: setOpenRpc(openrpc_mainnet); } - } else { - setOpenRpc(openrpc_mainnet); } }; - window.addEventListener("storage", rpcswitch); - + window.addEventListener("storage", rpcSwitch); return () => { - window.removeEventListener("storage", rpcswitch); + window.removeEventListener("storage", rpcSwitch); }; - }, [openrpc]); + }, []); - const apis = [ - ...new Set(openrpc["methods"].map((api) => api.tags[0].name)), - ].sort(); + const apis = [...new Set(openrpc["methods"].map((api) => api.tags[0].name))].sort(); const schemas = openrpc.components.schemas; if (!openrpc) { return

Open RPC file not found.

; } - let ids = []; - openrpc["methods"].map((method) => { - ids.push(method.name.replaceAll(/\s/g, "-").toLowerCase()); - }); + let ids = openrpc["methods"].map((method) => + method.name.replaceAll(/\s/g, "-").toLowerCase() + ); return (
-
- +
+
- + IOTA JSON-RPC Reference - Version: {openrpc.info.version}
-

{openrpc.info.description}

+

{openrpc.info.description}

diff --git a/docs/site/src/theme/ReactLiveScope/index.tsx b/docs/site/src/theme/ReactLiveScope/index.tsx index d45482324d9..ab8679ad1d4 100644 --- a/docs/site/src/theme/ReactLiveScope/index.tsx +++ b/docs/site/src/theme/ReactLiveScope/index.tsx @@ -14,9 +14,10 @@ import { useCurrentAccount, useCurrentWallet, useDisconnectWallet, - useSignAndExecuteTransactionBlock, + useReportTransactionEffects, + useSignAndExecuteTransaction, useSignPersonalMessage, - useSignTransactionBlock, + useSignTransaction, useSwitchAccount, useWallets, WalletProvider, @@ -37,9 +38,9 @@ const ReactLiveScope = { useCurrentAccount, useCurrentWallet, useDisconnectWallet, - useSignAndExecuteTransactionBlock, + useSignAndExecuteTransaction, useSignPersonalMessage, - useSignTransactionBlock, + useSignTransaction, useSwitchAccount, useWallets, WalletProvider, diff --git a/docs/site/static/img/about-iota/iota-architecture/TransactionLifeCycle.svg b/docs/site/static/img/about-iota/iota-architecture/TransactionLifeCycle.svg new file mode 100644 index 00000000000..10c75c8c8ce --- /dev/null +++ b/docs/site/static/img/about-iota/iota-architecture/TransactionLifeCycle.svg @@ -0,0 +1,4 @@ + + + +


Direct Fast Path

Direct Fast Path

1. Make Transaction

1. Make Transaction
Checks
Checks
Client

Client
Validator n
Validator n
Validator 1
Validator 1
Validator 2
Validator 2

3. Assemble Certificate

3. Assemble Certificate

2. Process Transaction

2. Process Transaction

4. Sequence

4. Sequence

5. Process Certificate

5. Process Certificate

6. Assemble Effect Certificate

6. Assemble Effect Certificate

7. Checkpoint Certificate

7. Checkpoint Certificate
...
...
Checks
Checks
Consensus
Consensus
Execution
Execution
Checkpoint
Checkpoint
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/site/static/img/about-iota/iota-architecture/dark/TransactionLifeCycle.svg b/docs/site/static/img/about-iota/iota-architecture/dark/TransactionLifeCycle.svg new file mode 100644 index 00000000000..c42760570f1 --- /dev/null +++ b/docs/site/static/img/about-iota/iota-architecture/dark/TransactionLifeCycle.svg @@ -0,0 +1,4 @@ + + + +


1. Make Transaction

1. Make Transaction
Checks
Checks
Client

Client
Validator n
Validator n
Validator 1
Validator 1
Validator 2
Validator 2

3. Assemble Certificate

3. Assemble Certificate

2. Process Transaction

2. Process Transaction

4. Sequence

4. Sequence

5. Process Certificate

5. Process Certificate.

6. Assemble Effect Certificate

6. Assemble Effect Certificate

7. Checkpoint Certificate

7. Checkpoint Certificate
...
...
Checks
Checks
Consensus
Consensus
Execution
Execution

Direct Fast Path

Direct Fast Path
Checkpoint
Checkpoint
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/site/static/img/about-iota/iota-architecture/txn-lifecycle.png b/docs/site/static/img/about-iota/iota-architecture/txn-lifecycle.png deleted file mode 100644 index 269b0f19654..00000000000 Binary files a/docs/site/static/img/about-iota/iota-architecture/txn-lifecycle.png and /dev/null differ diff --git a/docs/site/static/img/about-iota/tokenomics/IOTA-tokenomics-flow.svg b/docs/site/static/img/about-iota/tokenomics/IOTA-tokenomics-flow.svg new file mode 100644 index 00000000000..460bb1c1e94 --- /dev/null +++ b/docs/site/static/img/about-iota/tokenomics/IOTA-tokenomics-flow.svg @@ -0,0 +1,10 @@ + + + + + + + + Storage DepositUserComputation FeesBURNDeposit onObject creationRedeem on object deletionStaking RewardsMINTDelegatorsValidatorsCommission max 20%Staking Rewards majoritymin 80% \ No newline at end of file diff --git a/docs/site/static/img/about-iota/tokenomics/dark/IOTA-tokenomics-flow.svg b/docs/site/static/img/about-iota/tokenomics/dark/IOTA-tokenomics-flow.svg new file mode 100644 index 00000000000..460bb1c1e94 --- /dev/null +++ b/docs/site/static/img/about-iota/tokenomics/dark/IOTA-tokenomics-flow.svg @@ -0,0 +1,10 @@ + + + + + + + + Storage DepositUserComputation FeesBURNDeposit onObject creationRedeem on object deletionStaking RewardsMINTDelegatorsValidatorsCommission max 20%Staking Rewards majoritymin 80% \ No newline at end of file diff --git a/docs/site/static/img/about-iota/tokenomics/iota-tokenomics-flow.png b/docs/site/static/img/about-iota/tokenomics/iota-tokenomics-flow.png deleted file mode 100644 index 794367fde5d..00000000000 Binary files a/docs/site/static/img/about-iota/tokenomics/iota-tokenomics-flow.png and /dev/null differ diff --git a/docs/site/static/img/concepts/execution-architecture/dark/iota-adapter.svg b/docs/site/static/img/concepts/execution-architecture/dark/iota-adapter.svg new file mode 100644 index 00000000000..36fb5f1f5a6 --- /dev/null +++ b/docs/site/static/img/concepts/execution-architecture/dark/iota-adapter.svg @@ -0,0 +1,4 @@ + + + +
Adapter scope
Adapter scope

new_move_vm

(iota-execution/iota_adapter/adapter.rs)

new_move_vm...

executor

(iota-execution/lib.rs)

executor...

create_genesis_transaction

(iota-genesis-builder/lib.rs)

create_genesis_transaction...

new -> Executor

(iota-execution/latest.rs)

new -> Executor...

create_genesis_objects

(iota-genesis-builder/lib.rs)

create_genesis_objects...

new -> ExecutionComponents

(iota-core/authority/authority_per_epoch_store.rs)

new -> ExecutionComponents...

start_async

(iota-node/lib.rs)

start_async...

main

(iota-node/main.rs)

main...

build_unsigned_genesis_data

(iota-genesis-builder/lib.rs)

build_unsigned_genesis_data...

build_unsigned_genesis_checkpoint

(iota-genesis-builder/lib.rs)

build_unsigned_genesis_checkpoint...

add_validator_signature

(iota-genesis-builder/lib.rs)

add_validator_signature...

build -> Genesis

(iota-genesis-builder/lib.rs)

build -> Genesis...

load -> Builder

(iota-genesis-builder/lib.rs)

load -> Builder...

run

(iota/genesis_ceremony.rs)

run...

main

(iota/generate_genesis_checkpoint.rs)

main...
Execution scope
Execution scope
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/site/static/img/concepts/execution-architecture/dark/iota-architecture.svg b/docs/site/static/img/concepts/execution-architecture/dark/iota-architecture.svg new file mode 100644 index 00000000000..7b929d828ab --- /dev/null +++ b/docs/site/static/img/concepts/execution-architecture/dark/iota-architecture.svg @@ -0,0 +1,4 @@ + + + +
Execution layer
Execution layer
Adapter
Adapter
MoveVM
MoveVM
move-execution/move-vm-runtime
move-execution/...
Framework
Framework
iota-framework crate
iota-framework...
Init
Init
Execution-engine
Execution-engine
...execution/iota-adapter/execution-engine
...execution/iota-...

native fns etc

native fns etc
Object runtime
Object runtime
...execution/iota-move-natives
...execution/io...
iota-execution crate
iota-execution crate
Nodes network(Iota node)
Nodes network(Iota node)
Node
Node
API
API
Ledger storage
Ledger stora...
Indexer
(read/sync db)
Indexer...
Consensus engine
Consensus engi...
Network
Network
Core
Core
iota-json-rpc
iota-json-rpc
iota-json-rpc crate
iota-json-rpc...
iota-cli
iota-cli
iota-cli crate
iota-cli crate
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/site/static/img/concepts/execution-architecture/dark/iota-execution.svg b/docs/site/static/img/concepts/execution-architecture/dark/iota-execution.svg new file mode 100644 index 00000000000..8a20051e670 --- /dev/null +++ b/docs/site/static/img/concepts/execution-architecture/dark/iota-execution.svg @@ -0,0 +1,4 @@ + + + +
Init
Init
iota-adapter
iota-adapter
Execution engine:
execute_transaction_to_effects
Execution engine:...
...execution/iota-adapter/execution_engine.rs
...execution/iota-adapter/executi...
iota-execution crate
iota-execution crate
iota-verifier
Checks:
default_verifier_config
verify_module_unmetered
check_for_verifier_timeout
...
iota-verifier...
Gas charger
Gas charger
...execution/iota-adapter/gas_charger.rs
...execution/iota-ada...
Temporary store
Temporary store
...execution/iota-adapter/temporary_store.rs
...execution/iota-adapter...
Programmable tx module
Programmable tx module
ExecutionContext
ExecutionContext
context.rs
context.rs
...execution/iota-adapter/programmable_transactions
...execution/iota-adapter/programmable_transactions
execution.rs
execution.rs
tx execution methods:
execute
execute_command
execute_move_call
...
tx execution methods:...
Init
Init
Init
Init
Execute
Execute
iota-move-natives
iota-move-natives
NativeCostTable
NativeCostTable
NativeFunctionTable
NativeFunctionTable
Object runtime
Manage object operations
Object runtime...
Object store
Object store
...execution/iota-move-natives/object_runtime
...execution/iota-move-n...
...execution/iota-move-natives
...execution/iota-move-natives
Executor
Executor
...execution/src.rs
...execution/src.rs
MoveVM
MoveVM
external-crates/move/crates/mvoe-vm-runtime/move_vm.rs
external-crates/move/crate...
Init
Init
Init
Init
Init
Init
Init
Init
Init
Init
External-crates
External-crates
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/site/static/img/concepts/execution-architecture/dark/native-fns-flow.svg b/docs/site/static/img/concepts/execution-architecture/dark/native-fns-flow.svg new file mode 100644 index 00000000000..969ea664950 --- /dev/null +++ b/docs/site/static/img/concepts/execution-architecture/dark/native-fns-flow.svg @@ -0,0 +1,4 @@ + + + +

NativeFunctionTable

NativeFunctionTable

new_move_vm -> MoveVM

(iota-execution/iota_adapter/adapter.rs)

new_move_vm -> MoveVM...

new_with_config -> MoveVM

(external-crates/move/move-vm_runtime/move_vm.rs)

new_with_config -> MoveVM...

new -> VMRuntime

(external-crates/move/move-vm_runtime/runtime.rs)

new -> VMRuntime...

new - Loader

(external-crates/move/move-vm_runtime/loader.rs)

new - Loader...

new -> NativeFunctions

(external-crates/move/move-vm_runtime/native_functions.rs)

new -> NativeFunctions...
Native functions initialization/loading
Native functions initialization/loading
programmable_transactions::execution::execute
programmable_transactions::execution::execute
Execution engine


Execution engine...
execute_genesis_state_update
execution_loop
advance_epoch
setup_consensus_commit
setup_authenticator_state_update
execute_genesis_state_update...
Object runtime creation and access process 
Object runtime creation and access process 

all_natives

(iota-execution/latest/iota-move-natives/lib.rs)

all_natives...

new -> Executor

(iota-execution/latest.rs)

new -> Executor...

transfer_internal

(iota-execution/latest/iota-move-natives/transfer.rs)

transfer_internal...
object_runtime.transfer(...)
object_runtime.transfer(...)

object_runtime_transfer

(iota-execution/latest/iota-move-natives/transfer.rs)

object_runtime_transfer...

transfer

(iota-execution/iota-move-natives/object-runtime/mod.rs)

transfer...

share_object

(iota-execution/latest/iota-move-natives/transfer.rs)

share_object...

freeze_object

(iota-execution/latest/iota-move-natives/transfer.rs)

freeze_object...
Native functions execution flow
(Transfer fn for an instance)
Native functions execution flow...
ExecutionContext
fn object_runtime(&mut self) -> &ObjectRuntime
ExecutionContext...
NativeContextExtensions
NativeContextExtensions
ObjectRuntime
ObjectRuntime
ObjectRuntimeState
ObjectRuntimeState
NativeContext::get_exetensions().get_mut()
NativeContext::get_exetensions().get_mut()
transfer.insert()
transfer.insert()
programmable_transactions::execution::execute
programmable_transactions::execution::execute
ExecutionContext::new(...) -> ExecutionContext
ExecutionContext::new(...) -> ExecutionContext
new_native_extensions(...) -> NativeContextExtensions
new_native_extensions(...) -> NativeContextExtensions
Object Runtime initialization
ObjectRuntime
Object Runtime initializat...
Natives Cost Table initialization
NativesCostTable
Natives Cost Table initializ...
...
...
context.object_runtime()
context.object_runtime()
...
...
state_view<ExecutionState> - save operations
state_view<ExecutionState> - save operations
context.finish()
context.finish()
object_runtime.finish()
object_runtime.finish()
state.finish()
state.finish()
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/site/static/img/concepts/execution-architecture/dark/tx-exec-flow.svg b/docs/site/static/img/concepts/execution-architecture/dark/tx-exec-flow.svg new file mode 100644 index 00000000000..a915ed6dea8 --- /dev/null +++ b/docs/site/static/img/concepts/execution-architecture/dark/tx-exec-flow.svg @@ -0,0 +1,4 @@ + + + +

try_execute_immediately

(iota-core/authority.rs)

try_execute_immediately...

start_async

(iota-node/lib.rs)

start_async...

execution_process

(iota-core/execution_driver.rs)

execution_process...

main

(iota-node/main.rs)

main...

new -> AuthorityState

(iota-core/authority.rs)

new -> AuthorityState...

execute_transaction_to_effects

(iota-execution/iota-adapter/execution_engine.rs)

execute_transaction_to_effects...

process_certificate

(iota-core/authority.rs)

process_certificate...

prepare_certificate

(iota-core/authority.rs)

prepare_certificate...

execute_transaction_to_effects

(iota-execution/latest.rs)

execute_transaction_to_effects...

execute_transaction

(iota-execution/iota-adapter/execution_engine.rs)

execute_transaction...

execute_loop

(iota-execution/iota-adapter/execution_engine.rs)

execute_loop...

execute

(iota-execution/iota-adapter/programmable_transaction/execution.rs)

execute...

execute_transaction_block

(iota-sdk/apis.rs)

execute_transaction_block...

execute_transaction_block

(iota-json-rpc-api/write.rs)

execute_transaction_block...

execute_transaction_block

(iota-json-rpc/transaction_execution_api.rs)

execute_transaction_block...

execute_transaction_block

(iota-core/transaction_orchestrator.rs)

execute_transaction_block...

execute_finalized_tx_locally_with_timeout

(iota-core/transaction_orchestrator.rs)

execute_finalized_tx_locally_with_timeout...

fullnode_execute_certificate_with_effects

(iota-core/authority.rs)

fullnode_execute_certificate_with_effects...

submit

(iota-core/transaction_orchestrator.rs)

submit...

submit_transaction_no_ticket

(iota-core/transaction_orchestrator.rs)

submit_transaction_no_ticket...
User side flow
User side flow
Node side flow
Node side flow

finish

(iota-execution/iota-adapter/programmable_transaction/context.rs)

finish...

finish

(iota-execution/iota-move-natives/object-runtime/mod.rs)

finish...
IOTA Execution Crate
IOTA Execution Crate
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/site/static/img/guides/developer/advanced/stardust-on-move/dark/.$stardust-on-move-migration-graph.svg.bkp b/docs/site/static/img/guides/developer/advanced/stardust-on-move/dark/.$stardust-on-move-migration-graph.svg.bkp new file mode 100644 index 00000000000..596fc2218cd --- /dev/null +++ b/docs/site/static/img/guides/developer/advanced/stardust-on-move/dark/.$stardust-on-move-migration-graph.svg.bkp @@ -0,0 +1,4 @@ + + + +
Basic Output
Basic Output
Expiration?
Expiration?
Native Tokens?
Native Tokens?
Native Tokens?
Native Tokens?
SDRUC?
SDRUC?
SDRUC?
SDRUC?
SDRUC?
SDRUC?
SDRUC?
SDRUC?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
No
No
No
No
No
No
No
No
Owned stardust::basic::BasicOutput
Owned stardust::basic:...
O
O
I
I
T
T
Owned 0x2::coin::Coin<IOTA>
Owned 0x2::coi...
O
O
I
I
Owned stardust::basic::BasicOutput
Owned stardust::basic:...
SDR
SDR
O
O
I
I
Owned stardust::basic::BasicOutput
Owned stardust::basic::Basic...
SDR
SDR
O
O
I
I
T
T
Shared stardust::basic::BasicOutput
Shared stardust::basic::Bas...
NT
NT
SDR
SDR
E
E
I
I
Shared stardust::basic::BasicOutput
Shared stardust::basic::Ba...
NT
NT
E
E
I
I
T
T
Shared stardust::basic::BasicOutput
Shared stardust::bas...
NT
NT
E
E
I
I
Shared stardust::basic::BasicOutput
Shared stardust::basic::Ba...
SDR
SDR
E
E
I
I
T
T
Shared stardust::basic::BasicOutput
Shared stardust::bas...
SDR
SDR
E
E
I
I
Shared stardust::basic::BasicOutput
Shared stardust::b...
E
E
I
I
T
T
Shared stardust::basic::BasicOutput
Shared stardus...
E
E
I
I
Owned stardust::basic::BasicOutput
Owned stardust::basic::BasicOutput
NT
NT
SDR
SDR
O
O
I
I
T
T
Owned stardust::basic::BasicOutput
Owned stardust::basic::Basi...
NT
NT
SDR
SDR
O
O
I
I
Owned stardust::basic::BasicOutput
Owned stardust::basic::Basic...
NT
NT
O
O
I
I
T
T
Owned 0x2::coin::Coin<IOTA>
Owned 0x2::coi...
O
O
I
I
Yes
Yes
No
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
No
No
No
No
+
+
No
No
No, or expired
No, or expired
tokens: Bag<String, Balance<TokenType>
tokens: Bag<String, Balance<TokenType>
sdruc: Option<StorageDepositReturn>::Some(
StorageDepositReturn {
return_address: <RETURN ADDRESS>,
return_amount: <RETURN_AMOUNT>
}
)
sdruc: Option<StorageDepositReturn>::Some(...
timelock: Option<timelock>::Some(
Timelock {
unix_time: <UNIX_TIME>
}
)
timelock: Option<timelock>::Some(...
expiration: Option<Expiration>::Some(
Expiration {
owner: <ADDRESS-UNLOCK>,
return_address: <RETURN ADDRESS>,
unix_time: <UNIX_TIME>
}
)
expiration: Option<Expiration>::Some(...
owner(obj metadata): hash(<ADDRESS UNLOCK>)
owner(obj metadata): hash(<ADDRESS UNLOCK>)
balance: Balance<IOTA>
balance: Balance<IOTA>
O
O
NT
NT
SDR
SDR
E
E
I
I
T
T
Shared stardust::basic::BasicOutput
Shared stardust::basic::BasicOutp...
NT
NT
SDR
SDR
E
E
I
I
T
T
Owned 0x2::coin::Coin<TokenType>
Owned 0x2::coi...
O
O
NT
NT
balance: Balance<TokenType>
balance: Balance<TokenType>
NT
NT
Move Field Types
Move Field Types
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/site/static/img/guides/developer/advanced/stardust-on-move/dark/stardust-on-move-migration-graph.svg b/docs/site/static/img/guides/developer/advanced/stardust-on-move/dark/stardust-on-move-migration-graph.svg new file mode 100644 index 00000000000..7f7d83b755b --- /dev/null +++ b/docs/site/static/img/guides/developer/advanced/stardust-on-move/dark/stardust-on-move-migration-graph.svg @@ -0,0 +1,4 @@ + + + +
Basic Output
Basic Output
Expiration?
Expiration?
Native Tokens?
Native Tokens?
Native Tokens?
Native Tokens?
SDRUC?
SDRUC?
SDRUC?
SDRUC?
SDRUC?
SDRUC?
SDRUC?
SDRUC?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Timelock?
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
No
No
No
No
No
No
No
No
Owned stardust::basic::BasicOutput
Owned stardust::basic:...
O
O
I
I
T
T
Owned 0x2::coin::Coin<IOTA>
Owned 0x2::coi...
O
O
I
I
Owned stardust::basic::BasicOutput
Owned stardust::basic:...
SDR
SDR
O
O
I
I
Owned stardust::basic::BasicOutput
Owned stardust::basic::Basic...
SDR
SDR
O
O
I
I
T
T
Shared stardust::basic::BasicOutput
Shared stardust::basic::Bas...
NT
NT
SDR
SDR
E
E
I
I
Shared stardust::basic::BasicOutput
Shared stardust::basic::Ba...
NT
NT
E
E
I
I
T
T
Shared stardust::basic::BasicOutput
Shared stardust::bas...
NT
NT
E
E
I
I
Shared stardust::basic::BasicOutput
Shared stardust::basic::Ba...
SDR
SDR
E
E
I
I
T
T
Shared stardust::basic::BasicOutput
Shared stardust::bas...
SDR
SDR
E
E
I
I
Shared stardust::basic::BasicOutput
Shared stardust::b...
E
E
I
I
T
T
Shared stardust::basic::BasicOutput
Shared stardus...
E
E
I
I
Owned stardust::basic::BasicOutput
Owned stardust::basic::BasicOutput
NT
NT
SDR
SDR
O
O
I
I
T
T
Owned stardust::basic::BasicOutput
Owned stardust::basic::Basi...
NT
NT
SDR
SDR
O
O
I
I
Owned stardust::basic::BasicOutput
Owned stardust::basic::Basic...
NT
NT
O
O
I
I
T
T
Owned 0x2::coin::Coin<IOTA>
Owned 0x2::coi...
O
O
I
I
Yes
Yes
No
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
No
No
No
No
+
+
No
No
No, or expired
No, or expired
tokens: Bag<String, Balance<TokenType>
tokens: Bag<String, Balance<TokenType>
sdruc: Option<StorageDepositReturn>::Some(
StorageDepositReturn {
return_address: <RETURN ADDRESS>,
return_amount: <RETURN_AMOUNT>
}
)
sdruc: Option<StorageDepositReturn>::Some(...
timelock: Option<timelock>::Some(
Timelock {
unix_time: <UNIX_TIME>
}
)
timelock: Option<timelock>::Some(...
expiration: Option<Expiration>::Some(
Expiration {
owner: <ADDRESS-UNLOCK>,
return_address: <RETURN ADDRESS>,
unix_time: <UNIX_TIME>
}
)
expiration: Option<Expiration>::Some(...
owner(obj metadata): hash(<ADDRESS UNLOCK>)
owner(obj metadata): hash(<ADDRESS UNLOCK>)
balance: Balance<IOTA>
balance: Balance<IOTA>
O
O
NT
NT
SDR
SDR
E
E
I
I
T
T
Shared stardust::basic::BasicOutput
Shared stardust::basic::BasicOutp...
NT
NT
SDR
SDR
E
E
I
I
T
T
Owned 0x2::coin::Coin<TokenType>
Owned 0x2::coi...
O
O
NT
NT
balance: Balance<TokenType>
balance: Balance<TokenType>
NT
NT
Move Field Types
Move Field Types
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/site/static/json/about-iota/iota-architecture/consensus.json b/docs/site/static/json/about-iota/iota-architecture/consensus.json deleted file mode 100644 index c255097c480..00000000000 --- a/docs/site/static/json/about-iota/iota-architecture/consensus.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "questions": [ - { - "questionText": "What is the role of Narwhal in the IOTA consensus system?", - "answerOptions": [ - { "answerText": "It generates the final consensus on transaction ordering.", "isCorrect": false }, - { "answerText": "It ensures data submitted for consensus is readily available.", "isCorrect": true }, - { "answerText": "It provides cryptographic proofs of transaction execution.", "isCorrect": false }, - { "answerText": "It calculates validator rewards in IOTA.", "isCorrect": false } - ] - }, - { - "questionText": "How does Bullshark improve upon previous consensus algorithms used in IOTA?", - "answerOptions": [ - { "answerText": "By reducing transaction fees to zero.", "isCorrect": false }, - { "answerText": "By using a UTXO data model to speed up validation. ", "isCorrect": false }, - { "answerText": "By providing a consensus on the specific ordering of transactions.", "isCorrect": true }, - { "answerText": "By eliminating the need for validators.", "isCorrect": false } - ] - }, - { - "questionText": "Which cryptographic library is used by Narwhal for its cryptographic operations?", - "answerOptions": [ - { "answerText": "OpenSSL", "isCorrect": false }, - { "answerText": "fastcrypto", "isCorrect": true }, - { "answerText": "PyCryptodome", "isCorrect": false }, - { "answerText": "Libsodium", "isCorrect": false } - ] - }, - { - "questionText": "What is the structure used by Narwhal to organize transaction batches in the system?", - "answerOptions": [ - { "answerText": "Blockchain", "isCorrect": false }, - { "answerText": "Tree", "isCorrect": false }, - { "answerText": "Directed Acyclic Graph (DAG)", "isCorrect": true }, - { "answerText": "Circular Linked List", "isCorrect": false } - ] - } - ] - } - \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8255e037e8d..0cbced9dce2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,7 +58,7 @@ importers: version: 9.1.0(eslint@8.57.1) eslint-import-resolver-typescript: specifier: ^3.6.1 - version: 3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1) + version: 3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1) eslint-plugin-header: specifier: ^3.1.1 version: 3.1.1(eslint@8.57.1) @@ -118,7 +118,7 @@ importers: version: link:../../sdk/typescript '@nestjs/cache-manager': specifier: ^2.2.2 - version: 2.2.2(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(cache-manager@5.7.6)(rxjs@7.8.1) + version: 2.2.2(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(cache-manager@5.7.6)(rxjs@7.8.1) '@nestjs/common': specifier: ^10.0.0 version: 10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1) @@ -133,7 +133,7 @@ importers: version: 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4) '@nestjs/schedule': specifier: ^4.0.2 - version: 4.1.1(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1)) + version: 4.1.1(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4) cache-manager: specifier: ^5.6.1 version: 5.7.6 @@ -143,13 +143,13 @@ importers: devDependencies: '@nestjs/cli': specifier: ^10.0.0 - version: 10.4.5(@swc/core@1.7.28) + version: 10.4.5(@swc/core@1.7.28(@swc/helpers@0.5.5)) '@nestjs/schematics': specifier: ^10.0.0 version: 10.1.4(chokidar@3.6.0)(typescript@5.6.2) '@nestjs/testing': specifier: ^10.0.0 - version: 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)) + version: 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(@nestjs/platform-express@10.4.4) '@types/express': specifier: ^4.17.17 version: 4.17.21 @@ -179,7 +179,7 @@ importers: version: 5.2.1(@types/eslint@8.56.12)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.3.3) jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)) + version: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) prettier: specifier: ^3.3.1 version: 3.3.3 @@ -191,13 +191,13 @@ importers: version: 6.3.4 ts-jest: specifier: ^29.1.0 - version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)))(typescript@5.6.2) + version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)))(typescript@5.6.2) ts-loader: specifier: ^9.4.4 - version: 9.5.1(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.7.28)) + version: 9.5.1(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) ts-node: specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2) + version: 10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -264,13 +264,13 @@ importers: devDependencies: '@headlessui/tailwindcss': specifier: ^0.1.3 - version: 0.1.3(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2))) + version: 0.1.3(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2))) '@tailwindcss/aspect-ratio': specifier: ^0.4.2 - version: 0.4.2(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2))) + version: 0.4.2(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2))) '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.9(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2))) + version: 0.5.9(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2))) '@types/react': specifier: ^18.3.3 version: 18.3.9 @@ -282,7 +282,7 @@ importers: version: 8.4.47 tailwindcss: specifier: ^3.3.3 - version: 3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)) + version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)) typescript: specifier: ^5.5.3 version: 5.6.2 @@ -505,7 +505,7 @@ importers: version: 2.0.8 tailwindcss: specifier: ^3.3.3 - version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2)) + version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -632,7 +632,7 @@ importers: version: 4.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@7.6.20) tailwindcss: specifier: ^3.3.3 - version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2)) + version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) typescript: specifier: ^5.5.3 version: 5.6.2 @@ -897,7 +897,7 @@ importers: version: 0.10.7 '@types/webpack': specifier: ^5.28.1 - version: 5.28.5(@swc/core@1.7.28)(webpack-cli@5.1.4(webpack@5.95.0)) + version: 5.28.5(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) '@types/zxcvbn': specifier: ^4.4.1 version: 4.4.5 @@ -906,19 +906,19 @@ importers: version: 4.3.1(vite@5.4.8(@types/node@20.16.9)(sass@1.79.3)(terser@5.34.0)) copy-webpack-plugin: specifier: ^11.0.0 - version: 11.0.0(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)) + version: 11.0.0(webpack@5.95.0) cross-env: specifier: ^7.0.3 version: 7.0.3 css-loader: specifier: ^6.7.3 - version: 6.11.0(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)) + version: 6.11.0(webpack@5.95.0) dotenv: specifier: ^16.4.5 version: 16.4.5 eslint-webpack-plugin: specifier: ^4.0.1 - version: 4.2.0(eslint@8.57.1)(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)) + version: 4.2.0(eslint@8.57.1)(webpack@5.95.0) git-rev-sync: specifier: ^3.0.2 version: 3.0.2 @@ -927,10 +927,10 @@ importers: version: 10.11.2 html-webpack-plugin: specifier: ^5.5.3 - version: 5.6.0(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)) + version: 5.6.0(webpack@5.95.0) mini-css-extract-plugin: specifier: ^2.7.6 - version: 2.9.1(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)) + version: 2.9.1(webpack@5.95.0) onchange: specifier: ^7.1.0 version: 7.1.0 @@ -939,7 +939,7 @@ importers: version: 8.4.47 postcss-loader: specifier: ^7.3.3 - version: 7.3.4(postcss@8.4.47)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)) + version: 7.3.4(postcss@8.4.47)(typescript@5.6.2)(webpack@5.95.0) postcss-preset-env: specifier: ^9.0.0 version: 9.6.0(postcss@8.4.47) @@ -948,19 +948,19 @@ importers: version: 1.79.3 sass-loader: specifier: ^13.3.2 - version: 13.3.3(sass@1.79.3)(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)) + version: 13.3.3(sass@1.79.3)(webpack@5.95.0) tailwindcss: specifier: ^3.3.3 - version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2)) + version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2))) + version: 1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2))) ts-loader: specifier: ^9.4.4 - version: 9.5.1(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)) + version: 9.5.1(typescript@5.6.2)(webpack@5.95.0) ts-node: specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2) + version: 10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -981,7 +981,7 @@ importers: version: 7.12.0(body-parser@1.20.3) webpack: specifier: ^5.79.0 - version: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + version: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-cli: specifier: ^5.0.1 version: 5.1.4(webpack@5.95.0) @@ -1051,16 +1051,16 @@ importers: version: 14.2.3(eslint@8.57.1)(typescript@5.6.2) jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)) + version: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) postcss: specifier: ^8.4.31 version: 8.4.47 tailwindcss: specifier: ^3.3.3 - version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2)) + version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) ts-jest: specifier: ^29.1.0 - version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)))(typescript@5.6.2) + version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)))(typescript@5.6.2) typescript: specifier: ^5.5.3 version: 5.6.2 @@ -1100,7 +1100,7 @@ importers: devDependencies: '@headlessui/tailwindcss': specifier: ^0.1.3 - version: 0.1.3(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2))) + version: 0.1.3(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2))) '@types/react': specifier: ^18.3.3 version: 18.3.9 @@ -1118,7 +1118,7 @@ importers: version: 8.4.47 tailwindcss: specifier: ^3.3.3 - version: 3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)) + version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)) typescript: specifier: ^5.5.3 version: 5.6.2 @@ -1212,7 +1212,7 @@ importers: devDependencies: '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.9(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2))) + version: 0.5.9(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2))) '@tsconfig/docusaurus': specifier: ^2.0.3 version: 2.0.3 @@ -1233,10 +1233,10 @@ importers: version: 8.4.47 tailwindcss: specifier: ^3.3.3 - version: 3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)) + version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)) tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2))) + version: 1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2))) typescript: specifier: ^5.5.3 version: 5.6.2 @@ -1282,7 +1282,7 @@ importers: version: 8.4.47 tailwindcss: specifier: ^3.3.3 - version: 3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)) + version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)) typescript: specifier: ^5.5.3 version: 5.6.2 @@ -1300,25 +1300,25 @@ importers: version: 3.6.1(@algolia/client-search@4.24.0)(@types/react@18.3.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/core': specifier: 3.5.2 - version: 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + version: 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) '@docusaurus/preset-classic': specifier: 3.5.2 - version: 3.5.2(@algolia/client-search@4.24.0)(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + version: 3.5.2(@algolia/client-search@4.24.0)(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) '@docusaurus/remark-plugin-npm2yarn': specifier: ^3.5.2 version: 3.5.2 '@docusaurus/theme-common': specifier: ^3.5.2 - version: 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + version: 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) '@docusaurus/theme-live-codeblock': specifier: ^3.5.2 - version: 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + version: 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) '@docusaurus/theme-mermaid': specifier: ^3.5.2 - version: 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + version: 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) '@docusaurus/theme-search-algolia': specifier: ^3.5.2 - version: 3.5.2(@algolia/client-search@4.24.0)(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + version: 3.5.2(@algolia/client-search@4.24.0)(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) '@emotion/react': specifier: ^11.11.4 version: 11.13.3(@types/react@18.3.9)(react@18.3.1) @@ -1327,7 +1327,7 @@ importers: version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.9)(react@18.3.1))(@types/react@18.3.9)(react@18.3.1) '@graphql-markdown/docusaurus': specifier: ^1.24.1 - version: 1.26.2(@docusaurus/logger@3.5.2)(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql-config@5.1.2(@types/node@22.7.3)(graphql@16.9.0)(typescript@5.6.2))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2) + version: 1.26.2(@docusaurus/logger@3.5.2)(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(graphql-config@5.1.2(@types/node@22.7.3)(graphql@16.9.0)(typescript@5.6.2))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2) '@graphql-tools/graphql-file-loader': specifier: ^8.0.1 version: 8.0.1(graphql@16.9.0) @@ -1360,7 +1360,7 @@ importers: version: 3.2.0 docusaurus-theme-search-typesense: specifier: 0.20.0-0 - version: 0.20.0-0(@algolia/client-search@4.24.0)(@babel/runtime@7.25.6)(@docusaurus/core@3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/theme-common@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.9)(algoliasearch@4.24.0)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + version: 0.20.0-0(iea5eyhbiud2dlcqtud2g4pxzm) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -1382,6 +1382,9 @@ importers: markdown-to-jsx: specifier: ^7.4.7 version: 7.5.0(react@18.3.1) + plugin-image-zoom: + specifier: github:flexanalytics/plugin-image-zoom + version: https://codeload.github.com/flexanalytics/plugin-image-zoom/tar.gz/8e1b866c79ed6d42cefc4c52f851f1dfd1d0c7de postcss: specifier: ^8.4.31 version: 8.4.47 @@ -1414,7 +1417,7 @@ importers: version: 6.0.0 tailwindcss: specifier: ^3.3.3 - version: 3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)) + version: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)) web3: specifier: ^4.2.2 version: 4.13.0(typescript@5.6.2)(zod@3.23.8) @@ -1424,13 +1427,13 @@ importers: version: 7.25.2(@babel/core@7.25.2) '@docusaurus/module-type-aliases': specifier: 3.5.2 - version: 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/tsconfig': specifier: 3.5.2 version: 3.5.2 '@docusaurus/types': specifier: 3.5.2 - version: 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@metamask/providers': specifier: ^10.2.1 version: 10.2.1 @@ -2008,7 +2011,7 @@ importers: version: 5.6.2 typescript-json-schema: specifier: ^0.64.0 - version: 0.64.0(@swc/core@1.7.28) + version: 0.64.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) packages: @@ -12282,6 +12285,9 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} + medium-zoom@1.1.0: + resolution: {integrity: sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==} + mem@5.1.1: resolution: {integrity: sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==} engines: {node: '>=8'} @@ -13275,6 +13281,10 @@ packages: engines: {node: '>=18'} hasBin: true + plugin-image-zoom@https://codeload.github.com/flexanalytics/plugin-image-zoom/tar.gz/8e1b866c79ed6d42cefc4c52f851f1dfd1d0c7de: + resolution: {tarball: https://codeload.github.com/flexanalytics/plugin-image-zoom/tar.gz/8e1b866c79ed6d42cefc4c52f851f1dfd1d0c7de} + version: 1.1.0 + pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -18491,7 +18501,7 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/core@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/core@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: '@babel/core': 7.25.2 '@babel/generator': 7.25.6 @@ -18505,12 +18515,12 @@ snapshots: '@babel/traverse': 7.25.6 '@docusaurus/cssnano-preset': 3.4.0 '@docusaurus/logger': 3.4.0 - '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) autoprefixer: 10.4.20(postcss@8.4.47) - babel-loader: 9.2.1(@babel/core@7.25.2)(webpack@5.95.0) + babel-loader: 9.2.1(@babel/core@7.25.2)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 @@ -18519,34 +18529,34 @@ snapshots: cli-table3: 0.6.5 combine-promises: 1.2.0 commander: 5.1.0 - copy-webpack-plugin: 11.0.0(webpack@5.95.0) + copy-webpack-plugin: 11.0.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) core-js: 3.38.1 - css-loader: 6.11.0(webpack@5.95.0) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.95.0) + css-loader: 6.11.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) cssnano: 6.1.2(postcss@8.4.47) del: 6.1.1 detect-port: 1.6.1 escape-html: 1.0.3 eta: 2.2.0 eval: 0.1.8 - file-loader: 6.2.0(webpack@5.95.0) + file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) fs-extra: 11.2.0 html-minifier-terser: 7.2.0 html-tags: 3.3.1 - html-webpack-plugin: 5.6.0(webpack@5.95.0) + html-webpack-plugin: 5.6.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) leven: 3.1.0 lodash: 4.17.21 - mini-css-extract-plugin: 2.9.1(webpack@5.95.0) + mini-css-extract-plugin: 2.9.1(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) p-map: 4.0.0 postcss: 8.4.47 - postcss-loader: 7.3.4(postcss@8.4.47)(typescript@5.6.2)(webpack@5.95.0) + postcss-loader: 7.3.4(postcss@8.4.47)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) prompts: 2.4.2 react: 18.3.1 - react-dev-utils: 12.0.1(eslint@8.57.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)(webpack@5.95.0) + react-dev-utils: 12.0.1(eslint@8.57.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.95.0) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) react-router: 5.3.4(react@18.3.1) react-router-config: 5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1) react-router-dom: 5.3.4(react@18.3.1) @@ -18554,15 +18564,15 @@ snapshots: semver: 7.6.3 serve-handler: 6.1.5 shelljs: 0.8.5 - terser-webpack-plugin: 5.3.10(webpack@5.95.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) tslib: 2.7.0 update-notifier: 6.0.2 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0))(webpack@5.95.0) - webpack: 5.95.0 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2(webpack@5.95.0) + webpack-dev-server: 4.15.2(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) webpack-merge: 5.10.0 - webpackbar: 5.0.2(webpack@5.95.0) + webpackbar: 5.0.2(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) transitivePeerDependencies: - '@docusaurus/types' - '@parcel/css' @@ -18582,7 +18592,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/core@3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/core@3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: '@babel/core': 7.25.2 '@babel/generator': 7.25.6 @@ -18596,13 +18606,13 @@ snapshots: '@babel/traverse': 7.25.6 '@docusaurus/cssnano-preset': 3.5.2 '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) '@mdx-js/react': 3.0.1(@types/react@18.3.9)(react@18.3.1) autoprefixer: 10.4.20(postcss@8.4.47) - babel-loader: 9.2.1(@babel/core@7.25.2)(webpack@5.95.0) + babel-loader: 9.2.1(@babel/core@7.25.2)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 @@ -18611,34 +18621,34 @@ snapshots: cli-table3: 0.6.5 combine-promises: 1.2.0 commander: 5.1.0 - copy-webpack-plugin: 11.0.0(webpack@5.95.0) + copy-webpack-plugin: 11.0.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) core-js: 3.38.1 - css-loader: 6.11.0(webpack@5.95.0) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.95.0) + css-loader: 6.11.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) cssnano: 6.1.2(postcss@8.4.47) del: 6.1.1 detect-port: 1.6.1 escape-html: 1.0.3 eta: 2.2.0 eval: 0.1.8 - file-loader: 6.2.0(webpack@5.95.0) + file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) fs-extra: 11.2.0 html-minifier-terser: 7.2.0 html-tags: 3.3.1 - html-webpack-plugin: 5.6.0(webpack@5.95.0) + html-webpack-plugin: 5.6.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) leven: 3.1.0 lodash: 4.17.21 - mini-css-extract-plugin: 2.9.1(webpack@5.95.0) + mini-css-extract-plugin: 2.9.1(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) p-map: 4.0.0 postcss: 8.4.47 - postcss-loader: 7.3.4(postcss@8.4.47)(typescript@5.6.2)(webpack@5.95.0) + postcss-loader: 7.3.4(postcss@8.4.47)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) prompts: 2.4.2 react: 18.3.1 - react-dev-utils: 12.0.1(eslint@8.57.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)(webpack@5.95.0) + react-dev-utils: 12.0.1(eslint@8.57.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.95.0) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) react-router: 5.3.4(react@18.3.1) react-router-config: 5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1) react-router-dom: 5.3.4(react@18.3.1) @@ -18646,15 +18656,15 @@ snapshots: semver: 7.6.3 serve-handler: 6.1.5 shelljs: 0.8.5 - terser-webpack-plugin: 5.3.10(webpack@5.95.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) tslib: 2.7.0 update-notifier: 6.0.2 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0))(webpack@5.95.0) - webpack: 5.95.0 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2(webpack@5.95.0) + webpack-dev-server: 4.15.2(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) webpack-merge: 5.10.0 - webpackbar: 5.0.2(webpack@5.95.0) + webpackbar: 5.0.2(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) transitivePeerDependencies: - '@docusaurus/types' - '@parcel/css' @@ -18698,16 +18708,16 @@ snapshots: chalk: 4.1.2 tslib: 2.7.0 - '@docusaurus/mdx-loader@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)': + '@docusaurus/mdx-loader@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)': dependencies: '@docusaurus/logger': 3.4.0 - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) '@mdx-js/mdx': 3.0.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.1.2 - file-loader: 6.2.0(webpack@5.95.0) + file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) fs-extra: 11.2.0 image-size: 1.1.1 mdast-util-mdx: 3.0.0 @@ -18723,9 +18733,9 @@ snapshots: tslib: 2.7.0 unified: 11.0.5 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0))(webpack@5.95.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) vfile: 6.0.3 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) transitivePeerDependencies: - '@docusaurus/types' - '@swc/core' @@ -18735,16 +18745,16 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/mdx-loader@3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)': + '@docusaurus/mdx-loader@3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)': dependencies: '@docusaurus/logger': 3.5.2 - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) '@mdx-js/mdx': 3.0.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.1.2 - file-loader: 6.2.0(webpack@5.95.0) + file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) fs-extra: 11.2.0 image-size: 1.1.1 mdast-util-mdx: 3.0.0 @@ -18760,9 +18770,9 @@ snapshots: tslib: 2.7.0 unified: 11.0.5 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0))(webpack@5.95.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) vfile: 6.0.3 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) transitivePeerDependencies: - '@docusaurus/types' - '@swc/core' @@ -18772,9 +18782,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/module-type-aliases@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 '@types/react': 18.3.9 '@types/react-router-config': 5.0.11 @@ -18790,9 +18800,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/module-type-aliases@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 '@types/react': 18.3.9 '@types/react-router-config': 5.0.11 @@ -18808,17 +18818,17 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-content-blog@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.2.0 @@ -18830,7 +18840,7 @@ snapshots: tslib: 2.7.0 unist-util-visit: 5.0.0 utility-types: 3.11.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) transitivePeerDependencies: - '@mdx-js/react' - '@parcel/css' @@ -18850,16 +18860,16 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-docs@3.4.0(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-content-docs@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) '@docusaurus/logger': 3.4.0 - '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) - '@docusaurus/module-type-aliases': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/module-type-aliases': 3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.2.0 @@ -18869,7 +18879,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) tslib: 2.7.0 utility-types: 3.11.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -18888,17 +18898,17 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) - '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/module-type-aliases': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.2.0 @@ -18908,7 +18918,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) tslib: 2.7.0 utility-types: 3.11.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) transitivePeerDependencies: - '@mdx-js/react' - '@parcel/css' @@ -18928,18 +18938,18 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-content-pages@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.7.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) transitivePeerDependencies: - '@mdx-js/react' - '@parcel/css' @@ -18959,11 +18969,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-debug@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -18988,11 +18998,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-google-analytics@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.7.0 @@ -19015,11 +19025,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-google-gtag@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) '@types/gtag.js': 0.0.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -19043,11 +19053,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-google-tag-manager@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.7.0 @@ -19070,14 +19080,14 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-sitemap@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-sitemap@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) '@docusaurus/logger': 3.5.2 - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -19102,21 +19112,21 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.5.2(@algolia/client-search@4.24.0)(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-debug': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-google-analytics': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-google-gtag': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-google-tag-manager': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-sitemap': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/theme-classic': 3.5.2(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) - '@docusaurus/theme-search-algolia': 3.5.2(@algolia/client-search@4.24.0)(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/preset-classic@3.5.2(@algolia/client-search@4.24.0)(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + dependencies: + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-debug': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-google-analytics': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-google-gtag': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-google-tag-manager': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-sitemap': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/theme-classic': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/theme-search-algolia': 3.5.2(@algolia/client-search@4.24.0)(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: @@ -19156,20 +19166,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@docusaurus/theme-classic@3.5.2(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/theme-classic@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) - '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/module-type-aliases': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) '@docusaurus/theme-translations': 3.5.2 - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) '@mdx-js/react': 3.0.1(@types/react@18.3.9)(react@18.3.1) clsx: 2.1.1 copy-text-to-clipboard: 3.2.0 @@ -19204,13 +19214,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-common@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)': + '@docusaurus/theme-common@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)': dependencies: - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) - '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/module-type-aliases': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@types/history': 4.7.11 '@types/react': 18.3.9 '@types/react-router-config': 5.0.11 @@ -19230,12 +19240,12 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-live-codeblock@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/theme-live-codeblock@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) '@docusaurus/theme-translations': 3.5.2 - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) '@philpl/buble': 0.19.7 clsx: 2.1.1 fs-extra: 11.2.0 @@ -19264,13 +19274,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-mermaid@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/theme-mermaid@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/module-type-aliases': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) mermaid: 10.9.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -19295,16 +19305,16 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-search-algolia@3.5.2(@algolia/client-search@4.24.0)(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': + '@docusaurus/theme-search-algolia@3.5.2(@algolia/client-search@4.24.0)(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/react@18.3.9)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)': dependencies: '@docsearch/react': 3.6.1(@algolia/client-search@4.24.0)(@types/react@18.3.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) '@docusaurus/logger': 3.5.2 - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) '@docusaurus/theme-translations': 3.5.2 - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) algoliasearch: 4.24.0 algoliasearch-helper: 3.22.5(algoliasearch@4.24.0) clsx: 2.1.1 @@ -19350,7 +19360,7 @@ snapshots: '@docusaurus/tsconfig@3.5.2': {} - '@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@mdx-js/mdx': 3.0.1 '@types/history': 4.7.11 @@ -19361,7 +19371,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) utility-types: 3.11.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -19370,7 +19380,7 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@mdx-js/mdx': 3.0.1 '@types/history': 4.7.11 @@ -19381,7 +19391,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) utility-types: 3.11.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -19390,29 +19400,29 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@docusaurus/utils-common@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: tslib: 2.7.0 optionalDependencies: - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common@3.4.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@docusaurus/utils-common@3.4.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: tslib: 2.7.0 optionalDependencies: - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common@3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@docusaurus/utils-common@3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: tslib: 2.7.0 optionalDependencies: - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2)': + '@docusaurus/utils-validation@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2)': dependencies: '@docusaurus/logger': 3.4.0 - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) fs-extra: 11.2.0 joi: 17.13.3 js-yaml: 4.1.0 @@ -19427,11 +19437,11 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.4.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2)': + '@docusaurus/utils-validation@3.4.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2)': dependencies: '@docusaurus/logger': 3.4.0 - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) fs-extra: 11.2.0 joi: 17.13.3 js-yaml: 4.1.0 @@ -19446,11 +19456,11 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2)': + '@docusaurus/utils-validation@3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2)': dependencies: '@docusaurus/logger': 3.5.2 - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) fs-extra: 11.2.0 joi: 17.13.3 js-yaml: 4.1.0 @@ -19465,13 +19475,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2)': + '@docusaurus/utils@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2)': dependencies: '@docusaurus/logger': 3.4.0 - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@svgr/webpack': 8.1.0(typescript@5.6.2) escape-string-regexp: 4.0.0 - file-loader: 6.2.0(webpack@5.95.0) + file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) fs-extra: 11.2.0 github-slugger: 1.5.0 globby: 11.1.0 @@ -19484,11 +19494,11 @@ snapshots: resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.7.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0))(webpack@5.95.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) utility-types: 3.11.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) optionalDependencies: - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -19497,13 +19507,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.4.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2)': + '@docusaurus/utils@3.4.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2)': dependencies: '@docusaurus/logger': 3.4.0 - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@svgr/webpack': 8.1.0(typescript@5.6.2) escape-string-regexp: 4.0.0 - file-loader: 6.2.0(webpack@5.95.0) + file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) fs-extra: 11.2.0 github-slugger: 1.5.0 globby: 11.1.0 @@ -19516,11 +19526,11 @@ snapshots: resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.7.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0))(webpack@5.95.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) utility-types: 3.11.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) optionalDependencies: - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -19529,13 +19539,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2)': + '@docusaurus/utils@3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2)': dependencies: '@docusaurus/logger': 3.5.2 - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@svgr/webpack': 8.1.0(typescript@5.6.2) escape-string-regexp: 4.0.0 - file-loader: 6.2.0(webpack@5.95.0) + file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) fs-extra: 11.2.0 github-slugger: 1.5.0 globby: 11.1.0 @@ -19548,11 +19558,11 @@ snapshots: resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.7.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0))(webpack@5.95.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) utility-types: 3.11.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) optionalDependencies: - '@docusaurus/types': 3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -20117,24 +20127,24 @@ snapshots: - encoding - supports-color - '@graphql-markdown/core@1.12.0(@graphql-markdown/printer-legacy@1.9.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2))(graphql-config@5.1.2(@types/node@22.7.3)(graphql@16.9.0)(typescript@5.6.2))(graphql@16.9.0)(prettier@3.3.3)': + '@graphql-markdown/core@1.12.0(@graphql-markdown/printer-legacy@1.9.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2))(graphql-config@5.1.2(@types/node@22.7.3)(graphql@16.9.0)(typescript@5.6.2))(graphql@16.9.0)(prettier@3.3.3)': dependencies: '@graphql-markdown/graphql': 1.1.4(graphql@16.9.0)(prettier@3.3.3) '@graphql-markdown/logger': 1.0.4 '@graphql-markdown/utils': 1.7.0(prettier@3.3.3) optionalDependencies: - '@graphql-markdown/printer-legacy': 1.9.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2) + '@graphql-markdown/printer-legacy': 1.9.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2) graphql-config: 5.1.2(@types/node@22.7.3)(graphql@16.9.0)(typescript@5.6.2) transitivePeerDependencies: - graphql - prettier - '@graphql-markdown/docusaurus@1.26.2(@docusaurus/logger@3.5.2)(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql-config@5.1.2(@types/node@22.7.3)(graphql@16.9.0)(typescript@5.6.2))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2)': + '@graphql-markdown/docusaurus@1.26.2(@docusaurus/logger@3.5.2)(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(graphql-config@5.1.2(@types/node@22.7.3)(graphql@16.9.0)(typescript@5.6.2))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2)': dependencies: '@docusaurus/logger': 3.5.2 - '@graphql-markdown/core': 1.12.0(@graphql-markdown/printer-legacy@1.9.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2))(graphql-config@5.1.2(@types/node@22.7.3)(graphql@16.9.0)(typescript@5.6.2))(graphql@16.9.0)(prettier@3.3.3) + '@graphql-markdown/core': 1.12.0(@graphql-markdown/printer-legacy@1.9.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2))(graphql-config@5.1.2(@types/node@22.7.3)(graphql@16.9.0)(typescript@5.6.2))(graphql@16.9.0)(prettier@3.3.3) '@graphql-markdown/logger': 1.0.4 - '@graphql-markdown/printer-legacy': 1.9.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2) + '@graphql-markdown/printer-legacy': 1.9.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2) transitivePeerDependencies: - '@docusaurus/types' - '@graphql-markdown/diff' @@ -20159,9 +20169,9 @@ snapshots: '@graphql-markdown/logger@1.0.4': {} - '@graphql-markdown/printer-legacy@1.9.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2)': + '@graphql-markdown/printer-legacy@1.9.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(graphql@16.9.0)(prettier@3.3.3)(typescript@5.6.2)': dependencies: - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) '@graphql-markdown/graphql': 1.1.4(graphql@16.9.0)(prettier@3.3.3) '@graphql-markdown/utils': 1.7.0(prettier@3.3.3) transitivePeerDependencies: @@ -20499,9 +20509,9 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@headlessui/tailwindcss@0.1.3(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)))': + '@headlessui/tailwindcss@0.1.3(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)))': dependencies: - tailwindcss: 3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)) + tailwindcss: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)) '@hookform/resolvers@3.9.0(react-hook-form@7.53.0(react@18.3.1))': dependencies: @@ -20579,7 +20589,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0(node-notifier@10.0.0) @@ -20593,7 +20603,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -21098,14 +21108,14 @@ snapshots: pump: 3.0.2 tar-fs: 2.1.1 - '@nestjs/cache-manager@2.2.2(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(cache-manager@5.7.6)(rxjs@7.8.1)': + '@nestjs/cache-manager@2.2.2(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(cache-manager@5.7.6)(rxjs@7.8.1)': dependencies: '@nestjs/common': 10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) cache-manager: 5.7.6 rxjs: 7.8.1 - '@nestjs/cli@10.4.5(@swc/core@1.7.28)': + '@nestjs/cli@10.4.5(@swc/core@1.7.28(@swc/helpers@0.5.5))': dependencies: '@angular-devkit/core': 17.3.8(chokidar@3.6.0) '@angular-devkit/schematics': 17.3.8(chokidar@3.6.0) @@ -21115,7 +21125,7 @@ snapshots: chokidar: 3.6.0 cli-table3: 0.6.5 commander: 4.1.1 - fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.94.0(@swc/core@1.7.28)) + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.94.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) glob: 10.4.2 inquirer: 8.2.6 node-emoji: 1.11.0 @@ -21124,7 +21134,7 @@ snapshots: tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.1.0 typescript: 5.3.3 - webpack: 5.94.0(@swc/core@1.7.28) + webpack: 5.94.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) webpack-node-externals: 3.0.0 optionalDependencies: '@swc/core': 1.7.28(@swc/helpers@0.5.5) @@ -21177,7 +21187,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@nestjs/schedule@4.1.1(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))': + '@nestjs/schedule@4.1.1(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)': dependencies: '@nestjs/common': 10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) @@ -21206,7 +21216,7 @@ snapshots: transitivePeerDependencies: - chokidar - '@nestjs/testing@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4))': + '@nestjs/testing@10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@10.4.4)(@nestjs/platform-express@10.4.4)': dependencies: '@nestjs/common': 10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1) '@nestjs/core': 10.4.4(@nestjs/common@10.4.4(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/platform-express@10.4.4)(reflect-metadata@0.2.2)(rxjs@7.8.1) @@ -23831,14 +23841,14 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)))': + '@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)))': dependencies: - tailwindcss: 3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)) + tailwindcss: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)) - '@tailwindcss/forms@0.5.9(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)))': + '@tailwindcss/forms@0.5.9(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)))': dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)) + tailwindcss: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)) '@tanstack/eslint-plugin-query@5.58.1(eslint@8.57.1)(typescript@5.6.2)': dependencies: @@ -24342,11 +24352,11 @@ snapshots: '@types/webextension-polyfill@0.10.7': {} - '@types/webpack@5.28.5(@swc/core@1.7.28)(webpack-cli@5.1.4(webpack@5.95.0))': + '@types/webpack@5.28.5(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4)': dependencies: '@types/node': 20.16.9 tapable: 2.2.1 - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -25121,19 +25131,19 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.95.0)': dependencies: - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.95.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.95.0)': dependencies: - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.95.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.95.0)': dependencies: - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.95.0) '@whatwg-node/events@0.0.3': {} @@ -25624,12 +25634,12 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.2.1(@babel/core@7.25.2)(webpack@5.95.0): + babel-loader@9.2.1(@babel/core@7.25.2)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: '@babel/core': 7.25.2 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) babel-plugin-dynamic-import-node@2.3.3: dependencies: @@ -26429,7 +26439,7 @@ snapshots: copy-text-to-clipboard@3.2.0: {} - copy-webpack-plugin@11.0.0(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)): + copy-webpack-plugin@11.0.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: fast-glob: 3.3.2 glob-parent: 6.0.2 @@ -26437,7 +26447,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) copy-webpack-plugin@11.0.0(webpack@5.95.0): dependencies: @@ -26447,7 +26457,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) core-js-compat@3.38.1: dependencies: @@ -26517,13 +26527,13 @@ snapshots: crc-32@1.2.2: {} - create-jest@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)): + create-jest@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -26593,7 +26603,7 @@ snapshots: postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - css-loader@6.11.0(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)): + css-loader@6.11.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: icss-utils: 5.1.0(postcss@8.4.47) postcss: 8.4.47 @@ -26604,7 +26614,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) css-loader@6.11.0(webpack@5.95.0): dependencies: @@ -26617,9 +26627,9 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.95.0): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: '@jridgewell/trace-mapping': 0.3.25 cssnano: 6.1.2(postcss@8.4.47) @@ -26627,7 +26637,7 @@ snapshots: postcss: 8.4.47 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) optionalDependencies: clean-css: 5.3.3 @@ -27176,15 +27186,15 @@ snapshots: dependencies: typedoc-plugin-markdown: 4.2.10(typedoc@0.26.11(typescript@5.6.2)) - docusaurus-theme-search-typesense@0.20.0-0(@algolia/client-search@4.24.0)(@babel/runtime@7.25.6)(@docusaurus/core@3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/theme-common@3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.9)(algoliasearch@4.24.0)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16): + docusaurus-theme-search-typesense@0.20.0-0(iea5eyhbiud2dlcqtud2g4pxzm): dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) '@docusaurus/logger': 3.4.0 - '@docusaurus/plugin-content-docs': 3.4.0(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) + '@docusaurus/plugin-content-docs': 3.4.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16) + '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(vue-template-compiler@2.7.16))(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2) '@docusaurus/theme-translations': 3.4.0 - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.2) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.5.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.7.28(@swc/helpers@0.5.5))(typescript@5.6.2) algoliasearch-helper: 3.22.5(algoliasearch@4.24.0) clsx: 1.2.1 eta: 2.2.0 @@ -27630,7 +27640,7 @@ snapshots: debug: 4.3.7(supports-color@8.1.1) enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 @@ -27643,26 +27653,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1): - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.3.7(supports-color@8.1.1) - enhanced-resolve: 5.17.1 - eslint: 8.57.1 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1) - fast-glob: 3.3.2 - get-tsconfig: 4.8.1 - is-bun-module: 1.2.1 - is-glob: 4.0.3 - optionalDependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color - - eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: @@ -27673,17 +27664,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.6.2) - eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1) - transitivePeerDependencies: - - supports-color - eslint-plugin-header@3.1.1(eslint@8.57.1): dependencies: eslint: 8.57.1 @@ -27699,7 +27679,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -27814,7 +27794,7 @@ snapshots: eslint-visitor-keys@4.1.0: {} - eslint-webpack-plugin@4.2.0(eslint@8.57.1)(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)): + eslint-webpack-plugin@4.2.0(eslint@8.57.1)(webpack@5.95.0): dependencies: '@types/eslint': 8.56.12 eslint: 8.57.1 @@ -27822,7 +27802,7 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 schema-utils: 4.2.0 - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) eslint@8.57.1: dependencies: @@ -28187,11 +28167,11 @@ snapshots: dependencies: flat-cache: 3.2.0 - file-loader@6.2.0(webpack@5.95.0): + file-loader@6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) file-system-cache@2.3.0: dependencies: @@ -28299,7 +28279,7 @@ snapshots: forever-agent@0.6.1: {} - fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)(webpack@5.95.0): + fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: '@babel/code-frame': 7.24.7 '@types/json-schema': 7.0.15 @@ -28315,12 +28295,12 @@ snapshots: semver: 7.6.3 tapable: 1.1.3 typescript: 5.6.2 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) optionalDependencies: eslint: 8.57.1 vue-template-compiler: 2.7.16 - fork-ts-checker-webpack-plugin@9.0.2(typescript@5.3.3)(webpack@5.94.0(@swc/core@1.7.28)): + fork-ts-checker-webpack-plugin@9.0.2(typescript@5.3.3)(webpack@5.94.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: '@babel/code-frame': 7.24.7 chalk: 4.1.2 @@ -28335,7 +28315,7 @@ snapshots: semver: 7.6.3 tapable: 2.2.1 typescript: 5.3.3 - webpack: 5.94.0(@swc/core@1.7.28) + webpack: 5.94.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) form-data-encoder@2.1.4: {} @@ -29097,7 +29077,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.0(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -29105,7 +29085,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) html-webpack-plugin@5.6.0(webpack@5.95.0): dependencies: @@ -29115,7 +29095,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) htmlparser2@6.1.0: dependencies: @@ -29750,16 +29730,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)): + jest-cli@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)) + create-jest: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -29771,7 +29751,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)): + jest-config@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)): dependencies: '@babel/core': 7.25.2 '@jest/test-sequencer': 29.7.0 @@ -29797,7 +29777,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.16.9 - ts-node: 10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2) + ts-node: 10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -30028,12 +30008,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)): + jest@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)) + jest-cli: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) optionalDependencies: node-notifier: 10.0.0 transitivePeerDependencies: @@ -30791,6 +30771,8 @@ snapshots: media-typer@0.3.0: {} + medium-zoom@1.1.0: {} + mem@5.1.1: dependencies: map-age-cleaner: 0.1.3 @@ -31314,17 +31296,17 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.1(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)): + mini-css-extract-plugin@2.9.1(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) mini-css-extract-plugin@2.9.1(webpack@5.95.0): dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) mini-svg-data-uri@1.4.4: {} @@ -32055,6 +32037,10 @@ snapshots: optionalDependencies: fsevents: 2.3.2 + plugin-image-zoom@https://codeload.github.com/flexanalytics/plugin-image-zoom/tar.gz/8e1b866c79ed6d42cefc4c52f851f1dfd1d0c7de: + dependencies: + medium-zoom: 1.1.0 + pluralize@8.0.0: {} polished@4.3.1: @@ -32257,29 +32243,29 @@ snapshots: '@csstools/utilities': 1.0.0(postcss@8.4.47) postcss: 8.4.47 - postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2)): + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)): dependencies: lilconfig: 3.1.2 yaml: 2.5.1 optionalDependencies: postcss: 8.4.47 - ts-node: 10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2) + ts-node: 10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2) - postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)): + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)): dependencies: lilconfig: 3.1.2 yaml: 2.5.1 optionalDependencies: postcss: 8.4.47 - ts-node: 10.9.2(@types/node@22.7.3)(typescript@5.6.2) + ts-node: 10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2) - postcss-loader@7.3.4(postcss@8.4.47)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)): + postcss-loader@7.3.4(postcss@8.4.47)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: cosmiconfig: 8.3.6(typescript@5.6.2) jiti: 1.21.6 postcss: 8.4.47 semver: 7.6.3 - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) transitivePeerDependencies: - typescript @@ -32289,7 +32275,7 @@ snapshots: jiti: 1.21.6 postcss: 8.4.47 semver: 7.6.3 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) transitivePeerDependencies: - typescript @@ -32796,7 +32782,7 @@ snapshots: react: 18.3.1 tween-functions: 1.2.0 - react-dev-utils@12.0.1(eslint@8.57.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)(webpack@5.95.0): + react-dev-utils@12.0.1(eslint@8.57.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: '@babel/code-frame': 7.24.7 address: 1.2.2 @@ -32807,7 +32793,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@8.57.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)(webpack@5.95.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.1)(typescript@5.6.2)(vue-template-compiler@2.7.16)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -32822,7 +32808,7 @@ snapshots: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: @@ -32923,11 +32909,11 @@ snapshots: sucrase: 3.35.0 use-editable: 2.3.3(react@18.3.1) - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.95.0): + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: '@babel/runtime': 7.25.6 react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) react-number-format@5.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -33619,10 +33605,10 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@13.3.3(sass@1.79.3)(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)): + sass-loader@13.3.3(sass@1.79.3)(webpack@5.95.0): dependencies: neo-async: 2.6.2 - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) optionalDependencies: sass: 1.79.3 @@ -34354,15 +34340,15 @@ snapshots: tailwind-merge@2.5.2: {} - tailwindcss-animate@1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2))): dependencies: - tailwindcss: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2)) + tailwindcss: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) - tailwindcss-animate@1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2))): dependencies: - tailwindcss: 3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)) + tailwindcss: 3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)) - tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2)): + tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -34381,7 +34367,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.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2)) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) postcss-nested: 6.2.0(postcss@8.4.47) postcss-selector-parser: 6.1.2 resolve: 1.22.8 @@ -34389,7 +34375,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.4.13(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)): + tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -34408,7 +34394,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.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2)) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2)) postcss-nested: 6.2.0(postcss@8.4.47) postcss-selector-parser: 6.1.2 resolve: 1.22.8 @@ -34464,48 +34450,39 @@ snapshots: term-size@2.2.1: {} - terser-webpack-plugin@5.3.10(@swc/core@1.7.28)(webpack@5.94.0(@swc/core@1.7.28)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.34.0 - webpack: 5.94.0(@swc/core@1.7.28) + webpack: 5.94.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) optionalDependencies: '@swc/core': 1.7.28(@swc/helpers@0.5.5) - terser-webpack-plugin@5.3.10(@swc/core@1.7.28)(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.34.0 - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) optionalDependencies: '@swc/core': 1.7.28(@swc/helpers@0.5.5) - terser-webpack-plugin@5.3.10(@swc/core@1.7.28)(webpack@5.95.0(@swc/core@1.7.28)): + terser-webpack-plugin@5.3.10(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack@5.95.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.34.0 - webpack: 5.95.0(@swc/core@1.7.28) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) optionalDependencies: '@swc/core': 1.7.28(@swc/helpers@0.5.5) - terser-webpack-plugin@5.3.10(webpack@5.95.0): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.34.0 - webpack: 5.95.0 - terser@5.34.0: dependencies: '@jridgewell/source-map': 0.3.6 @@ -34650,12 +34627,12 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)))(typescript@5.6.2): + ts-jest@29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)))(typescript@5.6.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@types/node@20.16.9)(typescript@5.6.2)) + jest: 29.7.0(@types/node@20.16.9)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -34669,7 +34646,7 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.25.2) - ts-loader@9.5.1(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)): + ts-loader@9.5.1(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: chalk: 4.1.2 enhanced-resolve: 5.17.1 @@ -34677,9 +34654,9 @@ snapshots: semver: 7.6.3 source-map: 0.7.4 typescript: 5.6.2 - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) - ts-loader@9.5.1(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.7.28)): + ts-loader@9.5.1(typescript@5.6.2)(webpack@5.95.0): dependencies: chalk: 4.1.2 enhanced-resolve: 5.17.1 @@ -34687,11 +34664,11 @@ snapshots: semver: 7.6.3 source-map: 0.7.4 typescript: 5.6.2 - webpack: 5.95.0(@swc/core@1.7.28) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) ts-log@2.2.5: {} - ts-node@10.9.2(@swc/core@1.7.28)(@types/node@16.18.111)(typescript@5.1.6): + ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@16.18.111)(typescript@5.1.6): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -34711,7 +34688,7 @@ snapshots: optionalDependencies: '@swc/core': 1.7.28(@swc/helpers@0.5.5) - ts-node@10.9.2(@swc/core@1.7.28)(@types/node@20.16.9)(typescript@5.6.2): + ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@20.16.9)(typescript@5.6.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -34731,7 +34708,7 @@ snapshots: optionalDependencies: '@swc/core': 1.7.28(@swc/helpers@0.5.5) - ts-node@10.9.2(@types/node@22.7.3)(typescript@5.6.2): + ts-node@10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@22.7.3)(typescript@5.6.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -34748,6 +34725,8 @@ snapshots: typescript: 5.6.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.7.28(@swc/helpers@0.5.5) optional: true ts-retry-promise@0.8.1: {} @@ -34917,14 +34896,14 @@ snapshots: transitivePeerDependencies: - supports-color - typescript-json-schema@0.64.0(@swc/core@1.7.28): + typescript-json-schema@0.64.0(@swc/core@1.7.28(@swc/helpers@0.5.5)): dependencies: '@types/json-schema': 7.0.15 '@types/node': 16.18.111 glob: 7.2.3 path-equal: 1.2.5 safe-stable-stringify: 2.5.0 - ts-node: 10.9.2(@swc/core@1.7.28)(@types/node@16.18.111)(typescript@5.1.6) + ts-node: 10.9.2(@swc/core@1.7.28(@swc/helpers@0.5.5))(@types/node@16.18.111)(typescript@5.1.6) typescript: 5.1.6 yargs: 17.7.2 transitivePeerDependencies: @@ -35165,14 +35144,14 @@ snapshots: dependencies: punycode: 2.3.1 - url-loader@4.1.1(file-loader@6.2.0(webpack@5.95.0))(webpack@5.95.0): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) optionalDependencies: - file-loader: 6.2.0(webpack@5.95.0) + file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) url-parse@1.5.10: dependencies: @@ -35919,9 +35898,9 @@ snapshots: webpack-cli@5.1.4(webpack@5.95.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.95.0) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.95.0) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.95.0) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -35930,19 +35909,19 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4) webpack-merge: 5.10.0 - webpack-dev-middleware@5.3.4(webpack@5.95.0): + webpack-dev-middleware@5.3.4(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): 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.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) - webpack-dev-server@4.15.2(webpack@5.95.0): + webpack-dev-server@4.15.2(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -35972,10 +35951,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.95.0) + webpack-dev-middleware: 5.3.4(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) ws: 8.18.0 optionalDependencies: - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) transitivePeerDependencies: - bufferutil - debug @@ -35994,37 +35973,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.94.0(@swc/core@1.7.28): - dependencies: - '@types/estree': 1.0.6 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.24.0 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.28)(webpack@5.94.0(@swc/core@1.7.28)) - watchpack: 2.4.2 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.95.0: + webpack@5.94.0(@swc/core@1.7.28(@swc/helpers@0.5.5)): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.12.1 @@ -36046,7 +35995,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.95.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -36054,7 +36003,7 @@ snapshots: - esbuild - uglify-js - webpack@5.95.0(@swc/core@1.7.28): + webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.12.1 @@ -36076,7 +36025,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.28)(webpack@5.95.0(@swc/core@1.7.28)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -36084,7 +36033,7 @@ snapshots: - esbuild - uglify-js - webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4): + webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack-cli@5.1.4): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.12.1 @@ -36106,7 +36055,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.28)(webpack@5.95.0(@swc/core@1.7.28)(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.28(@swc/helpers@0.5.5))(webpack@5.95.0) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: @@ -36116,13 +36065,13 @@ snapshots: - esbuild - uglify-js - webpackbar@5.0.2(webpack@5.95.0): + webpackbar@5.0.2(webpack@5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5))): dependencies: chalk: 4.1.2 consola: 2.15.3 pretty-time: 1.1.0 std-env: 3.7.0 - webpack: 5.95.0 + webpack: 5.95.0(@swc/core@1.7.28(@swc/helpers@0.5.5)) websocket-driver@0.7.4: dependencies: