diff --git a/package.json b/package.json
index f6b1f8c3..3f5c8f94 100644
--- a/package.json
+++ b/package.json
@@ -141,8 +141,14 @@
"@starknet-react/core": "^2.3.0",
"@web3-react/core": "^6.1.9",
"@web3-react/injected-connector": "^6.0.7",
+ "apollo-cache-inmemory": "^1.6.6",
+ "apollo-client": "^2.6.10",
+ "apollo-link-http": "^1.5.17",
"events": "^3.3.0",
"get-starknet-core": "^3.2.0",
+ "graphql": "^14.5.6",
+ "graphql-tag": "^2.10.1",
+ "react-apollo": "^3.1.5",
"starknetkit": "^1.1.3",
"vite-plugin-svgr": "^2.2.0",
"wido-widget": "1.5.3"
diff --git a/src/apollo/client.js b/src/apollo/client.js
new file mode 100644
index 00000000..2df0612a
--- /dev/null
+++ b/src/apollo/client.js
@@ -0,0 +1,35 @@
+import { ApolloClient } from 'apollo-client'
+import { InMemoryCache } from 'apollo-cache-inmemory'
+import { HttpLink } from 'apollo-link-http'
+import { getApiUrl } from '../constants'
+
+export const jediSwapClient = new ApolloClient({
+ link: new HttpLink({
+ uri: getApiUrl(),
+ headers: {
+ // 'm-color': 'blue',
+ }
+ }),
+ cache: new InMemoryCache({
+ dataIdFromObject: object => {
+ switch (object.__typename) {
+ case 'TokenDayData': {
+ return `${object.tokenAddress}${object.datetime}`
+ }
+ case 'FactoryDayData': {
+ return `${object.id}${object.dayId}`
+ }
+ case 'Token': {
+ return `${object.tokenAddress}${object.name}`
+ }
+ case 'Pool': {
+ return `${object.poolAddress}${object.datetime}`
+ }
+ default: {
+ return object.id || object._id
+ }
+ }
+ }
+ }),
+ shouldBatch: true
+})
diff --git a/src/apollo/queries.js b/src/apollo/queries.js
new file mode 100644
index 00000000..72c88562
--- /dev/null
+++ b/src/apollo/queries.js
@@ -0,0 +1,23 @@
+import gql from 'graphql-tag'
+
+export const PAIRS_DATA_FOR_REWARDS = ({ pairIds = [] }) => {
+ const poolsString = `[${pairIds.map(pool => `"${pool}"`).join(',')}]`
+ let queryString = `
+ query pairDayDatas {
+ pairDayDatas(
+ where: {
+ pairIn: ${poolsString},
+ }
+ orderBy: "date"
+ orderByDirection: "desc"
+ first: ${10 * pairIds.length}
+ ) {
+ pairId
+ date
+ dailyVolumeUSD
+ reserveUSD
+ }
+ }
+ `
+ return gql(queryString)
+}
diff --git a/src/constants/index.ts b/src/constants/index.ts
index 7e74481c..765b02aa 100644
--- a/src/constants/index.ts
+++ b/src/constants/index.ts
@@ -1,7 +1,7 @@
import { validateAndParseAddress, constants } from 'starknet'
import { ChainId, JSBI, Percent, Token, WETH } from '@jediswap/sdk'
-import { argentX, braavosWallet, argentWebWallet } from '../connectors'
+import { argentX, braavosWallet, argentWebWallet, isProductionEnvironment, isTestnetEnvironment } from '../connectors'
import ARGENTX_ICON from '../assets/images/argentx.png'
import EMAIL_ICON from '../assets/images/mail.png'
import BRAAVOS_ICON from '../assets/svg/Braavos.svg'
@@ -11,6 +11,16 @@ import { WebWalletConnector } from '@argent/starknet-react-webwallet-connector'
export const DEFAULT_CHAIN_ID = ChainId.SN_MAIN
export const STRK_REWARDS_ADDRESS = '0x01ba23f54ae0f830068314e8d3e9d3623e83ced3832d20ac61f598a969425747'
+export const STARKNET_REWARDS_API_URL =
+ 'https://kx58j6x5me.execute-api.us-east-1.amazonaws.com//starknet/fetchFile?file=qa_strk_grant.json'
+export const STRK_PRICE_API_URL = 'https://api.binance.com/api/v3/ticker/price?symbol=STRKUSDT'
+
+export const getApiUrl = () => {
+ if (isTestnetEnvironment()) {
+ return 'https://api.goerli.jediswap.xyz/graphql'
+ }
+ return 'https://api.jediswap.xyz/graphql'
+}
export const domainURL = (chainId: ChainId) => {
return chainId === ChainId.SN_MAIN
diff --git a/src/index.tsx b/src/index.tsx
index a1d79c50..84a8e099 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -25,6 +25,8 @@ import './components/analytics'
import { WebWalletConnector } from '@argent/starknet-react-webwallet-connector'
import { isTestnetEnvironment } from './connectors'
import { StarknetProvider } from './context/StarknetProvider'
+import { ApolloProvider } from 'react-apollo'
+import { jediSwapClient } from './apollo/client'
const StarknetProviderNetwork = createStarknetReactRoot(NetworkContextName)
@@ -45,13 +47,15 @@ ReactDOM.render(
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
,
diff --git a/src/pages/Rewards/index.tsx b/src/pages/Rewards/index.tsx
index 6ad64473..03b20986 100644
--- a/src/pages/Rewards/index.tsx
+++ b/src/pages/Rewards/index.tsx
@@ -18,9 +18,13 @@ import { DMSansText, TYPE } from '../../theme'
import { Button as RebassButton, ButtonProps } from 'rebass/styled-components'
import { useContractRead, useContractWrite } from '@starknet-react/core'
import { Call, CallData } from 'starknet'
-import { STRK_REWARDS_ADDRESS } from '../../constants'
+import { STARKNET_REWARDS_API_URL, STRK_PRICE_API_URL, STRK_REWARDS_ADDRESS } from '../../constants'
import REWARDS_ABI from '../../constants/abis/strk-rewards.json'
import TransactionConfirmationModal, { TransactionErrorContent } from '../../components/TransactionConfirmationModal'
+import { jediSwapClient } from '../../apollo/client'
+import { PAIRS_DATA_FOR_REWARDS } from '../../apollo/queries'
+import { isEmpty } from 'lodash'
+import { formattedPercent } from '../../utils'
export const StyledAppBody = styled(BodyWrapper)`
padding: 0rem;
@@ -305,9 +309,108 @@ const TokenAPR = styled(APRWrapper)`
font-weight: 400;
line-height: 26px; /* 216.667% */
`
-export const injected = new InjectedConnector({})
+
+const pairs = [
+ {
+ rewardName: 'USDC/USDT',
+ poolAddress: '0x5801bdad32f343035fb242e98d1e9371ae85bc1543962fedea16c59b35bd19b',
+ token0: {
+ tokenAddress: '0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8',
+ symbol: 'USDC'
+ },
+ token1: {
+ tokenAddress: '0x68f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8',
+ symbol: 'USDT'
+ }
+ },
+ {
+ rewardName: 'STRK/ETH',
+ poolAddress: '0x2ed66297d146ecd91595c3174da61c1397e8b7fcecf25d423b1ba6717b0ece9',
+ token0: {
+ tokenAddress: '0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',
+ symbol: 'STRK'
+ },
+ token1: {
+ tokenAddress: '0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7',
+ symbol: 'ETH'
+ }
+ },
+ {
+ rewardName: 'ETH/USDC',
+ poolAddress: '0x4d0390b777b424e43839cd1e744799f3de6c176c7e32c1812a41dbd9c19db6a',
+ token0: {
+ tokenAddress: '0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7',
+ symbol: 'ETH'
+ },
+ token1: {
+ tokenAddress: '0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8',
+ symbol: 'USDC'
+ }
+ },
+ {
+ rewardName: 'STRK/USDC',
+ poolAddress: '0x5726725e9507c3586cc0516449e2c74d9b201ab2747752bb0251aaa263c9a26',
+ token0: {
+ tokenAddress: '0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',
+ symbol: 'STRK'
+ },
+ token1: {
+ tokenAddress: '0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8',
+ symbol: 'USDC'
+ }
+ }
+]
export default function Rewards() {
+ const [pairsData, setPairsData] = useState([])
+ useEffect(() => {
+ const pairIds = pairs.map(pair => pair.poolAddress)
+
+ async function getPairsData() {
+ const pairsResp = await jediSwapClient.query({
+ query: PAIRS_DATA_FOR_REWARDS({
+ pairIds
+ }),
+ fetchPolicy: 'cache-first'
+ })
+ const rewardsResp = await fetch(STARKNET_REWARDS_API_URL).then(res => res.json())
+ const priceResp = await fetch(STRK_PRICE_API_URL).then(res => res.json())
+
+ const strkPrice = parseFloat(priceResp.price)
+ const jediRewards = rewardsResp.Jediswap_v1
+ const rewardsPositions: any = []
+ for (const pair of pairs) {
+ const rewardsData = jediRewards[pair.rewardName].pop()
+ const recentDate = rewardsData.date
+ const pairDayData = pairsResp.data.pairDayDatas.find(
+ dayData => dayData.pairId === pair.poolAddress && dayData.date === recentDate + 'T00:00:00'
+ )
+ const aprFee = ((pairDayData.dailyVolumeUSD * 0.003) / pairDayData.reserveUSD) * 365 * 100
+ const aprStarknet = (rewardsData.allocation / pairDayData.reserveUSD) * 365 * 100 * strkPrice
+ rewardsPositions.push({
+ ...pair,
+ reserveUSD: pairDayData.reserveUSD,
+ aprFee,
+ aprStarknet
+ })
+ }
+ const sortedRewardsPositions = rewardsPositions.sort((a, b) => {
+ if (a.aprFee + a.aprStarknet > b.aprFee + b.aprStarknet) {
+ return -1
+ }
+ if (a.aprFee + a.aprStarknet < b.aprFee + b.aprStarknet) {
+ return 1
+ }
+ })
+
+ setPairsData(sortedRewardsPositions)
+ }
+
+ if (!pairsData.length) {
+ getPairsData()
+ }
+ }, [pairsData])
+
const { address } = useAccountDetails()
const [allocations, setAllocations] = useState()
const [allocated, setAllocated] = useState(false)
@@ -418,6 +521,37 @@ export default function Rewards() {
const buttonText =
(totalRewardsClaimed && 'Claimed') || (unclaimed_rewards && 'Claim STRK') || (attemptingTxn && 'Claiming...')
+ const PairListItem = ({ pair }: { pair: any }) => {
+ const cleanedAprFee = isNaN(pair.aprFee) || !isFinite(pair.aprFee) ? 0 : pair.aprFee
+ const displayAprFee = formattedPercent(cleanedAprFee, true, false)
+
+ const cleanedAprStarknet = isNaN(pair.aprStarknet) || !isFinite(pair.aprStarknet) ? 0 : pair.aprStarknet
+ const displayAprStarknet = formattedPercent(cleanedAprStarknet, true, false)
+
+ const cleanedAprCommon = cleanedAprFee + cleanedAprStarknet
+ const displayAprCommon = formattedPercent(cleanedAprCommon, true, false)
+
+ return (
+
+
+ STRK-USDC
+
+ Total APR:
+ {displayAprCommon}
+
+
+ Fee APR:
+ {displayAprFee}
+
+
+ STRK APR:
+ {displayAprStarknet}
+
+
+
+ )
+ }
+
return (
Earn STRK incentives by providing liquidity to these pools:
-
-
- STRK-USDC
-
- Total APR:
- 30.96%
-
-
- Fee APR:
- 20.61%
-
-
- STRK APR:
- 10.35%
-
-
-
-
-
- STRK-ETH
-
- Total APR:
- 30.96%
-
-
- Fee APR:
- 20.61%
-
-
- STRK APR:
- 10.35%
-
-
-
-
-
- ETH-USDC
-
- Total APR:
- 30.96%
-
-
- Fee APR:
- 20.61%
-
-
- STRK APR:
- 10.35%
-
-
-
-
-
- USDC-USDT
-
- Total APR:
- 30.96%
-
-
- Fee APR:
- 20.61%
-
-
- STRK APR:
- 10.35%
-
-
-
+ {pairsData.map(pair => (
+
+ ))}
diff --git a/src/utils/index.ts b/src/utils/index.ts
index 95053084..a7dedee5 100644
--- a/src/utils/index.ts
+++ b/src/utils/index.ts
@@ -1,4 +1,6 @@
// import { BigNumberish } from 'starknet/dist/utils/number'
+import React, { useContext } from 'react'
+import { Text } from 'rebass'
import { validateAndParseAddress, Abi, uint256, Contract, AccountInterface, BigNumberish, cairo } from 'starknet'
import { BigNumber } from '@ethersproject/bignumber'
import { ZERO_ADDRESS } from '../constants'
@@ -20,6 +22,39 @@ export function isAddress(addr: string | null | undefined): string | false {
}
}
+export function formattedPercent(percent, useAbs = false, useColors = true) {
+ percent = parseFloat(percent)
+ if (!percent || percent === 0) {
+ return '0'
+ }
+
+ if (percent < 0.0001 && percent > 0) {
+ return '< 0.0001%'
+ }
+
+ if (percent < 0 && percent > -0.0001) {
+ return '< 0.0001%'
+ }
+
+ if (percent > 999999) {
+ return '> 999999%'
+ }
+
+ let fixedPercent = percent.toFixed(2)
+ if (fixedPercent === '0.00') {
+ return '0%'
+ }
+ if (fixedPercent > 0) {
+ if (fixedPercent > 100) {
+ return `${useAbs ? '' : '+'}${percent?.toFixed(0).toLocaleString()}%`
+ } else {
+ return `${useAbs ? '' : '+'}${fixedPercent}%`
+ }
+ } else {
+ return `${fixedPercent}%`
+ }
+}
+
const VOYAGER_PREFIXES: { [chainId in ChainId]: string } = {
[ChainId.SN_MAIN]: '',
[ChainId.SN_GOERLI]: 'sepolia.'
diff --git a/yarn.lock b/yarn.lock
index 6a03b0c1..c612fa0a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10,6 +10,55 @@
"@jridgewell/gen-mapping" "^0.3.0"
"@jridgewell/trace-mapping" "^0.3.9"
+"@apollo/react-common@^3.1.4":
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/@apollo/react-common/-/react-common-3.1.4.tgz#ec13c985be23ea8e799c9ea18e696eccc97be345"
+ integrity sha512-X5Kyro73bthWSCBJUC5XYQqMnG0dLWuDZmVkzog9dynovhfiVCV4kPSdgSIkqnb++cwCzOVuQ4rDKVwo2XRzQA==
+ dependencies:
+ ts-invariant "^0.4.4"
+ tslib "^1.10.0"
+
+"@apollo/react-components@^3.1.5":
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/@apollo/react-components/-/react-components-3.1.5.tgz#040d2f35ce4947747efe16f76d59dcbd797ffdaf"
+ integrity sha512-c82VyUuE9VBnJB7bnX+3dmwpIPMhyjMwyoSLyQWPHxz8jK4ak30XszJtqFf4eC4hwvvLYa+Ou6X73Q8V8e2/jg==
+ dependencies:
+ "@apollo/react-common" "^3.1.4"
+ "@apollo/react-hooks" "^3.1.5"
+ prop-types "^15.7.2"
+ ts-invariant "^0.4.4"
+ tslib "^1.10.0"
+
+"@apollo/react-hoc@^3.1.5":
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/@apollo/react-hoc/-/react-hoc-3.1.5.tgz#6552d2fb4aafc59fdc8f4e353358b98b89cfab6f"
+ integrity sha512-jlZ2pvEnRevLa54H563BU0/xrYSgWQ72GksarxUzCHQW85nmn9wQln0kLBX7Ua7SBt9WgiuYQXQVechaaCulfQ==
+ dependencies:
+ "@apollo/react-common" "^3.1.4"
+ "@apollo/react-components" "^3.1.5"
+ hoist-non-react-statics "^3.3.0"
+ ts-invariant "^0.4.4"
+ tslib "^1.10.0"
+
+"@apollo/react-hooks@^3.1.5":
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/@apollo/react-hooks/-/react-hooks-3.1.5.tgz#7e710be52461255ae7fc0b3b9c2ece64299c10e6"
+ integrity sha512-y0CJ393DLxIIkksRup4nt+vSjxalbZBXnnXxYbviq/woj+zKa431zy0yT4LqyRKpFy9ahMIwxBnBwfwIoupqLQ==
+ dependencies:
+ "@apollo/react-common" "^3.1.4"
+ "@wry/equality" "^0.1.9"
+ ts-invariant "^0.4.4"
+ tslib "^1.10.0"
+
+"@apollo/react-ssr@^3.1.5":
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/@apollo/react-ssr/-/react-ssr-3.1.5.tgz#53703cd493afcde567acc6d5512cab03dafce6de"
+ integrity sha512-wuLPkKlctNn3u8EU8rlECyktpOUCeekFfb0KhIKknpGY6Lza2Qu0bThx7D9MIbVEzhKadNNrzLcpk0Y8/5UuWg==
+ dependencies:
+ "@apollo/react-common" "^3.1.4"
+ "@apollo/react-hooks" "^3.1.5"
+ tslib "^1.10.0"
+
"@argent/get-starknet@^0.1.4":
version "0.1.4"
resolved "https://registry.npmjs.org/@argent/get-starknet/-/get-starknet-0.1.4.tgz"
@@ -2063,6 +2112,13 @@
resolved "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz"
integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==
+"@types/node@>=6":
+ version "20.11.25"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.25.tgz#0f50d62f274e54dd7a49f7704cc16bfbcccaf49f"
+ integrity sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==
+ dependencies:
+ undici-types "~5.26.4"
+
"@types/node@^10.11.7", "@types/node@^10.12.18":
version "10.17.60"
resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz"
@@ -2254,6 +2310,11 @@
dependencies:
"@types/yargs-parser" "*"
+"@types/zen-observable@^0.8.0":
+ version "0.8.7"
+ resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.7.tgz#114e2ffc8d5be4915fdd5bc90668fc0ceaadb760"
+ integrity sha512-LKzNTjj+2j09wAo/vvVjzgw5qckJJzhdGgWHW7j69QIGdq/KnZrMAMIHQiWGl3Ccflh5/CudBAntTPYdprPltA==
+
"@typescript-eslint/eslint-plugin@^5.8.0":
version "5.59.11"
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.11.tgz"
@@ -2831,6 +2892,21 @@
resolved "https://registry.npmjs.org/@web3-starknet-react/types/-/types-2.2.2.tgz"
integrity sha512-96BlaezP6pfvUDrVBpeDYqa1ZcVVo6aLMQOUGcCX3qV5FRd/nv2Ui+2E4FP3KI37myS9AfN0Cs1uMY0ez0yXrQ==
+"@wry/context@^0.4.0":
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.4.4.tgz#e50f5fa1d6cfaabf2977d1fda5ae91717f8815f8"
+ integrity sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==
+ dependencies:
+ "@types/node" ">=6"
+ tslib "^1.9.3"
+
+"@wry/equality@^0.1.2", "@wry/equality@^0.1.9":
+ version "0.1.11"
+ resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790"
+ integrity sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==
+ dependencies:
+ tslib "^1.9.3"
+
"@zeit/schemas@2.6.0":
version "2.6.0"
resolved "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz"
@@ -3001,6 +3077,77 @@ anymatch@^3.1.3, anymatch@~3.1.2:
normalize-path "^3.0.0"
picomatch "^2.0.4"
+apollo-cache-inmemory@^1.6.6:
+ version "1.6.6"
+ resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz#56d1f2a463a6b9db32e9fa990af16d2a008206fd"
+ integrity sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==
+ dependencies:
+ apollo-cache "^1.3.5"
+ apollo-utilities "^1.3.4"
+ optimism "^0.10.0"
+ ts-invariant "^0.4.0"
+ tslib "^1.10.0"
+
+apollo-cache@1.3.5, apollo-cache@^1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.3.5.tgz#9dbebfc8dbe8fe7f97ba568a224bca2c5d81f461"
+ integrity sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==
+ dependencies:
+ apollo-utilities "^1.3.4"
+ tslib "^1.10.0"
+
+apollo-client@^2.6.10:
+ version "2.6.10"
+ resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.6.10.tgz#86637047b51d940c8eaa771a4ce1b02df16bea6a"
+ integrity sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==
+ dependencies:
+ "@types/zen-observable" "^0.8.0"
+ apollo-cache "1.3.5"
+ apollo-link "^1.0.0"
+ apollo-utilities "1.3.4"
+ symbol-observable "^1.0.2"
+ ts-invariant "^0.4.0"
+ tslib "^1.10.0"
+ zen-observable "^0.8.0"
+
+apollo-link-http-common@^0.2.16:
+ version "0.2.16"
+ resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz#756749dafc732792c8ca0923f9a40564b7c59ecc"
+ integrity sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==
+ dependencies:
+ apollo-link "^1.2.14"
+ ts-invariant "^0.4.0"
+ tslib "^1.9.3"
+
+apollo-link-http@^1.5.17:
+ version "1.5.17"
+ resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.17.tgz#499e9f1711bf694497f02c51af12d82de5d8d8ba"
+ integrity sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==
+ dependencies:
+ apollo-link "^1.2.14"
+ apollo-link-http-common "^0.2.16"
+ tslib "^1.9.3"
+
+apollo-link@^1.0.0, apollo-link@^1.2.14:
+ version "1.2.14"
+ resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9"
+ integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==
+ dependencies:
+ apollo-utilities "^1.3.0"
+ ts-invariant "^0.4.0"
+ tslib "^1.9.3"
+ zen-observable-ts "^0.8.21"
+
+apollo-utilities@1.3.4, apollo-utilities@^1.3.0, apollo-utilities@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.4.tgz#6129e438e8be201b6c55b0f13ce49d2c7175c9cf"
+ integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==
+ dependencies:
+ "@wry/equality" "^0.1.2"
+ fast-json-stable-stringify "^2.0.0"
+ ts-invariant "^0.4.0"
+ tslib "^1.10.0"
+
arch@^2.1.1, arch@^2.1.2, arch@^2.2.0:
version "2.2.0"
resolved "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz"
@@ -5759,6 +5906,20 @@ grapheme-splitter@^1.0.4:
resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz"
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+graphql-tag@^2.10.1:
+ version "2.12.6"
+ resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1"
+ integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==
+ dependencies:
+ tslib "^2.1.0"
+
+graphql@^14.5.6:
+ version "14.7.0"
+ resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.7.0.tgz#7fa79a80a69be4a31c27dda824dc04dac2035a72"
+ integrity sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA==
+ dependencies:
+ iterall "^1.2.2"
+
h3@^1.8.1, h3@^1.8.2:
version "1.9.0"
resolved "https://registry.yarnpkg.com/h3/-/h3-1.9.0.tgz#c5f512a93026df9837db6f30c9ef51135dd46752"
@@ -6503,6 +6664,11 @@ isstream@~0.1.2:
resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
+iterall@^1.2.2:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea"
+ integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==
+
jazzicon@^1.5.0:
version "1.5.0"
resolved "https://registry.npmjs.org/jazzicon/-/jazzicon-1.5.0.tgz"
@@ -7620,6 +7786,13 @@ onetime@^5.1.0, onetime@^5.1.2:
dependencies:
mimic-fn "^2.1.0"
+optimism@^0.10.0:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.10.3.tgz#163268fdc741dea2fb50f300bedda80356445fd7"
+ integrity sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==
+ dependencies:
+ "@wry/context" "^0.4.0"
+
optionator@^0.9.1:
version "0.9.1"
resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz"
@@ -8204,6 +8377,17 @@ rc@^1.0.1, rc@^1.1.6:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
+react-apollo@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-3.1.5.tgz#36692d393c47e7ccc37f0a885c7cc5a8b4961c91"
+ integrity sha512-xOxMqxORps+WHrUYbjVHPliviomefOpu5Sh35oO3osuOyPTxvrljdfTLGCggMhcXBsDljtS5Oy4g+ijWg3D4JQ==
+ dependencies:
+ "@apollo/react-common" "^3.1.4"
+ "@apollo/react-components" "^3.1.5"
+ "@apollo/react-hoc" "^3.1.5"
+ "@apollo/react-hooks" "^3.1.5"
+ "@apollo/react-ssr" "^3.1.5"
+
react-clientside-effect@^1.2.6:
version "1.2.6"
resolved "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz"
@@ -8225,7 +8409,7 @@ react-device-detect@^1.6.2:
dependencies:
ua-parser-js "^0.7.24"
-react-dom@>=17.0.1:
+react-dom@>=17.0.1, react-dom@^18.2.0:
version "18.2.0"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz"
integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
@@ -8233,14 +8417,6 @@ react-dom@>=17.0.1:
loose-envify "^1.1.0"
scheduler "^0.23.0"
-react-dom@^18.2.0:
- version "18.2.0"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
- integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
- dependencies:
- loose-envify "^1.1.0"
- scheduler "^0.23.0"
-
react-error-overlay@6.0.9:
version "6.0.9"
resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz"
@@ -9530,7 +9706,7 @@ swarm-js@^0.1.40:
tar "^4.0.2"
xhr-request "^1.0.1"
-symbol-observable@^1.1.0:
+symbol-observable@^1.0.2, symbol-observable@^1.1.0:
version "1.2.0"
resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
@@ -9696,7 +9872,14 @@ trpc-browser@^1.3.2:
resolved "https://registry.yarnpkg.com/trpc-browser/-/trpc-browser-1.3.2.tgz#9b17138086ec906a30584c52499b4731c55ca698"
integrity sha512-cXrm7kq+WD8yJfVB8B4pmyL8C0W//Dy+tJq7ohl6fKSK5lfmRIXAlKkNQg/cRZl7YVH/0Xo3NBqcEhVggOCC9A==
-tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
+ts-invariant@^0.4.0, ts-invariant@^0.4.4:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86"
+ integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==
+ dependencies:
+ tslib "^1.9.3"
+
+tslib@1.14.1, tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
version "1.14.1"
resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
@@ -9883,6 +10066,11 @@ uncrypto@^0.1.3:
resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b"
integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==
+undici-types@~5.26.4:
+ version "5.26.5"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
+ integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+
unenv@^1.7.4:
version "1.8.0"
resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.8.0.tgz#0f860d5278405700bd95d47b23bc01f3a735d68c"
@@ -10878,6 +11066,19 @@ yauzl@^2.10.0:
buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"
+zen-observable-ts@^0.8.21:
+ version "0.8.21"
+ resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d"
+ integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==
+ dependencies:
+ tslib "^1.9.3"
+ zen-observable "^0.8.0"
+
+zen-observable@^0.8.0:
+ version "0.8.15"
+ resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15"
+ integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==
+
zod@^3.22.2:
version "3.22.4"
resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff"