Use dapp (#24)

This commit is contained in:
Szymon Szlachtowicz 2021-08-24 13:49:18 +02:00 committed by GitHub
parent 6b1408a1da
commit e52d3f9119
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 280 additions and 28 deletions

View File

@ -14,6 +14,7 @@
},
"dependencies": {
"@status-waku-voting/react-components": "link:../react-components",
"@usedapp/core": "^0.4.6",
"assert": "^2.0.0",
"buffer": "^6.0.3",
"crypto-browserify": "^3.12.0",

View File

@ -1,12 +1,14 @@
import React from 'react'
import styled from 'styled-components'
import { useEthers, shortenAddress } from '@usedapp/core'
type TopBarProps = {
logo: string
title: string
}
export function TopBar({ logo, title }: TopBarProps) {
const { activateBrowserWallet, account } = useEthers()
return (
<Wrapper>
<Logo style={{ backgroundImage: `url(${logo})` }} />
@ -15,11 +17,46 @@ export function TopBar({ logo, title }: TopBarProps) {
<div>{text}</div>
))}
</TitleWrapper>
<Button>Connect</Button>
{account ? (
<AccountDiv>
<GreenDot />
<>{shortenAddress(account)}</>
</AccountDiv>
) : (
<Button onClick={() => activateBrowserWallet()}>Connect</Button>
)}
</Wrapper>
)
}
const GreenDot = styled.div`
width: 6px;
height: 6px;
border-radius: 50%;
background: #4ebc60;
margin-right: 5px;
`
const AccountDiv = styled.div`
width: 130px;
height: 44px;
background: #ffffff;
border: 1px solid #eef2f5;
box-sizing: border-box;
border-radius: 21px;
display: flex;
flex-direction: row;
align-items: center;
padding: 0px 12px;
margin: auto;
margin-right: 40px;
font-family: Inter;
font-style: normal;
font-weight: 500;
font-size: 13px;
line-height: 22px;
`
const TitleWrapper = styled.div`
display: flex;
flex-direction: column;

View File

@ -5,6 +5,24 @@ import styled, { createGlobalStyle } from 'styled-components'
import { Polling } from './pages/Poling'
import { BrowserRouter } from 'react-router-dom'
import { Redirect, Route, Switch } from 'react-router'
import { DAppProvider, ChainId } from '@usedapp/core'
import { DEFAULT_CONFIG } from '@usedapp/core/dist/cjs/src/model/config/default'
const config = {
readOnlyChainId: ChainId.Ropsten,
readOnlyUrls: {
[ChainId.Ropsten]: 'https://ropsten.infura.io/v3/b4451d780cc64a078ccf2181e872cfcf',
},
multicallAddresses: {
...DEFAULT_CONFIG.multicallAddresses,
1337: process.env.GANACHE_MULTICALL_CONTRACT ?? '0x0000000000000000000000000000000000000000',
},
supportedChains: [...DEFAULT_CONFIG.supportedChains, 1337],
notifications: {
checkInterval: 500,
expirationPeriod: 50000,
},
}
export const GlobalStyle = createGlobalStyle`
* {
@ -24,13 +42,15 @@ const Page = styled.div`
ReactDOM.render(
<Page>
<GlobalStyle />
<BrowserRouter>
<Switch>
<Route exact path="/" render={() => <Redirect to="/polling" />} />
<Route exact path="/polling" component={Polling} />
</Switch>
</BrowserRouter>
<DAppProvider config={config}>
<GlobalStyle />
<BrowserRouter>
<Switch>
<Route exact path="/" render={() => <Redirect to="/polling" />} />
<Route exact path="/polling" component={Polling} />
</Switch>
</BrowserRouter>
</DAppProvider>
</Page>,
document.getElementById('root')
)

View File

@ -1,13 +1,23 @@
import React from 'react'
import React, { useEffect, useState } from 'react'
import { WakuPolling } from '@status-waku-voting/react-components'
import styled from 'styled-components'
import { TopBar } from '../components/TopBar'
import pollingIcon from '../assets/images/pollingIcon.svg'
import { JsonRpcSigner } from '@ethersproject/providers'
import { useEthers } from '@usedapp/core'
export function Polling() {
const { account, library } = useEthers()
const [signer, setSigner] = useState<undefined | JsonRpcSigner>(undefined)
useEffect(() => {
setSigner(library?.getSigner())
}, [account])
return (
<Wrapper>
<TopBar logo={pollingIcon} title={'Polling Dapp'} />
<WakuPolling appName={'testApp_'} />
<WakuPolling appName={'testApp_'} signer={signer} />
</Wrapper>
)
}

View File

@ -12,7 +12,7 @@ import { PollResults } from './PollResults'
type PollProps = {
poll: DetailedTimedPoll
wakuVoting: WakuVoting | undefined
signer: Wallet | JsonRpcSigner
signer: Wallet | JsonRpcSigner | undefined
}
export function Poll({ poll, wakuVoting, signer }: PollProps) {
@ -22,7 +22,11 @@ export function Poll({ poll, wakuVoting, signer }: PollProps) {
const [userInVoters, setUserInVoters] = useState(-1)
useEffect(() => {
signer.getAddress().then((e) => setAddress(e))
if (signer) {
signer.getAddress().then((e) => setAddress(e))
} else {
setAddress('')
}
}, [signer])
useEffect(() => {
@ -57,8 +61,9 @@ export function Poll({ poll, wakuVoting, signer }: PollProps) {
</PollAnswersWrapper>
{userInVoters < 0 && (
<SmallButton
disabled={!signer}
onClick={() => {
if (wakuVoting) {
if (wakuVoting && signer) {
wakuVoting.sendTimedPollVote(
signer,
poll.poll.id,

View File

@ -8,7 +8,7 @@ import styled from 'styled-components'
type PollListProps = {
wakuVoting: WakuVoting | undefined
signer: Wallet | JsonRpcSigner
signer: Wallet | JsonRpcSigner | undefined
}
export function PollList({ wakuVoting, signer }: PollListProps) {

View File

@ -5,33 +5,29 @@ import { PollList } from './PollList'
import styled from 'styled-components'
import { PollCreation } from './PollCreation'
import { Button } from '../components/misc/Buttons'
const provider = new providers.Web3Provider((window as any).ethereum)
import { JsonRpcSigner } from '@ethersproject/providers'
type WakuPollingProps = {
appName: string
signer: JsonRpcSigner | undefined
}
function WakuPolling({ appName }: WakuPollingProps) {
const [signer, setSigner] = useState(provider.getSigner())
function WakuPolling({ appName, signer }: WakuPollingProps) {
const [wakuVoting, setWakuVoting] = useState<WakuVoting | undefined>(undefined)
const [showPollCreation, setShowPollCreation] = useState(false)
useEffect(() => {
;(window as any).ethereum.on('accountsChanged', async () => {
provider.send('eth_requestAccounts', [])
setSigner(provider.getSigner())
})
WakuVoting.create(appName, '0x01').then((e) => setWakuVoting(e))
provider.send('eth_requestAccounts', [])
}, [])
return (
<Wrapper onClick={() => showPollCreation && setShowPollCreation(false)}>
{showPollCreation && (
{showPollCreation && signer && (
<PollCreation signer={signer} wakuVoting={wakuVoting} setShowPollCreation={setShowPollCreation} />
)}
<CreatePollButton onClick={() => setShowPollCreation(true)}>Create a poll</CreatePollButton>
<CreatePollButton disabled={!signer} onClick={() => setShowPollCreation(true)}>
Create a poll
</CreatePollButton>
<PollList wakuVoting={wakuVoting} signer={signer} />
</Wrapper>
)

187
yarn.lock
View File

@ -268,6 +268,19 @@
"@ethersproject/properties" "^5.4.0"
"@ethersproject/strings" "^5.4.0"
"@ethersproject/abstract-provider@5.4.0":
version "5.4.0"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.4.0.tgz#415331031b0f678388971e1987305244edc04e1d"
integrity sha512-vPBR7HKUBY0lpdllIn7tLIzNN7DrVnhCLKSzY0l8WAwxz686m/aL7ASDzrVxV93GJtIub6N2t4dfZ29CkPOxgA==
dependencies:
"@ethersproject/bignumber" "^5.4.0"
"@ethersproject/bytes" "^5.4.0"
"@ethersproject/logger" "^5.4.0"
"@ethersproject/networks" "^5.4.0"
"@ethersproject/properties" "^5.4.0"
"@ethersproject/transactions" "^5.4.0"
"@ethersproject/web" "^5.4.0"
"@ethersproject/abstract-provider@5.4.1", "@ethersproject/abstract-provider@^5.4.0":
version "5.4.1"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz#e404309a29f771bd4d28dbafadcaa184668c2a6e"
@ -281,6 +294,17 @@
"@ethersproject/transactions" "^5.4.0"
"@ethersproject/web" "^5.4.0"
"@ethersproject/abstract-signer@5.4.0":
version "5.4.0"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.4.0.tgz#cd5f50b93141ee9f9f49feb4075a0b3eafb57d65"
integrity sha512-AieQAzt05HJZS2bMofpuxMEp81AHufA5D6M4ScKwtolj041nrfIbIi8ciNW7+F59VYxXq+V4c3d568Q6l2m8ew==
dependencies:
"@ethersproject/abstract-provider" "^5.4.0"
"@ethersproject/bignumber" "^5.4.0"
"@ethersproject/bytes" "^5.4.0"
"@ethersproject/logger" "^5.4.0"
"@ethersproject/properties" "^5.4.0"
"@ethersproject/abstract-signer@5.4.1", "@ethersproject/abstract-signer@^5.4.0":
version "5.4.1"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz#e4e9abcf4dd4f1ba0db7dff9746a5f78f355ea81"
@ -318,6 +342,15 @@
"@ethersproject/bytes" "^5.4.0"
"@ethersproject/properties" "^5.4.0"
"@ethersproject/bignumber@5.4.0":
version "5.4.0"
resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.4.0.tgz#be8dea298c0ec71208ee60f0b245be0761217ad9"
integrity sha512-OXUu9f9hO3vGRIPxU40cignXZVaYyfx6j9NNMjebKdnaCL3anCLSSy8/b8d03vY6dh7duCC0kW72GEC4tZer2w==
dependencies:
"@ethersproject/bytes" "^5.4.0"
"@ethersproject/logger" "^5.4.0"
bn.js "^4.11.9"
"@ethersproject/bignumber@5.4.1", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.4.0":
version "5.4.1"
resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.4.1.tgz#64399d3b9ae80aa83d483e550ba57ea062c1042d"
@ -341,6 +374,22 @@
dependencies:
"@ethersproject/bignumber" "^5.4.0"
"@ethersproject/contracts@5.4.0":
version "5.4.0"
resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.4.0.tgz#e05fe6bd33acc98741e27d553889ec5920078abb"
integrity sha512-hkO3L3IhS1Z3ZtHtaAG/T87nQ7KiPV+/qnvutag35I0IkiQ8G3ZpCQ9NNOpSCzn4pWSW4CfzmtE02FcqnLI+hw==
dependencies:
"@ethersproject/abi" "^5.4.0"
"@ethersproject/abstract-provider" "^5.4.0"
"@ethersproject/abstract-signer" "^5.4.0"
"@ethersproject/address" "^5.4.0"
"@ethersproject/bignumber" "^5.4.0"
"@ethersproject/bytes" "^5.4.0"
"@ethersproject/constants" "^5.4.0"
"@ethersproject/logger" "^5.4.0"
"@ethersproject/properties" "^5.4.0"
"@ethersproject/transactions" "^5.4.0"
"@ethersproject/contracts@5.4.1":
version "5.4.1"
resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.4.1.tgz#3eb4f35b7fe60a962a75804ada2746494df3e470"
@ -408,7 +457,7 @@
aes-js "3.0.0"
scrypt-js "3.0.1"
"@ethersproject/keccak256@5.4.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.4.0":
"@ethersproject/keccak256@5.4.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.0-beta.130", "@ethersproject/keccak256@^5.4.0":
version "5.4.0"
resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.4.0.tgz#7143b8eea4976080241d2bd92e3b1f1bf7025318"
integrity sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==
@ -421,6 +470,13 @@
resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.4.0.tgz#f39adadf62ad610c420bcd156fd41270e91b3ca9"
integrity sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ==
"@ethersproject/networks@5.4.1":
version "5.4.1"
resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.4.1.tgz#2ce83b8e42aa85216e5d277a7952d97b6ce8d852"
integrity sha512-8SvowCKz9Uf4xC5DTKI8+il8lWqOr78kmiqAVLYT9lzB8aSmJHQMD1GSuJI0CW4hMAnzocpGpZLgiMdzsNSPig==
dependencies:
"@ethersproject/logger" "^5.4.0"
"@ethersproject/networks@5.4.2", "@ethersproject/networks@^5.4.0":
version "5.4.2"
resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.4.2.tgz#2247d977626e97e2c3b8ee73cd2457babde0ce35"
@ -443,6 +499,31 @@
dependencies:
"@ethersproject/logger" "^5.4.0"
"@ethersproject/providers@5.4.1":
version "5.4.1"
resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.4.1.tgz#654267b563b833046b9c9647647cfc8267cb93b4"
integrity sha512-p06eiFKz8nu/5Ju0kIX024gzEQIgE5pvvGrBCngpyVjpuLtUIWT3097Agw4mTn9/dEA0FMcfByzFqacBMSgCVg==
dependencies:
"@ethersproject/abstract-provider" "^5.4.0"
"@ethersproject/abstract-signer" "^5.4.0"
"@ethersproject/address" "^5.4.0"
"@ethersproject/basex" "^5.4.0"
"@ethersproject/bignumber" "^5.4.0"
"@ethersproject/bytes" "^5.4.0"
"@ethersproject/constants" "^5.4.0"
"@ethersproject/hash" "^5.4.0"
"@ethersproject/logger" "^5.4.0"
"@ethersproject/networks" "^5.4.0"
"@ethersproject/properties" "^5.4.0"
"@ethersproject/random" "^5.4.0"
"@ethersproject/rlp" "^5.4.0"
"@ethersproject/sha2" "^5.4.0"
"@ethersproject/strings" "^5.4.0"
"@ethersproject/transactions" "^5.4.0"
"@ethersproject/web" "^5.4.0"
bech32 "1.1.4"
ws "7.4.6"
"@ethersproject/providers@5.4.3":
version "5.4.3"
resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.4.3.tgz#4cd7ccd9e12bc3875b33df8b24abf735663958a5"
@ -1185,6 +1266,14 @@
"@types/scheduler" "*"
csstype "^3.0.2"
"@types/react@17.0.1":
version "17.0.1"
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.1.tgz#eb1f1407dea8da3bc741879c1192aa703ab9975b"
integrity sha512-w8t9f53B2ei4jeOqf/gxtc2Sswnc3LBK5s0DyJcg5xd10tMHXts2N31cKjWfH9IC/JvEPa/YF1U4YeP1t4R6HQ==
dependencies:
"@types/prop-types" "*"
csstype "^3.0.2"
"@types/react@^17.0.16":
version "17.0.16"
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.16.tgz#056f40c45645761527baeb7d89d842a6abdf285a"
@ -1313,11 +1402,64 @@
resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
"@usedapp/core@^0.4.6":
version "0.4.6"
resolved "https://registry.yarnpkg.com/@usedapp/core/-/core-0.4.6.tgz#cdc7f376d2f5c9378e4f80f01ac08d93c5cc39a0"
integrity sha512-yN3asyUoMlXv8F69NcND26oyyFUlDTb5mhcz56nfnee8WPv0gEyxILIkTTAvG3nsfiPK3CqDSEvkkF1YG7EhMg==
dependencies:
"@types/react" "17.0.1"
"@web3-react/core" "6.1.1"
"@web3-react/injected-connector" "6.0.7"
"@web3-react/network-connector" "6.1.5"
ethers "5.4.1"
nanoid "3.1.22"
"@vascosantos/moving-average@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@vascosantos/moving-average/-/moving-average-1.1.0.tgz#8d5793b09b2d6021ba5e620c6a0f876c20db7eaa"
integrity sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w==
"@web3-react/abstract-connector@^6.0.7":
version "6.0.7"
resolved "https://registry.yarnpkg.com/@web3-react/abstract-connector/-/abstract-connector-6.0.7.tgz#401b3c045f1e0fab04256311be49d5144e9badc6"
integrity sha512-RhQasA4Ox8CxUC0OENc1AJJm8UTybu/oOCM61Zjg6y0iF7Z0sqv1Ai1VdhC33hrQpA8qSBgoXN9PaP8jKmtdqg==
dependencies:
"@web3-react/types" "^6.0.7"
"@web3-react/core@6.1.1":
version "6.1.1"
resolved "https://registry.yarnpkg.com/@web3-react/core/-/core-6.1.1.tgz#06c853890723f600b387b738a4b71ef41d5cccb7"
integrity sha512-HKXOgPNCmFvrVsed+aW/HlVhwzs8t3b+nzg3BoxgJQo/5yLiJXSumHRBdUrPxhBQiHkHRZiVPAvzf/8JMnm74Q==
dependencies:
"@ethersproject/keccak256" "^5.0.0-beta.130"
"@web3-react/abstract-connector" "^6.0.7"
"@web3-react/types" "^6.0.7"
tiny-invariant "^1.0.6"
tiny-warning "^1.0.3"
"@web3-react/injected-connector@6.0.7":
version "6.0.7"
resolved "https://registry.yarnpkg.com/@web3-react/injected-connector/-/injected-connector-6.0.7.tgz#1e0be23f51fa07fe6547fe986768a46b74c3a426"
integrity sha512-Y7aJSz6pg+MWKtvdyuqyy6LWuH+4Tqtph1LWfiyVms9II9ar/9B/de4R8wh4wjg91wmHkU+D75yP09E/Soh2RA==
dependencies:
"@web3-react/abstract-connector" "^6.0.7"
"@web3-react/types" "^6.0.7"
tiny-warning "^1.0.3"
"@web3-react/network-connector@6.1.5":
version "6.1.5"
resolved "https://registry.yarnpkg.com/@web3-react/network-connector/-/network-connector-6.1.5.tgz#1fcce1dc7b03dac23fcc01ad0b0c870cb0e39e0b"
integrity sha512-Uwk8iMG8YCnTeKmyXt3Q7QJN28qTs0YTTW8/aes2R26KmYWCk3GdL2eal0QcXUixJy/IjrhXzbwzHgpneJqrWg==
dependencies:
"@web3-react/abstract-connector" "^6.0.7"
"@web3-react/types" "^6.0.7"
tiny-invariant "^1.0.6"
"@web3-react/types@^6.0.7":
version "6.0.7"
resolved "https://registry.yarnpkg.com/@web3-react/types/-/types-6.0.7.tgz#34a6204224467eedc6123abaf55fbb6baeb2809f"
integrity sha512-ofGmfDhxmNT1/P/MgVa8IKSkCStFiyvXe+U5tyZurKdrtTDFU+wJ/LxClPDtFerWpczNFPUSrKcuhfPX1sI6+A==
"@webassemblyjs/ast@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
@ -4667,6 +4809,42 @@ ethereumjs-wallet@0.6.5:
utf8 "^3.0.0"
uuid "^3.3.2"
ethers@5.4.1:
version "5.4.1"
resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.4.1.tgz#bcff1e9f45bf1a061bf313ec04e8d9881d2d53f9"
integrity sha512-SrcddMdCgP1hukDvCPd87Aipbf4NWjQvdfAbZ65XSZGbfyuYPtIrUJPDH5B1SBRsdlfiEgX3eoz28DdBDzMNFg==
dependencies:
"@ethersproject/abi" "5.4.0"
"@ethersproject/abstract-provider" "5.4.0"
"@ethersproject/abstract-signer" "5.4.0"
"@ethersproject/address" "5.4.0"
"@ethersproject/base64" "5.4.0"
"@ethersproject/basex" "5.4.0"
"@ethersproject/bignumber" "5.4.0"
"@ethersproject/bytes" "5.4.0"
"@ethersproject/constants" "5.4.0"
"@ethersproject/contracts" "5.4.0"
"@ethersproject/hash" "5.4.0"
"@ethersproject/hdnode" "5.4.0"
"@ethersproject/json-wallets" "5.4.0"
"@ethersproject/keccak256" "5.4.0"
"@ethersproject/logger" "5.4.0"
"@ethersproject/networks" "5.4.1"
"@ethersproject/pbkdf2" "5.4.0"
"@ethersproject/properties" "5.4.0"
"@ethersproject/providers" "5.4.1"
"@ethersproject/random" "5.4.0"
"@ethersproject/rlp" "5.4.0"
"@ethersproject/sha2" "5.4.0"
"@ethersproject/signing-key" "5.4.0"
"@ethersproject/solidity" "5.4.0"
"@ethersproject/strings" "5.4.0"
"@ethersproject/transactions" "5.4.0"
"@ethersproject/units" "5.4.0"
"@ethersproject/wallet" "5.4.0"
"@ethersproject/web" "5.4.0"
"@ethersproject/wordlists" "5.4.0"
ethers@^5.0.0, ethers@^5.0.1, ethers@^5.0.2, ethers@^5.4.4:
version "5.4.4"
resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.4.4.tgz#35cce530505b84c699da944162195cfb3f894947"
@ -8030,6 +8208,11 @@ nano-json-stream-parser@^0.1.2:
resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f"
integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=
nanoid@3.1.22:
version "3.1.22"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844"
integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==
nanoid@3.1.23:
version "3.1.23"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81"
@ -10656,7 +10839,7 @@ timeout-abort-controller@^1.1.1:
abort-controller "^3.0.0"
retimer "^2.0.0"
tiny-invariant@^1.0.2:
tiny-invariant@^1.0.2, tiny-invariant@^1.0.6:
version "1.1.0"
resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875"
integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==