Merge pull request #3 from yssf-io/mint-sbt

added nft minting
This commit is contained in:
turboblitz
2023-07-23 05:52:43 +02:00
committed by GitHub
8 changed files with 983 additions and 12 deletions

View File

@@ -20,6 +20,7 @@
"axios": "^1.1.3",
"circom": "0.5.45",
"dotenv": "^16.3.1",
"ethers": "^6.6.4",
"next": "12.3.1",
"pg": "^8.11.1",
"react": "18.2.0",

File diff suppressed because one or more lines are too long

View File

@@ -20,8 +20,16 @@ import {
Proof,
PropsButtonExportProof,
PropsButtonSearchPassport,
PropsButtonMint,
} from '../types';
import bigInt from 'big-integer';
import {
useAccount,
useContractWrite,
usePrepareContractWrite,
useSendTransaction,
} from 'wagmi';
import ProofOfBaguette from '../ProofOfBaguette.json';
const exp = '65537';
const devHash = process.env['NEXT_PUBLIC_HASH'] as string | null;
@@ -198,6 +206,51 @@ export const ButtonExportProof: FunctionComponent<PropsButtonExportProof> = ({
);
};
export const ButtonMint: FunctionComponent<PropsButtonMint> = ({
proof,
publicSignals,
a,
b,
c,
inputs,
tx,
}) => {
const { address } = useAccount();
const { data, isLoading, isSuccess, sendTransaction } = useSendTransaction({
to: '0x64390f86E8986FEb2f0E2E38e9392d5eBa0d0C48',
data: tx,
});
useEffect(() => {
console.log(proof);
console.log(publicSignals);
console.log(address);
}, [address]);
const sendToChain = () => {
try {
sendTransaction();
} catch (error) {
console.log(error);
}
};
return (
<>
{true ? (
<div className="flex w-1/3 self-end">
<button
onClick={sendToChain}
className="shadow-xl disabled:text-gray-400 disabled:border-gray-400 focus:outline-none text-beige font-work-sans border-2 rounded-lg border-beige hover:border-gold px-3 py-2"
>
Mint
</button>
</div>
) : null}
</>
);
};
export const ButtonSearchPassport: FunctionComponent<
PropsButtonSearchPassport
> = ({ passport, setHash, setSignature, setPublicKey }) => {

View File

@@ -10,10 +10,11 @@ import {
} from '@web3modal/ethereum';
import { Web3Modal } from '@web3modal/react';
import { configureChains, createConfig, WagmiConfig } from 'wagmi';
import { arbitrum, mainnet, polygon } from 'wagmi/chains';
import { arbitrum, mainnet, polygon, goerli } from 'wagmi/chains';
const chains = [mainnet];
const projectId = '995f7eebe283b9908e661cf08b88b492';
const chains = [goerli];
// const projectId = "995f7eebe283b9908e661cf08b88b492";
const projectId = '34a216df947456c22da1f6034129afa7';
const { publicClient } = configureChains(chains, [w3mProvider({ projectId })]);
const wagmiConfig = createConfig({

View File

@@ -4,6 +4,7 @@ import {
ButtonGenerateProof,
ButtonExportProof,
ButtonSearchPassport,
ButtonMint,
} from '../components/Buttons';
import {
InputHash,
@@ -14,6 +15,10 @@ import {
import { NavMenu, Title, Description, Footer } from '../components/Navigation';
import { PropsAppPage } from '../types';
import { Web3Button } from '@web3modal/react';
import { Contract, Interface, toBigInt, parseUnits } from 'ethers';
import ProofOfBaguette from '../ProofOfBaguette.json';
import { call } from 'viem/dist/types/actions/public/call';
import bigInt from 'big-integer';
/**
* @dev for exporting json proof and public signals data
@@ -22,6 +27,29 @@ import { Web3Button } from '@web3modal/react';
return this.toString();
};
function p256(n: any) {
let nstr = n.toString(16);
while (nstr.length < 64) nstr = '0' + nstr;
nstr = `"0x${nstr}"`;
return nstr;
}
function unstringifyBigInts(o: any): any {
if (typeof o == 'string' && /^[0-9]+$/.test(o)) {
return bigInt(o);
} else if (Array.isArray(o)) {
return o.map(unstringifyBigInts);
} else if (typeof o == 'object') {
const res: any = {};
for (let k in o) {
res[k] = unstringifyBigInts(o[k]);
}
return res;
} else {
return o;
}
}
const Home: NextPage<PropsAppPage> = ({
proof,
setproof,
@@ -34,6 +62,296 @@ const Home: NextPage<PropsAppPage> = ({
const [publicKey, setpublicKey] = useState<null | string>(null);
const [publicSignals, setpublicSignals] = useState<null | any>(null); //
const [compiledCircuit, setcompiledCircuit] = useState(null);
const [a, setA] = useState<any>(undefined);
const [b, setB] = useState<any>(undefined);
const [c, setC] = useState<any>(undefined);
const [inputs, setInputs] = useState<any>(undefined);
const [tx, setTx] = useState<string>('');
const convertToCalldata = async () => {
// const proof = unstringifyBigInts({
// pi_a: [
// '19287492320435483440704457394155277171350568551804065185119841485812565810082',
// '3684562538256035356686194265585363354008612543358421635483534437426025891117',
// '1',
// ],
// pi_b: [
// [
// '11055670746460836696159731062483614239524610460745056281780386167160325326636',
// '2820701812791380870233869601400033565999744176272665088190485906290409159639',
// ],
// [
// '4095435693621421431757230136783849695386191327789252894791688842209983968784',
// '1111622903601858550456839182623484829182143016402851311503851728483637212792',
// ],
// ['1', '0'],
// ],
// pi_c: [
// '9904673993391729395981527856105603527864541520723223317201726900543246149400',
// '18822540632936788087711438859341594977533047180857712179269886168960479278995',
// '1',
// ],
// protocol: 'groth',
// });
// const publicSignals = unstringifyBigInts([
// '65537',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '0',
// '1004979219314799894',
// '6361443755252600907',
// '6439012883494616023',
// '9400879716815088139',
// '17551897985575934811',
// '11779273958797828281',
// '2536315921873401485',
// '3748173260178203981',
// '12475215309213288577',
// '6281117468118442715',
// '1336292932993922350',
// '14238156234566069988',
// '11985045093510507012',
// '3585865343992378960',
// '16170829868787473084',
// '17039645001628184779',
// '486540501180074772',
// '5061439412388381188',
// '12478821212163933993',
// '7430448406248319432',
// '746345521572597865',
// '5002454658692185142',
// '3715069341922830389',
// '11010599232161942094',
// '1577500614971981868',
// '13656226284809645063',
// '3918261659477120323',
// '5578832687955645075',
// '3416933977282345392',
// '15829829506526117610',
// '17465616637242519010',
// '6519177967447716150',
// '9539992759301679521',
// '1652651398804391575',
// '7756096264856639170',
// '15028348881266521487',
// '13451582891670014060',
// '11697656644529425980',
// '14590137142310897374',
// '1172377360308996086',
// '6389592621616098288',
// '6767780215543232436',
// '11347756978427069433',
// '2593119277386338350',
// '18385617576997885505',
// '14960211320702750252',
// '8706817324429498800',
// '15168543370367053559',
// '8708916123725550363',
// '18006178692029805686',
// '6398208271038376723',
// '15000821494077560096',
// '17674982305626887153',
// '2867958270953137726',
// '9287774520059158342',
// '9813100051910281130',
// '13494313215150203208',
// '7792741716144106392',
// '6553490305289731807',
// '32268224696386820',
// '15737886769048580611',
// '669518601007982974',
// '11424760966478363403',
// '16073833083611347461',
// '897585614395172552642670145532424661022951192962',
// ]);
// let inputs = '';
// for (let i = 0; i < publicSignals.length; i++) {
// if (inputs != '') inputs = inputs + ',';
// inputs = inputs + p256(publicSignals[i]);
// }
// let S;
// S =
// `{"a": [${p256(proof.pi_a[0])}, ${p256(proof.pi_a[1])}],` +
// `"b": [[${p256(proof.pi_b[0][1])}, ${p256(
// proof.pi_b[0][0]
// )}],[${p256(proof.pi_b[1][1])}, ${p256(proof.pi_b[1][0])}]],` +
// `"c": [${p256(proof.pi_c[0])}, ${p256(proof.pi_c[1])}],` +
// `"inputs": [${inputs}]}`;
const exampleCorrectProof = {
a: [
'0x0c7141194fa7a5a26dd3834bd9490908286e3c772dcaecca314b74a58a222642',
'0x0494611f581503a05ebd4e8fe17e9c7ec05a0c022081bbe6115a6bf8afcd8c19',
],
b: [
[
'0x01b8ab498c66a313e3320b0a65d94ab35e4be73616a56b33685415e5b312cb57',
'0x071417e130b6f8c45cee4644adbb90ae62c542ec26fa83377b86fadfe737cddc',
],
[
'0x2d991227175693d047f1e976af6986a58aa313d75677a0e70939b3ddb1912df2',
'0x1326e7a60a10320b5477d3bbc824121d1cbf2381293a09bf82ff5418897d7706',
],
],
c: [
'0x19912bf5bfee2e72d3cc357fa6b94741ba70bb9e25ca72922cc23cef79adab68',
'0x1dc4caae04391e8d72f288970e195f1d317476a1890977083d8db832c5a6552a',
],
input: [
'0x0000000000000000000000000000000000000000000000000000000000010001',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000000000000000000',
'0x0000000000000000000000000000000000000000000000000df267467de87516',
'0x000000000000000000000000000000000000000000000000584863641a75504b',
'0x000000000000000000000000000000000000000000000000595bf81a28dc3bd7',
'0x0000000000000000000000000000000000000000000000008276a24b60f02a0b',
'0x000000000000000000000000000000000000000000000000f394de395425db5b',
'0x000000000000000000000000000000000000000000000000a37863419a2760b9',
'0x0000000000000000000000000000000000000000000000002332cde4996e768d',
'0x00000000000000000000000000000000000000000000000034042fb8b18a254d',
'0x000000000000000000000000000000000000000000000000ad20de3a2a2c4881',
'0x000000000000000000000000000000000000000000000000572b030ef7b362db',
'0x000000000000000000000000000000000000000000000000128b7757b2f7b52e',
'0x000000000000000000000000000000000000000000000000c59817a889d2eee4',
'0x000000000000000000000000000000000000000000000000a6536f0357bb6a04',
'0x00000000000000000000000000000000000000000000000031c38d88190cb650',
'0x000000000000000000000000000000000000000000000000e06a5416c45a9abc',
'0x000000000000000000000000000000000000000000000000ec78fad95ccef0cb',
'0x00000000000000000000000000000000000000000000000006c08a020dadcb14',
'0x000000000000000000000000000000000000000000000000463dd85433924204',
'0x000000000000000000000000000000000000000000000000ad2dadc6dea40729',
'0x000000000000000000000000000000000000000000000000671e4175104c69c8',
'0x0000000000000000000000000000000000000000000000000a5b8d4c2d09d069',
'0x000000000000000000000000000000000000000000000000456c4a0208587c36',
'0x000000000000000000000000000000000000000000000000338e93e219412835',
'0x00000000000000000000000000000000000000000000000098cd81aa3d338a4e',
'0x00000000000000000000000000000000000000000000000015e468738c5d802c',
'0x000000000000000000000000000000000000000000000000bd84a973c66e6c07',
'0x000000000000000000000000000000000000000000000000366076382e2a9543',
'0x0000000000000000000000000000000000000000000000004d6bfec592ef1293',
'0x0000000000000000000000000000000000000000000000002f6b635940e079b0',
'0x000000000000000000000000000000000000000000000000dbaeda10ef7c7eea',
'0x000000000000000000000000000000000000000000000000f26255cb75fe2de2',
'0x0000000000000000000000000000000000000000000000005a78c5d241463136',
'0x0000000000000000000000000000000000000000000000008464dcde99f9a9a1',
'0x00000000000000000000000000000000000000000000000016ef65b0eb49c697',
'0x0000000000000000000000000000000000000000000000006ba33075968396c2',
'0x000000000000000000000000000000000000000000000000d08f6baf1487b58f',
'0x000000000000000000000000000000000000000000000000baad9f5ed4b6886c',
'0x000000000000000000000000000000000000000000000000a2566cbdc9aa0e3c',
'0x000000000000000000000000000000000000000000000000ca7a946dd7ac86de',
'0x00000000000000000000000000000000000000000000000010451eff67ed87f6',
'0x00000000000000000000000000000000000000000000000058ac64a2c6e26bf0',
'0x0000000000000000000000000000000000000000000000005debfc3fb15ef7b4',
'0x0000000000000000000000000000000000000000000000009d7b54d9509b03f9',
'0x00000000000000000000000000000000000000000000000023fc9c3e6cd4902e',
'0x000000000000000000000000000000000000000000000000ff26d5c66d231641',
'0x000000000000000000000000000000000000000000000000cf9d58eeff43ce2c',
'0x00000000000000000000000000000000000000000000000078d4d439d2d659b0',
'0x000000000000000000000000000000000000000000000000d2817dd436d5aef7',
'0x00000000000000000000000000000000000000000000000078dc49129d55531b',
'0x000000000000000000000000000000000000000000000000f9e2cc1e9ca4f476',
'0x00000000000000000000000000000000000000000000000058cb0085fa356b13',
'0x000000000000000000000000000000000000000000000000d02d9fabcd899520',
'0x000000000000000000000000000000000000000000000000f54a26c2ca3493f1',
'0x00000000000000000000000000000000000000000000000027cd08da32ce263e',
'0x00000000000000000000000000000000000000000000000080e4cdb79e0cdf46',
'0x000000000000000000000000000000000000000000000000882f2281537ac7aa',
'0x000000000000000000000000000000000000000000000000bb456e5f8ce32148',
'0x0000000000000000000000000000000000000000000000006c25614d99232b98',
'0x0000000000000000000000000000000000000000000000005af2acb5f5c2bedf',
'0x0000000000000000000000000000000000000000000000000072a3c7868f8504',
'0x000000000000000000000000000000000000000000000000da6834a23075f203',
'0x000000000000000000000000000000000000000000000000094a9b9ecf98e97e',
'0x0000000000000000000000000000000000000000000000009e8ce7916ab0fb0b',
'0x000000000000000000000000000000000000000000000000df11ba06d7937a05',
'0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8',
],
};
// const calldata = JSON.parse(S);
const calldata = exampleCorrectProof;
console.log(calldata);
let bigstr = `0x3723d14a${calldata.a[0].substring(
2
)}${calldata.a[1].substring(2)}${calldata.b[0][0].substring(
2
)}${calldata.b[0][1].substring(2)}${calldata.b[1][0].substring(
2
)}${calldata.b[1][1].substring(2)}${calldata.c[0].substring(
2
)}${calldata.c[1].substring(2)}${calldata.input
.map((x: any) => x.substring(2))
.join('')}`;
console.log('Transaction data:');
console.log(bigstr);
setTx(bigstr);
};
useEffect(() => {
if (hash) convertToCalldata();
}, [hash]);
// TODO : set the right address. For now, mine hardcoded
const [address, setAddress] = useState(
@@ -88,11 +406,16 @@ const Home: NextPage<PropsAppPage> = ({
publicKey={publicKey}
setproof={setproof}
></ButtonGenerateProof>
{proof ? (
<ButtonExportProof
{tx ? (
<ButtonMint
publicSignals={publicSignals}
proof={proof}
></ButtonExportProof>
a={a}
b={b}
c={c}
inputs={inputs}
tx={tx}
></ButtonMint>
) : null}
</div>
<Footer></Footer>

View File

@@ -47,6 +47,16 @@ export interface PropsButtonExportProof {
publicSignals: any;
}
export interface PropsButtonMint {
proof: any;
publicSignals: any;
a: any;
b: any;
c: any;
inputs: any;
tx: any;
}
export interface PropsButtonSearchPassport {
passport: string;
setHash: Dispatch<SetStateAction<string | null>>;

View File

@@ -1,6 +1,6 @@
{
"compilerOptions": {
"target": "es5",
"target": "es2020",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,

View File

@@ -12,6 +12,11 @@
resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.0.tgz#223572538f6bea336750039bb43a4016dcc8182d"
integrity sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==
"@adraffy/ens-normalize@1.9.2":
version "1.9.2"
resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz#60111a5d9db45b2e5cbb6231b0bb8d97e8659316"
integrity sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==
"@ampproject/remapping@^2.1.0":
version "2.2.0"
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d"
@@ -1097,6 +1102,11 @@
dependencies:
"@noble/hashes" "1.3.1"
"@noble/hashes@1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183"
integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==
"@noble/hashes@1.3.0":
version "1.3.0"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1"
@@ -1107,6 +1117,11 @@
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9"
integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==
"@noble/secp256k1@1.7.1":
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"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -1614,6 +1629,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4"
integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==
"@types/node@18.15.13":
version "18.15.13"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469"
integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==
"@types/node@18.8.0":
version "18.8.0"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.0.tgz#b8ee8d83a99470c0661bd899417fcd77060682fe"
@@ -2281,6 +2301,11 @@ acorn@^8.8.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
aes-js@4.0.0-beta.5:
version "4.0.0-beta.5"
resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873"
integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==
aes-js@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a"
@@ -4068,6 +4093,19 @@ eth-rpc-errors@^4.0.2:
dependencies:
fast-safe-stringify "^2.0.6"
ethers@^6.6.4:
version "6.6.4"
resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.6.4.tgz#f03a86effcd55e82aed96a2fb9a56a9febd3e3d5"
integrity sha512-r3myN2hEnydmu23iiIj5kjWnCh5JNzlqrE/z+Kw5UqH173F+JOWzU6qkFB4HVC50epgxzKSL2Hq1oNXA877vwQ==
dependencies:
"@adraffy/ens-normalize" "1.9.2"
"@noble/hashes" "1.1.2"
"@noble/secp256k1" "1.7.1"
"@types/node" "18.15.13"
aes-js "4.0.0-beta.5"
tslib "2.4.0"
ws "8.5.0"
eventemitter3@^4.0.7:
version "4.0.7"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
@@ -8297,16 +8335,16 @@ tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@2.4.0, tslib@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
tslib@^2.0.0, tslib@^2.3.1:
version "2.6.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3"
integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==
tslib@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
@@ -8793,6 +8831,11 @@ ws@8.12.0:
resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8"
integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==
ws@8.5.0:
version "8.5.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
ws@^7.3.1, ws@^7.4.5, ws@^7.5.1:
version "7.5.9"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"