diff --git a/apps/trading/.env b/apps/trading/.env new file mode 100644 index 000000000..1271252c7 --- /dev/null +++ b/apps/trading/.env @@ -0,0 +1,24 @@ +# React Environment Variables +# https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables#expanding-environment-variables-in-env + +# Netlify Environment Variables +# https://www.netlify.com/docs/continuous-deployment/#environment-variables +NX_VERSION=$npm_package_version +NX_REPOSITORY_URL=$REPOSITORY_URL +NX_BRANCH=$BRANCH +NX_PULL_REQUEST=$PULL_REQUEST +NX_HEAD=$HEAD +NX_COMMIT_REF=$COMMIT_REF +NX_CONTEXT=$CONTEXT +NX_REVIEW_ID=$REVIEW_ID +NX_INCOMING_HOOK_TITLE=$INCOMING_HOOK_TITLE +NX_INCOMING_HOOK_URL=$INCOMING_HOOK_URL +NX_INCOMING_HOOK_BODY=$INCOMING_HOOK_BODY +NX_URL=$URL +NX_DEPLOY_URL=$DEPLOY_URL +NX_DEPLOY_PRIME_URL=$DEPLOY_PRIME_URL + +# App configuration variables +NX_VEGA_URL = "https://lb.testnet.vega.xyz/query" +NX_ETHEREUM_CHAIN_ID = 3 +NX_INFURA_ID = "4f846e79e13f44d1b51bbd7ed9edefb8"; \ No newline at end of file diff --git a/apps/trading/.env.devent b/apps/trading/.env.devent new file mode 100644 index 000000000..d2f47df37 --- /dev/null +++ b/apps/trading/.env.devent @@ -0,0 +1,4 @@ +# App configuration variables +NX_VEGA_URL = "https://n04.d.vega.xyz/query" +NX_ETHEREUM_CHAIN_ID = 3 +NX_INFURA_ID = "4f846e79e13f44d1b51bbd7ed9edefb8"; \ No newline at end of file diff --git a/apps/trading/.env.mainnet b/apps/trading/.env.mainnet new file mode 100644 index 000000000..634a2fb17 --- /dev/null +++ b/apps/trading/.env.mainnet @@ -0,0 +1,4 @@ +# App configuration variables +NX_VEGA_URL = "https://api.token.vega.xyz/query" +NX_ETHEREUM_CHAIN_ID = 1 +NX_INFURA_ID = "4f846e79e13f44d1b51bbd7ed9edefb8"; \ No newline at end of file diff --git a/apps/trading/.env.stagnet1 b/apps/trading/.env.stagnet1 new file mode 100644 index 000000000..907bec9f0 --- /dev/null +++ b/apps/trading/.env.stagnet1 @@ -0,0 +1,4 @@ +# App configuration variables +NX_VEGA_URL = "https://n03.s.vega.xyz/query" +NX_ETHEREUM_CHAIN_ID = 3 +NX_INFURA_ID = "4f846e79e13f44d1b51bbd7ed9edefb8"; diff --git a/apps/trading/.env.stagnet2 b/apps/trading/.env.stagnet2 new file mode 100644 index 000000000..adb972a50 --- /dev/null +++ b/apps/trading/.env.stagnet2 @@ -0,0 +1,4 @@ +# App configuration variables +NX_VEGA_URL = "https://n03.stagnet2.vega.xyz/query" +NX_ETHEREUM_CHAIN_ID = 3 +NX_INFURA_ID = "4f846e79e13f44d1b51bbd7ed9edefb8"; \ No newline at end of file diff --git a/apps/trading/.env.testnet b/apps/trading/.env.testnet new file mode 100644 index 000000000..1909d68a5 --- /dev/null +++ b/apps/trading/.env.testnet @@ -0,0 +1,4 @@ +# App configuration variables +NX_VEGA_URL = "https://lb.testnet.vega.xyz/query" +NX_ETHEREUM_CHAIN_ID = 3 +NX_INFURA_ID = "4f846e79e13f44d1b51bbd7ed9edefb8"; \ No newline at end of file diff --git a/apps/trading/components/vega-wallet-connect-button/index.tsx b/apps/trading/components/vega-wallet-connect-button/index.tsx index 8571b81b1..2a72e9289 100644 --- a/apps/trading/components/vega-wallet-connect-button/index.tsx +++ b/apps/trading/components/vega-wallet-connect-button/index.tsx @@ -23,7 +23,7 @@ export const VegaWalletButton = ({ onClick={handleClick} className="ml-auto inline-block text-ui sm:text-body-large" > - {isConnected ? 'Disconnect' : 'Connect Vega wallet'} + {isConnected ? 'Disconnect Vega wallet' : 'Connect Vega wallet'} ); }; diff --git a/apps/trading/components/web3-container/index.ts b/apps/trading/components/web3-container/index.ts new file mode 100644 index 000000000..6e35feeb3 --- /dev/null +++ b/apps/trading/components/web3-container/index.ts @@ -0,0 +1 @@ +export { Web3Container } from './web3-container'; diff --git a/apps/trading/components/web3-container/web3-container.spec.tsx b/apps/trading/components/web3-container/web3-container.spec.tsx new file mode 100644 index 000000000..eda7b6351 --- /dev/null +++ b/apps/trading/components/web3-container/web3-container.spec.tsx @@ -0,0 +1,65 @@ +import { fireEvent, render, screen } from '@testing-library/react'; +import { Web3Container } from './web3-container'; + +const defaultHookValue = { + isActive: false, + error: undefined, + connector: null, + chainId: 3, +}; +let mockHookValue; + +jest.mock('@web3-react/core', () => { + const original = jest.requireActual('@web3-react/core'); + return { + ...original, + useWeb3React: jest.fn(() => mockHookValue), + }; +}); + +test('Prompt to connect opens dialog', () => { + mockHookValue = defaultHookValue; + render( + +
Child
+
+ ); + + expect(screen.queryByText('Child')).not.toBeInTheDocument(); + expect(screen.queryByTestId('web3-connector-list')).not.toBeInTheDocument(); + expect(screen.getByText('Connect your Ethereum wallet')).toBeInTheDocument(); + fireEvent.click(screen.getByText('Connect')); + expect(screen.getByTestId('web3-connector-list')).toBeInTheDocument(); +}); + +test('Error message is shown', () => { + const message = 'Opps! An error'; + mockHookValue = { ...defaultHookValue, error: new Error(message) }; + + render( + +
Child
+
+ ); + + expect(screen.queryByText('Child')).not.toBeInTheDocument(); + expect(screen.getByText(`Something went wrong: ${message}`)); +}); + +test('Chain id matches app configuration', () => { + const expectedChainId = 4; + mockHookValue = { + ...defaultHookValue, + isActive: true, + chainId: expectedChainId, + }; + + render( + +
Child
+
+ ); + + expect(screen.queryByText('Child')).not.toBeInTheDocument(); + expect(screen.getByText(`This app only works on chain ID: 3`)); +}); diff --git a/apps/trading/components/web3-container/web3-container.tsx b/apps/trading/components/web3-container/web3-container.tsx new file mode 100644 index 000000000..2698d6a46 --- /dev/null +++ b/apps/trading/components/web3-container/web3-container.tsx @@ -0,0 +1,79 @@ +import { Button, Splash } from '@vegaprotocol/ui-toolkit'; +import { Web3Provider, Web3ConnectDialog } from '@vegaprotocol/web3'; +import { useWeb3React } from '@web3-react/core'; +import { ReactNode, useEffect, useState } from 'react'; +import { Connectors } from '../../lib/web3-connectors'; + +interface Web3ContainerProps { + children: ReactNode; +} + +export const Web3Container = ({ children }: Web3ContainerProps) => { + const [dialogOpen, setDialogOpen] = useState(false); + return ( + + {children} + + + ); +}; + +interface Web3ContentProps { + children: ReactNode; + setDialogOpen: (isOpen: boolean) => void; +} + +export const Web3Content = ({ children, setDialogOpen }: Web3ContentProps) => { + const appChainId = Number(process.env['NX_ETHEREUM_CHAIN_ID'] || 3); + const { isActive, error, connector, chainId } = useWeb3React(); + + useEffect(() => { + connector?.connectEagerly(); + }, [connector]); + + if (error) { + return ( + +

Something went wrong: {error.message}

+ +
+ ); + } + + if (!isActive) { + return ( + +

Connect your Ethereum wallet

+ +
+ ); + } + + if (chainId !== appChainId) { + return ( + +

This app only works on chain ID: {appChainId}

+ +
+ ); + } + + return <>{children}; +}; + +interface SplashWrapperProps { + children: ReactNode; +} + +const SplashWrapper = ({ children }: SplashWrapperProps) => { + return ( + +
{children}
+
+ ); +}; diff --git a/apps/trading/hooks/use-vega-wallet-eager-connect.ts b/apps/trading/hooks/use-vega-wallet-eager-connect.ts index 1b40cbdbb..8da9055d8 100644 --- a/apps/trading/hooks/use-vega-wallet-eager-connect.ts +++ b/apps/trading/hooks/use-vega-wallet-eager-connect.ts @@ -1,7 +1,7 @@ import { useVegaWallet, WALLET_CONFIG } from '@vegaprotocol/wallet'; import { useEffect } from 'react'; import { LocalStorage } from '@vegaprotocol/react-helpers'; -import { Connectors } from '../lib/connectors'; +import { Connectors } from '../lib/vega-connectors'; export function useEagerConnect() { const { connect } = useVegaWallet(); diff --git a/apps/trading/lib/connectors.ts b/apps/trading/lib/vega-connectors.ts similarity index 100% rename from apps/trading/lib/connectors.ts rename to apps/trading/lib/vega-connectors.ts diff --git a/apps/trading/lib/web3-connectors.ts b/apps/trading/lib/web3-connectors.ts new file mode 100644 index 000000000..0567b4b83 --- /dev/null +++ b/apps/trading/lib/web3-connectors.ts @@ -0,0 +1,23 @@ +import { initializeConnector } from '@web3-react/core'; +import { MetaMask } from '@web3-react/metamask'; +import { WalletConnect } from '@web3-react/walletconnect'; + +export const metamask = initializeConnector( + (actions) => new MetaMask(actions) +); + +export const walletconnect = initializeConnector( + (actions) => + new WalletConnect(actions, { + rpc: { + 1: `https://mainnet.infura.io/v3/${process.env['NX_INFURA_ID']}`, + 3: `https://ropsten.infura.io/v3/${process.env['NX_INFURA_ID']}`, + }, + }), + [1, 3] +); + +export const Connectors = { + metamask, + walletconnect, +}; diff --git a/apps/trading/pages/_app.page.tsx b/apps/trading/pages/_app.page.tsx index fe20d1396..3c59855d9 100644 --- a/apps/trading/pages/_app.page.tsx +++ b/apps/trading/pages/_app.page.tsx @@ -3,7 +3,7 @@ import Head from 'next/head'; import { Navbar } from '../components/navbar'; import { ThemeContext } from '@vegaprotocol/react-helpers'; import { VegaConnectDialog, VegaWalletProvider } from '@vegaprotocol/wallet'; -import { Connectors } from '../lib/connectors'; +import { Connectors } from '../lib/vega-connectors'; import { useCallback, useMemo, useState } from 'react'; import { createClient } from '../lib/apollo-client'; import { ThemeSwitcher } from '@vegaprotocol/ui-toolkit'; @@ -15,11 +15,7 @@ import { useThemeSwitcher } from '../hooks/use-theme-switcher'; import './styles.css'; function VegaTradingApp({ Component, pageProps }: AppProps) { - const client = useMemo( - () => - createClient(process.env['NX_VEGA_URL'] || 'https://lb.testnet.vega.xyz'), - [] - ); + const client = useMemo(() => createClient(process.env['NX_VEGA_URL']), []); const [dialogOpen, setDialogOpen] = useState(false); const [theme, toggleTheme] = useThemeSwitcher(); diff --git a/apps/trading/pages/portfolio/deposit/index.page.tsx b/apps/trading/pages/portfolio/deposit/index.page.tsx new file mode 100644 index 000000000..da45dfc7c --- /dev/null +++ b/apps/trading/pages/portfolio/deposit/index.page.tsx @@ -0,0 +1,28 @@ +import { useWeb3React } from '@web3-react/core'; +import { Web3Container } from '../../../components/web3-container'; + +const Deposit = () => { + return ( + +
+

Deposit

+ +
+
+ ); +}; + +const Info = () => { + const { isActive, chainId, accounts } = useWeb3React(); + if (!isActive) { + return
Not active
; + } + return ( +
+

{chainId}

+

{accounts[0]}

+
+ ); +}; + +export default Deposit; diff --git a/apps/trading/pages/portfolio/index.page.tsx b/apps/trading/pages/portfolio/index.page.tsx index 484564ca7..5cf191e63 100644 --- a/apps/trading/pages/portfolio/index.page.tsx +++ b/apps/trading/pages/portfolio/index.page.tsx @@ -1,3 +1,4 @@ +import { AnchorButton } from '@vegaprotocol/ui-toolkit'; import { useVegaWallet } from '@vegaprotocol/wallet'; const Portfolio = () => { @@ -10,6 +11,9 @@ const Portfolio = () => { Keypair: {keypair.name} {keypair.pub}

)} +
+ Deposit +
); }; diff --git a/libs/wallet/src/connect-dialog.tsx b/libs/wallet/src/connect-dialog.tsx index 7b4e8656b..f75a39057 100644 --- a/libs/wallet/src/connect-dialog.tsx +++ b/libs/wallet/src/connect-dialog.tsx @@ -67,11 +67,11 @@ export function VegaConnectDialog({ -

{connector.description}

+

{connector.description}

))} diff --git a/libs/web3/.babelrc b/libs/web3/.babelrc new file mode 100644 index 000000000..ccae900be --- /dev/null +++ b/libs/web3/.babelrc @@ -0,0 +1,12 @@ +{ + "presets": [ + [ + "@nrwl/react/babel", + { + "runtime": "automatic", + "useBuiltIns": "usage" + } + ] + ], + "plugins": [] +} diff --git a/libs/web3/.eslintrc.json b/libs/web3/.eslintrc.json new file mode 100644 index 000000000..734ddacee --- /dev/null +++ b/libs/web3/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["plugin:@nrwl/nx/react", "../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/libs/web3/README.md b/libs/web3/README.md new file mode 100644 index 000000000..4ddd1785f --- /dev/null +++ b/libs/web3/README.md @@ -0,0 +1,7 @@ +# web3 + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test web3` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/web3/jest.config.js b/libs/web3/jest.config.js new file mode 100644 index 000000000..bd0f5f9e5 --- /dev/null +++ b/libs/web3/jest.config.js @@ -0,0 +1,10 @@ +module.exports = { + displayName: 'web3', + preset: '../../jest.preset.js', + transform: { + '^.+\\.[tj]sx?$': 'babel-jest', + }, + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + coverageDirectory: '../../coverage/libs/web3', + setupFilesAfterEnv: ['./src/setup-tests.ts'], +}; diff --git a/libs/web3/project.json b/libs/web3/project.json new file mode 100644 index 000000000..76a6d2287 --- /dev/null +++ b/libs/web3/project.json @@ -0,0 +1,23 @@ +{ + "root": "libs/web3", + "sourceRoot": "libs/web3/src", + "projectType": "library", + "tags": [], + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["libs/web3/**/*.{ts,tsx,js,jsx}"] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": ["coverage/libs/web3"], + "options": { + "jestConfig": "libs/web3/jest.config.js", + "passWithNoTests": true + } + } + } +} diff --git a/libs/web3/src/index.ts b/libs/web3/src/index.ts new file mode 100644 index 000000000..76dfd08fb --- /dev/null +++ b/libs/web3/src/index.ts @@ -0,0 +1,2 @@ +export * from './lib/web3-provider'; +export * from './lib/web3-connect-dialog'; diff --git a/libs/web3/src/lib/types.ts b/libs/web3/src/lib/types.ts new file mode 100644 index 000000000..f0a54f765 --- /dev/null +++ b/libs/web3/src/lib/types.ts @@ -0,0 +1,8 @@ +import { Web3ReactHooks } from '@web3-react/core'; +import { MetaMask } from '@web3-react/metamask'; +import { WalletConnect } from '@web3-react/walletconnect'; + +export type Connectors = { + [name: string]: [Connector, Web3ReactHooks, object]; +}; +type Connector = MetaMask | WalletConnect; diff --git a/libs/web3/src/lib/web3-connect-dialog.spec.tsx b/libs/web3/src/lib/web3-connect-dialog.spec.tsx new file mode 100644 index 000000000..9f73e7406 --- /dev/null +++ b/libs/web3/src/lib/web3-connect-dialog.spec.tsx @@ -0,0 +1,48 @@ +import { fireEvent, render, screen, waitFor } from '@testing-library/react'; +import { Web3ConnectDialog } from './web3-connect-dialog'; +import { initializeConnector } from '@web3-react/core'; +import { MetaMask } from '@web3-react/metamask'; + +const connectors = { + foo: initializeConnector((actions) => new MetaMask(actions)), + bar: initializeConnector((actions) => new MetaMask(actions)), +}; + +const props = { + dialogOpen: false, + setDialogOpen: jest.fn(), + connectors, + desiredChainId: 3, +}; + +test('Dialog can be open or closed', () => { + const { container, rerender } = render(); + expect(container).toBeEmptyDOMElement(); + rerender(); + expect(screen.getByTestId('web3-connector-list')).toBeInTheDocument(); + expect( + screen.getByText('Connect to your Ethereum wallet') + ).toBeInTheDocument(); +}); + +test('Renders connection options', async () => { + const spyOnConnect = jest + .spyOn(connectors.foo[0], 'activate') + .mockReturnValue(Promise.resolve()); + + render(); + const connectorList = screen.getByTestId('web3-connector-list'); + expect(connectorList).toBeInTheDocument(); + expect(connectorList.children).toHaveLength(Object.keys(connectors).length); + + // foo/bar connector options displayed + expect(screen.getByTestId('web3-connector-foo')).toBeInTheDocument(); + expect(screen.getByTestId('web3-connector-bar')).toBeInTheDocument(); + + // Assert connection is attempted with desired chain + fireEvent.click(screen.getByTestId('web3-connector-foo')); + expect(spyOnConnect).toHaveBeenCalledWith(props.desiredChainId); + await waitFor(() => { + expect(props.setDialogOpen).toHaveBeenCalledWith(false); + }); +}); diff --git a/libs/web3/src/lib/web3-connect-dialog.tsx b/libs/web3/src/lib/web3-connect-dialog.tsx new file mode 100644 index 000000000..de11df2d1 --- /dev/null +++ b/libs/web3/src/lib/web3-connect-dialog.tsx @@ -0,0 +1,44 @@ +import { Dialog, Intent } from '@vegaprotocol/ui-toolkit'; +import { Connectors } from './types'; + +interface Web3ConnectDialogProps { + dialogOpen: boolean; + setDialogOpen: (isOpen: boolean) => void; + connectors: Connectors; + desiredChainId?: number; +} + +export const Web3ConnectDialog = ({ + dialogOpen, + setDialogOpen, + connectors, + desiredChainId, +}: Web3ConnectDialogProps) => { + return ( + +
    + {Object.entries(connectors).map(([connectorName, [connector]]) => { + return ( +
  • + +
  • + ); + })} +
+
+ ); +}; diff --git a/libs/web3/src/lib/web3-provider.spec.tsx b/libs/web3/src/lib/web3-provider.spec.tsx new file mode 100644 index 000000000..29ca7da2e --- /dev/null +++ b/libs/web3/src/lib/web3-provider.spec.tsx @@ -0,0 +1,20 @@ +import { act, render, screen } from '@testing-library/react'; +import { initializeConnector } from '@web3-react/core'; +import { MetaMask } from '@web3-react/metamask'; +import { Web3Provider } from './web3-provider'; + +const connectors = { + foo: initializeConnector((actions) => new MetaMask(actions)), +}; + +test('Renders children', async () => { + await act(async () => { + render( + +
Child
+
+ ); + }); + + expect(screen.getByText('Child')).toBeInTheDocument(); +}); diff --git a/libs/web3/src/lib/web3-provider.tsx b/libs/web3/src/lib/web3-provider.tsx new file mode 100644 index 000000000..e7c429f93 --- /dev/null +++ b/libs/web3/src/lib/web3-provider.tsx @@ -0,0 +1,19 @@ +import { Web3ReactProvider } from '@web3-react/core'; +import { Connectors } from './types'; + +interface Web3ProviderProps { + children: JSX.Element | JSX.Element[]; + connectors: Connectors; +} + +export const Web3Provider = ({ children, connectors }: Web3ProviderProps) => { + return ( + { + return [connector, hooks]; + })} + > + {children} + + ); +}; diff --git a/libs/web3/src/setup-tests.ts b/libs/web3/src/setup-tests.ts new file mode 100644 index 000000000..7b0828bfa --- /dev/null +++ b/libs/web3/src/setup-tests.ts @@ -0,0 +1 @@ +import '@testing-library/jest-dom'; diff --git a/libs/web3/tsconfig.json b/libs/web3/tsconfig.json new file mode 100644 index 000000000..4c089585e --- /dev/null +++ b/libs/web3/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "jsx": "react-jsx", + "allowJs": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/libs/web3/tsconfig.lib.json b/libs/web3/tsconfig.lib.json new file mode 100644 index 000000000..252904bb7 --- /dev/null +++ b/libs/web3/tsconfig.lib.json @@ -0,0 +1,22 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node"] + }, + "files": [ + "../../node_modules/@nrwl/react/typings/cssmodule.d.ts", + "../../node_modules/@nrwl/react/typings/image.d.ts" + ], + "exclude": [ + "**/*.spec.ts", + "**/*.test.ts", + "**/*.spec.tsx", + "**/*.test.tsx", + "**/*.spec.js", + "**/*.test.js", + "**/*.spec.jsx", + "**/*.test.jsx" + ], + "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] +} diff --git a/libs/web3/tsconfig.spec.json b/libs/web3/tsconfig.spec.json new file mode 100644 index 000000000..67f149c4c --- /dev/null +++ b/libs/web3/tsconfig.spec.json @@ -0,0 +1,19 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "**/*.test.ts", + "**/*.spec.ts", + "**/*.test.tsx", + "**/*.spec.tsx", + "**/*.test.js", + "**/*.spec.js", + "**/*.test.jsx", + "**/*.spec.jsx", + "**/*.d.ts" + ] +} diff --git a/package.json b/package.json index 8f0744025..1b268ddf0 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,10 @@ "@types/lodash": "^4.14.180", "@types/uuid": "^8.3.4", "@vegaprotocol/vegawallet-service-api-client": "^0.4.6", + "@walletconnect/ethereum-provider": "^1.7.5", + "@web3-react/core": "8.0.20-beta.0", + "@web3-react/metamask": "8.0.16-beta.0", + "@web3-react/walletconnect": "^8.0.23-beta.0", "ag-grid-community": "^27.0.1", "ag-grid-react": "^27.0.1", "apollo": "^2.33.9", diff --git a/tsconfig.base.json b/tsconfig.base.json index f7792cf38..55dd28414 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -27,7 +27,8 @@ "libs/tailwindcss-config/src/index.js" ], "@vegaprotocol/ui-toolkit": ["libs/ui-toolkit/src/index.ts"], - "@vegaprotocol/wallet": ["libs/wallet/src/index.ts"] + "@vegaprotocol/wallet": ["libs/wallet/src/index.ts"], + "@vegaprotocol/web3": ["libs/web3/src/index.ts"] } }, "exclude": ["node_modules", "tmp"] diff --git a/workspace.json b/workspace.json index 880fcc030..9ae846565 100644 --- a/workspace.json +++ b/workspace.json @@ -15,6 +15,7 @@ "trading": "apps/trading", "trading-e2e": "apps/trading-e2e", "ui-toolkit": "libs/ui-toolkit", - "wallet": "libs/wallet" + "wallet": "libs/wallet", + "web3": "libs/web3" } } diff --git a/yarn.lock b/yarn.lock index 7d5c3fae4..1821b6c12 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1718,6 +1718,31 @@ bech32 "1.1.4" ws "7.4.6" +"@ethersproject/providers@^5.6.0": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.1.tgz#9a05f00ecbac59565bf6907c8d2af8ac33303b48" + integrity sha512-w8Wx15nH+aVDvnoKCyI1f3x0B5idmk/bDJXMEUqCfdO8Eadd0QpDx9lDMTMmenhOmf9vufLJXjpSm24D3ZnVpg== + dependencies: + "@ethersproject/abstract-provider" "^5.6.0" + "@ethersproject/abstract-signer" "^5.6.0" + "@ethersproject/address" "^5.6.0" + "@ethersproject/basex" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/hash" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/networks" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.0" + "@ethersproject/rlp" "^5.6.0" + "@ethersproject/sha2" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + "@ethersproject/transactions" "^5.6.0" + "@ethersproject/web" "^5.6.0" + bech32 "1.1.4" + ws "7.4.6" + "@ethersproject/random@5.6.0", "@ethersproject/random@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.0.tgz#1505d1ab6a250e0ee92f436850fa3314b2cb5ae6" @@ -2162,6 +2187,31 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@json-rpc-tools/provider@^1.5.5": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/provider/-/provider-1.7.6.tgz#8a17c34c493fa892632e278fd9331104e8491ec6" + integrity sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA== + dependencies: + "@json-rpc-tools/utils" "^1.7.6" + axios "^0.21.0" + safe-json-utils "^1.1.1" + ws "^7.4.0" + +"@json-rpc-tools/types@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/types/-/types-1.7.6.tgz#5abd5fde01364a130c46093b501715bcce5bdc0e" + integrity sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ== + dependencies: + keyvaluestorage-interface "^1.0.0" + +"@json-rpc-tools/utils@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/utils/-/utils-1.7.6.tgz#67f04987dbaa2e7adb6adff1575367b75a9a9ba1" + integrity sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw== + dependencies: + "@json-rpc-tools/types" "^1.7.6" + "@pedrouid/environment" "^1.0.1" + "@mdx-js/loader@^1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-1.6.22.tgz#d9e8fe7f8185ff13c9c8639c048b123e30d322c4" @@ -2206,6 +2256,11 @@ resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== +"@metamask/detect-provider@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@metamask/detect-provider/-/detect-provider-1.2.0.tgz#3667a7531f2a682e3c3a43eaf3a1958bdb42a696" + integrity sha512-ocA76vt+8D0thgXZ7LxFPyqw3H7988qblgzddTDA6B8a/yU0uKV42QR/DhA+Jh11rJjxW0jKvwb5htA6krNZDQ== + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -3172,6 +3227,11 @@ node-addon-api "^3.2.1" node-gyp-build "^4.3.0" +"@pedrouid/environment@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@pedrouid/environment/-/environment-1.0.1.tgz#858f0f8a057340e0b250398b75ead77d6f4342ec" + integrity sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug== + "@phenomnomnominal/tsquery@4.1.1": version "4.1.1" resolved "https://registry.yarnpkg.com/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz#42971b83590e9d853d024ddb04a18085a36518df" @@ -5648,6 +5708,240 @@ url-parse "^1.4.3" whatwg-fetch "^3.0.0" +"@walletconnect/browser-utils@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/browser-utils/-/browser-utils-1.7.5.tgz#a12ff382310bfbb02509a69565dacf14aa744461" + integrity sha512-gm9ufi0n5cGBXoGWDtMVSqIJ0eXYW+ZFuTNVN0fm4oal26J7cPrOdFjzhv5zvx5fKztWQ21DNFZ+PRXBjXg04Q== + dependencies: + "@walletconnect/safe-json" "1.0.0" + "@walletconnect/types" "^1.7.5" + "@walletconnect/window-getters" "1.0.0" + "@walletconnect/window-metadata" "1.0.0" + detect-browser "5.2.0" + +"@walletconnect/client@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.7.5.tgz#7c3a1fc5a9f41022892c3c2b85be94afec49268e" + integrity sha512-Vh3h1kfhmJ4Jx//H0lmmfDc5Q2s+R73Nh5cetVN41QPRrAcqHE4lR2ZS8XxRCNBl4/gcHZJIZS9J2Ui4tTXBLA== + dependencies: + "@walletconnect/core" "^1.7.5" + "@walletconnect/iso-crypto" "^1.7.5" + "@walletconnect/types" "^1.7.5" + "@walletconnect/utils" "^1.7.5" + +"@walletconnect/core@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.7.5.tgz#623d19d4578b6195bb0f6e6313316d32fa4b2f10" + integrity sha512-c4B8s9fZ/Ah2p460Hxo4e9pwLQVYT2+dVYAfqaxVzfYjhAokDEtO55Bdm1hujtRjQVqwTvCljKxBB+LgMp3k8w== + dependencies: + "@walletconnect/socket-transport" "^1.7.5" + "@walletconnect/types" "^1.7.5" + "@walletconnect/utils" "^1.7.5" + +"@walletconnect/crypto@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.2.tgz#3fcc2b2cde6f529a19eadd883dc555cd0e861992" + integrity sha512-+OlNtwieUqVcOpFTvLBvH+9J9pntEqH5evpINHfVxff1XIgwV55PpbdvkHu6r9Ib4WQDOFiD8OeeXs1vHw7xKQ== + dependencies: + "@walletconnect/encoding" "^1.0.1" + "@walletconnect/environment" "^1.0.0" + "@walletconnect/randombytes" "^1.0.2" + aes-js "^3.1.2" + hash.js "^1.1.7" + +"@walletconnect/encoding@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/encoding/-/encoding-1.0.1.tgz#93c18ce9478c3d5283dbb88c41eb2864b575269a" + integrity sha512-8opL2rs6N6E3tJfsqwS82aZQDL3gmupWUgmvuZ3CGU7z/InZs3R9jkzH8wmYtpbq0sFK3WkJkQRZFFk4BkrmFA== + dependencies: + is-typedarray "1.0.0" + typedarray-to-buffer "3.1.5" + +"@walletconnect/environment@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.0.tgz#c4545869fa9c389ec88c364e1a5f8178e8ab5034" + integrity sha512-4BwqyWy6KpSvkocSaV7WR3BlZfrxLbJSLkg+j7Gl6pTDE+U55lLhJvQaMuDVazXYxcjBsG09k7UlH7cGiUI5vQ== + +"@walletconnect/ethereum-provider@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-1.7.5.tgz#2cc6e8759b9a4cf1ea400e3c5d779faf7846b92a" + integrity sha512-hEY7YhQSCcUccwuVgQvpL/FZB6ov07ad+FZ0NSsr8Xv54ysmgoaE8tdReVa8zrGK2LCuB6mtfSGx2E0bZ2H4Ng== + dependencies: + "@walletconnect/client" "^1.7.5" + "@walletconnect/jsonrpc-http-connection" "^1.0.0" + "@walletconnect/jsonrpc-provider" "^1.0.2" + "@walletconnect/signer-connection" "^1.7.5" + "@walletconnect/types" "^1.7.5" + "@walletconnect/utils" "^1.7.5" + eip1193-provider "1.0.1" + eventemitter3 "4.0.7" + +"@walletconnect/iso-crypto@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.7.5.tgz#12d624605c656c8eed31a9d073d85b73cd0be291" + integrity sha512-mJdRs2SqAPOLBBqLhU+ZnAh2c8TL2uDuL/ojV4aBzZ0ZHNT7X2zSOjAiixCb3vvH8GAt30OKmiRo3+ChI/9zvA== + dependencies: + "@walletconnect/crypto" "^1.0.2" + "@walletconnect/types" "^1.7.5" + "@walletconnect/utils" "^1.7.5" + +"@walletconnect/jsonrpc-http-connection@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.0.tgz#5bbdfbaf6d6519b3c08e492a6badb7460ab5ecd0" + integrity sha512-fmBTox7Zo9Tb8wzKpnOgYl5cYPu+2xXifNMDYMRGkWDAygXBzRzmfdhk7OowCkSXeh8aDhE5eFtMk+u8MOmntg== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.0" + "@walletconnect/safe-json" "^1.0.0" + cross-fetch "^3.1.4" + +"@walletconnect/jsonrpc-provider@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.2.tgz#283d7fc064ce81bf6d57678e1cf299cbd0b5505c" + integrity sha512-7sIjzg27I7noPRULYTV2QEWWNV3+d3f5T7ym8VTtCRoA1Xf+SoN9cZJotO0GCCk0jVcvN2BX3DCSq6WbcCi4Eg== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.0" + "@walletconnect/safe-json" "^1.0.0" + +"@walletconnect/jsonrpc-types@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.0.tgz#fa75ad5e8f106a2e33287b1e6833e22ed0225055" + integrity sha512-11QXNq5H1PKZk7bP8SxgmCw3HRaDuPOVE+wObqEvmhc7OWYUZqfuaaMb+OXGRSOHL3sbC+XHfdeCxFTMXSFyng== + dependencies: + keyvaluestorage-interface "^1.0.0" + +"@walletconnect/jsonrpc-utils@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.0.tgz#1a2f668d606e8f0b6e7d8fdebae86001bd037a3f" + integrity sha512-qUHbKUK6sHeHn67qtHZoLoYk5hS6x1arTPjKDRkY93/6Fx+ZmNIpdm1owX3l6aYueyegJ7mz43FpvYHUqJ8xcw== + dependencies: + "@walletconnect/environment" "^1.0.0" + "@walletconnect/jsonrpc-types" "^1.0.0" + +"@walletconnect/mobile-registry@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz#502cf8ab87330841d794819081e748ebdef7aee5" + integrity sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw== + +"@walletconnect/qrcode-modal@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.7.5.tgz#d7b42b4109c20d00c28e5a617992db6e8d79471e" + integrity sha512-LVq35jc3VMGq1EMcGCObQtEiercMDmUHDnc7A3AmUo0LoAbaPo6c8Hq0zqy2+JhtLmxUhU3ktf+szmCoiUDTUQ== + dependencies: + "@walletconnect/browser-utils" "^1.7.5" + "@walletconnect/mobile-registry" "^1.4.0" + "@walletconnect/types" "^1.7.5" + copy-to-clipboard "^3.3.1" + preact "10.4.1" + qrcode "1.4.4" + +"@walletconnect/randombytes@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.0.2.tgz#95c644251a15e6675f58fbffc9513a01486da49c" + integrity sha512-ivgOtAyqQnN0rLQmOFPemsgYGysd/ooLfaDA/ACQ3cyqlca56t3rZc7pXfqJOIETx/wSyoF5XbwL+BqYodw27A== + dependencies: + "@walletconnect/encoding" "^1.0.1" + "@walletconnect/environment" "^1.0.0" + randombytes "^2.1.0" + +"@walletconnect/safe-json@1.0.0", "@walletconnect/safe-json@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.0.tgz#12eeb11d43795199c045fafde97e3c91646683b2" + integrity sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg== + +"@walletconnect/signer-connection@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/signer-connection/-/signer-connection-1.7.5.tgz#ad37b34534445c7c3870f6fb33d2188f52054bd9" + integrity sha512-O7WO1Yqu8eBDfUJYeEkQDV2LDvj5JvAltTRn7El0IYOjK/T979c4NvyBpjHv9rp0eKX6/60foynj4D/h9hA4ew== + dependencies: + "@walletconnect/client" "^1.7.5" + "@walletconnect/jsonrpc-types" "^1.0.0" + "@walletconnect/jsonrpc-utils" "^1.0.0" + "@walletconnect/qrcode-modal" "^1.7.5" + "@walletconnect/types" "^1.7.5" + eventemitter3 "4.0.7" + +"@walletconnect/socket-transport@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.7.5.tgz#5416886403c7bea526f4ced6452fd1056c0a1354" + integrity sha512-4TYCxrNWb4f5a1NGsALXidr+/6dOiqgVfUQJ4fdP6R7ijL+7jtdiktguU9FIDq5wFXRE+ZdpCpwSAfOt60q/mQ== + dependencies: + "@walletconnect/types" "^1.7.5" + "@walletconnect/utils" "^1.7.5" + ws "7.5.3" + +"@walletconnect/types@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.7.5.tgz#145d7dd9df4415178995df6d4facef41c371ab6f" + integrity sha512-0HvZzxD93et4DdrYgAvclI1BqclkZS7iPWRtbGg3r+PQhRPbOkNypzBy6XH6wflbmr+WBGdmyJvynHsdhcCqUA== + +"@walletconnect/utils@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.7.5.tgz#762bf7f384846772416e44b636ce9792d1d7db5f" + integrity sha512-U954rIIA/g/Cmdqy+n3hMY1DDMmXxGs8w/QmrK9b/H5nkQ3e4QicOyynq5g/JTTesN5HZdDTFiyX9r0GSKa+iA== + dependencies: + "@walletconnect/browser-utils" "^1.7.5" + "@walletconnect/encoding" "^1.0.1" + "@walletconnect/jsonrpc-utils" "^1.0.0" + "@walletconnect/types" "^1.7.5" + bn.js "4.11.8" + js-sha3 "0.8.0" + query-string "6.13.5" + +"@walletconnect/window-getters@1.0.0", "@walletconnect/window-getters@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.0.tgz#1053224f77e725dfd611c83931b5f6c98c32bfc8" + integrity sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA== + +"@walletconnect/window-metadata@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz#93b1cc685e6b9b202f29c26be550fde97800c4e5" + integrity sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA== + dependencies: + "@walletconnect/window-getters" "^1.0.0" + +"@web3-react/core@8.0.20-beta.0": + version "8.0.20-beta.0" + resolved "https://registry.yarnpkg.com/@web3-react/core/-/core-8.0.20-beta.0.tgz#a98e751955029c2deca22acd5fe300f527bae142" + integrity sha512-VMsCaoCC4c/cCOhCnQkHBo7VRMnLFokh8Gx+ju+WQz3b0c3V/qywcEUNrJoNhDryc863oNYjQti7cb5hhlJPVQ== + dependencies: + "@web3-react/store" "^8.0.14-beta.0" + "@web3-react/types" "^8.0.10-beta.0" + zustand "^4.0.0-beta.2" + optionalDependencies: + "@ethersproject/providers" "^5.6.0" + +"@web3-react/metamask@8.0.16-beta.0": + version "8.0.16-beta.0" + resolved "https://registry.yarnpkg.com/@web3-react/metamask/-/metamask-8.0.16-beta.0.tgz#66ec1131a0d09774ebdb9e9a98aba8c70e39ae74" + integrity sha512-YuI2UY7ka+VJt8m7K3SmpXouyORZIIcNyAERc50ipZPeWro9j/a0qDavFZ0OnE8nhGrgBA+kJq+hMTvZrggCZQ== + dependencies: + "@metamask/detect-provider" "^1.2.0" + "@web3-react/types" "^8.0.10-beta.0" + +"@web3-react/store@^8.0.14-beta.0": + version "8.0.14-beta.0" + resolved "https://registry.yarnpkg.com/@web3-react/store/-/store-8.0.14-beta.0.tgz#302a5275f50323d63cd3a9f075414e5b63164f55" + integrity sha512-Z6ja+ilt7NWeL4wMcDLzD15255i0hcDySzvMwggqkEYs+hY3+w/R3dlR3FZDApr+MsxDq3wDukaQVUdKYA+Oqw== + dependencies: + "@ethersproject/address" "^5.6.0" + "@web3-react/types" "^8.0.10-beta.0" + zustand "^4.0.0-beta.2" + +"@web3-react/types@^8.0.10-beta.0": + version "8.0.10-beta.0" + resolved "https://registry.yarnpkg.com/@web3-react/types/-/types-8.0.10-beta.0.tgz#8ed9f1b5e40dcbe2a08be5ce9dd9e3ef2b2a6908" + integrity sha512-HitBmoKHyLDeRrJgtkImPddb8nzsb/FroAdiaYA15gAwAE3Y/p7Nd/TN8IANlgKcMkuyGyUjPD27fE7Mvw9rEA== + dependencies: + zustand "^4.0.0-beta.2" + +"@web3-react/walletconnect@^8.0.23-beta.0": + version "8.0.23-beta.0" + resolved "https://registry.yarnpkg.com/@web3-react/walletconnect/-/walletconnect-8.0.23-beta.0.tgz#ce6debb7383508d95ae828627d8a7f9286dbe8ed" + integrity sha512-MUq11Pmp9Y4Y+Cey5HrWNJM0gA76u02CzgsL4/iF1ph6t0cuqZj0C6guwwkTMF9apxUTlMpWgpywRQDbxdqDoA== + dependencies: + "@web3-react/types" "^8.0.10-beta.0" + eventemitter3 "^4.0.7" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -6044,6 +6338,11 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= +aes-js@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + ag-grid-community@^27.0.1: version "27.0.1" resolved "https://registry.yarnpkg.com/ag-grid-community/-/ag-grid-community-27.0.1.tgz#7ce5c000d321ba2c22447837e793b1d8366f4cdb" @@ -6836,7 +7135,7 @@ axe-core@^4.2.0, axe-core@^4.3.5: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== -axios@^0.21.1: +axios@^0.21.0, axios@^0.21.1: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== @@ -7206,6 +7505,11 @@ bluebird@^3.3.5, bluebird@^3.4.1, bluebird@^3.5.5, bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +bn.js@4.11.8: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" @@ -7533,12 +7837,30 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= -buffer-from@^1.0.0: +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0, buffer-from@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== @@ -7578,7 +7900,7 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.6.0: +buffer@^5.4.3, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -8261,6 +8583,15 @@ cli-ux@^5.2.1: supports-hyperlinks "^2.1.0" tslib "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -8768,6 +9099,13 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +cross-fetch@^3.1.4: + 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" + cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -9413,6 +9751,11 @@ detab@2.0.4: dependencies: repeat-string "^1.5.4" +detect-browser@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.2.0.tgz#c9cd5afa96a6a19fda0bbe9e9be48a6b6e1e9c97" + integrity sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -9474,6 +9817,11 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dijkstrajs@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz#2e48c0d3b825462afe75ab4ad5e829c8ece36257" + integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg== + dir-glob@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" @@ -9689,6 +10037,13 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +eip1193-provider@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/eip1193-provider/-/eip1193-provider-1.0.1.tgz#420d29cf4f6c443e3f32e718fb16fafb250637c3" + integrity sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g== + dependencies: + "@json-rpc-tools/provider" "^1.5.5" + ejs@^3.1.5: version "3.1.6" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" @@ -9731,6 +10086,11 @@ emittery@^0.8.1: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -10412,7 +10772,7 @@ eventemitter2@^6.4.3: resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw== -eventemitter3@^4.0.0, eventemitter3@^4.0.4: +eventemitter3@4.0.7, eventemitter3@^4.0.0, eventemitter3@^4.0.4, eventemitter3@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -11670,7 +12030,7 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" -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== @@ -12729,7 +13089,7 @@ is-typed-array@^1.1.3, is-typed-array@^1.1.7: foreach "^2.0.5" has-tostringtag "^1.0.0" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -12783,7 +13143,7 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@^2.0.5: +isarray@^2.0.1, isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== @@ -13614,6 +13974,11 @@ junk@^3.1.0: resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== +keyvaluestorage-interface@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" + integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -14783,7 +15148,7 @@ node-fetch@2.6.1: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-fetch@^2.6.1: +node-fetch@2.6.7, node-fetch@^2.6.1: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -15667,6 +16032,11 @@ pluralize@^8.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== +pngjs@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + pnp-webpack-plugin@1.6.4: version "1.6.4" resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" @@ -16063,6 +16433,11 @@ postcss@^8.2.13, postcss@^8.2.15, postcss@^8.3.5, postcss@^8.4.6, postcss@^8.4.7 picocolors "^1.0.0" source-map-js "^1.0.2" +preact@10.4.1: + version "10.4.1" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.4.1.tgz#9b3ba020547673a231c6cf16f0fbaef0e8863431" + integrity sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -16278,6 +16653,19 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= +qrcode@1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83" + integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q== + dependencies: + buffer "^5.4.3" + buffer-alloc "^1.2.0" + buffer-from "^1.1.1" + dijkstrajs "^1.0.1" + isarray "^2.0.1" + pngjs "^3.3.0" + yargs "^13.2.4" + qs@6.9.7: version "6.9.7" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" @@ -16295,6 +16683,15 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== +query-string@6.13.5: + version "6.13.5" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.5.tgz#99e95e2fb7021db90a6f373f990c0c814b3812d8" + integrity sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q== + dependencies: + decode-uri-component "^0.2.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + query-string@^6.13.8: version "6.14.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" @@ -17236,6 +17633,11 @@ safe-identifier@^0.4.2: resolved "https://registry.yarnpkg.com/safe-identifier/-/safe-identifier-0.4.2.tgz#cf6bfca31c2897c588092d1750d30ef501d59fcb" integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== +safe-json-utils@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.1.1.tgz#0e883874467d95ab914c3f511096b89bfb3e63b1" + integrity sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -18166,6 +18568,15 @@ string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + string-width@^5.0.0: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" @@ -18237,7 +18648,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.2.0: +strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -19108,7 +19519,7 @@ typed-assert@^1.0.8: resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.9.tgz#8af9d4f93432c4970ec717e3006f33f135b06213" integrity sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg== -typedarray-to-buffer@^3.1.5: +typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== @@ -19452,6 +19863,11 @@ use-subscription@1.5.1: dependencies: object-assign "^4.1.1" +use-sync-external-store@1.0.0-rc.1-next-629036a9c-20220224: + version "1.0.0-rc.1-next-629036a9c-20220224" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.0.0-rc.1-next-629036a9c-20220224.tgz#40cf472454789403c2de6c8471d177459d184dc1" + integrity sha512-IhuMl0apVVYsT3XPfV+0nuwf0T6+3d4YxQXV4tDRsGpSQcYVG4zoWwfX4zdtouUfuelYg4t2SEmFifIMrxPfIw== + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -20145,6 +20561,15 @@ wrap-ansi@^4.0.0: string-width "^2.1.1" strip-ansi "^4.0.0" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -20183,7 +20608,12 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^7.4.6: +ws@7.5.3: + version "7.5.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" + integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== + +ws@^7.4.0, ws@^7.4.6: version "7.5.7" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== @@ -20243,6 +20673,14 @@ yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.7: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" @@ -20268,6 +20706,22 @@ yargs@15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^13.2.4: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" @@ -20324,6 +20778,13 @@ zen-observable@0.8.15, zen-observable@^0.8.0: resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== +zustand@^4.0.0-beta.2: + version "4.0.0-beta.2" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.0.0-beta.2.tgz#27fdc32b62225cc18976c0cf8866ecee9a9f4a98" + integrity sha512-aJ5ypnOwPIa/uSjdZv/oHChTWPplpFOG/hvWwzkR5ahFiPI5R6ifyObf8Fz1Vi6Obz2wY1N32fT2pNrpT2hzPw== + dependencies: + use-sync-external-store "1.0.0-rc.1-next-629036a9c-20220224" + zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"