From 4a8dcc5c418ecf7180e03c6c855b72289210ff2e Mon Sep 17 00:00:00 2001 From: Lukasz Kalbarczyk Date: Wed, 25 Jan 2023 14:45:08 +0100 Subject: [PATCH] feat: Support for Starknet contracts --- .gitignore | 2 +- package.json | 7 + src/assets/chains/fuel.svg | 14 + src/assets/chains/starknet.png | Bin 0 -> 9321 bytes src/assets/icons/tx.png | Bin 0 -> 26696 bytes src/chains/evm/EvmPricesContractAdapter.ts | 32 + src/chains/evm/EvmPricesContractConnector.ts | 23 + .../evm}/ShowroomContractAbi.json | 0 src/{hooks => chains/evm}/usePricesData.tsx | 0 src/components/ChainButton.tsx | 6 +- src/components/ChainDataTable.tsx | 13 +- src/components/ChainTx.tsx | 41 + src/components/PricesTable.tsx | 2 +- src/components/ReadPricesButton.tsx | 12 + src/components/WritePricesButton.tsx | 12 + src/config/chains.ts | 26 + src/hooks/useMockLoader.tsx | 5 +- src/hooks/usePricesContract.tsx | 152 ++++ src/hooks/usePricesFromContract.tsx | 88 -- src/hooks/useStarknet.tsx | 66 ++ src/hooks/useWeb3Modal.tsx | 29 +- src/pages/EvmBlock.tsx | 98 ++ src/pages/Showroom.tsx | 105 +-- src/pages/StarknetBlock.tsx | 111 +++ tsconfig.json | 3 +- yarn.lock | 836 ++++++++++++------ 26 files changed, 1221 insertions(+), 462 deletions(-) create mode 100644 src/assets/chains/fuel.svg create mode 100644 src/assets/chains/starknet.png create mode 100644 src/assets/icons/tx.png create mode 100644 src/chains/evm/EvmPricesContractAdapter.ts create mode 100644 src/chains/evm/EvmPricesContractConnector.ts rename src/{config => chains/evm}/ShowroomContractAbi.json (100%) rename src/{hooks => chains/evm}/usePricesData.tsx (100%) create mode 100644 src/components/ChainTx.tsx create mode 100644 src/components/ReadPricesButton.tsx create mode 100644 src/components/WritePricesButton.tsx create mode 100644 src/hooks/usePricesContract.tsx delete mode 100644 src/hooks/usePricesFromContract.tsx create mode 100644 src/hooks/useStarknet.tsx create mode 100644 src/pages/EvmBlock.tsx create mode 100644 src/pages/StarknetBlock.tsx diff --git a/.gitignore b/.gitignore index e64c00f..cda503d 100644 --- a/.gitignore +++ b/.gitignore @@ -25,4 +25,4 @@ dist-ssr .env -.parcel-cache/* \ No newline at end of file +.parcel-cache/ diff --git a/package.json b/package.json index 4aecd5b..1897938 100644 --- a/package.json +++ b/package.json @@ -7,12 +7,17 @@ "build": "parcel build index.html" }, "dependencies": { + "@argent/get-starknet": "^5.3.13", "@redstone-finance/evm-connector": "^0.0.18", + "@redstone-finance/starknet-connector": "^0.2.2", + "axios": "^1.2.2", "ethers": "^5.6.9", "parcel": "^2.6.2", "react": "^18.2.0", "react-dom": "^18.2.0", "redstone-api": "^0.4.11", + "redstone-sdk": "^1.0.9", + "starknet": "^4.22.0", "web3modal": "^1.9.8" }, "devDependencies": { @@ -20,6 +25,8 @@ "@types/react-dom": "^18.0.6", "assert": "^2.0.0", "buffer": "^5.5.0", + "graphql-request": "5.1.0", + "path-browserify": "^1.0.1", "postcss": "^8.4.14", "prettier": "^2.7.1", "stream-browserify": "^3.0.0", diff --git a/src/assets/chains/fuel.svg b/src/assets/chains/fuel.svg new file mode 100644 index 0000000..12d7c10 --- /dev/null +++ b/src/assets/chains/fuel.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/chains/starknet.png b/src/assets/chains/starknet.png new file mode 100644 index 0000000000000000000000000000000000000000..4039c2cfd2aadf122a09a335b44dd384d51c117b GIT binary patch literal 9321 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 T6wmdwLIhBfSCgxf0f+p5ij)*a literal 0 HcmV?d00001 diff --git a/src/assets/icons/tx.png b/src/assets/icons/tx.png new file mode 100644 index 0000000000000000000000000000000000000000..602244bafa8ecf436cd3ea9e886262863545250d GIT binary patch literal 26696 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≪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 { + return await WrapperBuilder.wrap(this.contract) + .usingDataService(paramsProvider.requestParams, paramsProvider.urls) + .getPrices(); + } + + readPricesFromContract( + paramsProvider: ContractParamsProvider + ): Promise { + throw "Method not supported"; + } + + readTimestampFromContract(): Promise { + throw "Method not supported"; + } + + writePricesFromPayloadToContract( + paramsProvider: ContractParamsProvider + ): Promise { + throw "Method not supported"; + } +} diff --git a/src/chains/evm/EvmPricesContractConnector.ts b/src/chains/evm/EvmPricesContractConnector.ts new file mode 100644 index 0000000..c210cb5 --- /dev/null +++ b/src/chains/evm/EvmPricesContractConnector.ts @@ -0,0 +1,23 @@ +import { Contract, providers } from "ethers"; +import { IContractConnector, IPricesContractAdapter } from "redstone-sdk"; +import { EvmPricesContractAdapter } from "./EvmPricesContractAdapter"; +import { abi } from "./ShowroomContractAbi.json"; + +export class EvmPricesContractConnector + implements IContractConnector +{ + constructor( + private readonly contractAddress: string, + private readonly signer: providers.JsonRpcSigner + ) {} + + getBlockNumber(rpcUrl: string): Promise { + return this.signer.provider.getBlockNumber(); + } + + async getAdapter(): Promise { + return new EvmPricesContractAdapter( + new Contract(this.contractAddress, abi, this.signer) + ); + } +} diff --git a/src/config/ShowroomContractAbi.json b/src/chains/evm/ShowroomContractAbi.json similarity index 100% rename from src/config/ShowroomContractAbi.json rename to src/chains/evm/ShowroomContractAbi.json diff --git a/src/hooks/usePricesData.tsx b/src/chains/evm/usePricesData.tsx similarity index 100% rename from src/hooks/usePricesData.tsx rename to src/chains/evm/usePricesData.tsx diff --git a/src/components/ChainButton.tsx b/src/components/ChainButton.tsx index d5b9c11..de9ef1c 100644 --- a/src/components/ChainButton.tsx +++ b/src/components/ChainButton.tsx @@ -20,7 +20,11 @@ export const ChainButton = ({ onClick={() => onChainClick(chain)} disabled={disabled} > - {`${chain.label} + {`${chain.label} {chain.label} ); diff --git a/src/components/ChainDataTable.tsx b/src/components/ChainDataTable.tsx index 61ef3e2..a1850b6 100644 --- a/src/components/ChainDataTable.tsx +++ b/src/components/ChainDataTable.tsx @@ -11,7 +11,7 @@ export const ChainDataTable = ({ walletAddress, network }: Props) => ( - - + - -
+ ( /> Your wallet {walletAddress}{walletAddress}
+ ( /> Integrated Contract + diff --git a/src/components/ChainTx.tsx b/src/components/ChainTx.tsx new file mode 100644 index 0000000..a1598ca --- /dev/null +++ b/src/components/ChainTx.tsx @@ -0,0 +1,41 @@ +import { ChainDetails } from "../config/chains"; +import TxIcon from "../assets/icons/tx.png"; + +interface Props { + txHash: string; + network: ChainDetails; +} + +export const ChainTx = ({ txHash, network }: Props) => ( + + + + + + + + + + +
+ Contract icon + Last transaction: + + + {txHash} + +
+ + This transaction writes a snapshot of current prices to the + contract's storage. + +
+); diff --git a/src/components/PricesTable.tsx b/src/components/PricesTable.tsx index 31dd222..5b5596d 100644 --- a/src/components/PricesTable.tsx +++ b/src/components/PricesTable.tsx @@ -14,7 +14,7 @@ export const PricesTable = ({ blockNumber, timestamp, prices }: Props) => { })); return ( - +
diff --git a/src/components/ReadPricesButton.tsx b/src/components/ReadPricesButton.tsx new file mode 100644 index 0000000..7624445 --- /dev/null +++ b/src/components/ReadPricesButton.tsx @@ -0,0 +1,12 @@ +interface Props { + readPricesFromContract: () => void; +} + +export const ReadPricesButton = ({ readPricesFromContract }: Props) => ( + +); diff --git a/src/components/WritePricesButton.tsx b/src/components/WritePricesButton.tsx new file mode 100644 index 0000000..be77f9e --- /dev/null +++ b/src/components/WritePricesButton.tsx @@ -0,0 +1,12 @@ +interface Props { + writePricesToContract: () => void; +} + +export const WritePricesButton = ({ writePricesToContract }: Props) => ( + +); diff --git a/src/config/chains.ts b/src/config/chains.ts index 584b2b8..0ac77a9 100644 --- a/src/config/chains.ts +++ b/src/config/chains.ts @@ -19,9 +19,12 @@ import WagmiLogo from "../assets/chains/wagmi-testnet.png"; import PolygonZkEVMLogo from "../assets/chains/polygon-zk-evm.png"; import CantoLogo from "../assets/chains/canto.png"; import BaseLogo from "../assets/chains/base.png"; +import StarknetLogo from "../assets/chains/starknet.png"; export type Chains = { [chainId in number]: ChainDetails }; +export type ChainType = "eth" | "starknet" | "fuel"; + export interface ChainDetails { chainId: string; rpcUrls: string[]; @@ -35,7 +38,9 @@ export interface ChainDetails { blockExplorerUrls: string[]; exampleContractAddress: string; contractExplorerUrl: string; + txExplorerUrl?: string; logo?: any; + type?: ChainType; } export const chains: Chains = { @@ -391,4 +396,25 @@ export const chains: Chains = { "https://goerli.basescan.org/address/0xd75f4b5aa9480e6956f2570dd258ca716784f6e1", logo: BaseLogo, }, + [9999999998]: { + chainId: utils.hexValue(9999999998), + rpcUrls: [ + "https://starknet-goerli.infura.io/v3/0d9bfc9a170947ce8c4f2e15dae7c62a", + ], + chainName: "Starknet Test Network", + label: "Starknet", + nativeCurrency: { + name: "GoerliETH", + symbol: "GoerliETH", + decimals: 18, + }, + blockExplorerUrls: ["https://testnet.starkscan.co/"], + exampleContractAddress: + "0x03a4732136f974a250bf7d95683af13b05a4d605d3f3390469f6178448a73ae1", + contractExplorerUrl: + "https://testnet.starkscan.co/contract/0x03a4732136f974a250bf7d95683af13b05a4d605d3f3390469f6178448a73ae1", + txExplorerUrl: "https://testnet.starkscan.co/tx/", + logo: StarknetLogo, + type: "starknet", + }, }; diff --git a/src/hooks/useMockLoader.tsx b/src/hooks/useMockLoader.tsx index e6c0da9..bea8a9f 100644 --- a/src/hooks/useMockLoader.tsx +++ b/src/hooks/useMockLoader.tsx @@ -4,7 +4,7 @@ import { timeout } from "../utils"; const loaderTexts = [ "Fetching price data", "Sending transaction with fetched price data", - "Receiving price from smart contract", + "Receiving data from smart contract", ]; export const useMockLoader = () => { @@ -14,9 +14,8 @@ export const useMockLoader = () => { const handleTextChange = async () => { for (const text of loaderTexts) { setText(text); - await timeout(1000); + await timeout(500); } - setIsMockLoading(false); }; const startMockLoader = () => { diff --git a/src/hooks/usePricesContract.tsx b/src/hooks/usePricesContract.tsx new file mode 100644 index 0000000..9d7b774 --- /dev/null +++ b/src/hooks/usePricesContract.tsx @@ -0,0 +1,152 @@ +import { Dispatch, SetStateAction, useState } from "react"; +import { emptyPrices } from "../utils"; +import { ChainDetails } from "../config/chains"; +import { usePricesData } from "../chains/evm/usePricesData"; +import { Prices } from "../types"; +import { utils } from "ethers"; +import { + ContractParamsProvider, + IContractConnector, + IPricesContractAdapter, +} from "redstone-sdk"; + +const DATA_SERVICE_URL = "https://d33trozg86ya9x.cloudfront.net"; +const dataPackageRequestParams = { + dataServiceId: "redstone-rapid-demo", + uniqueSignersCount: 1, + dataFeeds: ["BTC", "ETH", "BNB", "AR", "AVAX", "CELO"], +}; + +export const usePricesContract = ( + network: ChainDetails | null, + connector: IContractConnector, + startMockLoader: () => void, + setPrices: Dispatch>, + setIsMockLoading: Dispatch>, + paramsProviderClass: typeof ContractParamsProvider = ContractParamsProvider +) => { + const [blockNumber, setBlockNumber] = useState(0); + const [txHash, setTxHash] = useState(""); + const [timestamp, setTimestamp] = useState(0); + const [isLoading, setIsLoading] = useState(false); + const [errorMessage, setErrorMessage] = useState(""); + + const { getPricesTimestamp } = usePricesData(); + const paramsProvider = new paramsProviderClass(dataPackageRequestParams, [ + DATA_SERVICE_URL, + ]); + + const readPricesFromContract = async () => { + await getPrices(true); + }; + + const getPricesFromPayload = async () => { + await getPrices(false); + }; + + const getPrices = async (fromContract: boolean) => { + await performContractAction(async (adapter: IPricesContractAdapter) => { + const date = new Date().getTime(); + console.log(`START ${new Date().getTime() - date}`); + + const [prices, blockNumber, timestamp] = await Promise.all([ + fromContract + ? adapter.readPricesFromContract(paramsProvider) + : adapter.getPricesFromPayload(paramsProvider), + connector.getBlockNumber(network!.rpcUrls[0]), + fromContract + ? adapter.readTimestampFromContract() + : getPricesTimestamp(), + ]); + + handlePrices(setPrices, prices); + setBlockNumber(blockNumber); + setTimestamp(timestamp < 1000000000000 ? timestamp * 1000 : timestamp); + + console.log(`END ${new Date().getTime() - date}`); + }); + }; + + const writePricesToContract = async () => { + setPrices(emptyPrices); + await performContractAction(async (adapter: IPricesContractAdapter) => { + const txHashOrPrices = await adapter.writePricesFromPayloadToContract( + paramsProvider + ); + + if (typeof txHashOrPrices === "string") { + setTxHash(txHashOrPrices); + } else { + handlePrices(setPrices, txHashOrPrices); + const [timestamp, blockNumber] = await Promise.all([ + adapter.readTimestampFromContract(), + connector.getBlockNumber(network!.rpcUrls[0]), + ]); + + setBlockNumber(blockNumber); + setTimestamp(timestamp); + } + }); + }; + + const performContractAction = async ( + callback: (adapter: IPricesContractAdapter) => void + ) => { + if (network) { + try { + startMockLoader(); + setIsLoading(true); + + const adapter = await connector.getAdapter(); + + if (adapter) { + await callback(adapter); + setIsMockLoading(false); + setIsLoading(false); + } + } catch (error) { + console.error(error); + handleError(); + setIsMockLoading(false); + setIsLoading(false); + } + } else { + handleError(); + } + }; + + const handleError = () => { + setIsLoading(false); + setPrices(emptyPrices); + setIsMockLoading(false); + setErrorMessage( + "There was problem with fetching data from smart adapter. Please try again or contact RedStone team" + ); + }; + + const handlePrices = ( + setPrices: (value: ((prevState: Prices) => Prices) | Prices) => void, + prices: number[] + ) => { + setPrices({ + btc: utils.formatUnits(prices[0], 8), + eth: utils.formatUnits(prices[1], 8), + bnb: utils.formatUnits(prices[2], 8), + ar: utils.formatUnits(prices[3], 8), + avax: utils.formatUnits(prices[4], 8), + celo: utils.formatUnits(prices[5], 8), + }); + }; + + return { + blockNumber, + txHash, + timestamp, + isLoading, + errorMessage, + setErrorMessage, + getPricesFromPayload, + readPricesFromContract, + writePricesToContract, + }; +}; diff --git a/src/hooks/usePricesFromContract.tsx b/src/hooks/usePricesFromContract.tsx deleted file mode 100644 index f95f9d7..0000000 --- a/src/hooks/usePricesFromContract.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { useState, Dispatch, SetStateAction } from "react"; -import { utils, providers, Contract } from "ethers"; -import { WrapperBuilder } from "@redstone-finance/evm-connector"; -import { emptyPrices } from "../utils"; -import { ChainDetails } from "../config/chains"; -import { abi } from "../config/ShowroomContractAbi.json"; -import { usePricesData } from "./usePricesData"; -import { Prices } from "../types"; - -export const usePricesFromContract = ( - network: ChainDetails | null, - signer: providers.JsonRpcSigner | null, - startMockLoader: () => void, - setPrices: Dispatch>, - setIsMockLoading: Dispatch> -) => { - const [blockNumber, setBlockNumber] = useState(0); - const [timestamp, setTimestamp] = useState(0); - const [isLoading, setIsLoading] = useState(false); - const [errorMessage, setErrorMessage] = useState(""); - - const { getPricesTimestamp } = usePricesData(); - - const getPricesFromContract = async () => { - if (network && signer) { - try { - startMockLoader(); - setIsLoading(true); - const contractAddress = network.exampleContractAddress; - if (contractAddress) { - const prices = await fetchPrices(contractAddress, signer); - setPrices({ - btc: utils.formatUnits(prices[0], 8), - eth: utils.formatUnits(prices[1], 8), - bnb: utils.formatUnits(prices[2], 8), - ar: utils.formatUnits(prices[3], 8), - avax: utils.formatUnits(prices[4], 8), - celo: utils.formatUnits(prices[5], 8), - }); - const blockNumber = await signer.provider.getBlockNumber(); - setBlockNumber(blockNumber); - const timestamp = await getPricesTimestamp(); - setTimestamp(timestamp); - setIsLoading(false); - } - } catch (error) { - console.error(error); - handleError(); - } - } else { - handleError(); - } - }; - - const fetchPrices = async ( - contractAddress: string, - signer: providers.JsonRpcSigner - ) => { - const contract = new Contract(contractAddress, abi, signer); - const wrappedContract = WrapperBuilder.wrap(contract).usingDataService( - { - dataServiceId: "redstone-rapid-demo", - uniqueSignersCount: 1, - dataFeeds: ["BTC", "ETH", "BNB", "AR", "AVAX", "CELO"], - }, - ["https://d33trozg86ya9x.cloudfront.net"] - ); - return await wrappedContract.getPrices(); - }; - - const handleError = () => { - setIsLoading(false); - setPrices(emptyPrices); - setIsMockLoading(false); - setErrorMessage( - "There was problem with fetching data from smart contract. Please try again or contact RedStone team" - ); - }; - - return { - blockNumber, - timestamp, - isLoading, - errorMessage, - setErrorMessage, - getPricesFromContract, - }; -}; diff --git a/src/hooks/useStarknet.tsx b/src/hooks/useStarknet.tsx new file mode 100644 index 0000000..3d36e1e --- /dev/null +++ b/src/hooks/useStarknet.tsx @@ -0,0 +1,66 @@ +import { useState } from "react"; +import { emptyPrices } from "../utils"; +import { connect, IStarknetWindowObject } from "@argent/get-starknet"; + +export const useStarknet = () => { + const [prices, setPrices] = useState(emptyPrices); + const [starknet, setStarknet] = useState( + undefined + ); + const [walletAddress, setWalletAddress] = useState(""); + const [_, setIsConnecting] = useState(false); + + const connectWallet = async () => { + setPrices(emptyPrices); + + if (starknet) { + return; + } + + setIsConnecting(true); + setStarknet(undefined); + + const newStarknet = await connect(); + + if (!newStarknet) { + return setIsConnecting(false); + } + + try { + const [address] = await newStarknet.enable(); + + if (!newStarknet.isConnected) { + return setIsConnecting(false); + } + + setWalletAddress(address); + setIsConnecting(false); + + addListeners(newStarknet); + + return setStarknet(newStarknet); + } catch (error: any) { + console.error(error); + } finally { + setIsConnecting(false); + } + }; + + const addListeners = (starknet: IStarknetWindowObject) => { + starknet.on("accountsChanged", () => { + window.location.reload(); + }); + + starknet.on("networkChanged", () => { + window.location.reload(); + }); + }; + + return { + prices, + setPrices, + starknet, + connectWallet, + walletAddress, + }; +}; diff --git a/src/hooks/useWeb3Modal.tsx b/src/hooks/useWeb3Modal.tsx index b73b098..0fa69ce 100644 --- a/src/hooks/useWeb3Modal.tsx +++ b/src/hooks/useWeb3Modal.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { Dispatch, SetStateAction, useEffect, useState } from "react"; import { BigNumber, providers } from "ethers"; import Web3Modal from "web3modal"; import { ChainDetails, chains } from "../config/chains"; @@ -6,13 +6,20 @@ import { emptyPrices } from "../utils"; type NetworkToAdd = Omit< ChainDetails, - "exampleContractAddress" | "contractExplorerUrl" | "logo" | "label" + | "exampleContractAddress" + | "contractExplorerUrl" + | "logo" + | "label" + | "isStarknet" + | "txExplorerUrl" + | "type" >; -export const useWeb3Modal = () => { +export const useWeb3Modal = ( + setNetwork: Dispatch> +) => { const [prices, setPrices] = useState(emptyPrices); const [web3Modal, setWeb3Modal] = useState(null); - const [network, setNetwork] = useState(null); const [signer, setSigner] = useState(null); const [walletAddress, setWalletAddress] = useState(""); const [isChangingNetwork, setIsChangingNetwork] = useState(false); @@ -25,12 +32,8 @@ export const useWeb3Modal = () => { setWeb3Modal(web3Modal); }, []); - useEffect(() => { - changeNetwork(); - }, [network]); - - const changeNetwork = async () => { - if (network) { + const changeNetwork = async (network: ChainDetails | null) => { + if (network && (network.type || "eth") === "eth") { setIsChangingNetwork(true); const { exampleContractAddress, @@ -39,6 +42,7 @@ export const useWeb3Modal = () => { label, ...restNetworkParams } = network; + try { await window.ethereum.request({ method: "wallet_switchEthereumChain", @@ -67,9 +71,10 @@ export const useWeb3Modal = () => { } }; - const connectWallet = async () => { + const connectWallet = async (network: ChainDetails | null) => { if (web3Modal) { try { + await changeNetwork(network); setIsConnecting(true); const instance = await web3Modal.connect(); addListeners(instance); @@ -118,8 +123,6 @@ export const useWeb3Modal = () => { return { prices, setPrices, - network, - setNetwork, signer, connectWallet, walletAddress, diff --git a/src/pages/EvmBlock.tsx b/src/pages/EvmBlock.tsx new file mode 100644 index 0000000..8b01a81 --- /dev/null +++ b/src/pages/EvmBlock.tsx @@ -0,0 +1,98 @@ +import { ChainDataTable } from "../components/ChainDataTable"; +import { GetPriceLoader } from "../components/GetPriceLoader"; +import { PricesTable } from "../components/PricesTable"; +import { GetPriceButton } from "../components/GetPriceButton"; +import { useMockLoader } from "../hooks/useMockLoader"; +import { ChainDetails } from "../config/chains"; +import { providers } from "ethers"; +import { EvmPricesContractConnector } from "../chains/evm/EvmPricesContractConnector"; +import { usePricesContract } from "../hooks/usePricesContract"; +import Modal from "../components/Modal"; +import { Prices } from "../types"; +import { Dispatch, SetStateAction } from "react"; + +interface Props { + props: { + prices: Prices; + setPrices: Dispatch>; + walletAddress: string; + signer: providers.JsonRpcSigner | null; + isChangingNetwork: boolean; + isConnecting: boolean; + }; + network: ChainDetails | null; +} + +export const EvmBlock = ({ props, network }: Props) => { + const { + signer, + walletAddress, + isChangingNetwork, + isConnecting, + prices, + setPrices, + } = props; + const { text, isMockLoading, setIsMockLoading, startMockLoader } = + useMockLoader(); + + const connector = new EvmPricesContractConnector( + network?.exampleContractAddress!, + signer! + ); + + const { + blockNumber, + timestamp, + isLoading, + getPricesFromPayload, + errorMessage, + setErrorMessage, + } = usePricesContract( + network, + connector, + startMockLoader, + setPrices, + setIsMockLoading + ); + + const arePrices = Object.values(prices).every((price) => !!price); + + return ( +
+ {isConnecting && (network?.type || "eth") === "eth" && ( +

+ Please sign in to MetaMask +

+ )} + {isChangingNetwork && signer && ( +

+ Please change network in MetaMask +

+ )} + {!isChangingNetwork && network && ( + + )} + {isMockLoading || isLoading ? ( + + ) : arePrices ? ( + + ) : ( + !isChangingNetwork && + network && ( + + ) + )} + {!!errorMessage && ( + setErrorMessage("")} + title="Problem with contract interaction" + text={errorMessage} + /> + )} +
+ ); +}; diff --git a/src/pages/Showroom.tsx b/src/pages/Showroom.tsx index 6c2d8af..effeb4e 100644 --- a/src/pages/Showroom.tsx +++ b/src/pages/Showroom.tsx @@ -1,106 +1,55 @@ import { useWeb3Modal } from "../hooks/useWeb3Modal"; -import { useMockLoader } from "../hooks/useMockLoader"; -import { usePricesFromContract } from "../hooks/usePricesFromContract"; -import { GetPriceLoader } from "../components/GetPriceLoader"; -import { GetPriceButton } from "../components/GetPriceButton"; -import Modal from "../components/Modal"; import { ChainButton } from "../components/ChainButton"; -import { ChainDataTable } from "../components/ChainDataTable"; -import { PricesTable } from "../components/PricesTable"; import { ChainDetails, chains } from "../config/chains"; +import { StarknetBlock } from "./StarknetBlock"; +import { useStarknet } from "../hooks/useStarknet"; +import { EvmBlock } from "./EvmBlock"; +import { useState } from "react"; const chainsArray = Object.values(chains); export const Showroom = () => { - const { text, isMockLoading, setIsMockLoading, startMockLoader } = - useMockLoader(); - const { - prices, - setPrices, - network, - setNetwork, - signer, - connectWallet, - walletAddress, - isChangingNetwork, - isConnecting, - } = useWeb3Modal(); - const { - blockNumber, - timestamp, - isLoading, - errorMessage, - setErrorMessage, - getPricesFromContract, - } = usePricesFromContract( - network, - signer, - startMockLoader, - setPrices, - setIsMockLoading - ); + const [network, setNetwork] = useState(null); + + const evm = useWeb3Modal(setNetwork); + const starknet = useStarknet(); const onChainClick = async (chain: ChainDetails) => { setNetwork(chain); - if (!signer) { - await connectWallet(); + + if ((chain?.type || "eth") === "eth") { + return await evm.connectWallet(chain); } - }; - const arePrices = Object.values(prices).every((price) => !!price); + if (chain?.type === "starknet") { + return await starknet.connectWallet(); + } + }; return (
{!network && ( -

- Please select a chain to see sample of Redstone Oracle data +

+ Please select a chain-button to integrate your wallet:

)} -
- {chainsArray.map((chain) => ( +
+ {chainsArray.map((ch) => ( ))}
- {isChangingNetwork && signer && ( -

- Please change network in MetaMask -

- )} - {isConnecting && ( -

Please login to MetaMask

- )} - {signer && !isChangingNetwork && ( -
- {network && ( - - )} - {isMockLoading || isLoading ? ( - - ) : arePrices ? ( - - ) : ( - network && ( - - ) - )} -
+ + {(network?.type || "eth") === "eth" && ( + )} - {!!errorMessage && ( - setErrorMessage("")} - title="Problem with contract interaction" - text={errorMessage} - /> + {network?.type === "starknet" && ( + )}
); diff --git a/src/pages/StarknetBlock.tsx b/src/pages/StarknetBlock.tsx new file mode 100644 index 0000000..309aa9a --- /dev/null +++ b/src/pages/StarknetBlock.tsx @@ -0,0 +1,111 @@ +import { ChainDataTable } from "../components/ChainDataTable"; +import { GetPriceLoader } from "../components/GetPriceLoader"; +import { PricesTable } from "../components/PricesTable"; +import { WritePricesButton } from "../components/WritePricesButton"; +import { ReadPricesButton } from "../components/ReadPricesButton"; +import { GetPriceButton } from "../components/GetPriceButton"; +import { ChainTx } from "../components/ChainTx"; +import { useMockLoader } from "../hooks/useMockLoader"; +import { usePricesContract } from "../hooks/usePricesContract"; +import { ChainDetails } from "../config/chains"; +import { IStarknetWindowObject } from "@argent/get-starknet"; +import { Dispatch, SetStateAction } from "react"; +import { Prices } from "../types"; +import Modal from "../components/Modal"; +import { + StarknetContractParamsProvider, + StarknetPricesContractConnector, +} from "@redstone-finance/starknet-connector"; + +interface Props { + props: { + prices: Prices; + setPrices: Dispatch>; + walletAddress: string; + starknet: IStarknetWindowObject | undefined; + }; + network: ChainDetails | null; +} + +export const StarknetBlock = ({ props, network }: Props) => { + const { prices, setPrices, walletAddress, starknet } = props; + const { text, isMockLoading, setIsMockLoading, startMockLoader } = + useMockLoader(); + + const connector = new StarknetPricesContractConnector( + starknet?.account, + network?.exampleContractAddress! + ); + + const { + blockNumber, + txHash, + timestamp, + isLoading, + getPricesFromPayload, + readPricesFromContract, + writePricesToContract, + errorMessage, + setErrorMessage, + } = usePricesContract( + network, + connector, + startMockLoader, + setPrices, + setIsMockLoading, + StarknetContractParamsProvider + ); + + const arePrices = Object.values(prices).every((price) => !!price); + + return !starknet ? ( +

Please sign in to Starknet

+ ) : ( +
+ {network && ( + + )} + {isMockLoading || isLoading ? ( + + ) : ( + [ + arePrices && ( + + ), +
+ + + +
, + +
+ + To write a snapshot of current prices to the + contract's storage you should have testnet ETH be added to + the wallet by using:  + + https://faucet.goerli.starknet.io/ + + +
, + network && txHash && , + ] + )} + {!!errorMessage && ( + setErrorMessage("")} + title="Problem with contract interaction" + text={errorMessage} + /> + )} +
+ ); +}; diff --git a/tsconfig.json b/tsconfig.json index b567b69..4869a20 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,7 +14,8 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "types": ["@fuel-wallet/sdk"] }, "include": ["src"] } diff --git a/yarn.lock b/yarn.lock index 75f2868..c73c7ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,20 +2,28 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== +"@argent/get-starknet@^5.3.13": + version "5.3.17" + resolved "https://registry.yarnpkg.com/@argent/get-starknet/-/get-starknet-5.3.17.tgz#cd324dc7f26f51491cef3ebffc3484a03165b446" + integrity sha512-4eb5ntsQPeXcPiiAP9mMCcSv9wPknm++UVKhP2QwoQtLmKi0m1zTS68IUOUHzSfFwePF2CYu5FjZkJT4auTWhQ== + dependencies: + get-starknet "^1.0.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== dependencies: "@babel/highlight" "^7.18.6" -"@babel/generator@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a" - integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw== +"@babel/generator@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" + integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== dependencies: - "@babel/types" "^7.20.7" + "@babel/types" "^7.21.4" "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" "@babel/helper-annotate-as-pure@^7.16.0": @@ -30,13 +38,13 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== -"@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" - integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== +"@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" @@ -46,11 +54,11 @@ "@babel/types" "^7.18.6" "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.21.4" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" @@ -78,12 +86,12 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" - integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== +"@babel/parser@^7.20.7", "@babel/parser@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" + integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== -"@babel/template@^7.18.10": +"@babel/template@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== @@ -93,25 +101,25 @@ "@babel/types" "^7.20.7" "@babel/traverse@^7.4.5": - version "7.20.12" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5" - integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ== + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" + integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.7" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" + "@babel/helper-function-name" "^7.21.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" + "@babel/parser" "^7.21.4" + "@babel/types" "^7.21.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" - integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== +"@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" + integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== dependencies: "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" @@ -213,7 +221,7 @@ "@ethersproject/logger" "^5.7.0" bn.js "^5.2.1" -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.6.1", "@ethersproject/bytes@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== @@ -481,6 +489,11 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@graphql-typed-document-node/core@^3.1.1": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== + "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" @@ -513,7 +526,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.17" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== @@ -572,35 +585,45 @@ "@lezer/lr" "^0.15.4" json5 "^2.2.1" -"@msgpackr-extract/msgpackr-extract-darwin-arm64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.2.0.tgz#901c5937e1441572ea23e631fe6deca68482fe76" - integrity sha512-Z9LFPzfoJi4mflGWV+rv7o7ZbMU5oAU9VmzCgL240KnqDW65Y2HFCT3MW06/ITJSnbVLacmcEJA8phywK7JinQ== +"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz#44d752c1a2dc113f15f781b7cc4f53a307e3fa38" + integrity sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ== -"@msgpackr-extract/msgpackr-extract-darwin-x64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.2.0.tgz#fb877fe6bae3c4d3cea29786737840e2ae689066" - integrity sha512-vq0tT8sjZsy4JdSqmadWVw6f66UXqUCabLmUVHZwUFzMgtgoIIQjT4VVRHKvlof3P/dMCkbMJ5hB1oJ9OWHaaw== +"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz#f954f34355712212a8e06c465bc06c40852c6bb3" + integrity sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw== -"@msgpackr-extract/msgpackr-extract-linux-arm64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.2.0.tgz#986179c38b10ac41fbdaf7d036c825cbc72855d9" - integrity sha512-hlxxLdRmPyq16QCutUtP8Tm6RDWcyaLsRssaHROatgnkOxdleMTgetf9JsdncL8vLh7FVy/RN9i3XR5dnb9cRA== +"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz#45c63037f045c2b15c44f80f0393fa24f9655367" + integrity sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg== -"@msgpackr-extract/msgpackr-extract-linux-arm@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.2.0.tgz#15f2c6fe9e0adc06c21af7e95f484ff4880d79ce" - integrity sha512-SaJ3Qq4lX9Syd2xEo9u3qPxi/OB+5JO/ngJKK97XDpa1C587H9EWYO6KD8995DAjSinWvdHKRrCOXVUC5fvGOg== +"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz#35707efeafe6d22b3f373caf9e8775e8920d1399" + integrity sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA== -"@msgpackr-extract/msgpackr-extract-linux-x64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.2.0.tgz#30cae5c9a202f3e1fa1deb3191b18ffcb2f239a2" - integrity sha512-94y5PJrSOqUNcFKmOl7z319FelCLAE0rz/jPCWS+UtdMZvpa4jrQd+cJPQCLp2Fes1yAW/YUQj/Di6YVT3c3Iw== +"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz#091b1218b66c341f532611477ef89e83f25fae4f" + integrity sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA== -"@msgpackr-extract/msgpackr-extract-win32-x64@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.2.0.tgz#016d855b6bc459fd908095811f6826e45dd4ba64" - integrity sha512-XrC0JzsqQSvOyM3t04FMLO6z5gCuhPE6k4FXuLK5xf52ZbdvcFe1yBmo7meCew9B8G2f0T9iu9t3kfTYRYROgA== +"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" + integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== + +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -624,9 +647,9 @@ fastq "^1.6.0" "@openzeppelin/contracts@^4.7.3": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.1.tgz#709cfc4bbb3ca9f4460d60101f15dac6b7a2d5e4" - integrity sha512-xQ6eUZl+RDyb/FiZe1h+U7qr/f4p/SrTSQcTPH2bjur3C5DbuW/zFgCU/b1P/xcIaEqJep+9ju4xDRi3rmChdQ== + version "4.8.2" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.2.tgz#d815ade0027b50beb9bcca67143c6bcc3e3923d6" + integrity sha512-kEUOgPQszC0fSYWpbh2kT94ltOJwj1qfT2DWo+zVttmGmf97JZ99LspePNaeeaLhCImaHVeBbjaQFZQn7+Zc5g== "@parcel/bundler-default@2.8.3": version "2.8.3" @@ -1201,6 +1224,38 @@ redstone-protocol "1.0.5" redstone-sdk "1.0.7" +"@redstone-finance/starknet-connector@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@redstone-finance/starknet-connector/-/starknet-connector-0.2.2.tgz#b6123b675603c332441299de40af4011e815f16b" + integrity sha512-md8yiyhpuwGu9Pop9/ee8MhfiB1tXo98EKp6thur2BmanqIdHxWdqVv0g6MrqCl3rdPPDVd3qs02FA/Fm6i3ng== + dependencies: + dotenv "^16.0.3" + ethers "^5.7.2" + redstone-sdk "^1.0.9" + starknet "^4.22.0" + +"@scure/base@~1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + "@swc/helpers@^0.4.12": version "0.4.14" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74" @@ -1224,54 +1279,35 @@ integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/react-dom@^18.0.6": - version "18.0.10" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.10.tgz#3b66dec56aa0f16a6cc26da9e9ca96c35c0b4352" - integrity sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg== + version "18.0.11" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33" + integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18.0.15": - version "18.0.27" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.27.tgz#d9425abe187a00f8a5ec182b010d4fd9da703b71" - integrity sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA== + version "18.0.33" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.33.tgz#a1575160cb4376787c2f5fe0312302f824baa61e" + integrity sha512-sHxzVxeanvQyQ1lr8NSHaj0kDzcNiGpILEVt69g9S31/7PfMvNCKLKcsHw4lYKjs3cGNJjXSP4mYzX43QlnjNA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" "@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + version "0.16.3" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" + integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== abortcontroller-polyfill@^1.1.9: version "1.7.5" resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== -acorn-node@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== - dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - -acorn-walk@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.0.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - acorn@^8.5.0: - version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" - integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== aes-js@3.0.0: version "3.0.0" @@ -1292,6 +1328,11 @@ ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -1328,16 +1369,14 @@ arweave-multihost@^0.1.0: axios "^0.21.1" arweave@^1.10.13, arweave@^1.10.15, arweave@^1.10.16: - version "1.12.2" - resolved "https://registry.yarnpkg.com/arweave/-/arweave-1.12.2.tgz#e99fb3db0529043ae0c67a89587751f8640058dd" - integrity sha512-gm82sbUd3AqiRxZ9hWRBnC2mRff+kCuVw1cSdMwhUmVyeSgvDxi5GkdCKHUm1tMvu59f45OcZRiL1yEIvvJY2Q== + version "1.13.5" + resolved "https://registry.yarnpkg.com/arweave/-/arweave-1.13.5.tgz#0bd28aae9d0e9fc66df45217661b08f57658c090" + integrity sha512-bxXoxmQF1OVXw2QFjD9m29Oo+lwUSvb2mzli494BRFGCfSSTBpE5Fp9f65HmmGEUURCL4xS17J6wBjLm1efrig== dependencies: arconnect "^0.4.2" asn1.js "^5.4.1" - axios "^0.27.2" base64-js "^1.5.1" bignumber.js "^9.0.2" - util "^0.12.4" asn1.js@^5.4.1: version "5.4.1" @@ -1384,10 +1423,10 @@ axios@^0.27.2: follow-redirects "^1.14.9" form-data "^4.0.0" -axios@^1.1.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.3.tgz#31a3d824c0ebf754a004b585e5f04a5f87e6c4ff" - integrity sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw== +axios@^1.1.3, axios@^1.2.2: + version "1.3.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.4.tgz#f5760cefd9cfb51fd2481acf88c05f67c4523024" + integrity sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -1409,6 +1448,11 @@ babel-plugin-syntax-jsx@^6.18.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + base-x@^3.0.8: version "3.0.9" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" @@ -1426,7 +1470,7 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== -bignumber.js@^9.0.2: +bignumber.js@^9.0.0, bignumber.js@^9.0.2: version "9.1.1" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== @@ -1451,6 +1495,19 @@ boolbase@^1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -1464,14 +1521,14 @@ brorand@^1.1.0: integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== browserslist@^4.6.6: - version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" buffer-from@^1.0.0: version "1.1.2" @@ -1509,10 +1566,10 @@ camelize@^1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== -caniuse-lite@^1.0.30001400: - version "1.0.30001446" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001446.tgz#6d4ba828ab19f49f9bcd14a8430d30feebf1e0c5" - integrity sha512-fEoga4PrImGcwUUGEol/PoFCSBnSkA9drgdkxXkJLsUBOnJ8rs3zDv6ApqYXGQFOyMPsjh79naWhF4DAxbF8rw== +caniuse-lite@^1.0.30001449: + version "1.0.30001474" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001474.tgz#13b6fe301a831fe666cce8ca4ef89352334133d5" + integrity sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q== chalk@^2.0.0: version "2.4.2" @@ -1592,11 +1649,21 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + commander@^7.0.0, commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + cosmiconfig@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" @@ -1608,6 +1675,13 @@ cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" +cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + css-color-keywords@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" @@ -1625,9 +1699,9 @@ css-select@^4.1.3: nth-check "^2.0.1" css-to-react-native@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.1.0.tgz#e783474149997608986afcff614405714a8fe1ac" - integrity sha512-AryfkFA29b4I3vG7N4kxFboq15DxwSXzhXM37XNEjwJMgjYIc8BcqfiprpAqX0zadI5PMByEIwAMzXxk5Vcc4g== + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== dependencies: camelize "^1.0.0" css-color-keywords "^1.0.0" @@ -1659,9 +1733,9 @@ csso@^4.2.0: css-tree "^1.1.2" csstype@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" - integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== debug@^4.1.0: version "4.3.4" @@ -1678,18 +1752,13 @@ deep-sort-object@^1.0.2: is-plain-object "^2.0.1" define-properties@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== dependencies: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -defined@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" - integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1705,15 +1774,6 @@ detect-libc@^1.0.3: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== -detective@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" - integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== - dependencies: - acorn-node "^1.8.2" - defined "^1.0.0" - minimist "^1.2.6" - didyoumean@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" @@ -1759,17 +1819,22 @@ dotenv-expand@^5.1.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== +dotenv@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + dotenv@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== -electron-to-chromium@^1.4.251: - version "1.4.284" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" - integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== +electron-to-chromium@^1.4.284: + version "1.4.350" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.350.tgz#11aae65e0d8b49626c7f298ac577b7b350b007ae" + integrity sha512-XnXcWpVnOfHZ4C3NPiL+SubeoGV8zc/pg8GEubRtc1dPA/9jKS2vsOPmtClJHhWxUb2RSGC1OBLCbgNUJMtZPw== -elliptic@6.5.4: +elliptic@6.5.4, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -1814,7 +1879,17 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -ethers@^5.6.8, ethers@^5.6.9: +ethereum-cryptography@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + +ethers@^5.6.8, ethers@^5.6.9, ethers@^5.7.2: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -1850,6 +1925,11 @@ ethers@^5.6.8, ethers@^5.6.9: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" +extract-files@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" + integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== + fast-glob@^3.2.12: version "3.2.12" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" @@ -1887,6 +1967,15 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -1896,6 +1985,11 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" @@ -1920,6 +2014,13 @@ get-port@^4.2.0: resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== +get-starknet@^1.0.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/get-starknet/-/get-starknet-1.5.0.tgz#b6df1b18cd8cb33c9277b75c32aa71c412c79ed0" + integrity sha512-6A14mdPoMwO4orETjG5D+wwaZOzuAyNp/5+ZlDJnU+UU7QRGMYILUo8WjgqeVTg0mcN0BZoUE0C/Qhgd7dBvVQ== + dependencies: + bowser "^2.11.0" + glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -1934,15 +2035,27 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.2.0: - version "13.19.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8" - integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== dependencies: type-fest "^0.20.2" @@ -1953,6 +2066,16 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +graphql-request@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-5.1.0.tgz#dbc8feee27d21b993cd5da2d3af67821827b240a" + integrity sha512-0OeRVYigVwIiXhNmqnPDt+JhMzsjinxHE7TVy3Lm6jUzav0guVcL0lfSbi6jVTRAxcbwgyr6yrZioSHxf9gHzw== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + cross-fetch "^3.1.5" + extract-files "^9.0.0" + form-data "^3.0.0" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -1989,7 +2112,7 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== @@ -2045,7 +2168,15 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.4: +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2142,6 +2273,19 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isomorphic-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" + integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== + dependencies: + node-fetch "^2.6.1" + whatwg-fetch "^3.4.1" + +jiti@^1.17.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd" + integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg== + js-sha3@0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" @@ -2157,6 +2301,13 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +json-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" + integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== + dependencies: + bignumber.js "^9.0.0" + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -2167,66 +2318,66 @@ json5@^2.2.0, json5@^2.2.1: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -lightningcss-darwin-arm64@1.18.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.18.0.tgz#bcd7d494d99c69947abd71136a42e80dfa80c682" - integrity sha512-OqjydwtiNPgdH1ByIjA1YzqvDG/OMR6L3LPN6wRl1729LB0y4Mik7L06kmZaTb+pvUHr+NmDd2KCwnlrQ4zO3w== - -lightningcss-darwin-x64@1.18.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.18.0.tgz#952abea2405fe2bb8dd0bb57a9d5590f8d1d6414" - integrity sha512-mNiuPHj89/JHZmJMp+5H8EZSt6EL5DZRWJ31O6k3DrLLnRIQjXuXdDdN8kP7LoIkeWI5xvyD60CsReJm+YWYAw== - -lightningcss-linux-arm-gnueabihf@1.18.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.18.0.tgz#23ca85e05dc4def9b4975aef307554ef292b56cd" - integrity sha512-S+25JjI6601HiAVoTDXW6SqH+E94a+FHA7WQqseyNHunOgVWKcAkNEc2LJvVxgwTq6z41sDIb9/M3Z9wa9lk4A== - -lightningcss-linux-arm64-gnu@1.18.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.18.0.tgz#6c8e0a6e2c8b44cf180f3a0f0740402e8f656155" - integrity sha512-JSqh4+21dCgBecIQUet35dtE4PhhSEMyqe3y0ZNQrAJQ5kyUPSQHiw81WXnPJcOSTTpG0TyMLiC8K//+BsFGQA== - -lightningcss-linux-arm64-musl@1.18.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.18.0.tgz#88393c101cf236ea0cdc97fddd66b82db964d835" - integrity sha512-2FWHa8iUhShnZnqhn2wfIcK5adJat9hAAaX7etNsoXJymlliDIOFuBQEsba2KBAZSM4QqfQtvRdR7m8i0I7ybQ== - -lightningcss-linux-x64-gnu@1.18.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.18.0.tgz#ad068d24836568337bfe545650565e13f813c8ee" - integrity sha512-plCPGQJtDZHcLVKVRLnQVF2XRsIC32WvuJhQ7fJ7F6BV98b/VZX0OlX05qUaOESD9dCDHjYSfxsgcvOKgCWh7A== - -lightningcss-linux-x64-musl@1.18.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.18.0.tgz#4d84de26b8185aa42450e0f4c83bbfb5a36ae750" - integrity sha512-na+BGtVU6fpZvOHKhnlA0XHeibkT3/46nj6vLluG3kzdJYoBKU6dIl7DSOk++8jv4ybZyFJ0aOFMMSc8g2h58A== - -lightningcss-win32-x64-msvc@1.18.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.18.0.tgz#f83952d16b83dfce65f4615f87c867769220d117" - integrity sha512-5qeAH4RMNy2yMNEl7e5TI6upt/7xD2ZpHWH4RkT8iJ7/6POS5mjHbXWUO9Q1hhDhqkdzGa76uAdMzEouIeCyNw== +lightningcss-darwin-arm64@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz#56ab071e932f845dbb7667f44f5b78441175a343" + integrity sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg== + +lightningcss-darwin-x64@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz#c867308b88859ba61a2c46c82b1ca52ff73a1bd0" + integrity sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw== + +lightningcss-linux-arm-gnueabihf@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz#0f921dc45f2e5c3aea70fab98844ac0e5f2f81be" + integrity sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig== + +lightningcss-linux-arm64-gnu@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz#027f9df9c7f4ffa127c37a71726245a5794d7ba2" + integrity sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww== + +lightningcss-linux-arm64-musl@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz#85ea987da868524eac6db94f8e1eaa23d0b688a3" + integrity sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA== + +lightningcss-linux-x64-gnu@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz#02bec89579ab4153dccc0def755d1fd9e3ee7f3c" + integrity sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ== + +lightningcss-linux-x64-musl@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz#e36a5df8193ae961d22974635e4c100a1823bb8c" + integrity sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg== + +lightningcss-win32-x64-msvc@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz#0854dbd153035eca1396e2227c708ad43655a61c" + integrity sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg== lightningcss@^1.16.1: - version "1.18.0" - resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.18.0.tgz#ca3327a1a7571a83bbb9733ed4e4cded775bdadf" - integrity sha512-uk10tNxi5fhZqU93vtYiQgx/8a9f0Kvtj5AXIm+VlOXY+t/DWDmCZWJEkZJmmALgvbS6aAW8or+Kq85eJ6TDTw== + version "1.19.0" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.19.0.tgz#fbbad0975de66252e38d96b5bdd2a62f2dd0ffbf" + integrity sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA== dependencies: detect-libc "^1.0.3" optionalDependencies: - lightningcss-darwin-arm64 "1.18.0" - lightningcss-darwin-x64 "1.18.0" - lightningcss-linux-arm-gnueabihf "1.18.0" - lightningcss-linux-arm64-gnu "1.18.0" - lightningcss-linux-arm64-musl "1.18.0" - lightningcss-linux-x64-gnu "1.18.0" - lightningcss-linux-x64-musl "1.18.0" - lightningcss-win32-x64-msvc "1.18.0" + lightningcss-darwin-arm64 "1.19.0" + lightningcss-darwin-x64 "1.19.0" + lightningcss-linux-arm-gnueabihf "1.19.0" + lightningcss-linux-arm64-gnu "1.19.0" + lightningcss-linux-arm64-musl "1.19.0" + lightningcss-linux-x64-gnu "1.19.0" + lightningcss-linux-x64-musl "1.19.0" + lightningcss-win32-x64-msvc "1.19.0" lilconfig@^2.0.5, lilconfig@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" - integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== lines-and-columns@^1.1.6: version "1.2.4" @@ -2303,41 +2454,52 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== +minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -msgpackr-extract@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-2.2.0.tgz#4bb749b58d9764cfdc0d91c7977a007b08e8f262" - integrity sha512-0YcvWSv7ZOGl9Od6Y5iJ3XnPww8O7WLcpYMDwX+PAA/uXLDtyw94PJv9GLQV/nnp3cWlDhMoyKZIQLrx33sWog== +msgpackr-extract@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d" + integrity sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A== dependencies: - node-gyp-build-optional-packages "5.0.3" + node-gyp-build-optional-packages "5.0.7" optionalDependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64" "2.2.0" - "@msgpackr-extract/msgpackr-extract-darwin-x64" "2.2.0" - "@msgpackr-extract/msgpackr-extract-linux-arm" "2.2.0" - "@msgpackr-extract/msgpackr-extract-linux-arm64" "2.2.0" - "@msgpackr-extract/msgpackr-extract-linux-x64" "2.2.0" - "@msgpackr-extract/msgpackr-extract-win32-x64" "2.2.0" + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2" + "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" msgpackr@^1.5.4: - version "1.8.1" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.8.1.tgz#2298aed8a14f83e99df77d344cbda3e436f29b5b" - integrity sha512-05fT4J8ZqjYlR4QcRDIhLCYKUOHXk7C/xa62GzMKj74l3up9k2QZ3LgFc6qWdsPHl91QA2WLWqWc8b8t7GLNNw== + version "1.8.5" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.8.5.tgz#8cadfb935357680648f33699d0e833c9179dbfeb" + integrity sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg== optionalDependencies: - msgpackr-extract "^2.2.0" + msgpackr-extract "^3.0.1" + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== node-addon-api@^3.2.1: version "3.2.1" @@ -2349,20 +2511,39 @@ node-addon-api@^4.3.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.1: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + node-gyp-build-optional-packages@5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17" integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA== +node-gyp-build-optional-packages@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" + integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w== + node-gyp-build@^4.3.0: version "4.6.0" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== -node-releases@^2.0.6: - version "2.0.8" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.8.tgz#0f349cdc8fcfa39a92ac0be9bc48b7706292b9ae" - integrity sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A== +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -2381,7 +2562,7 @@ nullthrows@^1.1.1: resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== -object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -2404,12 +2585,19 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + ordered-binary@^1.2.4: version "1.4.0" resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.4.0.tgz#6bb53d44925f3b8afc33d1eed0fa15693b211389" integrity sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ== -pako@^2.0.3: +pako@^2.0.3, pako@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== @@ -2451,6 +2639,16 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -2476,6 +2674,11 @@ pify@^2.3.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== +pirates@^4.0.1: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + postcss-import@^14.1.0: version "14.1.0" resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" @@ -2486,9 +2689,9 @@ postcss-import@^14.1.0: resolve "^1.1.7" postcss-js@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" - integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== dependencies: camelcase-css "^2.0.1" @@ -2507,7 +2710,7 @@ postcss-nested@6.0.0: dependencies: postcss-selector-parser "^6.0.10" -postcss-selector-parser@^6.0.10: +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11: version "6.0.11" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== @@ -2520,7 +2723,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.14, postcss@^8.4.18: +postcss@^8.0.9, postcss@^8.4.14: version "8.4.21" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== @@ -2559,9 +2762,9 @@ posthtml@^0.16.4, posthtml@^0.16.5: posthtml-render "^3.0.0" prettier@^2.7.1: - version "2.8.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.3.tgz#ab697b1d3dd46fb4626fbe2f543afe0cc98d8632" - integrity sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw== + version "2.8.7" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" + integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== prop-types@^15.6.2, prop-types@^15.7.2: version "15.8.1" @@ -2644,9 +2847,9 @@ read-cache@^1.0.0: pify "^2.3.0" readable-stream@^3.5.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -2693,6 +2896,15 @@ redstone-sdk@1.0.7: redstone-oracles-smartweave-contracts "*" redstone-protocol "*" +redstone-sdk@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/redstone-sdk/-/redstone-sdk-1.0.9.tgz#a7b4d0b5f82cd9f0a3c842055880e27237a46174" + integrity sha512-vbD2WdePXdg1qpm3HRh1KIwlsIkbF7klVEKITO/VxA7PY6u/udqwuwZCiLoPBMKrLsm5dpo43cbR0ZN+gAgg5A== + dependencies: + axios "^0.27.2" + redstone-oracles-smartweave-contracts "*" + redstone-protocol "*" + regenerator-runtime@^0.13.7: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" @@ -2792,6 +3004,23 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +starknet@^4.22.0: + version "4.22.0" + resolved "https://registry.yarnpkg.com/starknet/-/starknet-4.22.0.tgz#8d0c628e2a8e868ee9b4757afe89f07b05ec55ff" + integrity sha512-jC9Taxb6a/ht9zmS1LU/DSLfwJKpgCJnE9AktVksc5SE/+jQMpqxsq6fm7PRiqupjiqRC1DOS8N47cj+KaGv4Q== + dependencies: + "@ethersproject/bytes" "^5.6.1" + bn.js "^5.2.1" + elliptic "^6.5.4" + ethereum-cryptography "^1.0.3" + hash.js "^1.1.7" + isomorphic-fetch "^3.0.0" + json-bigint "^1.0.0" + minimalistic-assert "^1.0.1" + pako "^2.0.4" + ts-custom-error "^3.3.1" + url-join "^4.0.1" + stream-browserify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" @@ -2808,9 +3037,9 @@ string_decoder@^1.1.1: safe-buffer "~5.2.0" styled-components@^5.3.3: - version "5.3.6" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.6.tgz#27753c8c27c650bee9358e343fc927966bfd00d1" - integrity sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg== + version "5.3.9" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.9.tgz#641af2a8bb89904de708c71b439caa9633e8f0ba" + integrity sha512-Aj3kb13B75DQBo2oRwRa/APdB5rSmwUfN5exyarpX+x/tlM/rwZA2vVk2vQgVSP6WKaZJHWwiFrzgHt+CLtB4A== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/traverse" "^7.4.5" @@ -2823,6 +3052,18 @@ styled-components@^5.3.3: shallowequal "^1.1.0" supports-color "^5.5.0" +sucrase@^3.29.0: + version "3.31.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.31.0.tgz#daae4fd458167c5d4ba1cce6aef57b988b417b33" + integrity sha512-6QsHnkqyVEzYcaiHsOKkzOtOgdJcb8i54x6AV2hDwyZcY9ZyykGZVw6L/YN98xC0evwTP6utsWWrKRaa8QlfEQ== + dependencies: + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -2856,33 +3097,34 @@ svgo@^2.4.0: stable "^0.1.8" tailwindcss@^3.1.6: - version "3.2.4" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.4.tgz#afe3477e7a19f3ceafb48e4b083e292ce0dc0250" - integrity sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ== + version "3.3.1" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.1.tgz#b6662fab6a9b704779e48d083a9fef5a81d2b81e" + integrity sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g== dependencies: arg "^5.0.2" chokidar "^3.5.3" color-name "^1.1.4" - detective "^5.2.1" didyoumean "^1.2.2" dlv "^1.1.3" fast-glob "^3.2.12" glob-parent "^6.0.2" is-glob "^4.0.3" + jiti "^1.17.2" lilconfig "^2.0.6" micromatch "^4.0.5" normalize-path "^3.0.0" object-hash "^3.0.0" picocolors "^1.0.0" - postcss "^8.4.18" + postcss "^8.0.9" postcss-import "^14.1.0" postcss-js "^4.0.0" postcss-load-config "^3.1.4" postcss-nested "6.0.0" - postcss-selector-parser "^6.0.10" + postcss-selector-parser "^6.0.11" postcss-value-parser "^4.2.0" quick-lru "^5.1.1" resolve "^1.22.1" + sucrase "^3.29.0" term-size@^2.2.1: version "2.2.1" @@ -2890,15 +3132,29 @@ term-size@^2.2.1: integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== terser@^5.2.0: - version "5.16.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.1.tgz#5af3bc3d0f24241c7fb2024199d5c461a1075880" - integrity sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw== + version "5.16.8" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.8.tgz#ccde583dabe71df3f4ed02b65eb6532e0fae15d5" + integrity sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" commander "^2.20.0" source-map-support "~0.5.20" +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + timsort@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" @@ -2916,15 +3172,30 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-custom-error@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/ts-custom-error/-/ts-custom-error-3.3.1.tgz#8bd3c8fc6b8dc8e1cb329267c45200f1e17a65d1" + integrity sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A== + +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" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + tslib@^1.10.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" - integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== type-fest@^0.20.2: version "0.20.2" @@ -2932,11 +3203,11 @@ type-fest@^0.20.2: integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== typescript@^4.6.4: - version "4.9.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" - integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== -update-browserslist-db@^1.0.9: +update-browserslist-db@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== @@ -2944,12 +3215,17 @@ update-browserslist-db@^1.0.9: escalade "^3.1.1" picocolors "^1.0.0" +url-join@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" + integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== + util-deprecate@^1.0.1, util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@^0.12.0, util@^0.12.4: +util@^0.12.0: version "0.12.5" resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== @@ -2976,9 +3252,9 @@ weak-lru-cache@^1.2.2: integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== web3modal@^1.9.8: - version "1.9.11" - resolved "https://registry.yarnpkg.com/web3modal/-/web3modal-1.9.11.tgz#6a2c3c66f2e183c21446a441a217f996b38a82b6" - integrity sha512-fJ8HAHKxS05DlyZIV1oFbA7cT+E2/keyN1E4Yuhb023qGQIXlnht2DtTH978DERYnAnX28wZchwnwpSUnTTmhg== + version "1.9.12" + resolved "https://registry.yarnpkg.com/web3modal/-/web3modal-1.9.12.tgz#cb000888fa422a96e3df552d4784e347ba35efcc" + integrity sha512-RiLY2tNOEUCobtsMTmhwl/FoHZGxRZz7SSdLsh6qbbybPNUO0rFPY8xam9SpPwlLd2cUDGiWkLgDUJde0sHxdw== dependencies: detect-browser "^5.1.0" prop-types "^15.7.2" @@ -2987,6 +3263,24 @@ web3modal@^1.9.8: styled-components "^5.3.3" tslib "^1.10.0" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-fetch@^3.4.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which-typed-array@^1.1.2: version "1.1.9" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" @@ -2999,16 +3293,16 @@ which-typed-array@^1.1.2: has-tostringtag "^1.0.0" is-typed-array "^1.1.10" +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -xtend@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - xxhash-wasm@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79"
Block number