From 75553a0d6431fe58dabff789305c2affb05f88d2 Mon Sep 17 00:00:00 2001 From: Alex Ni <12097569+nialexsan@users.noreply.github.com> Date: Mon, 21 Oct 2024 11:04:07 -0400 Subject: [PATCH 01/12] more fixes --- .../06-staking-contract-reference.md | 10 ++-- .../build/core-contracts/10-nft-storefront.md | 36 ++++++------- .../guides/account-linking/child-accounts.md | 2 +- docs/build/smart-contracts/overview.md | 2 +- .../access-nodes/access-node-setup.mdx | 4 +- .../access-nodes/accessing-data/access-api.md | 2 +- docs/networks/node-ops/node-operation/faq.md | 4 +- .../guides/genesis-bootstrap.md | 2 +- .../machine-existing-operator.md | 2 +- .../node-ops/node-operation/node-bootstrap.md | 54 +++++++++---------- docs/networks/staking/04-epoch-preparation.md | 4 +- .../staking/05-epoch-scripts-events.md | 25 ++++----- .../staking/07-staking-scripts-events.md | 22 ++++---- docs/networks/staking/09-qc-dkg.md | 37 +++++++------ docs/tools/clients/fcl-js/scripts.md | 2 +- 15 files changed, 107 insertions(+), 101 deletions(-) diff --git a/docs/build/core-contracts/06-staking-contract-reference.md b/docs/build/core-contracts/06-staking-contract-reference.md index dd88bf14fd..eea8c8bf07 100644 --- a/docs/build/core-contracts/06-staking-contract-reference.md +++ b/docs/build/core-contracts/06-staking-contract-reference.md @@ -4,7 +4,7 @@ sidebar_position: 6 sidebar_label: Staking Table --- -# Contract +## Contract The `FlowIDTableStaking` contract is the central table that manages staked nodes, delegation and rewards. @@ -17,13 +17,13 @@ Source: [FlowIDTableStaking.cdc](https://github.com/onflow/flow-core-contracts/b | Testnet | `0x9eca2b38b18b5dfe` | | Mainnet | `0x8624b52f9ddcd04a` | -# Transactions and Scripts +## Transactions and Scripts Transactions for the staking contract are in the `flow-core-contracts` repo. Developers and users are advised to use [the staking collection transactions](../../networks/staking/14-staking-collection.md) to stake tokens instead of the basic transactions that are used for tests. -## Getting Staking Info with Scripts +### Getting Staking Info with Scripts These scripts are read-only and get info about the current state of the staking contract. @@ -41,12 +41,12 @@ These scripts are read-only and get info about the current state of the staking | **`SC.10`** | Get All Info about a single Delegator | [idTableStaking/delegation/get_delegator_info.cdc](https://github.com/onflow/flow-core-contracts/blob/master/transactions/idTableStaking/delegation/get_delegator_info.cdc) | | **`SC.11`** | Get a node's total Commitment | [idTableStaking/get_node_total_commitment_without_delegators.cdc](https://github.com/onflow/flow-core-contracts/blob/master/transactions/idTableStaking/scripts/get_node_total_commitment_without_delegators.cdc) | -## Delegator Transactions +### Delegator Transactions Documentation for delegating with tokens is described in the staking documentation for [the staking collection](../../networks/staking/14-staking-collection.md) -# Events +## Events The `FlowIDTableStaking` contract emits an event whenever an important action occurs. See the [staking events Documentation](../../networks/staking/07-staking-scripts-events.md) for more information about each event. diff --git a/docs/build/core-contracts/10-nft-storefront.md b/docs/build/core-contracts/10-nft-storefront.md index 9a454def60..529d9e29e5 100644 --- a/docs/build/core-contracts/10-nft-storefront.md +++ b/docs/build/core-contracts/10-nft-storefront.md @@ -74,7 +74,7 @@ The `NFTStorefrontV2` contract doesn’t support selling an NFT for multiple dif ![scenario_1](./scenario_1.png) -Putting an NFT on sell called listing, seller can create a listing using [sell_item](https://github.com/onflow/nft-storefront/blob/main/transactions/sell_item.cdc) transaction by providing some required details to list an NFT, i.e. Receiving currency type, [Capability](https://cadence-lang.org/docs/language/capabilities) from where NFT will be deducted etc. If interested look [here](<#fun-createListing()>) for more details. +Putting an NFT on sell called listing, seller can create a listing using [sell_item](https://github.com/onflow/nft-storefront/blob/main/transactions/sell_item.cdc) transaction by providing some required details to list an NFT, i.e. Receiving currency type, [Capability](https://cadence-lang.org/docs/language/capabilities) from where NFT will be deducted etc. If interested look [here](<#fun-createlisting>) for more details. To receive a different currency seller has to provide a different **Receiver currency type** , i.e. `salePaymentVaultType` As depicted in the above diagram, There are two listing formations with almost the same inputs. The only differentiator is the `salePaymentVaultType` parameter that needs to be different when creating duplicate NFT listings with different sale currency types. @@ -82,7 +82,7 @@ To receive a different currency seller has to provide a different **Receiver cur Dapps can leverage the **NFTStorefrontV2** to facilitate the creation of a listing for the seller independent of any marketplace. Dapps or marketplaces can list those listings on their platforms, or seller can settle it p2p. -The seller can use [sell_item](https://github.com/onflow/nft-storefront/blob/main/transactions/sell_item.cdc) transaction to create a p2p listing, providing the `marketplacesAddress` with an empty array. The seller has a choice of providing [commission](#commission) to the facilitator of sale, which can also act as a discount if the facilitator and the purchaser are the same. +The seller can use [sell_item](https://github.com/onflow/nft-storefront/blob/main/transactions/sell_item.cdc) transaction to create a p2p listing, providing the `marketplacesAddress` with an empty array. The seller has a choice of providing [commission](#enabling-marketplace-commissions-for-nft-sales) to the facilitator of sale, which can also act as a discount if the facilitator and the purchaser are the same. ### **Scenario 3:** The seller wants to list its NFT in different marketplaces. @@ -179,7 +179,7 @@ An interface providing a useful public interface to a Listing. ### Functions -**fun `borrowNFT()`** +#### **fun `borrowNFT()`** ```cadence fun borrowNFT(): &NonFungibleToken.NFT? @@ -190,7 +190,7 @@ if the NFT is absent, for example if it has been sold via another listing. --- -**fun `purchase()`** +#### **fun `purchase()`** ```cadence fun purchase(payment FungibleToken.Vault, commissionRecipient Capability<&{FungibleToken.Receiver}>?): NonFungibleToken.NFT @@ -202,7 +202,7 @@ Respective saleCuts are transferred to beneficiaries and funtion return underlyi --- -**fun `getDetails()`** +#### **fun `getDetails()`** ```cadence fun getDetails(): ListingDetails @@ -212,7 +212,7 @@ Fetches the details of the listings --- -**fun `getAllowedCommissionReceivers()`** +#### **fun `getAllowedCommissionReceivers()`** ```cadence fun getAllowedCommissionReceivers(): [Capability<&{FungibleToken.Receiver}>]? @@ -262,7 +262,7 @@ fun init() ### Functions -**fun `createListing()`** +#### **fun `createListing()`** ```cadence fun createListing(nftProviderCapability Capability<&{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>, nftType Type, nftID UInt64, salePaymentVaultType Type, saleCuts [SaleCut], marketplacesCapability [Capability<&{FungibleToken.Receiver}>]?, customID String?, commissionAmount UFix64, expiry UInt64): UInt64 @@ -273,7 +273,7 @@ Create and publish a Listing for an NFT. --- -**fun `removeListing()`** +#### **fun `removeListing()`** ```cadence fun removeListing(listingResourceID UInt64) @@ -284,7 +284,7 @@ Remove a Listing that has not yet been purchased from the collection and destroy --- -**fun `getListingIDs()`** +#### **fun `getListingIDs()`** ```cadence fun getListingIDs(): [UInt64] @@ -295,7 +295,7 @@ Returns an array of the Listing resource IDs that are in the collection --- -**fun `getDuplicateListingIDs()`** +#### **fun `getDuplicateListingIDs()`** ```cadence fun getDuplicateListingIDs(nftType Type, nftID UInt64, listingID UInt64): [UInt64] @@ -306,7 +306,7 @@ Returns an array of listing IDs that are duplicates of the given `nftType` and ` --- -**fun `cleanupExpiredListings()`** +#### **fun `cleanupExpiredListings()`** ```cadence fun cleanupExpiredListings(fromIndex UInt64, toIndex UInt64) @@ -317,7 +317,7 @@ Cleanup the expired listing by iterating over the provided range of indexes. --- -**fun `borrowListing()`** +#### **fun `borrowListing()`** ```cadence fun borrowListing(listingResourceID: UInt64): &{ListingPublic}? @@ -347,7 +347,7 @@ in a Storefront. ### Functions -**fun `getListingIDs()`** +#### **fun `getListingIDs()`** ```cadence fun getListingIDs(): [UInt64] @@ -357,7 +357,7 @@ getListingIDs Returns an array of the Listing resource IDs that are in the colle --- -**fun `getDuplicateListingIDs()`** +#### **fun `getDuplicateListingIDs()`** ```cadence fun getDuplicateListingIDs(nftType Type, nftID UInt64, listingID UInt64): [UInt64] @@ -367,7 +367,7 @@ getDuplicateListingIDs Returns an array of listing IDs that are duplicates of th --- -**fun `borrowListing()`** +#### **fun `borrowListing()`** ```cadence fun borrowListing(listingResourceID UInt64): &Listing{ListingPublic}? @@ -377,7 +377,7 @@ borrowListing Returns a read-only view of the listing for the given listingID if --- -**fun `cleanupExpiredListings()`** +#### **fun `cleanupExpiredListings()`** ```cadence fun cleanupExpiredListings(fromIndex UInt64, toIndex UInt64) @@ -387,7 +387,7 @@ cleanupExpiredListings Cleanup the expired listing by iterating over the provide --- -**fun `cleanupPurchasedListings()`** +#### **fun `cleanupPurchasedListings()`** ```cadence fun cleanupPurchasedListings(listingResourceID: UInt64) @@ -398,7 +398,7 @@ Allows anyone to remove already purchased listings. --- -**fun `getExistingListingIDs()`** +#### **fun `getExistingListingIDs()`** ```cadence fun getExistingListingIDs(nftType Type, nftID UInt64): [UInt64] diff --git a/docs/build/guides/account-linking/child-accounts.md b/docs/build/guides/account-linking/child-accounts.md index ec3da9624a..afa320a656 100644 --- a/docs/build/guides/account-linking/child-accounts.md +++ b/docs/build/guides/account-linking/child-accounts.md @@ -107,7 +107,7 @@ in a way that allows the receiving account to maintain that Capability and allow either end of the linkage - the user's main "parent" account and the linked "child" account. This is accomplished in the `HybridCustody` contract which we'll continue to use in this guidance. -### Pre-requisitess +### Pre-requisites Since account delegation is mediated by developer-defined rules, you should make sure to first configure the resources that contain those rules. Contracts involved in defining and enforcing this ruleset are diff --git a/docs/build/smart-contracts/overview.md b/docs/build/smart-contracts/overview.md index 5598b898c6..4d6c72dfb1 100644 --- a/docs/build/smart-contracts/overview.md +++ b/docs/build/smart-contracts/overview.md @@ -38,7 +38,7 @@ Permanence is a key property of blockchains; users trust that the data they stor ### Storage Limits & Fees -However, there are practical constraints to storing data on a blockchain. Developer and user accounts must retain a small amount of FLOW tokens, known as the storage fee, for bytes of data stored in their accounts. The minimum storage fee will grant each account a minimum storage amount. If an account holds assets that demand more bytes of storage, the account will need to retain more FLOW tokens to increase the storage amount according to Flow's [fee schedule](../basics/fees.md#fees). A more compact data model can keep storage needs down. \ +However, there are practical constraints to storing data on a blockchain. Developer and user accounts must retain a small amount of FLOW tokens, known as the storage fee, for bytes of data stored in their accounts. The minimum storage fee will grant each account a minimum storage amount. If an account holds assets that demand more bytes of storage, the account will need to retain more FLOW tokens to increase the storage amount according to Flow's [fee schedule](../basics/fees.md#storage). A more compact data model can keep storage needs down. \ \ Furthermore, a single Flow transaction has a size limit of 4MB, which limits the rate at which large amounts of data can be transferred to the blockchain. diff --git a/docs/networks/node-ops/access-onchain-data/access-nodes/access-node-setup.mdx b/docs/networks/node-ops/access-onchain-data/access-nodes/access-node-setup.mdx index 3c2565604f..255bc83b50 100644 --- a/docs/networks/node-ops/access-onchain-data/access-nodes/access-node-setup.mdx +++ b/docs/networks/node-ops/access-onchain-data/access-nodes/access-node-setup.mdx @@ -32,7 +32,7 @@ In order to join the network at epoch N+1, the access node **must** be registere Currently on mainnet, the staking auction starts every Wednesday at around 20:00 UTC and ends on the next Wednesday at around 12:00 UTC. Since this deadline may shift slightly from epoch to epoch, we recommend the node be staked by _Wednesday, 8:00 UTC_ to be able to join the network in the next epoch. -Confirmation of a new node's inclusion in epoch N+1 is included in the [`EpochSetup` event](../../../staking/05-epoch-scripts-events.md#epochsetup). +Confirmation of a new node's inclusion in epoch N+1 is included in the [`EpochSetup` event](../../../staking/05-epoch-scripts-events.md#flowepochepochsetup). ![Flow Epoch Schedule](../../node-operation/epoch-startup-order.png) @@ -209,7 +209,7 @@ When you stake the node, the tokens will show up under the `tokensCommitted` buc If the node is not selected, the tokens are moved to the `tokensUnstaked` bucket. ### Check Using Flow Port -You can check these balances on Flow Port before and after the epoch transition that will occur on Wednesday (see [timing](#Timing)). +You can check these balances on Flow Port before and after the epoch transition that will occur on Wednesday (see [timing](#timing)). When you stake the node, you should see the following on Flow Port under `Stake & Delegate` diff --git a/docs/networks/node-ops/access-onchain-data/access-nodes/accessing-data/access-api.md b/docs/networks/node-ops/access-onchain-data/access-nodes/accessing-data/access-api.md index 25cc2d4b2e..f0d47e6abf 100644 --- a/docs/networks/node-ops/access-onchain-data/access-nodes/accessing-data/access-api.md +++ b/docs/networks/node-ops/access-onchain-data/access-nodes/accessing-data/access-api.md @@ -1347,7 +1347,7 @@ message TransactionSignature { | [proposal_key](#proposal-key) | Account key used to propose the transaction | | payer | Address of the payer account | | authorizers | Addresses of the transaction authorizers | -| signatures | [Signatures](#transaction-signatures) from all signer accounts | +| signatures | [Signatures](#transaction-signature) from all signer accounts | The detailed semantics of transaction creation, signing and submission are covered in the [transaction submission guide](../../../../../build/basics/transactions.md#signing-a-transaction). diff --git a/docs/networks/node-ops/node-operation/faq.md b/docs/networks/node-ops/node-operation/faq.md index 3ce21ed3d7..b82afebfa1 100644 --- a/docs/networks/node-ops/node-operation/faq.md +++ b/docs/networks/node-ops/node-operation/faq.md @@ -19,7 +19,7 @@ In the long-term, anyone can run a node validator on Flow. ### How do I generate keys? -Please follow the instructions provided here: [Generate Your Node Keys](./node-bootstrap.md#generating-your-node-id) +Please follow the instructions provided here: [Generate Your Node Keys](./node-bootstrap.md#generating-your-node-keys) ### How do I check on the status of my node? @@ -33,7 +33,7 @@ See [Staking & Epochs](../../staking/index.md#epochs) for general information an ### Would it hurt the network to have a node that constantly spins up and down? All staked nodes except access nodes, have to be online at all time. A staked node, other than an access node, which is not online can cause severe degradation of network performance and will be subjected to slashing of rewards. -A way to prevent this is to check your equipment meets Flow's [recommended requirements](./node-setup.md#hardware-requirements), periodically checking for updates and announcements in Discord but also using a node monitoring system for when your node does go offline. +A way to prevent this is to check your equipment meets Flow's [recommended requirements](./node-provisioning.md#hardware-requirements), periodically checking for updates and announcements in Discord but also using a node monitoring system for when your node does go offline. ### Does Flow has a regular schedule for Sporks? diff --git a/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md b/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md index 53c20d6ac8..02e194bd84 100644 --- a/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md +++ b/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md @@ -57,7 +57,7 @@ Start the bootstrapping process by generating your Staking Key and Networking Ke This command generates two keys, a Staking Key and a Network Key, and stores them both in a `.node-info` file. Both these keys are needed during runtime and must be present as a file to start your flow node. -For more details around all the keys that are needed to run nodes and their usage, see the [Node Keys](../node-bootstrap.md#generating-your-node-id) overview. +For more details around all the keys that are needed to run nodes and their usage, see the [Node Keys](../node-bootstrap.md#generating-your-node-keys) overview. The bootstrapping process will create a file structure similar to the following diff --git a/docs/networks/node-ops/node-operation/machine-existing-operator.md b/docs/networks/node-ops/node-operation/machine-existing-operator.md index b45deb0466..41da58d05d 100644 --- a/docs/networks/node-ops/node-operation/machine-existing-operator.md +++ b/docs/networks/node-ops/node-operation/machine-existing-operator.md @@ -70,7 +70,7 @@ $tree ./bootstrap/ ## Create Machine Account You will now need to copy the Machine account public key displayed in the terminal output and -head over to [Flow Port](../../../networks/flow-port/staking-guide.md#existing-node-operators) to submit a transaction to create a Machine Account. +head over to [Flow Port](../../../networks/flow-port/staking-guide.md#stake-a-node) to submit a transaction to create a Machine Account. For example, from the example above, we would copy `f847...` from this line: ```shell Example diff --git a/docs/networks/node-ops/node-operation/node-bootstrap.md b/docs/networks/node-ops/node-operation/node-bootstrap.md index 582ef5d4b8..31298912bc 100644 --- a/docs/networks/node-ops/node-operation/node-bootstrap.md +++ b/docs/networks/node-ops/node-operation/node-bootstrap.md @@ -12,7 +12,7 @@ This guide is for getting a new node staked and running on Flow other than a per New nodes are able to join the network each time a new epoch begins. In order to join the network at epoch N+1, the node must be registered with sufficient stake and authorized by the service account prior to the end of epoch N's Staking Auction Phase. -Confirmation of a new node's inclusion in epoch N+1 is included in the [`EpochSetup` event](../../staking/05-epoch-scripts-events.md#epochsetup). +Confirmation of a new node's inclusion in epoch N+1 is included in the [`EpochSetup` event](../../staking/05-epoch-scripts-events.md#flowepochepochsetup). Nodes registered for epoch N+1 are able to participate in network communication on a limited basis starting in the `Epoch Setup Phase` of epoch N. @@ -25,15 +25,15 @@ of the `Epoch Setup Phase` to participate in the [Epoch Preparation Protocol](.. ## Step 1 - Run Genesis Bootstrap - +:::info You will need to run this process for each node that you are operating - +::: ### Download the Bootstrapping Kit - +:::warning If you have downloaded the bootstrapping kit previously, ensure you check the hash below still matches. If not, re-download to ensure you are using the most up-to-date version. - +::: ```shell curl -sL -O storage.googleapis.com/flow-genesis-bootstrap/boot-tools.tar @@ -54,31 +54,31 @@ f146bdc82ce0cce73c0fb9de284b2e2639e851120f8b89a1dd9368e8442123b4 ./boot-tools/t #### Network Address - +:::info Use a fully qualified domain name for the network address. Please also include the port number in the network address e.g. `example.com:3569` - +::: - +:::warning Do not include in `http://` format. - +::: - +:::info If you are running multiple nodes, please ensure you have different addresses for each node. - +::: - +:::warning All your current keys and Flow genesis files should be in the `bootstrap` folder created earlier. Please take a back up of the entire folder. - +::: ```shell @@ -128,12 +128,12 @@ $tree ./bootstrap/ 3 directories, 4 files ``` - +:::info For `consensus` and `collection` node types an additional key will be created for the Machine Account. For all other node types this will not be needed. - +::: #### Machine Account Creation @@ -151,11 +151,11 @@ $./boot-tools/bootstrap key --address YOUR_NODE_ADDRESS_GOES_HERE --role YOUR_NO INF wrote file bootstrap/private-root-information/private-node-info_ab6e0b15837de7e5261777cb65665b318cf3f94492dde27c1ea13830e989bbf9/node-machine-account-key.priv.json ``` - +:::warning Copy the machine account public key somewhere safe. You will need it in a later step. - +::: ## Step 2 - Stake Your Node @@ -180,19 +180,19 @@ This value is found in the output of the `bootstrap key` command from Step 1. Staking a collection or consensus node will also create a machine account for the node. The machine account will be mentioned in the output of the staking transaction displayed by Flow Port. Please save the machine account for the next step. - +:::info Please let us know your node id via discord or email. - +::: ### Finalize Machine Account Setup - +:::warning If you are not running a collection or consensus node, you can skip this step. - +::: You will now need to use the `bootstrap` utility to run `machine-account` with the created address to finalize the set up of your Machine account. @@ -293,22 +293,22 @@ This is the recommended way to start your node for the first time. ``` 4. Start your node (see [guide](./node-setup#start-the-node)) - +:::info Once the node has bootstrapped, these flags will be ignored and may be removed. - +::: ### Manually Provisioned Root Snapshot You can also provision the root snapshot file manually, then start the node without configuring Dynamic Startup. See [here](./protocol-state-bootstrap.md) for the available options to provision a Root Snapshot. - +:::warning The snapshot must be within the `Epoch Setup Phase`. - +::: - +:::warning Since Collection and Consensus Nodes must start up in the first ~30mins of the `Epoch Setup Phase` (see [Timing](./node-bootstrap.md#timing)), the snapshot must be provisioned within this time window. - +::: Once a valid root snapshot file is downloaded to the node's bootstrap folder, it can be started (see [guide](./node-setup.md#start-the-node)) diff --git a/docs/networks/staking/04-epoch-preparation.md b/docs/networks/staking/04-epoch-preparation.md index 7676e2f21f..db2db5e2a9 100644 --- a/docs/networks/staking/04-epoch-preparation.md +++ b/docs/networks/staking/04-epoch-preparation.md @@ -192,7 +192,7 @@ are sufficiently long to perform all required tasks before the epoch ends. the `Epoch Smart Contract` computes the seat assignment information for the next epoch, and emits a specialized service event, the `EpochSetup` event, with the timing and identity table information about the next epoch. -See the [Epoch Setup Event Documentation](./05-epoch-scripts-events.md#epochsetup) +See the [Epoch Setup Event Documentation](./05-epoch-scripts-events.md#flowepochepochsetup) for a detailed breakdown of the epoch setup event. ## Phase 1: Epoch Setup @@ -237,7 +237,7 @@ the `FlowEpoch` Smart Contract computes the public key shares generated by the D and the `QC`s for the collector clusters and publishes these as `EpochCommit` service event. The `FlowEpoch` Smart Contract should emit this event as soon as the artifacts are determined. -See the [Epoch Commit Event Documentation](./05-epoch-scripts-events.md#epochcommit) +See the [Epoch Commit Event Documentation](./05-epoch-scripts-events.md#flowepochepochcommit) for a detailed breakdown of the epoch commit event. ## Phase 2: Epoch Committed diff --git a/docs/networks/staking/05-epoch-scripts-events.md b/docs/networks/staking/05-epoch-scripts-events.md index 68ecb94544..dd294a2db0 100644 --- a/docs/networks/staking/05-epoch-scripts-events.md +++ b/docs/networks/staking/05-epoch-scripts-events.md @@ -1,21 +1,22 @@ --- title: Query Epoch Info with Scripts or Events sidebar_label: Epoch Scripts and Events +toc_max_heading_level: 4 --- -# Introduction +## Introduction The epoch contract stores a lot of different state, and the state is constantly changing. As an external party, there are two ways to keep track of these state changes. You can either use Cadence scripts to query the state of the contract at any given time, or you can monitor events that are emitted by the epoch contract to be notified of any important occurrences. -# Monitor Epoch Service Events +## Monitor Epoch Service Events These events can be queried using the Go or JavaScript SDKs to extract useful notifications and information about the state of the epoch preparation protocol. -## What is a Service Event? +### What is a Service Event? Service events are special messages that are generated by smart contracts and included in execution results. They enable communication between system smart contracts and the Flow protocol. @@ -50,9 +51,9 @@ The diagram below illustrates the steps each service event goes through to be in For conciseness, we say a service event is `sealed` when the block in which it was emitted is sealed, and we say a service event is `finalized` when the block containing the seal is finalized. -## Event Descriptions +### Event Descriptions -### `FlowEpoch.EpochStart` +#### `FlowEpoch.EpochStart` The Epoch Start service event is emitted by `FlowEpoch.startNewEpoch()` when the epoch commit phase ends and the Epoch Smart Contracts transition @@ -86,7 +87,7 @@ It contains the relevant metadata for the new epoch that was generated during th ) ``` -### `FlowEpoch.EpochSetup` +#### `FlowEpoch.EpochSetup` The Epoch Setup service event is emitted by `FlowEpoch.startEpochSetup()` when the staking auction phase ends and the Epoch Smart Contracts transition to the Epoch Setup phase. @@ -131,7 +132,7 @@ access(all) event EpochSetup ( ) ``` -### `FlowEpoch.EpochCommit` +#### `FlowEpoch.EpochCommit` The `EpochCommit` service event is emitted when the Epoch Smart Contracts transition from the Epoch Setup phase to the Epoch Commit phase. @@ -157,7 +158,7 @@ access(all) event EpochCommit ( ``` -# Query Information with Scripts +## Query Information with Scripts The `FlowEpoch` smart contract stores important metadata about the current, proposed, and previous epochs. Metadata for all historical epochs is stored permanently @@ -204,7 +205,7 @@ access(all) struct EpochMetadata { } ``` -### Get Epoch Metadata +#### Get Epoch Metadata The `FlowEpoch` smart contract provides a public function, `FlowEpoch.getEpochMetadata()` to query the metadata for a particular epoch. @@ -216,7 +217,7 @@ with the following arguments: | ---------------- | ---------| --------------------------------------------- | | **epochCounter** | `UInt64` | The counter of the epoch to get metadata for. | -### Get Configurable Metadata +#### Get Configurable Metadata The `FlowEpoch` smart contract also has a set of metadata that is configurable by the admin for phase lengths, number of collector clusters, and inflation percentage. @@ -246,7 +247,7 @@ to get the list of configurable metadata: This script does not require any arguments. -### Get Epoch Counter +#### Get Epoch Counter The `FlowEpoch` smart contract always tracks the counter of the current epoch. @@ -255,7 +256,7 @@ to get the current epoch counter. This script does not require any arguments. -### Get Epoch Phase +#### Get Epoch Phase The `FlowEpoch` smart contract always tracks the active phase of the current epoch. diff --git a/docs/networks/staking/07-staking-scripts-events.md b/docs/networks/staking/07-staking-scripts-events.md index cc0ebe32b9..36af2a8532 100644 --- a/docs/networks/staking/07-staking-scripts-events.md +++ b/docs/networks/staking/07-staking-scripts-events.md @@ -20,7 +20,7 @@ to be above the minimum requirement and have been selected to participate in the This means that new access nodes that have not been selected with the random slot selection algorithm will not be included in this list. -You can use the **Get Proposed Table**([SC.05](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info)) script for retrieving this info. +You can use the **Get Proposed Table**([SC.05](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info-with-scripts)) script for retrieving this info. This script requires no arguments. @@ -30,7 +30,7 @@ This script requires no arguments. Returns an array of nodeIDs that are currently staked. Staked nodes are nodes that are staked and participating in the current epoch. -You can use the **Get Current Table**([SC.04](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info)) script for retrieving this info. +You can use the **Get Current Table**([SC.04](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info-with-scripts)) script for retrieving this info. This script requires no arguments. @@ -50,7 +50,7 @@ This script requires no arguments. associated with the specified node ID. You can see the `NodeInfo` definition in the [FlowIDTableStaking smart contract.](https://github.com/onflow/flow-core-contracts/blob/master/contracts/FlowIDTableStaking.cdc#L254) -You can use the **Get Node Info**([SC.08](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info)) script +You can use the **Get Node Info**([SC.08](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info-with-scripts)) script with the following arguments: | Argument | Type | Description | @@ -69,7 +69,7 @@ with the following arguments: `FlowIDTableStaking.NodeInfo(_ nodeID: String).totalCommittedWithDelegators()`: Returns the total committed balance for a node, which is their total tokens staked + committed, plus all of the staked + committed tokens of all their delegators. -You can use the **Get Node Total Commitment**([SC.09](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info)) script +You can use the **Get Node Total Commitment**([SC.09](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info-with-scripts)) script with the following argument: | Argument | Type | Description | @@ -81,7 +81,7 @@ with the following argument: `FlowIDTableStaking.NodeInfo(_ nodeID: String).totalCommittedWithoutDelegators()`: Returns the total committed balance for a node, which is their total tokens staked + committed, plus all of the staked + committed tokens of all their delegators. -You can use the **Get Only Node Total Commitment**([SC.11](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info)) script +You can use the **Get Only Node Total Commitment**([SC.11](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info-with-scripts)) script with the following argument: | Argument | Type | Description | @@ -94,7 +94,7 @@ with the following argument: associated with the specified node ID and delegator ID. You can see the `DelegatorInfo` definition in the [FlowIDTableStaking smart contract.](https://github.com/onflow/flow-core-contracts/blob/master/contracts/FlowIDTableStaking.cdc#L375) -You can use the **Get Delegator Info**([SC.10](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info)) +You can use the **Get Delegator Info**([SC.10](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info-with-scripts)) script with the following arguments: | Argument | Type | Description | @@ -113,7 +113,7 @@ with the following arguments: `FlowIDTableStaking.getRewardCutPercentage(): UFix64`: Returns a `UFix64` number for the cut of delegator rewards that each node operator takes. -You can use the **Get Cut Percentage**([SC.01](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info)) script to retrieve this info. +You can use the **Get Cut Percentage**([SC.01](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info-with-scripts)) script to retrieve this info. This script requires no arguments. @@ -122,7 +122,7 @@ This script requires no arguments. `FlowIDTableStaking.getMinimumStakeRequirements(): {UInt8: UFix64}`: Returns a mapping for the stake requirements for each node type. -You can use the **Get stake requirements**([SC.02](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info)) script to retrieve this info. +You can use the **Get stake requirements**([SC.02](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info-with-scripts)) script to retrieve this info. This script requires no arguments. @@ -130,19 +130,19 @@ This script requires no arguments. `FlowIDTableStaking.getEpochTokenPayout(): UFix64`: Returns a `UFix64` value for the total number of FLOW paid out each epoch (week). -You can use the **Get weekly payout**([SC.03](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info)) script to retrieve this info. +You can use the **Get weekly payout**([SC.03](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info-with-scripts)) script to retrieve this info. This script requires no arguments. ## Get the total FLOW staked: -You can use the **Get total FLOW staked**([SC.06](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info)) script to retrieve this info. +You can use the **Get total FLOW staked**([SC.06](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info-with-scripts)) script to retrieve this info. This script requires no arguments. ## Get the total FLOW staked by all the nodes of a single node role: -You can use the **Get total FLOW staked by node type**([SC.07](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info)) script +You can use the **Get total FLOW staked by node type**([SC.07](../../build/core-contracts/06-staking-contract-reference.md#getting-staking-info-with-scripts)) script with the following arguments: | Argument | Type | Description | diff --git a/docs/networks/staking/09-qc-dkg.md b/docs/networks/staking/09-qc-dkg.md index a5ef69064f..ef0f43213f 100644 --- a/docs/networks/staking/09-qc-dkg.md +++ b/docs/networks/staking/09-qc-dkg.md @@ -2,20 +2,25 @@ title: Quorum Certificate and Distributed Key Generation sidebar_label: QC and DKG description: How the Flow protocol manages the Epoch Setup Phase +toc_max_heading_level: 4 --- - +:::warning + If you haven't read the Intro to Flow Staking document and the Epoch protocol document, please read that first. Those documents provide an overview of epochs on Flow for all users and are necessary prerequisites to this document. - - + +::: + +:::warning + This document assumes you have some technical knowledge about the Flow blockchain and programming environment. - +::: -# Epoch Setup Phase +## Epoch Setup Phase **Purpose:** During the epoch setup phase, all nodes participating in the upcoming epoch must perform setup tasks in preparation for the upcoming epoch, including @@ -24,7 +29,7 @@ the Collector Cluster Quorum Certificate Generation and Consensus Committe Distr **Duration:** The epoch setup phase begins right after the `EpochSetup` service event is emitted. It ends with the block where `EpochCommit` service emitted. -# Machine Accounts +## Machine Accounts The processes described in this document are fully automated. @@ -47,7 +52,7 @@ also provides a method to create a machine account for an existing node. See the [Staking Collection Docs](./14-staking-collection.md#machine-account-support) for more information. -# Collector Cluster Quorum Certificate Generation Protocol +## Collector Cluster Quorum Certificate Generation Protocol The collector nodes are organized into clusters and must bootstrap the Hotstuff consensus algorithm for each cluster. To do this, @@ -57,9 +62,9 @@ If 2/3 of the collectors in a cluster have voted with the same unique vote, then the cluster is considered complete. Once all clusters are complete, the QC is complete. -## `FlowClusterQC` Transactions +### `FlowClusterQC` Transactions -### Create QC Voter Object +#### Create QC Voter Object A node uses the [`getClusterQCVoter()`](https://github.com/onflow/flow-core-contracts/blob/master/contracts/epochs/FlowEpoch.cdc#L905) function in the `FlowEpoch` contract to create their Voter object and needs to provide @@ -76,7 +81,7 @@ If a user is not using the staking collection, they can use the **Create QC Vote transaction. This will only store the QC Voter object in the account that stores the `NodeStaker` object. It does not create a machine account or store it elsewhere, so it is not recommended to use. We encourage to use the staking collection instead. -### Submit Vote +#### Submit Vote During the Epoch Setup Phase, the node software should submit the votes for the QC generation automatically using the **Submit QC Vote** ([QC.02](../../build/core-contracts/07-epoch-contract-reference.md#quorum-certificate-transactions-and-scripts)) @@ -87,7 +92,7 @@ transaction with the following arguments. | **voteSignature** | `String` | The signed message (signed with the node's staking key) | | **voteMessage** | `String` | The raw message itself. | -# Consensus Committee Distributed Key Generation Protocol (DKG) +## Consensus Committee Distributed Key Generation Protocol (DKG) The Random Beacon Committee for the next Epoch (currently all consensus nodes) will run the DKG through a specialized smart contract, `FlowDKG`. @@ -98,9 +103,9 @@ as their final submission. If `(# of consensus nodes-1)/2` consensus nodes submit the same key array, the DKG is considered to be complete. -## `FlowDKG` Transactions +### `FlowDKG` Transactions -### Create DKG Participant Object +#### Create DKG Participant Object A node uses the [`getDKGParticipant()`](https://github.com/onflow/flow-core-contracts/blob/master/contracts/epochs/FlowEpoch.cdc#L919) function in the `FlowEpoch` contract to create their Voter object and needs to provide @@ -118,7 +123,7 @@ transaction. This will only store the DKG Participant object in the account that It does not create a machine account or store it elsewhere, so it is not recommended to use. The staking collection is the recommended method. -### Post Whiteboard Message +#### Post Whiteboard Message During the Epoch Setup Phase, the node software should post whiteboard messages to the DKG automatically using the **Post Whiteboard Message** ([DKG.02](../../build/core-contracts/07-epoch-contract-reference.md#dkg-transactions-and-scripts)) @@ -128,7 +133,7 @@ transaction with the following arguments. |-------------------|----------|-------------| | **content** | `String` | The content of the whiteboard message | -### Send Final Submission +#### Send Final Submission During the Epoch Setup Phase, the node software should send its final submission for the DKG automatically using the **Send Final Submission** ([DKG.03](../../build/core-contracts/07-epoch-contract-reference.md#dkg-transactions-and-scripts)) @@ -138,7 +143,7 @@ transaction with the following arguments. |--------------------|-------------|-------------| | **submission** | `[String?]` | The final key vector submission for the DKG. | -# Monitor Events and Query State from the QC and DKG Contracts +## Monitor Events and Query State from the QC and DKG Contracts See the [QC and DKG events and scripts document](./10-qc-dkg-scripts-events.md) for information about the events that can be emitted by these contracts and scripts you can use to query information. diff --git a/docs/tools/clients/fcl-js/scripts.md b/docs/tools/clients/fcl-js/scripts.md index 290f101171..844050e442 100644 --- a/docs/tools/clients/fcl-js/scripts.md +++ b/docs/tools/clients/fcl-js/scripts.md @@ -29,7 +29,7 @@ console.log(response) // 3 ### A more complicated Script -Things like [Resources](../../../build/smart-contracts/cadence.md#resources) and [Structs](../../../build/smart-contracts/cadence.md#structures) are fairly common place in Cadence. +Things like [Resources](https://cadence-lang.org/docs/language/resources) and [Structs](https://cadence-lang.org/docs/language/composite-types) are fairly common place in Cadence. In the following code snippet, our script defines a struct called `Point`, it then returns a list of them. From 0b320575f8ba638389faeded43bed8d01c7f6d00 Mon Sep 17 00:00:00 2001 From: Alex Ni <12097569+nialexsan@users.noreply.github.com> Date: Mon, 21 Oct 2024 11:54:18 -0400 Subject: [PATCH 02/12] more fixes --- docs/build/basics/transactions.md | 19 +- docs/tools/clients/fcl-js/api.md | 21 ++- docs/tools/clients/fcl-js/index.mdx.txt | 176 ------------------- docs/tools/clients/fcl-js/sdk-guidelines.md | 2 +- docs/tools/clients/fcl-js/user-signatures.md | 2 +- docs/tools/clients/flow-go-sdk/index.mdx | 4 + 6 files changed, 33 insertions(+), 191 deletions(-) delete mode 100644 docs/tools/clients/fcl-js/index.mdx.txt diff --git a/docs/build/basics/transactions.md b/docs/build/basics/transactions.md index d777334503..be1c561478 100644 --- a/docs/build/basics/transactions.md +++ b/docs/build/basics/transactions.md @@ -1,6 +1,9 @@ --- sidebar_position: 3 -keywords: [Flow Transaction Speed, Flow Transaction Time, Transactions on Flow] +keywords: + - Flow Transaction Speed + - Flow Transaction Time + - Transactions on Flow --- # Transactions @@ -19,7 +22,7 @@ In order for a transaction to be valid and executed it must contain signatures f ![Screenshot 2023-08-17 at 14.52.56.png](_transactions_images/Screenshot_2023-08-17_at_14.52.56.png) -**Script** +#### Script The script section contains instructions for transaction execution. This is a Cadence program in source code form (human-readable), and encoded as UTF-8. The transaction program must contain a `transaction` declaration. @@ -40,19 +43,19 @@ transaction(greeting: String) { } ``` -**Arguments** +#### Arguments Transactions may declare parameters it needs during execution, these must be provided as input arguments when sending a transaction. You can think of them as function arguments. Currently, we provide [arguments in the JSON-Cadence Data Interchange Format](https://cadencelang.dev/docs/1.0/json-cadence-spec). Which is a human-readable JSON format. The sample script from above accepts a single `String` argument. -**Reference Block** +#### Reference Block A reference to a recent block used for expiry. A transaction is considered expired if it is submitted to Flow after reference block height + N, where N is a constant defined by the network. On mainnet current setting for N is 600 which amounts to approximately 10 minutes for expiry (please note this is subject to change). -**Gas Limit** +#### Gas Limit When a transaction is executed each operation consumes a predefined amount of computational units (we define more about that in the Fees documentation). This defines the maximum amount of computation that is allowed to be done during this transaction. If a transaction completes execution using fewer computational units than the limit, it remains unaffected. However, if it hits this limit during execution, the transaction will fail, its changes will be reverted, but fees will still be applied. The maximum computational limit for Flow mainnet is currently at 9999, but this might change. The maximum network limit is defined to protect the network from transactions that would run forever. -**Proposal Key** +#### Proposal Key Each transaction must declare a proposal key, which can be an account key from any Flow account (App, User or Wallet). The account that owns the proposal key is referred to as the *proposer*. @@ -66,7 +69,7 @@ A proposal key definition declares the address, key ID, and up-to-date sequence - Key ID is an index number (starting at 0) that identifies the key on the account provided in the address. - Sequence Number is a number on each key that increments by 1 with each transaction. This ensures that each transaction executes at most once and prevents many unwanted situations, such as [transaction replay attacks](https://en.wikipedia.org/wiki/Replay_attack). Each key in an account has a dedicated sequence number associated with it. Unlike Ethereum, there is no sequence number for the entire account. -**Authorizers** +#### Authorizers Authorizers are accounts that authorize a transaction to read and mutate their state. A transaction can specify zero or more authorizers, depending on how many accounts the transaction needs to access. @@ -90,7 +93,7 @@ that are required for the transaction to execute properly. This ensures that users who are signing transactions can understand what parts of their account a transaction can access. -**Payer** +#### Payer A payer is the account that pays the fees for the transaction. A transaction must specify exactly one payer. The payer is only responsible for paying the network and gas fees; the transaction is not authorized to access resources or code stored in the payer account. diff --git a/docs/tools/clients/fcl-js/api.md b/docs/tools/clients/fcl-js/api.md index 9b373a3341..51d10f5870 100644 --- a/docs/tools/clients/fcl-js/api.md +++ b/docs/tools/clients/fcl-js/api.md @@ -591,7 +591,7 @@ _Pass in the following as a single object with the following keys. All keys are | `cadence` | string **(required)** | A valid cadence transaction. | | `args` | [ArgumentFunction](#argumentfunction) | Any arguments to the script if needed should be supplied via a function that returns an array of arguments. | | `limit` | number | Compute (Gas) limit for query. Read the [documentation about computation cost](../flow-go-sdk/index.mdx#gas-limit) for information about how computation cost is calculated on Flow. | -| `proposer` | [AuthorizationFunction](#authorization-function) | The authorization function that returns a valid [AuthorizationObject](#authorizationobject) for the [proposer role](#TransactionRolesObject). | +| `proposer` | [AuthorizationFunction](#authorization-function) | The authorization function that returns a valid [AuthorizationObject](#authorizationobject) for the [proposer role](#transactionrolesobject). | #### Returns @@ -1590,7 +1590,7 @@ An interaction is an object containing the information to perform an action on c | `f_type` | string | `'USER'` | A type identifier used internally by FCL. | | `f_vsn` | string | `'1.0.0'` | FCL protocol version. | | `loggedIn` | boolean | `null` | If the user is logged in. | -| `services` | [ServiceObject] | `[]` | A list of trusted services that express ways of interacting with the current user's identity, including means to further discovery, [authentication, authorization](https://gist.github.com/orodio/a74293f65e83145ec8b968294808cf35#you-know-who-the-user-is), or other kinds of interactions. | +| `services` | `[ServiceObject]` | `[]` | A list of trusted services that express ways of interacting with the current user's identity, including means to further discovery, [authentication, authorization](https://gist.github.com/orodio/a74293f65e83145ec8b968294808cf35#you-know-who-the-user-is), or other kinds of interactions. | --- @@ -1793,10 +1793,10 @@ const signingFunction = ({ | -------------------- | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `args` | object | A list of encoded Cadence values passed into this transaction. These have not been decoded by the JS-SDK. | | `authorizers` | [\[Address\]](#address) | A list of the accounts that are authorizing this transaction to mutate to their on-chain account state. [See more here](../../../build/basics/transactions.md#signer-roles). | -| `envelopeSignatures` | [\[SignableObject\]](#signableobject) | A list of signatures generated by the payer role. [See more here](../../../build/basics/transactions.md#anatomy-of-a-transaction). | +| `envelopeSignatures` | [\[SignableObject\]](#signableobject) | A list of signatures generated by the payer role. [See more here](../../../build/basics/transactions.md#signing-a-transaction). | | `gasLimit` | number | The maximum number of computational units that can be used to execute this transaction. [See more here](../../../build/basics/fees.md). | | `payer` | [Address](#address) | The account that pays the fee for this transaction. [See more here](../../../build/basics/transactions.md#signer-roles). | -| `payloadSignatures` | [\[SignableObject\]](#signableobject) | A list of signatures generated by the proposer and authorizer roles. [See more here](../../../build/basics/transactions.md#anatomy-of-a-transaction). | +| `payloadSignatures` | [\[SignableObject\]](#signableobject) | A list of signatures generated by the proposer and authorizer roles. [See more here](../../../build/basics/transactions.md#signing-a-transaction). | | `proposalKey` | [\[ProposalKey\]](#proposalkeyobject) | The account key used to propose this transaction | | `referenceBlockId` | string | A reference to the block used to calculate the expiry of this transaction. | | `script` | string | The UTF-8 encoded Cadence source code that defines the execution logic for this transaction | @@ -1894,7 +1894,7 @@ A collection that has been included in a block. | Key | Value Type | Description | | -------------- | ----------------- | -------------------- | | `collectionId` | string | The id of the block. | -| `signatures` | [SignatureObject] | All signatures. | +| `signatures` | [SignatureObject](#SignatureObject) | All signatures. | ### `CollectionObject` @@ -2082,3 +2082,14 @@ import { BlockHeartbeat } from "@onflow/typedefs" const heartbeat: BlockHeartbeat = ... ``` + + +### SignatureObject + +Signature objects are used to represent a signature for a particular message as well as the account and keyId which signed for this message. + +| Key | Value Type | Description | +| ----------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `addr` | [Address](#address) | the address of the account which this signature has been generated for | +| `keyId` | number | The index of the key to use during authorization. (Multiple keys on an account is possible).| +| `signature` | string | a hexidecimal-encoded string representation of the generated signature | \ No newline at end of file diff --git a/docs/tools/clients/fcl-js/index.mdx.txt b/docs/tools/clients/fcl-js/index.mdx.txt deleted file mode 100644 index 58dc870d01..0000000000 --- a/docs/tools/clients/fcl-js/index.mdx.txt +++ /dev/null @@ -1,176 +0,0 @@ -
-

-

FCL JS

-

- Connect your dapp to users, their wallets and Flow. -
- View on Github» -
-
- Quickstart - · - Report Bug - · - Contribute - -

-

- -## What is FCL? - -The Flow Client Library (FCL) JS is a package used to interact with user wallets and the Flow blockchain. When using FCL for authentication, dapps are able to support all FCL-compatible wallets on Flow and their users without any custom integrations or changes needed to the dapp code. - -It was created to make developing applications that connect to the Flow blockchain easy and secure. It defines a standardized set of communication patterns between wallets, applications, and users that is used to perform a wide variety of actions for your dapp. FCL also offers a full featured SDK and utilities to interact with the Flow blockchain. - -While FCL itself is a concept and standard, FCL JS is the javascript implementation of FCL and can be used in both browser and server environments. All functionality for connecting and communicating with wallet providers is restricted to the browser. We also have FCL Swift implementation for iOS, see [FCL Swift](https://github.com/zed-io/fcl-swift) contributed by [@lmcmz](https://github.com/lmcmz). - ---- -## Getting Started - -### Requirements -- Node version `v12.0.0 or higher`. - -### Installation - -To use the FCL JS in your application, install using **yarn** or **npm** - -```shell -npm i -S @onflow/fcl -``` - -```shell -yarn add @onflow/fcl -``` -#### Importing - -**ES6** -```js -import * as fcl from "@onflow/fcl"; -``` -**Node.js** -```js -const fcl = require("@onflow/fcl"); -``` ---- -## FCL for Dapps -#### Wallet Interactions - -- *Wallet Discovery* and *Sign-up/Login*: Onboard users with ease. Never worry about supporting multiple wallets. -Authenticate users with any [FCL compatible wallet](./index.mdx#current-wallet-providers). -```js -// in the browser -import * as fcl from "@onflow/fcl" - -fcl.config({ - "discovery.wallet": "https://fcl-discovery.onflow.org/testnet/authn", // Endpoint set to Testnet -}) - -fcl.authenticate() -``` -![FCL Default Discovery UI](images/discovery.png) - -> **Note**: A [Dapper Wallet](https://meetdapper.com/developers) developer account is required. To enable Dapper Wallet inside FCL, you need to [follow this guide](https://docs.meetdapper.com/get-started). - -- *Interact with smart contracts*: Authorize transactions via the user's chosen wallet -- *Prove ownership of a wallet address*: Signing and verifying user signed data - -[Learn more about wallet interactions >](./api.md#wallet-interactions) - -#### Blockchain Interactions -- *Query the chain*: Send arbitrary Cadence scripts to the chain and receive back decoded values -```js -import * as fcl from "@onflow/fcl"; - -const result = await fcl.query({ - cadence: ` - access(all) fun main(a: Int, b: Int, addr: Address): Int { - log(addr) - return a + b - } - `, - args: (arg, t) => [ - arg(7, t.Int), // a: Int - arg(6, t.Int), // b: Int - arg("0xba1132bc08f82fe2", t.Address), // addr: Address - ], -}); -console.log(result); // 13 -``` -- *Mutate the chain*: Send arbitrary transactions with your own signatures or via a user's wallet to perform state changes on chain. -```js -import * as fcl from "@onflow/fcl"; -// in the browser, FCL will automatically connect to the user's wallet to request signatures to run the transaction -const txId = await fcl.mutate({ - cadence: ` - import Profile from 0xba1132bc08f82fe2 - - transaction(name: String) { - prepare(account: auth(BorrowValue) &Account) { - account.storage.borrow<&{Profile.Owner}>(from: Profile.privatePath)!.setName(name) - } - } - `, - args: (arg, t) => [arg("myName", t.String)], -}); -``` - -[Learn more about on-chain interactions >](./api.md#on-chain-interactions) - -#### Utilities -- Get account details from any Flow address -- Get the latest block -- Transaction status polling -- Event polling -- Custom authorization functions - -[Learn more about utilities >](./api.md#pre-built-interactions) - - -## Next Steps - -See the [Flow App Quick Start](../../guides/flow-app-quickstart.mdx). - -See the full [API Reference](./api.md) for all FCL functionality. - -Learn Flow's smart contract language to build any script or transactions: [Cadence](../../../build/guides/smart-contracts/cadence.md). - -Explore all of Flow [docs and tools](/). - - ---- -## FCL for Wallet Providers -Wallet providers on Flow have the flexibility to build their user interactions and UI through a variety of ways: -- Front channel communication via Iframe, pop-up, tab, or extension -- Back channel communication via HTTP - -FCL is agnostic to the communication channel and be configured to create both custodial and non-custodial wallets. This enables users to interact with wallet providers without needing to download an app or extension. - -The communication channels involve responding to a set of pre-defined FCL messages to deliver the requested information to the dapp. Implementing a FCL compatible wallet on Flow is as simple as filling in the responses with the appropriate data when FCL requests them. If using any of the front-channel communication methods, FCL also provides a set of [wallet utilities](https://github.com/onflow/fcl-js/blob/master/packages/fcl/src/wallet-utils/index.js) to simplify this process. - -### Current Wallet Providers -- [Blocto](https://blocto.portto.io/en/) -- [Ledger](https://ledger.com) (limited transaction support) -- [Lilico Wallet](https://lilico.app/) Fully non-custodial chrome extension wallet focused on NFTs - -### Wallet Discovery -It can be difficult to get users to discover new wallets on a chain. To solve this, we created a wallet discovery service that can be configured and accessed through FCL to display all available Flow wallet providers to the user. This means: -- Dapps can display and support all FCL compatible wallets that launch on Flow without needing to change any code -- Users don't need to sign up for new wallets - they can carry over their existing one to any dapp that uses FCL for authentication and authorization. - -The discovery feature can be used via API allowing you to customize your own UI or you can use the default UI without any additional configuration. - -### Building a FCL compatible wallet - -- Read the [wallet guide](https://github.com/onflow/fcl-js/blob/master/packages/fcl/src/wallet-provider-spec/draft-v3.md) to understand the implementation details. -- Review the architecture of the [Flow Dev Wallet](https://github.com/onflow/fcl-dev-wallet) for an overview. -- If building a non-custodial wallet, see the [Account API](https://github.com/onflow/flow-account-api) and the [FLIP](https://github.com/onflow/flow/pull/727) on derivation paths and key generation. - ---- - -## Support - -Notice an problem or want to request a feature? [Add an issue](https://github.com/onflow/flow-js-sdk/issues). - -Discuss FCL with the community on the [forum](https://forum.onflow.org/c/developer-tools/flow-fcl/22). - -Join the Flow community on [Discord](https://discord.gg/flow) to keep up to date and to talk to the team. diff --git a/docs/tools/clients/fcl-js/sdk-guidelines.md b/docs/tools/clients/fcl-js/sdk-guidelines.md index 95ec8d9170..076de99423 100644 --- a/docs/tools/clients/fcl-js/sdk-guidelines.md +++ b/docs/tools/clients/fcl-js/sdk-guidelines.md @@ -686,4 +686,4 @@ mutate({ }) ``` -After a transaction has been [built](./sdk-guidelines.md#build-transactions) and [signed](./sdk-guidelines.md#sign-transactions), it can be sent to the Flow blockchain where it will be executed. If sending was successful you can then [retrieve the transaction result](./sdk-guidelines.md#get-transactions). +After a transaction has been **built** and **signed**, it can be sent to the Flow blockchain where it will be executed. If sending was successful you can then [retrieve the transaction result](#get-transactions). diff --git a/docs/tools/clients/fcl-js/user-signatures.md b/docs/tools/clients/fcl-js/user-signatures.md index c8933ea50d..fd30fc0e71 100644 --- a/docs/tools/clients/fcl-js/user-signatures.md +++ b/docs/tools/clients/fcl-js/user-signatures.md @@ -59,7 +59,7 @@ const signMessage = async () => { #### Note -⚠️ `fcl.config.flow.network` or options override is required to use this API. See [FCL Configuration](#configuration). +⚠️ `fcl.config.flow.network` or options override is required to use this API. See [FCL Configuration](./configure-fcl.md). A method allowing applications to cryptographically verify the ownership of a Flow account by verifying a message was signed by a user's private key/s. This is typically used with the response from `currentUser.signUserMessage`. diff --git a/docs/tools/clients/flow-go-sdk/index.mdx b/docs/tools/clients/flow-go-sdk/index.mdx index a4ba706c3e..cd7ec363b5 100644 --- a/docs/tools/clients/flow-go-sdk/index.mdx +++ b/docs/tools/clients/flow-go-sdk/index.mdx @@ -548,11 +548,15 @@ transaction { } ``` +#### Gas Limit + 📖 **Gas limit** is the limit on the amount of computation a transaction requires, and it will abort if it exceeds its gas limit. Cadence uses metering to measure the number of operations per transaction. You can read more about it in the [Cadence documentation](../../../build/smart-contracts/cadence.md). The gas limit depends on the complexity of the transaction script. Until dedicated gas estimation tooling exists, it's best to use the emulator to test complex transactions and determine a safe limit. +#### Reference Block + 📖 **Reference block** specifies an expiration window (measured in blocks) during which a transaction is considered valid by the network. A transaction will be rejected if it is submitted past its expiry block. Flow calculates transaction expiry using the _reference block_ field on a transaction. A transaction expires after `600` blocks are committed on top of the reference block, which takes about 10 minutes at average Mainnet block rates. From f8b39dfe047e0086c12098d8267812064bcdeb1b Mon Sep 17 00:00:00 2001 From: Alex Ni <12097569+nialexsan@users.noreply.github.com> Date: Mon, 21 Oct 2024 11:56:25 -0400 Subject: [PATCH 03/12] update engine --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b69ed545d1..9991a8565c 100644 --- a/package.json +++ b/package.json @@ -84,6 +84,6 @@ ] }, "engines": { - "node": ">=16.14" + "node": ">=18" } } From b4f9eb25943190cc3b4d16bfcab2ed5e5141ef79 Mon Sep 17 00:00:00 2001 From: Alex Ni <12097569+nialexsan@users.noreply.github.com> Date: Mon, 21 Oct 2024 12:03:16 -0400 Subject: [PATCH 04/12] fix link --- .../{access-node-setup.mdx => access-node-setup.md} | 2 +- docs/networks/node-ops/index.md | 2 +- docs/networks/node-ops/node-operation/faq.md | 4 ++-- .../node-ops/node-operation/guides/genesis-bootstrap.md | 2 +- docs/networks/node-ops/node-operation/node-bootstrap.md | 2 +- docs/networks/node-ops/node-operation/node-setup.md | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) rename docs/networks/node-ops/access-onchain-data/access-nodes/{access-node-setup.mdx => access-node-setup.md} (98%) diff --git a/docs/networks/node-ops/access-onchain-data/access-nodes/access-node-setup.mdx b/docs/networks/node-ops/access-onchain-data/access-nodes/access-node-setup.md similarity index 98% rename from docs/networks/node-ops/access-onchain-data/access-nodes/access-node-setup.mdx rename to docs/networks/node-ops/access-onchain-data/access-nodes/access-node-setup.md index 255bc83b50..1ac0b5dfb9 100644 --- a/docs/networks/node-ops/access-onchain-data/access-nodes/access-node-setup.mdx +++ b/docs/networks/node-ops/access-onchain-data/access-nodes/access-node-setup.md @@ -253,7 +253,7 @@ Account staking info: ### Epoch Setup Event -Alternatively, if you can monitor events, look for [the epoch setup event](../../../staking/05-epoch-scripts-events.md#epochsetup) that gets emitted by the epoch contract. That event is emitted at the end of epoch N's staking auction and contains a list of node IDs that are confirmed for the next epoch. +Alternatively, if you can monitor events, look for [the epoch setup event](../../../staking/05-epoch-scripts-events.md#flowepochepochsetup) that gets emitted by the epoch contract. That event is emitted at the end of epoch N's staking auction and contains a list of node IDs that are confirmed for the next epoch. ## Step 4 - Start Your Node diff --git a/docs/networks/node-ops/index.md b/docs/networks/node-ops/index.md index bdace7cc11..95aadc1171 100644 --- a/docs/networks/node-ops/index.md +++ b/docs/networks/node-ops/index.md @@ -75,7 +75,7 @@ Launch an access node using QuickNode :::info -To run a self-hosted access node, follow this [guide](./access-onchain-data/access-nodes/access-node-setup.mdx) +To run a self-hosted access node, follow this [guide](./access-onchain-data/access-nodes/access-node-setup.md) ::: diff --git a/docs/networks/node-ops/node-operation/faq.md b/docs/networks/node-ops/node-operation/faq.md index b82afebfa1..227745328a 100644 --- a/docs/networks/node-ops/node-operation/faq.md +++ b/docs/networks/node-ops/node-operation/faq.md @@ -9,7 +9,7 @@ sidebar_position: 1 Anyone can run an [observer node](../access-onchain-data/light-nodes/observer-node.md). -Anyone can run an Access Node after registering and staking. See [Access Node Setup](../access-onchain-data/access-nodes/access-node-setup.mdx) for detailed instructions. +Anyone can run an Access Node after registering and staking. See [Access Node Setup](../access-onchain-data/access-nodes/access-node-setup.md) for detailed instructions. For the other node roles, individuals can go through an application process that involves asking about their background and experience contributing to decentralized projects. To pursue an application, please visit [the Flow website here to apply](https://www.onflow.org/node-validators). @@ -19,7 +19,7 @@ In the long-term, anyone can run a node validator on Flow. ### How do I generate keys? -Please follow the instructions provided here: [Generate Your Node Keys](./node-bootstrap.md#generating-your-node-keys) +Please follow the instructions provided here: [Generate Your Node Keys](./node-bootstrap.md#generate-your-node-keys) ### How do I check on the status of my node? diff --git a/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md b/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md index 02e194bd84..c7b724aad0 100644 --- a/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md +++ b/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md @@ -57,7 +57,7 @@ Start the bootstrapping process by generating your Staking Key and Networking Ke This command generates two keys, a Staking Key and a Network Key, and stores them both in a `.node-info` file. Both these keys are needed during runtime and must be present as a file to start your flow node. -For more details around all the keys that are needed to run nodes and their usage, see the [Node Keys](../node-bootstrap.md#generating-your-node-keys) overview. +For more details around all the keys that are needed to run nodes and their usage, see the [Node Keys](../node-bootstrap.md#generate-your-node-keys) overview. The bootstrapping process will create a file structure similar to the following diff --git a/docs/networks/node-ops/node-operation/node-bootstrap.md b/docs/networks/node-ops/node-operation/node-bootstrap.md index 31298912bc..6ba1fff507 100644 --- a/docs/networks/node-ops/node-operation/node-bootstrap.md +++ b/docs/networks/node-ops/node-operation/node-bootstrap.md @@ -5,7 +5,7 @@ description: How to get started running a node on Flow sidebar_position: 8 --- -This guide is for getting a new node staked and running on Flow other than a permissionless Access node. For running a permissionless Access node see [Access node setup](../access-onchain-data/access-nodes/access-node-setup.mdx). For sporking documentation for existing node operators, see [Spork Process](./spork.md). +This guide is for getting a new node staked and running on Flow other than a permissionless Access node. For running a permissionless Access node see [Access node setup](../access-onchain-data/access-nodes/access-node-setup.md). For sporking documentation for existing node operators, see [Spork Process](./spork.md). ## Timing diff --git a/docs/networks/node-ops/node-operation/node-setup.md b/docs/networks/node-ops/node-operation/node-setup.md index 52f54a2649..7addeaaed0 100644 --- a/docs/networks/node-ops/node-operation/node-setup.md +++ b/docs/networks/node-ops/node-operation/node-setup.md @@ -6,7 +6,7 @@ sidebar_position: 12 --- This guide is for running a Collection, Consensus, Verification and Execution node. -If you are planning to run an Access node then refer to [access node setup](../access-onchain-data/access-nodes/access-node-setup.mdx). +If you are planning to run an Access node then refer to [access node setup](../access-onchain-data/access-nodes/access-node-setup.md). First you'll need to provision a machine or virtual machine to run your node software. Please see follow the [node-provisioning](./node-provisioning.md) guide for it. From f7ae3733642a3d7f25054be868f5a0f59ec362f2 Mon Sep 17 00:00:00 2001 From: Alex Ni <12097569+nialexsan@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:43:56 -0400 Subject: [PATCH 05/12] fix css --- src/ui/design-system/styles/backgrounds.css | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/ui/design-system/styles/backgrounds.css b/src/ui/design-system/styles/backgrounds.css index 97e4caca50..ef10df48b1 100644 --- a/src/ui/design-system/styles/backgrounds.css +++ b/src/ui/design-system/styles/backgrounds.css @@ -2,22 +2,30 @@ background-repeat: no-repeat; background-position: 50% -40px; background-size: 1000px auto; +} - @media screen and (min-width: 768px) { +@media screen and (min-width: 768px) { + .page-bg-gradient { background-size: 1500px auto; background-position: 50% -40px; } +} - @media screen and (min-width: 1536px) { +@media screen and (min-width: 1536px) { + .page-bg-gradient { background-size: contain; background-position: 50% -100px; } +} - @media screen and (min-width: 1920px) { +@media screen and (min-width: 1920px) { + .page-bg-gradient { background-position: 50% -200px; } +} - @media screen and (min-width: 2200px) { +@media screen and (min-width: 2200px) { + .page-bg-gradient { background-position: 50% -400px; } } From d5f061c2bc6dab93236ea4c828d861016fa8d1a5 Mon Sep 17 00:00:00 2001 From: Alex Ni <12097569+nialexsan@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:47:49 -0400 Subject: [PATCH 06/12] update caniuse --- yarn.lock | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7a74733951..6160cb6ced 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4754,15 +4754,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: - version "1.0.30001565" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz#a528b253c8a2d95d2b415e11d8b9942acc100c4f" - integrity sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w== - -caniuse-lite@^1.0.30001646: - version "1.0.30001651" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz#52de59529e8b02b1aedcaaf5c05d9e23c0c28138" - integrity sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541, caniuse-lite@^1.0.30001646: + version "1.0.30001669" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz" + integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== caw@^2.0.0: version "2.0.1" From 09a97e984fdf51e4e8f125585ac958dffaa4aadd Mon Sep 17 00:00:00 2001 From: Alex Ni <12097569+nialexsan@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:48:30 -0400 Subject: [PATCH 07/12] update engine --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9991a8565c..16f2e98132 100644 --- a/package.json +++ b/package.json @@ -84,6 +84,6 @@ ] }, "engines": { - "node": ">=18" + "node": ">=20" } } From bacd9e67ce619a4b12763969c35a7b69eceb837b Mon Sep 17 00:00:00 2001 From: Alex Ni <12097569+nialexsan@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:56:40 -0400 Subject: [PATCH 08/12] updated packages --- package.json | 10 +- yarn.lock | 551 ++++++++++++++++++--------------------------------- 2 files changed, 202 insertions(+), 359 deletions(-) diff --git a/package.json b/package.json index 16f2e98132..7886e914b7 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@fortawesome/free-solid-svg-icons": "^6.4.2", "@fortawesome/react-fontawesome": "^0.2.0", "@headlessui/react": "1.7.13", - "@mdx-js/react": "^3.0.0", + "@mdx-js/react": "^3.1.0", "@tailwindcss/aspect-ratio": "0.4.2", "@tailwindcss/forms": "0.5.6", "@tailwindcss/typography": "0.5.10", @@ -36,7 +36,7 @@ "clsx": "^1.2.1", "date-fns": "2.29.3", "discord.js": "14.8.0", - "docusaurus-theme-search-typesense": "^0.20.0", + "docusaurus-theme-search-typesense": "^0.22.0", "dotenv": "16.0.3", "eslint-config-prettier": "^8.8.0", "eslint-plugin-prettier": "^4.2.1", @@ -46,7 +46,7 @@ "prism-react-renderer": "^1.3.5", "react": "^18.2.0", "react-dom": "^18.2.0", - "redocusaurus": "^2.1.1", + "redocusaurus": "^2.1.2", "rehype-katex": "4", "remark-math": "3", "shiki": "1.14.1", @@ -58,10 +58,10 @@ "devDependencies": { "@docusaurus/module-type-aliases": "^3.5.2", "@tsconfig/docusaurus": "^2.0.3", - "@typescript-eslint/eslint-plugin": "^5.43.0", + "@typescript-eslint/eslint-plugin": "^8.11.0", "concurrently": "^8.2.1", "eslint": "^8.0.1", - "eslint-config-standard-with-typescript": "34.0.1", + "eslint-config-standard-with-typescript": "^43.0.1", "eslint-plugin-import": "^2.25.2", "eslint-plugin-n": "^15.0.0", "eslint-plugin-promise": "^6.0.0", diff --git a/yarn.lock b/yarn.lock index 6160cb6ced..ec2fed0493 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2120,80 +2120,6 @@ "@docsearch/css" "3.5.2" algoliasearch "^4.19.1" -"@docusaurus/core@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.4.0.tgz#bdbf1af4b2f25d1bf4a5b62ec6137d84c821cb3c" - integrity sha512-g+0wwmN2UJsBqy2fQRQ6fhXruoEa62JDeEa5d8IdTJlMoaDaEDfHh7WjwGRn4opuTQWpjAwP/fbcgyHKlE+64w== - dependencies: - "@babel/core" "^7.23.3" - "@babel/generator" "^7.23.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/preset-react" "^7.22.5" - "@babel/preset-typescript" "^7.22.5" - "@babel/runtime" "^7.22.6" - "@babel/runtime-corejs3" "^7.22.6" - "@babel/traverse" "^7.22.8" - "@docusaurus/cssnano-preset" "3.4.0" - "@docusaurus/logger" "3.4.0" - "@docusaurus/mdx-loader" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - autoprefixer "^10.4.14" - babel-loader "^9.1.3" - babel-plugin-dynamic-import-node "^2.3.3" - boxen "^6.2.1" - chalk "^4.1.2" - chokidar "^3.5.3" - clean-css "^5.3.2" - cli-table3 "^0.6.3" - combine-promises "^1.1.0" - commander "^5.1.0" - copy-webpack-plugin "^11.0.0" - core-js "^3.31.1" - css-loader "^6.8.1" - css-minimizer-webpack-plugin "^5.0.1" - cssnano "^6.1.2" - del "^6.1.1" - detect-port "^1.5.1" - escape-html "^1.0.3" - eta "^2.2.0" - eval "^0.1.8" - file-loader "^6.2.0" - fs-extra "^11.1.1" - html-minifier-terser "^7.2.0" - html-tags "^3.3.1" - html-webpack-plugin "^5.5.3" - leven "^3.1.0" - lodash "^4.17.21" - mini-css-extract-plugin "^2.7.6" - p-map "^4.0.0" - postcss "^8.4.26" - postcss-loader "^7.3.3" - prompts "^2.4.2" - react-dev-utils "^12.0.1" - react-helmet-async "^1.3.0" - react-loadable "npm:@docusaurus/react-loadable@6.0.0" - react-loadable-ssr-addon-v5-slorber "^1.0.1" - react-router "^5.3.4" - react-router-config "^5.1.1" - react-router-dom "^5.3.4" - rtl-detect "^1.0.4" - semver "^7.5.4" - serve-handler "^6.1.5" - shelljs "^0.8.5" - terser-webpack-plugin "^5.3.9" - tslib "^2.6.0" - update-notifier "^6.0.2" - url-loader "^4.1.1" - webpack "^5.88.1" - webpack-bundle-analyzer "^4.9.0" - webpack-dev-server "^4.15.1" - webpack-merge "^5.9.0" - webpackbar "^5.0.2" - "@docusaurus/core@3.5.2", "@docusaurus/core@^3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.5.2.tgz#3adedb90e7b6104592f1231043bd6bf91680c39c" @@ -2268,16 +2194,6 @@ webpack-merge "^5.9.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.4.0.tgz#dc7922b3bbeabcefc9b60d0161680d81cf72c368" - integrity sha512-qwLFSz6v/pZHy/UP32IrprmH5ORce86BGtN0eBtG75PpzQJAzp9gefspox+s8IEOr0oZKuQ/nhzZ3xwyc3jYJQ== - dependencies: - cssnano-preset-advanced "^6.1.2" - postcss "^8.4.38" - postcss-sort-media-queries "^5.2.0" - tslib "^2.6.0" - "@docusaurus/cssnano-preset@3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.5.2.tgz#6c1f2b2f9656f978c4694c84ab24592b04dcfab3" @@ -2288,15 +2204,7 @@ postcss-sort-media-queries "^5.2.0" tslib "^2.6.0" -"@docusaurus/logger@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.4.0.tgz#8b0ac05c7f3dac2009066e2f964dee8209a77403" - integrity sha512-bZwkX+9SJ8lB9kVRkXw+xvHYSMGG4bpYHKGXeXFvyVc79NMeeBSGgzd4TQLHH+DYeOJoCdl8flrFJVxlZ0wo/Q== - dependencies: - chalk "^4.1.2" - tslib "^2.6.0" - -"@docusaurus/logger@3.5.2": +"@docusaurus/logger@3.5.2", "@docusaurus/logger@^3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.5.2.tgz#1150339ad56844b30734115c19c580f3b25cf5ed" integrity sha512-LHC540SGkeLfyT3RHK3gAMK6aS5TRqOD4R72BEU/DE2M/TY8WwEUAMY576UUc/oNJXv8pGhBmQB6N9p3pt8LQw== @@ -2304,36 +2212,6 @@ chalk "^4.1.2" tslib "^2.6.0" -"@docusaurus/mdx-loader@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.4.0.tgz#483d7ab57928fdbb5c8bd1678098721a930fc5f6" - integrity sha512-kSSbrrk4nTjf4d+wtBA9H+FGauf2gCax89kV8SUSJu3qaTdSIKdWERlngsiHaCFgZ7laTJ8a67UFf+xlFPtuTw== - dependencies: - "@docusaurus/logger" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - "@mdx-js/mdx" "^3.0.0" - "@slorber/remark-comment" "^1.0.0" - escape-html "^1.0.3" - estree-util-value-to-estree "^3.0.1" - file-loader "^6.2.0" - fs-extra "^11.1.1" - image-size "^1.0.2" - mdast-util-mdx "^3.0.0" - mdast-util-to-string "^4.0.0" - rehype-raw "^7.0.0" - remark-directive "^3.0.0" - remark-emoji "^4.0.0" - remark-frontmatter "^5.0.0" - remark-gfm "^4.0.0" - stringify-object "^3.3.0" - tslib "^2.6.0" - unified "^11.0.3" - unist-util-visit "^5.0.0" - url-loader "^4.1.1" - vfile "^6.0.1" - webpack "^5.88.1" - "@docusaurus/mdx-loader@3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.5.2.tgz#99781641372c5037bcbe09bb8ade93a0e0ada57d" @@ -2364,19 +2242,6 @@ vfile "^6.0.1" webpack "^5.88.1" -"@docusaurus/module-type-aliases@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.4.0.tgz#2653bde58fc1aa3dbc626a6c08cfb63a37ae1bb8" - integrity sha512-A1AyS8WF5Bkjnb8s+guTDuYmUiwJzNrtchebBHpc0gz0PyHJNMaybUlSrmJjHVcGrya0LKI4YcR3lBDQfXRYLw== - dependencies: - "@docusaurus/types" "3.4.0" - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router-config" "*" - "@types/react-router-dom" "*" - react-helmet-async "*" - react-loadable "npm:@docusaurus/react-loadable@6.0.0" - "@docusaurus/module-type-aliases@3.5.2", "@docusaurus/module-type-aliases@^3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.5.2.tgz#4e8f9c0703e23b2e07ebfce96598ec83e4dd2a9e" @@ -2429,29 +2294,7 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-docs@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.4.0.tgz#3088973f72169a2a6d533afccec7153c8720d332" - integrity sha512-HkUCZffhBo7ocYheD9oZvMcDloRnGhBMOZRyVcAQRFmZPmNqSyISlXA1tQCIxW+r478fty97XXAGjNYzBjpCsg== - dependencies: - "@docusaurus/core" "3.4.0" - "@docusaurus/logger" "3.4.0" - "@docusaurus/mdx-loader" "3.4.0" - "@docusaurus/module-type-aliases" "3.4.0" - "@docusaurus/types" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" - "@types/react-router-config" "^5.0.7" - combine-promises "^1.1.0" - fs-extra "^11.1.1" - js-yaml "^4.1.0" - lodash "^4.17.21" - tslib "^2.6.0" - utility-types "^3.10.0" - webpack "^5.88.1" - -"@docusaurus/plugin-content-docs@3.5.2": +"@docusaurus/plugin-content-docs@3.5.2", "@docusaurus/plugin-content-docs@^3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.5.2.tgz#adcf6c0bd9a9818eb192ab831e0069ee62d31505" integrity sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ== @@ -2636,15 +2479,7 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.4.0.tgz#e6355d01352886c67e38e848b2542582ea3070af" - integrity sha512-zSxCSpmQCCdQU5Q4CnX/ID8CSUUI3fvmq4hU/GNP/XoAWtXo9SAVnM3TzpU8Gb//H3WCsT8mJcTfyOk3d9ftNg== - dependencies: - fs-extra "^11.1.1" - tslib "^2.6.0" - -"@docusaurus/theme-translations@3.5.2": +"@docusaurus/theme-translations@3.5.2", "@docusaurus/theme-translations@^3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.5.2.tgz#38f9ebf2a5d860397022206a05fef66c08863c89" integrity sha512-GPZLcu4aT1EmqSTmbdpVrDENGR2yObFEX8ssEFYTCiAIVc0EihNSdOIBTazUvgNqwvnoU1A8vIs1xyzc3LITTw== @@ -2652,21 +2487,6 @@ fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/types@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.4.0.tgz#237c3f737e9db3f7c1a5935a3ef48d6eadde8292" - integrity sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A== - dependencies: - "@mdx-js/mdx" "^3.0.0" - "@types/history" "^4.7.11" - "@types/react" "*" - commander "^5.1.0" - joi "^17.9.2" - react-helmet-async "^1.3.0" - utility-types "^3.10.0" - webpack "^5.88.1" - webpack-merge "^5.9.0" - "@docusaurus/types@3.5.2", "@docusaurus/types@^3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.5.2.tgz#058019dbeffbee2d412c3f72569e412a727f9608" @@ -2682,13 +2502,6 @@ webpack "^5.88.1" webpack-merge "^5.9.0" -"@docusaurus/utils-common@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.4.0.tgz#2a43fefd35b85ab9fcc6833187e66c15f8bfbbc6" - integrity sha512-NVx54Wr4rCEKsjOH5QEVvxIqVvm+9kh7q8aYTU5WzUU9/Hctd6aTrcZ3G0Id4zYJ+AeaG5K5qHA4CY5Kcm2iyQ== - dependencies: - tslib "^2.6.0" - "@docusaurus/utils-common@3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.5.2.tgz#4d7f5e962fbca3e2239d80457aa0e4bd3d8f7e0a" @@ -2696,21 +2509,7 @@ dependencies: tslib "^2.6.0" -"@docusaurus/utils-validation@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.4.0.tgz#0176f6e503ff45f4390ec2ecb69550f55e0b5eb7" - integrity sha512-hYQ9fM+AXYVTWxJOT1EuNaRnrR2WGpRdLDQG07O8UOpsvCPWUVOeo26Rbm0JWY2sGLfzAb+tvJ62yF+8F+TV0g== - dependencies: - "@docusaurus/logger" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - fs-extra "^11.2.0" - joi "^17.9.2" - js-yaml "^4.1.0" - lodash "^4.17.21" - tslib "^2.6.0" - -"@docusaurus/utils-validation@3.5.2": +"@docusaurus/utils-validation@3.5.2", "@docusaurus/utils-validation@^3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.5.2.tgz#1b2b2f02082781cc8ce713d4c85e88d6d2fc4eb3" integrity sha512-m+Foq7augzXqB6HufdS139PFxDC5d5q2QKZy8q0qYYvGdI6nnlNsGH4cIGsgBnV7smz+mopl3g4asbSDvMV0jA== @@ -2724,33 +2523,7 @@ lodash "^4.17.21" tslib "^2.6.0" -"@docusaurus/utils@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.4.0.tgz#c508e20627b7a55e2b541e4a28c95e0637d6a204" - integrity sha512-fRwnu3L3nnWaXOgs88BVBmG1yGjcQqZNHG+vInhEa2Sz2oQB+ZjbEMO5Rh9ePFpZ0YDiDUhpaVjwmS+AU2F14g== - dependencies: - "@docusaurus/logger" "3.4.0" - "@docusaurus/utils-common" "3.4.0" - "@svgr/webpack" "^8.1.0" - escape-string-regexp "^4.0.0" - file-loader "^6.2.0" - fs-extra "^11.1.1" - github-slugger "^1.5.0" - globby "^11.1.0" - gray-matter "^4.0.3" - jiti "^1.20.0" - js-yaml "^4.1.0" - lodash "^4.17.21" - micromatch "^4.0.5" - prompts "^2.4.2" - resolve-pathname "^3.0.0" - shelljs "^0.8.5" - tslib "^2.6.0" - url-loader "^4.1.1" - utility-types "^3.10.0" - webpack "^5.88.1" - -"@docusaurus/utils@3.5.2": +"@docusaurus/utils@3.5.2", "@docusaurus/utils@^3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.5.2.tgz#17763130215f18d7269025903588ef7fb373e2cb" integrity sha512-33QvcNFh+Gv+C2dP9Y9xWEzMgf3JzrpL2nW9PopidiohS1nDcyknKRx2DWaFvyVTTYIkkABVSr073VTj/NITNA== @@ -2793,14 +2566,19 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.10.0": + version "4.11.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" + integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== + +"@eslint-community/regexpp@^4.6.1": version "4.10.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== @@ -3060,6 +2838,13 @@ dependencies: "@types/mdx" "^2.0.0" +"@mdx-js/react@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-3.1.0.tgz#c4522e335b3897b9a845db1dbdd2f966ae8fb0ed" + integrity sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ== + dependencies: + "@types/mdx" "^2.0.0" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -3758,11 +3543,6 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== -"@types/semver@^7.3.12": - version "7.5.6" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" - integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== - "@types/send@*": version "0.17.4" resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" @@ -3838,89 +3618,121 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.43.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" - integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" +"@typescript-eslint/eslint-plugin@^8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz#c3f087d20715fa94310b30666c08b3349e0ab084" + integrity sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.11.0" + "@typescript-eslint/type-utils" "8.11.0" + "@typescript-eslint/utils" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" graphemer "^1.4.0" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^5.43.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" - integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== +"@typescript-eslint/parser@^6.4.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" + integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== dependencies: - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" + integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" -"@typescript-eslint/type-utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== +"@typescript-eslint/scope-manager@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz#9d399ce624118966732824878bc9a83593a30405" + integrity sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ== + dependencies: + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" + +"@typescript-eslint/type-utils@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz#b7f9e6120c1ddee8a1a07615646642ad85fc91b5" + integrity sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg== dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" + "@typescript-eslint/typescript-estree" "8.11.0" + "@typescript-eslint/utils" "8.11.0" debug "^4.3.4" - tsutils "^3.21.0" + ts-api-utils "^1.3.0" -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== +"@typescript-eslint/types@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" + integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== +"@typescript-eslint/types@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.11.0.tgz#7c766250502097f49bbc2e651132e6bf489e20b8" + integrity sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw== + +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" + integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" -"@typescript-eslint/utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== +"@typescript-eslint/typescript-estree@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz#35fe5d3636fc5727c52429393415412e552e222b" + integrity sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg== dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.11.0.tgz#4480d1e9f2bb18ea3510c79f870a1aefc118103d" + integrity sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.11.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/typescript-estree" "8.11.0" -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== +"@typescript-eslint/visitor-keys@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" + integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" + "@typescript-eslint/types" "6.21.0" + eslint-visitor-keys "^3.4.1" + +"@typescript-eslint/visitor-keys@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz#273de1cbffe63d9f9cd7dfc20b5a5af66310cb92" + integrity sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw== + dependencies: + "@typescript-eslint/types" "8.11.0" + eslint-visitor-keys "^3.4.3" "@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0": version "1.2.0" @@ -5739,28 +5551,30 @@ docusaurus-plugin-redoc@2.1.1: "@redocly/openapi-core" "1.16.0" redoc "2.1.5" -docusaurus-theme-redoc@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/docusaurus-theme-redoc/-/docusaurus-theme-redoc-2.1.1.tgz#2e6ba70aac88e053cc7f527970a7b22a66424012" - integrity sha512-a9yuYyGVhj7NgBYiqJyjLEkJg/yTdsqg9Rn/cG8YXMIFwxIpn4tanIplUqwisK2PS81ZxOv7SfSgvGm/FSi/wA== +docusaurus-theme-redoc@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/docusaurus-theme-redoc/-/docusaurus-theme-redoc-2.1.2.tgz#0598470f694cea768e67e27d0b5fd9700eed8432" + integrity sha512-UB6g+YDPjVgFMhJnIUaW/mNl9vsCMbrMQutgdoG5DaI+HpxO2sV+zT2z23Wg6ngi2GM+oxEhYf5Qc1dPwKZqBQ== dependencies: "@redocly/openapi-core" "1.16.0" clsx "^1.2.1" lodash "^4.17.21" mobx "^6.12.4" + postcss "^8.4.45" + postcss-prefix-selector "^1.16.1" redoc "2.1.5" styled-components "^6.1.11" -docusaurus-theme-search-typesense@^0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/docusaurus-theme-search-typesense/-/docusaurus-theme-search-typesense-0.20.0.tgz#e7ee5fff28ecab8f0f143f5fca38f05ca705e046" - integrity sha512-ESzngK32c+fY40uT9L0Nq0bH1luHk2DjBeUCWHjGMZ2Y7/AFgBII8SZMkzsSqkGFIEh3tM/80g4uNobQhYgCqA== +docusaurus-theme-search-typesense@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/docusaurus-theme-search-typesense/-/docusaurus-theme-search-typesense-0.22.0.tgz#424651b4feef0b0a16614f211d1508cf75c8f461" + integrity sha512-6ZX3EP0jRRpeVPbCjroY0C+mmO5fbpUn7O5JKaemWmrIesCFnfbC2zaqvdSQKVxzhYyUTZTz8uEuFS8ZpVi5iw== dependencies: - "@docusaurus/logger" "3.4.0" - "@docusaurus/plugin-content-docs" "3.4.0" - "@docusaurus/theme-translations" "3.4.0" - "@docusaurus/utils" "3.4.0" - "@docusaurus/utils-validation" "3.4.0" + "@docusaurus/logger" "^3.5.2" + "@docusaurus/plugin-content-docs" "^3.5.2" + "@docusaurus/theme-translations" "^3.5.2" + "@docusaurus/utils" "^3.5.2" + "@docusaurus/utils-validation" "^3.5.2" algoliasearch-helper "^3.10.0" clsx "^1.2.1" eta "^2.0.0" @@ -6112,18 +5926,18 @@ eslint-config-prettier@^8.8.0: resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== -eslint-config-standard-with-typescript@34.0.1: - version "34.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-34.0.1.tgz#4cf797c7f54b2eb1683c7e990b45a257ed4a9992" - integrity sha512-J7WvZeLtd0Vr9F+v4dZbqJCLD16cbIy4U+alJMq4MiXdpipdBM3U5NkXaGUjePc4sb1ZE01U9g6VuTBpHHz1fg== +eslint-config-standard-with-typescript@^43.0.1: + version "43.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-43.0.1.tgz#977862d7d41b0e1f27f399137bbf7b2e017037ff" + integrity sha512-WfZ986+qzIzX6dcr4yGUyVb/l9N3Z8wPXCc5z/70fljs3UbWhhV+WxrfgsqMToRzuuyX9MqZ974pq2UPhDTOcA== dependencies: - "@typescript-eslint/parser" "^5.43.0" - eslint-config-standard "17.0.0" + "@typescript-eslint/parser" "^6.4.0" + eslint-config-standard "17.1.0" -eslint-config-standard@17.0.0: - version "17.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz#fd5b6cf1dcf6ba8d29f200c461de2e19069888cf" - integrity sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg== +eslint-config-standard@17.1.0: + version "17.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#40ffb8595d47a6b242e07cbfd49dc211ed128975" + integrity sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q== eslint-import-resolver-node@^0.3.9: version "0.3.9" @@ -6219,7 +6033,7 @@ eslint-plugin-react@7.32.2: semver "^6.3.0" string.prototype.matchall "^4.0.8" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -6540,7 +6354,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0: +fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -7625,6 +7439,11 @@ ignore@^5.0.0, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== +ignore@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + image-size@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.2.tgz#d778b6d0ab75b2737c1556dd631652eb963bc486" @@ -9317,6 +9136,13 @@ minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch dependencies: brace-expansion "^1.1.7" +minimatch@9.0.3, minimatch@^9.0.0, minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimatch@^5.0.1: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" @@ -9324,10 +9150,10 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== dependencies: brace-expansion "^2.0.1" @@ -9402,11 +9228,6 @@ nanoid@^3.3.6, nanoid@^3.3.7: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -10082,6 +9903,11 @@ picocolors@^1.0.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -10389,6 +10215,11 @@ postcss-ordered-values@^6.0.2: cssnano-utils "^4.0.2" postcss-value-parser "^4.2.0" +postcss-prefix-selector@^1.16.1: + version "1.16.1" + resolved "https://registry.yarnpkg.com/postcss-prefix-selector/-/postcss-prefix-selector-1.16.1.tgz#87a77523838b79c0e8aec29f173234b2987cdc04" + integrity sha512-Umxu+FvKMwlY6TyDzGFoSUnzW+NOfMBLyC1tAkIjgX+Z/qGspJeRjVC903D7mx7TuBpJlwti2ibXtWuA7fKMeQ== + postcss-reduce-idents@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz#b0d9c84316d2a547714ebab523ec7d13704cd486" @@ -10494,6 +10325,15 @@ postcss@^8.4.24, postcss@^8.4.38: picocolors "^1.0.1" source-map-js "^1.2.0" +postcss@^8.4.45: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.0" + source-map-js "^1.2.1" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -10942,13 +10782,13 @@ redoc@2.1.5: swagger2openapi "^7.0.8" url-template "^2.0.8" -redocusaurus@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/redocusaurus/-/redocusaurus-2.1.1.tgz#f2caca4c876dd76b7da9f060e290ee1db848d309" - integrity sha512-uaiuSsty0TcYuibabEw72DzN5JL6eF9KTIR5dL61qP7smFwIY8THEsNogzKTfcKCb6MJ8ug4vohrnrANn3K3cg== +redocusaurus@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/redocusaurus/-/redocusaurus-2.1.2.tgz#c5fb1ff01061f7eb3c4bcd822f62ee003ed1ae50" + integrity sha512-PqMXxmjAyQ78zdI9W5lUI21a9N9bXDQYj5NuTcjG5xmyn63+KfqF+ugmqh7FbY3Fr9Sud14X6ZDoRGdwVtBDew== dependencies: docusaurus-plugin-redoc "2.1.1" - docusaurus-theme-redoc "2.1.1" + docusaurus-theme-redoc "2.1.2" reftools@^1.1.9: version "1.1.9" @@ -11426,6 +11266,11 @@ semver@^7.0.0, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semve dependencies: lru-cache "^6.0.0" +semver@^7.6.0: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -11743,6 +11588,11 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -12331,6 +12181,11 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== +ts-api-utils@^1.0.1, ts-api-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -12356,18 +12211,6 @@ tslib@2.6.2, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6. resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" From ef2f2c77c22090dbe6517a1db01f3b549678df5a Mon Sep 17 00:00:00 2001 From: Alex Ni <12097569+nialexsan@users.noreply.github.com> Date: Wed, 23 Oct 2024 11:18:06 -0400 Subject: [PATCH 09/12] fix links --- docs/build/guides/mobile/react-native-quickstart.md | 2 +- .../node-ops/node-operation/guides/genesis-bootstrap.md | 2 +- docs/networks/node-ops/node-operation/spork.md | 6 ------ 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/docs/build/guides/mobile/react-native-quickstart.md b/docs/build/guides/mobile/react-native-quickstart.md index 2d41f23dc2..6d2c88c74c 100644 --- a/docs/build/guides/mobile/react-native-quickstart.md +++ b/docs/build/guides/mobile/react-native-quickstart.md @@ -299,7 +299,7 @@ In the `args` section, we are simply passing it our user's account address from Go ahead and click the "Send Query" button. You should see "No Profile." That's because we haven't initialized the account yet. -## Initializing the Account +## Initializing an Account For the Profile contract to store a Profile in a user's account, it does so by initializing what is called a "resource." A resource is an ownable piece of data and functionality that can live in the user's account storage. This paradigm is known is as "resource-oriented-programming", a principle that is core to Cadence and differentiates its ownership model from other smart contract languages, [read more here](../../smart-contracts/cadence.md#intuiting-ownership-with-resources). Cadence makes it so that resources can only exist in one place at any time, they must be deliberately created, cannot be copied, and if desired, must be deliberately destroyed. diff --git a/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md b/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md index c7b724aad0..186a7c7bf1 100644 --- a/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md +++ b/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md @@ -20,7 +20,7 @@ The Flow consensus algorithm depends on there always being a previous block, whi The bootstrapping process will be in 2 phases, with the Flow team signing the Genesis block between the two. - The bootstrapping process deals with a number of different keys. Make sure you understand their usage and terminology by reviewing the [Node Keys Guide](../node-bootstrap.md#generating-your-node-id). + The bootstrapping process deals with a number of different keys. Make sure you understand their usage and terminology by reviewing the [Node Keys Guide](../node-bootstrap.md#generating-your-node-keys). ## Download the Bootstrapping Toolkit diff --git a/docs/networks/node-ops/node-operation/spork.md b/docs/networks/node-ops/node-operation/spork.md index 4b89a9e0c7..8d2210bb7e 100644 --- a/docs/networks/node-ops/node-operation/spork.md +++ b/docs/networks/node-ops/node-operation/spork.md @@ -87,9 +87,3 @@ See [Node Bootstrap](./node-bootstrap.md) for detailed information on Docker/Sys ``` This error is OK. Your fellow node operators have not turned on/joined the network yet. So no need to worry about it! - -### Flow Node Not Booting Up - -If your Flow node is not able to boot up, or it exits right after it boots up. You will need to do a [clean up of your state](./node-bootstrap.md#step-0---cleaning-up-your-previous-state). - -After cleaning up the state try booting it up again. If the problem persists, message a member from the Flow team on Discord. From dfc9bd2b68763aea0a2990a72f770467b1a2f67c Mon Sep 17 00:00:00 2001 From: Alex Ni <12097569+nialexsan@users.noreply.github.com> Date: Wed, 23 Oct 2024 11:21:38 -0400 Subject: [PATCH 10/12] update node --- .github/workflows/deploy.yml | 2 +- .github/workflows/test-deploy.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 8d4e000ae1..8555daedd8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -20,7 +20,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 20 cache: yarn - name: Install Yarn diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml index b972d1bf20..2e731ebc97 100644 --- a/.github/workflows/test-deploy.yml +++ b/.github/workflows/test-deploy.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 20 cache: yarn - name: Install Yarn From f2281ccc0ad2a2eef6c7384d76788d563c02444a Mon Sep 17 00:00:00 2001 From: Alex Ni <12097569+nialexsan@users.noreply.github.com> Date: Wed, 23 Oct 2024 11:23:49 -0400 Subject: [PATCH 11/12] fix anchor --- .../node-ops/node-operation/guides/genesis-bootstrap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md b/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md index 186a7c7bf1..463e15e8f4 100644 --- a/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md +++ b/docs/networks/node-ops/node-operation/guides/genesis-bootstrap.md @@ -20,7 +20,7 @@ The Flow consensus algorithm depends on there always being a previous block, whi The bootstrapping process will be in 2 phases, with the Flow team signing the Genesis block between the two. - The bootstrapping process deals with a number of different keys. Make sure you understand their usage and terminology by reviewing the [Node Keys Guide](../node-bootstrap.md#generating-your-node-keys). + The bootstrapping process deals with a number of different keys. Make sure you understand their usage and terminology by reviewing the [Node Keys Guide](../node-bootstrap.md#generate-your-node-keys). ## Download the Bootstrapping Toolkit From 312a024a8ce8d22c2bf6e94c7539042d0f64608f Mon Sep 17 00:00:00 2001 From: Alex Ni <12097569+nialexsan@users.noreply.github.com> Date: Tue, 5 Nov 2024 16:18:09 -0500 Subject: [PATCH 12/12] address comments --- docs/build/basics/transactions.md | 14 +++--- .../build/core-contracts/10-nft-storefront.md | 47 +++++++++++++------ .../guides/account-linking/child-accounts.md | 4 +- docs/networks/flow-port/staking-guide.md | 4 +- .../node-ops/node-operation/node-bootstrap.md | 10 ++++ docs/tools/vscode-extension/index.md | 2 +- 6 files changed, 55 insertions(+), 26 deletions(-) diff --git a/docs/build/basics/transactions.md b/docs/build/basics/transactions.md index 7d1a17e361..3bd738e83e 100644 --- a/docs/build/basics/transactions.md +++ b/docs/build/basics/transactions.md @@ -22,7 +22,7 @@ In order for a transaction to be valid and executed it must contain signatures f ![Screenshot 2023-08-17 at 14.52.56.png](_transactions_images/Screenshot_2023-08-17_at_14.52.56.png) -#### Script +### Script The script section contains instructions for transaction execution. This is a Cadence program in source code form (human-readable), and encoded as UTF-8. The transaction program must contain a `transaction` declaration. @@ -43,19 +43,19 @@ transaction(greeting: String) { } ``` -#### Arguments +### Arguments Transactions may declare parameters it needs during execution, these must be provided as input arguments when sending a transaction. You can think of them as function arguments. Currently, we provide [arguments in the JSON-Cadence Data Interchange Format](https://cadencelang.dev/docs/1.0/json-cadence-spec). Which is a human-readable JSON format. The sample script from above accepts a single `String` argument. -#### Reference Block +### Reference Block A reference to a recent block used for expiry. A transaction is considered expired if it is submitted to Flow after reference block height + N, where N is a constant defined by the network. On mainnet current setting for N is 600 which amounts to approximately 10 minutes for expiry (please note this is subject to change). -#### Gas Limit +### Gas Limit When a transaction is executed each operation consumes a predefined amount of computational units (we define more about that in the Fees documentation). This defines the maximum amount of computation that is allowed to be done during this transaction. If a transaction completes execution using fewer computational units than the limit, it remains unaffected. However, if it hits this limit during execution, the transaction will fail, its changes will be reverted, but fees will still be applied. The maximum computational limit for Flow mainnet is currently at 9999, but this might change. The maximum network limit is defined to protect the network from transactions that would run forever. -#### Proposal Key +### Proposal Key Each transaction must declare a proposal key, which can be an account key from any Flow account (App, User or Wallet). The account that owns the proposal key is referred to as the *proposer*. @@ -69,7 +69,7 @@ A proposal key definition declares the address, key ID, and up-to-date sequence - Key ID is an index number (starting at 0) that identifies the key on the account provided in the address. - Sequence Number is a number on each key that increments by 1 with each transaction. This ensures that each transaction executes at most once and prevents many unwanted situations, such as [transaction replay attacks](https://en.wikipedia.org/wiki/Replay_attack). Each key in an account has a dedicated sequence number associated with it. Unlike Ethereum, there is no sequence number for the entire account. -#### Authorizers +### Authorizers Authorizers are accounts that authorize a transaction to read and mutate their state. A transaction can specify zero or more authorizers, depending on how many accounts the transaction needs to access. @@ -93,7 +93,7 @@ that are required for the transaction to execute properly. This ensures that users who are signing transactions can understand what parts of their account a transaction can access. -#### Payer +### Payer A payer is the account that pays the fees for the transaction. A transaction must specify exactly one payer. The payer is only responsible for paying the network and gas fees; the transaction is not authorized to access resources or code stored in the payer account. diff --git a/docs/build/core-contracts/10-nft-storefront.md b/docs/build/core-contracts/10-nft-storefront.md index 529d9e29e5..9ea5a85818 100644 --- a/docs/build/core-contracts/10-nft-storefront.md +++ b/docs/build/core-contracts/10-nft-storefront.md @@ -9,14 +9,14 @@ and buy them from listings. `NFTStorefrontV2` is the more powerful and full-feat version, so developers and users are encouraged to use it instead of `NFTStorefront` or their own implementation. -Source: [NFTStorefrontV2.cdc](https://github.com/onflow/nft-storefront/blob/main/contracts/NFTStorefrontV2.cdc) +Source: [NFTStorefrontV2.cdc] | Network | Contract Address | | ------- | -------------------- | | Testnet | `0x2d55b98eb200daef` | | Mainnet | `0x4eb8a10cb9f87357` | -Source: [NFTStorefront.cdc](https://github.com/onflow/nft-storefront/blob/main/contracts/NFTStorefront.cdc) +Source: [NFTStorefront.cdc] | Network | Contract Address | | ------- | -------------------- | @@ -45,12 +45,12 @@ Marketplaces then process an NFT trade by interacting directly with seller store ## Functional Overview -A general purpose sale support contract for NFTs implementing the Flow [`NonFungibleToken`](https://github.com/onflow/flow-nft/blob/master/contracts/NonFungibleToken.cdc) standard. +A general purpose sale support contract for NFTs implementing the Flow [`NonFungibleToken`] standard. Each account that wants to list NFTs for sale creates a `Storefront` resource to store in their account and lists individual sales within that Storefront as Listings. There is usually one Storefront per account held at the `/storage/NFTStorefrontV2`. Each listing can define one or more sale cuts taken out of the sale price to go to one or more addresses. Listing fees, royalties, or other considerations can be paid using sale cuts. Also, the listing can include a commission as one of these sale cuts is paid to whoever facilitates the purchase. -Listings can have an optional list of marketplace [receiver capabilities](https://cadence-lang.org/docs/language/capabilities) used to receive the commission for fulfilling the listing. An NFT may be listed in one or more Listings, and the validity of each listing can easily be checked. +Listings can have an optional list of marketplace [receiver capabilities] used to receive the commission for fulfilling the listing. An NFT may be listed in one or more Listings, and the validity of each listing can easily be checked. Interested parties can globally track Listing events on-chain and filter by NFT types, IDs and other characteristics to determine which to make available for purchase within their own marketplace UIs." @@ -62,7 +62,7 @@ Many marketplaces create a single storefront resource to manage different indivi ## Creating a successful listing using the NFTStorefrontV2 contract. -As recommended above, the first step is to create and store the [Storefront resource](#resource-storefront) in the user account using the [setup_account](https://github.com/onflow/nft-storefront/blob/main/transactions/setup_account.cdc) transaction. +As recommended above, the first step is to create and store the [Storefront resource] in the user account using the [setup_account] transaction. The next step is to create a listing under the newly created storefront resource. If the user (repetitive) already holds the storefront resource, then use the existing resource. The seller can come with multiple requirements for listing their NFTs, and We try our best to cover most of them below. @@ -74,7 +74,7 @@ The `NFTStorefrontV2` contract doesn’t support selling an NFT for multiple dif ![scenario_1](./scenario_1.png) -Putting an NFT on sell called listing, seller can create a listing using [sell_item](https://github.com/onflow/nft-storefront/blob/main/transactions/sell_item.cdc) transaction by providing some required details to list an NFT, i.e. Receiving currency type, [Capability](https://cadence-lang.org/docs/language/capabilities) from where NFT will be deducted etc. If interested look [here](<#fun-createlisting>) for more details. +Putting an NFT on sell called listing, seller can create a listing using [sell_item] transaction by providing some required details to list an NFT, i.e. Receiving currency type, [Capability] from where NFT will be deducted etc. If interested look [`createListing`] for more details. To receive a different currency seller has to provide a different **Receiver currency type** , i.e. `salePaymentVaultType` As depicted in the above diagram, There are two listing formations with almost the same inputs. The only differentiator is the `salePaymentVaultType` parameter that needs to be different when creating duplicate NFT listings with different sale currency types. @@ -82,13 +82,13 @@ To receive a different currency seller has to provide a different **Receiver cur Dapps can leverage the **NFTStorefrontV2** to facilitate the creation of a listing for the seller independent of any marketplace. Dapps or marketplaces can list those listings on their platforms, or seller can settle it p2p. -The seller can use [sell_item](https://github.com/onflow/nft-storefront/blob/main/transactions/sell_item.cdc) transaction to create a p2p listing, providing the `marketplacesAddress` with an empty array. The seller has a choice of providing [commission](#enabling-marketplace-commissions-for-nft-sales) to the facilitator of sale, which can also act as a discount if the facilitator and the purchaser are the same. +The seller can use [sell_item] transaction to create a p2p listing, providing the `marketplacesAddress` with an empty array. The seller has a choice of providing [commission] to the facilitator of sale, which can also act as a discount if the facilitator and the purchaser are the same. ### **Scenario 3:** The seller wants to list its NFT in different marketplaces. `NFTStorefrontV2` offers two different ways of doing it. -- The seller can create a listing and provide the `marketplacesAddress` that it wants to have a listing on using [sell_item](https://github.com/onflow/nft-storefront/blob/main/transactions/sell_item.cdc) transaction. +- The seller can create a listing and provide the `marketplacesAddress` that it wants to have a listing on using [sell_item] transaction. Marketplaces can listen to `ListingAvailable` events and check whether their address is included in the `commissionReceivers` list; If yes, the marketplace would be rewarded during the successful fulfilment of the listing. @@ -96,7 +96,7 @@ The seller can use [sell_item](https://github.com/onflow/nft-storefront/blob/mai ![scenario_3](https://user-images.githubusercontent.com/14581509/190966834-8eda4ec4-e9bf-49ef-9dec-3c47a236d281.png) -- Another way to accomplish this is to create separate listings for each marketplace on which a user wants their listing using [sell_item_with_marketplace_cut](https://github.com/onflow/nft-storefront/blob/main/transactions/sell_item_with_marketplace_cut.cdc) transaction. In this case, the marketplace would be incentivized by earning one of the parts of the [`saleCut`](https://github.com/onflow/nft-storefront/blob/160e97aa802405ad26a3164bcaff0fde7ee52ad2/contracts/NFTStorefrontV2.cdc#L104) by appending marketplace saleCut in `saleCuts` array during the creation of the listing. +- Another way to accomplish this is to create separate listings for each marketplace on which a user wants their listing using [sell_item_with_marketplace_cut] transaction. In this case, the marketplace would be incentivized by earning one of the parts of the [`saleCut`] by appending marketplace saleCut in `saleCuts` array during the creation of the listing. ### Considerations @@ -110,7 +110,7 @@ The seller can use [sell_item](https://github.com/onflow/nft-storefront/blob/mai ## Purchasing NFTs -Purchasing NFTs through the `NFTStorefrontV2` is simple. The buyer has to provide the payment vault and the `commissionRecipient` , if applicable, during the purchase. p2p dApps don’t need any intermediaries to facilitate the purchase of listings. [`purchase`](#fun-purchase) API offered by the `Listing` resource gets used to facilitate the purchase of NFT. +Purchasing NFTs through the `NFTStorefrontV2` is simple. The buyer has to provide the payment vault and the `commissionRecipient` , if applicable, during the purchase. p2p dApps don’t need any intermediaries to facilitate the purchase of listings. [`purchase`] API offered by the `Listing` resource gets used to facilitate the purchase of NFT. During the listing purchase all saleCuts are paid automatically. This also includes distributing royalties for that NFT, if applicable. If the vault provided by the buyer lacks sufficient funds then the transaction will fail. @@ -120,13 +120,13 @@ During the listing purchase all saleCuts are paid automatically. This also inclu **Note -** _We recommended NOT to have more than 50 (TBD) duplicate listings of any given NFT._ -2. **Unsupported receiver capability** - A common pitfall during the purchase of an NFT that some saleCut receivers don’t have a supported receiver capability because that entitled sale cut would transfer to first valid sale cut receiver. However, it can be partially solved by providing the generic receiver using the [`FungibleTokenSwitchboard`](https://github.com/onflow/flow-ft/blob/master/contracts/FungibleTokenSwitchboard.cdc) contract and adding all the currency capabilities the beneficiary wants to receive. More on the `FungibleTokenSwitchboard` can be read [here](https://github.com/onflow/flow-ft#fungible-token-switchboard) +2. **Unsupported receiver capability** - A common pitfall during the purchase of an NFT that some saleCut receivers don’t have a supported receiver capability because that entitled sale cut would transfer to first valid sale cut receiver. However, it can be partially solved by providing the generic receiver using the [`FungibleTokenSwitchboard`] contract and adding all the currency capabilities the beneficiary wants to receive. More on the `FungibleTokenSwitchboard` can be read in [Fungible Token Switchboard] ## Enabling creator royalties for NFTs The `NFTStorefrontV2` contract optionally supports paying royalties to the minter account for secondary resales of that NFT after the original sale. Marketplaces decide for themselves whether to support creator royalties when validating listings for sale eligibility. We encourage all marketplaces to support creator royalties and support community creators in the **FLOW** ecosystem. -Providing that a seller's NFT supports the [Royalty Metadata View](https://github.com/onflow/flow-nft/blob/21c254438910c8a4b5843beda3df20e4e2559625/contracts/MetadataViews.cdc#L335) standard, then marketplaces can honor royalties payments at time of purchase. `NFTStorefrontV2` dynamically calculates the royalties owed at the time of listing creation and applies it as a saleCut of the listing at the time of purchase. +Providing that a seller's NFT supports the [Royalty Metadata View] standard, then marketplaces can honor royalties payments at time of purchase. `NFTStorefrontV2` dynamically calculates the royalties owed at the time of listing creation and applies it as a saleCut of the listing at the time of purchase. ```cadence // Check whether the NFT implements the MetadataResolver or not. @@ -147,9 +147,9 @@ if nft.getViews().contains(Type()) { } ``` -Complete transaction can be viewed [here](https://github.com/onflow/nft-storefront/blob/main/transactions/sell_item.cdc). +Complete transaction can be viewed in [sell_item]. -saleCut only supports a single token receiver type and therefore beneficiaries of a `saleCut` can also only receive the token type used for the purchase. To support different token types for saleCuts we recommend using the [FungibleTokenSwitchboard](https://github.com/onflow/flow-ft/blob/master/contracts/FungibleTokenSwitchboard.cdc) contract. The contract defines a generic receiver for fungible tokens which itself handles routing of tokens to the respective vault for that token type. Learn more about this [here](https://github.com/onflow/flow-ft#fungible-token-switchboard). +saleCut only supports a single token receiver type and therefore beneficiaries of a `saleCut` can also only receive the token type used for the purchase. To support different token types for saleCuts we recommend using the [`FungibleTokenSwitchboard`] contract. The contract defines a generic receiver for fungible tokens which itself handles routing of tokens to the respective vault for that token type. Learn more about this in [Fungible Token Switchboard]. ## Enabling marketplace commissions for NFT sales @@ -468,3 +468,22 @@ A entitled receiver has not been paid during the sale of the NFT. **Holistic process flow diagram of NFTStorefrontV2 -** ![NFT Storefront Process flow](https://user-images.githubusercontent.com/14581509/191960793-ff153e5d-2934-410c-b724-5c5dffd2c20f.png) + + + +[NFTStorefrontV2.cdc]: https://github.com/onflow/nft-storefront/blob/main/contracts/NFTStorefrontV2.cdc +[NFTStorefront.cdc]: https://github.com/onflow/nft-storefront/blob/main/contracts/NFTStorefront.cdc +[`NonFungibleToken`]: https://github.com/onflow/flow-nft/blob/master/contracts/NonFungibleToken.cdc +[receiver capabilities]: https://cadence-lang.org/docs/language/capabilities +[Storefront resource]: #resource-storefront +[setup_account]: https://github.com/onflow/nft-storefront/blob/main/transactions/setup_account.cdc +[sell_item]: https://github.com/onflow/nft-storefront/blob/main/transactions/sell_item.cdc +[Capability]: https://cadence-lang.org/docs/language/capabilities +[`createListing`]: #fun-createlisting +[Fungible Token Switchboard]: https://github.com/onflow/flow-ft#fungible-token-switchboard +[commission]: #enabling-marketplace-commissions-for-nft-sales +[sell_item_with_marketplace_cut]: https://github.com/onflow/nft-storefront/blob/main/transactions/sell_item_with_marketplace_cut.cdc +[`saleCut`]: https://github.com/onflow/nft-storefront/blob/160e97aa802405ad26a3164bcaff0fde7ee52ad2/contracts/NFTStorefrontV2.cdc#L104 +[`purchase`]: #fun-purchase +[`FungibleTokenSwitchboard`]: https://github.com/onflow/flow-ft/blob/master/contracts/FungibleTokenSwitchboard.cdc +[Royalty Metadata View]: https://github.com/onflow/flow-nft/blob/21c254438910c8a4b5843beda3df20e4e2559625/contracts/MetadataViews.cdc#L335 \ No newline at end of file diff --git a/docs/build/guides/account-linking/child-accounts.md b/docs/build/guides/account-linking/child-accounts.md index afa320a656..6b5d8252a1 100644 --- a/docs/build/guides/account-linking/child-accounts.md +++ b/docs/build/guides/account-linking/child-accounts.md @@ -107,7 +107,7 @@ in a way that allows the receiving account to maintain that Capability and allow either end of the linkage - the user's main "parent" account and the linked "child" account. This is accomplished in the `HybridCustody` contract which we'll continue to use in this guidance. -### Pre-requisites +### Prerequisites Since account delegation is mediated by developer-defined rules, you should make sure to first configure the resources that contain those rules. Contracts involved in defining and enforcing this ruleset are @@ -521,7 +521,7 @@ power of the complex transactions you can compose on Flow with Cadence! :::info -Recall the [pre-requisites](#pre-requisites) needed to be satisfied before linking an account: +Recall the [prerequisites](#prerequisites) needed to be satisfied before linking an account: 1. CapabilityFilter Filter saved and linked 2. CapabilityFactory Manager saved and linked as well as Factory implementations supporting the Capability Types you'll diff --git a/docs/networks/flow-port/staking-guide.md b/docs/networks/flow-port/staking-guide.md index 726a7c7ce9..9097837d44 100644 --- a/docs/networks/flow-port/staking-guide.md +++ b/docs/networks/flow-port/staking-guide.md @@ -21,7 +21,7 @@ From here you can decide whether to stake or delegate. Users who will be running their own nodes can stake them using the Flow Port. -#### Pre-requisites +#### Prerequisites In order to stake your node, you'll need to have the required amount of FLOW for your node type. You'll also need the following information about your node: @@ -66,7 +66,7 @@ If you return to the home screen, you'll be able to see your staking request in Delegating is the process of staking your locked FLOW to nodes which are being run by another party. -#### Pre-requisites +#### Prerequisites In order to delegate your stake to another node, you'll need to know the **node operator ID** of the operator who is running the nodes you wish to stake. Here is a list of node operator IDs you can delegate to: [List of Available Node Operators](https://github.com/onflow/flow/blob/master/nodeoperators/NodeOperatorList.md) diff --git a/docs/networks/node-ops/node-operation/node-bootstrap.md b/docs/networks/node-ops/node-operation/node-bootstrap.md index 6ba1fff507..7052bd4849 100644 --- a/docs/networks/node-ops/node-operation/node-bootstrap.md +++ b/docs/networks/node-ops/node-operation/node-bootstrap.md @@ -26,13 +26,17 @@ of the `Epoch Setup Phase` to participate in the [Epoch Preparation Protocol](.. ## Step 1 - Run Genesis Bootstrap :::info + You will need to run this process for each node that you are operating + ::: ### Download the Bootstrapping Kit :::warning + If you have downloaded the bootstrapping kit previously, ensure you check the hash below still matches. If not, re-download to ensure you are using the most up-to-date version. + ::: ```shell @@ -294,7 +298,9 @@ This is the recommended way to start your node for the first time. 4. Start your node (see [guide](./node-setup#start-the-node)) :::info + Once the node has bootstrapped, these flags will be ignored and may be removed. + ::: ### Manually Provisioned Root Snapshot @@ -303,12 +309,16 @@ You can also provision the root snapshot file manually, then start the node with See [here](./protocol-state-bootstrap.md) for the available options to provision a Root Snapshot. :::warning + The snapshot must be within the `Epoch Setup Phase`. + ::: :::warning + Since Collection and Consensus Nodes must start up in the first ~30mins of the `Epoch Setup Phase` (see [Timing](./node-bootstrap.md#timing)), the snapshot must be provisioned within this time window. + ::: Once a valid root snapshot file is downloaded to the node's bootstrap folder, it can be started (see [guide](./node-setup.md#start-the-node)) diff --git a/docs/tools/vscode-extension/index.md b/docs/tools/vscode-extension/index.md index c06a0f26b1..daec9d922e 100644 --- a/docs/tools/vscode-extension/index.md +++ b/docs/tools/vscode-extension/index.md @@ -41,7 +41,7 @@ Restart VS Code and the extension should be installed! ## Developing the Extension -### Pre-requisites +### Prerequisites - Must have Typescript installed globally: `npm i -g typescript`