diff --git a/.i18n-codegen.json b/.i18n-codegen.json index b42e205a2468..a4cde9461702 100644 --- a/.i18n-codegen.json +++ b/.i18n-codegen.json @@ -133,6 +133,18 @@ "trans": "Translate", "sourceMap": "inline" } + }, + { + "input": "./packages/plugins/Solana/src/locales/en-US.json", + "output": "./packages/plugins/Solana/src/locales/i18n_generated", + "parser": "i18next", + "generator": { + "type": "i18next/react-hooks", + "hooks": "useI18N", + "namespace": "com.maskbook.solana", + "trans": "Translate", + "sourceMap": "inline" + } } ] } diff --git a/cspell.json b/cspell.json index d22fffdca815..6aecfe0db6ec 100644 --- a/cspell.json +++ b/cspell.json @@ -117,6 +117,7 @@ "Kitts", "kred", "labelledby", + "lamports", "languagedetector", "lemy", "Leste", @@ -200,8 +201,10 @@ "secp", "Serializers", "shink", + "signup", "Sint", "solana", + "sollet", "steelblue", "steganographic", "steganography", @@ -309,6 +312,7 @@ "maskwallet", "mathwallet", "metadate", + "metaplex", "metaswap", "METASWAP", "Misaka", diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index 2a8a955e116f..7a66c76765f8 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -38,8 +38,8 @@ "json-stable-stringify": "^1.0.1", "react-avatar-editor": "^12.0.0", "react-hook-form": "^7.22.5", - "react-router": "^6.0.0-beta.0", - "react-router-dom": "^6.0.0-beta.0", + "react-router": "6.0.0-beta.0", + "react-router-dom": "6.0.0-beta.0", "react-use": "^17.3.1", "unstated-next": "^1.1.0", "urlcat": "^2.0.4", diff --git a/packages/dashboard/src/pages/Wallets/components/Assets/index.tsx b/packages/dashboard/src/pages/Wallets/components/Assets/index.tsx index d4f9c030c7bb..0bc01d6f38a7 100644 --- a/packages/dashboard/src/pages/Wallets/components/Assets/index.tsx +++ b/packages/dashboard/src/pages/Wallets/components/Assets/index.tsx @@ -66,6 +66,8 @@ export const Assets = memo(({ network }) => { setTab(AssetTab.Token) }, [pluginId]) + const showCollectibles = [NetworkPluginID.PLUGIN_EVM, NetworkPluginID.PLUGIN_SOLANA].includes(pluginId) + return ( <> @@ -73,7 +75,7 @@ export const Assets = memo(({ network }) => { {assetTabs - .filter((x) => pluginId === NetworkPluginID.PLUGIN_EVM || x === AssetTab.Token) + .filter((x) => showCollectibles || x === AssetTab.Token) .map((key) => ( ))} diff --git a/packages/dashboard/src/pages/Wallets/components/Balance/index.tsx b/packages/dashboard/src/pages/Wallets/components/Balance/index.tsx index 60b1be7fc474..cc36adc14209 100644 --- a/packages/dashboard/src/pages/Wallets/components/Balance/index.tsx +++ b/packages/dashboard/src/pages/Wallets/components/Balance/index.tsx @@ -108,7 +108,7 @@ export const Balance = memo( {Number.isNaN(balance) - ? '-' + ? '$0' : balance.toLocaleString('en', { style: 'currency', currency: 'USD', diff --git a/packages/dashboard/src/pages/Wallets/components/CollectibleList/index.tsx b/packages/dashboard/src/pages/Wallets/components/CollectibleList/index.tsx index fd5d87fce9bc..0441a890108a 100644 --- a/packages/dashboard/src/pages/Wallets/components/CollectibleList/index.tsx +++ b/packages/dashboard/src/pages/Wallets/components/CollectibleList/index.tsx @@ -1,6 +1,7 @@ import { Dispatch, memo, SetStateAction, useCallback, useEffect, useRef, useState } from 'react' import { Box, Stack, TablePagination } from '@mui/material' import { makeStyles } from '@masknet/theme' +import { EMPTY_LIST } from '@masknet/web3-shared-evm' import { LoadingPlaceholder } from '../../../../components/LoadingPlaceholder' import { EmptyPlaceholder } from '../EmptyPlaceholder' import { CollectibleCard } from '../CollectibleCard' @@ -44,25 +45,25 @@ export const CollectibleList = memo(({ selectedNetwork }) const account = useAccount() const { Asset } = useWeb3PluginState() const network = useNetworkDescriptor() - const [loadingSize, setLoadingSize] = useState() - const [loadingCollectible, setLoadingCollectible] = useState(true) + const [loadingSize, setLoadingSize] = useState(0) const [renderData, setRenderData] = useState([]) const { - value = { data: [], hasNextPage: false }, + value = { data: EMPTY_LIST, hasNextPage: false }, error: collectiblesError, + loading: isQuerying, retry, } = useAsyncRetry( async () => - Asset?.getNonFungibleAssets?.(account, { page: page, size: 20 }, undefined, selectedNetwork ?? undefined), - [account, Asset, network, selectedNetwork], + Asset?.getNonFungibleAssets?.(account, { page: page, size: 20 }, undefined, selectedNetwork || undefined), + [account, Asset?.getNonFungibleAssets, network, selectedNetwork], ) useEffect(() => { if (!loadingSize) return const render = value.data.slice(page * loadingSize, (page + 1) * loadingSize) setRenderData(render) - }, [value, loadingSize, page]) + }, [value.data, loadingSize, page]) const onSend = useCallback( (detail: Web3Plugin.NonFungibleToken) => @@ -81,22 +82,20 @@ export const CollectibleList = memo(({ selectedNetwork }) if (!info.done) { retry() } - setLoadingCollectible(false) }) }, [retry]) - const hasNextPage = (page + 1) * (loadingSize ?? 0) < value.data.length + const hasNextPage = (page + 1) * loadingSize < value.data.length + const isLoading = renderData.length === 0 && isQuerying return ( ( return ( - <> - {isLoading ? ( - - ) : isEmpty ? ( - - ) : ( - -
- {dataSource.map((x) => ( -
- onSend(x as unknown as any)} - /> -
- ))} -
-
- )} - + {isLoading ? ( + + ) : isEmpty ? ( + + ) : ( + +
+ {dataSource.map((x) => ( +
+ onSend(x as unknown as any)} + /> +
+ ))} +
+
+ )} {showPagination ? ( (({ asset, onSend, address={asset.token.address} name={asset.token.name} chainId={asset.token.chainId} - logoURI={asset.token.logoURI} + logoURI={asset.logoURI || asset.token.logoURI} AvatarProps={{ sx: { width: 36, height: 36 } }} /> diff --git a/packages/injected-script/main/GlobalVariableBridge/index.ts b/packages/injected-script/main/GlobalVariableBridge/index.ts index d28425e49282..03894ebcb28c 100644 --- a/packages/injected-script/main/GlobalVariableBridge/index.ts +++ b/packages/injected-script/main/GlobalVariableBridge/index.ts @@ -27,6 +27,10 @@ export function callRequest(path: string, id: number, request: unknown) { handlePromise(id, () => read(path).request(request)) } +export function execute(path: string, id: number) { + handlePromise(id, () => read(path)()) +} + export function bindEvent(path: string, bridgeEvent: keyof InternalEvents, event: string) { if (hasListened[event]) return hasListened[event] = true diff --git a/packages/injected-script/main/communicate.ts b/packages/injected-script/main/communicate.ts index 2687aba3c159..44489e68e40a 100644 --- a/packages/injected-script/main/communicate.ts +++ b/packages/injected-script/main/communicate.ts @@ -4,7 +4,7 @@ import { getCustomEventDetail, apply, warn } from './intrinsic' import { dispatchInput } from './EventListenerPatch/dispatchInput' import { dispatchPaste } from './EventListenerPatch/dispatchPaste' import { dispatchPasteImage } from './EventListenerPatch/dispatchPasteImage' -import { callRequest, access, bindEvent, until } from './GlobalVariableBridge' +import { callRequest, access, bindEvent, execute, until } from './GlobalVariableBridge' import { hookInputUploadOnce } from './EventListenerPatch/hookInputUploadOnce' document.addEventListener(CustomEventId, (e) => { @@ -30,6 +30,8 @@ document.addEventListener(CustomEventId, (e) => { // solana case 'solanaBridgeRequestListen': return apply(bindEvent, null, ['solana', 'solanaBridgeOnEvent', ...r[1]]) + case 'solanaBridgeExecute': + return apply(execute, null, [...r[1]]) case 'solanaBridgeSendRequest': return apply(callRequest, null, ['solana', ...r[1]]) case 'solanaBridgePrimitiveAccess': diff --git a/packages/injected-script/sdk/bridgedSolana.ts b/packages/injected-script/sdk/bridgedSolana.ts index 7443c7087fd6..3cbcd3400051 100644 --- a/packages/injected-script/sdk/bridgedSolana.ts +++ b/packages/injected-script/sdk/bridgedSolana.ts @@ -29,6 +29,9 @@ function send(payload: JsonRpcPayload, callback: (error: Error | null, result?: let isConnected = false /** Interact with the current solana provider */ export const bridgedSolanaProvider: BridgedSolanaProvider = { + connect() { + return createPromise((id) => sendEvent('solanaBridgeExecute', 'solana.connect', id)) + }, request, send, sendAsync: send, @@ -65,6 +68,8 @@ async function watchConnectStatus() { watchConnectStatus() export interface BridgedSolanaProvider { + // _bn: result of serialization + connect(): Promise<{ publicKey: { _bn: string } }> /** Wait for window.solana object appears. */ untilAvailable(): Promise /** Send JSON RPC to the solana provider. */ diff --git a/packages/injected-script/sdk/index.ts b/packages/injected-script/sdk/index.ts index 94cefc4d98c6..83a3e8a655d7 100644 --- a/packages/injected-script/sdk/index.ts +++ b/packages/injected-script/sdk/index.ts @@ -6,6 +6,7 @@ import { sendEvent, rejectPromise, resolvePromise } from './utils' export { bridgedEthereumProvider } from './bridgedEthereum' export { bridgedCoin98Provider } from './bridgedCoin98' +export { bridgedSolanaProvider } from './bridgedSolana' export function pasteText(text: string) { sendEvent('paste', text) @@ -39,7 +40,6 @@ document.addEventListener(CustomEventId, (e) => { return onCoin98Event(...r[1]) case 'solanaBridgeOnEvent': return onSolanaEvent(...r[1]) - case 'ethBridgeSendRequest': case 'ethBridgePrimitiveAccess': case 'ethBridgeRequestListen': @@ -49,6 +49,7 @@ document.addEventListener(CustomEventId, (e) => { case 'solanaBridgeSendRequest': case 'solanaBridgePrimitiveAccess': case 'solanaBridgeRequestListen': + case 'solanaBridgeExecute': case 'input': case 'paste': case 'pasteImage': diff --git a/packages/injected-script/shared/index.ts b/packages/injected-script/shared/index.ts index 70c5f45e5cd2..bc49b4ef10b4 100644 --- a/packages/injected-script/shared/index.ts +++ b/packages/injected-script/shared/index.ts @@ -46,6 +46,8 @@ export interface InternalEvents { //#endregion //#region Solana inpage provider bridge + /** Request the bridge to call function. */ + solanaBridgeExecute: [path: string, req_id: number] /** Request the bridge to listen on an event. */ solanaBridgeRequestListen: [eventName: string] /** When a event happened. */ diff --git a/packages/mask/.webpack/config.ts b/packages/mask/.webpack/config.ts index fe5dc496fde0..83a6c573aeaa 100644 --- a/packages/mask/.webpack/config.ts +++ b/packages/mask/.webpack/config.ts @@ -81,6 +81,7 @@ export function createConfiguration(rawFlags: BuildFlags): Configuration { '@masknet/plugin-flow': join(__dirname, '../../plugins/Flow/src/'), '@masknet/plugin-rss3': join(__dirname, '../../plugins/RSS3/src/'), '@masknet/plugin-dao': join(__dirname, '../../plugins/DAO/src/'), + '@masknet/plugin-solana': join(__dirname, '../../plugins/Solana/src/'), '@masknet/plugin-wallet': join(__dirname, '../../plugins/Wallet/src/'), '@masknet/plugin-file-service': join(__dirname, '../../plugins/FileService/src/'), '@masknet/external-plugin-previewer': join(__dirname, '../../external-plugin-previewer/src/'), diff --git a/packages/mask/package.json b/packages/mask/package.json index abafe44a6898..1f8eb73348ed 100644 --- a/packages/mask/package.json +++ b/packages/mask/package.json @@ -25,6 +25,7 @@ "@masknet/plugin-rss3": "workspace:*", "@masknet/plugin-dao": "workspace:*", "@masknet/plugin-debugger": "workspace:*", + "@masknet/plugin-solana": "workspace:*", "@masknet/plugin-infra": "workspace:*", "@masknet/plugin-wallet": "workspace:*", "@masknet/public-api": "workspace:*", diff --git a/packages/mask/src/components/shared/WalletStatusBox.tsx b/packages/mask/src/components/shared/WalletStatusBox.tsx index a338887c8f70..509c157cb9ad 100644 --- a/packages/mask/src/components/shared/WalletStatusBox.tsx +++ b/packages/mask/src/components/shared/WalletStatusBox.tsx @@ -187,7 +187,7 @@ export function WalletStatusBox(props: WalletStatusBox) { )}
- + ({ [NetworkPluginID.PLUGIN_EVM]: pluginStateEVM, [NetworkPluginID.PLUGIN_FLOW]: pluginStateFlow, + [NetworkPluginID.PLUGIN_SOLANA]: pluginStateSolana, }), - [pluginStateEVM, pluginStateFlow], + [pluginStateEVM, pluginStateFlow, pluginStateSolana], ) } diff --git a/packages/plugin-infra/src/web3/useNetworkDescriptor.ts b/packages/plugin-infra/src/web3/useNetworkDescriptor.ts index 327bfc8ce29d..5f906dc28ba2 100644 --- a/packages/plugin-infra/src/web3/useNetworkDescriptor.ts +++ b/packages/plugin-infra/src/web3/useNetworkDescriptor.ts @@ -8,9 +8,10 @@ export function useNetworkDescriptor( expectedPluginID?: NetworkPluginID, ) { const pluginID = usePluginIDContext() - const networkType = useNetworkType(expectedPluginID ?? pluginID) + const pid = expectedPluginID ?? pluginID + const networkType = useNetworkType(pid) - return getPluginDefine(expectedPluginID ?? pluginID)?.declareWeb3Networks?.find((x) => + return getPluginDefine(pid)?.declareWeb3Networks?.find((x) => [x.chainId, x.type, x.ID].includes(expectedChainIdOrNetworkTypeOrID ?? networkType ?? ''), ) } diff --git a/packages/plugins/Solana/package.json b/packages/plugins/Solana/package.json new file mode 100644 index 000000000000..f9368df2ea69 --- /dev/null +++ b/packages/plugins/Solana/package.json @@ -0,0 +1,27 @@ +{ + "name": "@masknet/plugin-solana", + "private": true, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "dependencies": { + "@masknet/icons": "workspace:*", + "@masknet/injected-script": "workspace:*", + "@masknet/plugin-infra": "workspace:*", + "@masknet/shared": "workspace:*", + "@masknet/shared-base": "workspace:*", + "@masknet/theme": "workspace:*", + "@masknet/web3-providers": "workspace:*", + "@masknet/web3-shared-base": "workspace:*", + "@masknet/web3-shared-solana": "workspace:*", + "@metaplex-foundation/mpl-token-metadata": "^0.0.2", + "@metaplex/js": "^4.11.2", + "@solana/spl-token": "^0.1.8", + "@solana/spl-token-registry": "^0.2.1301", + "@solana/web3.js": "^1.30.2", + "bignumber.js": "^9.0.1", + "bn.js": "^4.12.0", + "bs58": "^4.0.1", + "buffer": "^6.0.3", + "react-use": "^17.3.1" + } +} diff --git a/packages/plugins/Solana/src/UI/Dashboard/index.tsx b/packages/plugins/Solana/src/UI/Dashboard/index.tsx new file mode 100644 index 000000000000..d8d1fdbfa573 --- /dev/null +++ b/packages/plugins/Solana/src/UI/Dashboard/index.tsx @@ -0,0 +1,16 @@ +import type { Plugin } from '@masknet/plugin-infra' +import { base } from '../../base' +import { Web3UI } from '../Web3UI' +import { createWeb3State } from '../Web3State' +import { setupStorage, StorageDefaultValue } from '../../storage' + +const sns: Plugin.Dashboard.Definition = { + ...base, + init(signal, context) { + setupStorage(context.createKVStorage('memory', StorageDefaultValue)) + sns.Web3State = createWeb3State(signal) + }, + Web3UI, +} + +export default sns diff --git a/packages/plugins/Solana/src/UI/SNSAdaptor/index.tsx b/packages/plugins/Solana/src/UI/SNSAdaptor/index.tsx new file mode 100644 index 000000000000..c209a46482c9 --- /dev/null +++ b/packages/plugins/Solana/src/UI/SNSAdaptor/index.tsx @@ -0,0 +1,16 @@ +import type { Plugin } from '@masknet/plugin-infra' +import { base } from '../../base' +import { Web3UI } from '../Web3UI' +import { createWeb3State } from '../Web3State' +import { setupStorage, StorageDefaultValue } from '../../storage' + +const sns: Plugin.SNSAdaptor.Definition = { + ...base, + init(signal, context) { + setupStorage(context.createKVStorage('memory', StorageDefaultValue)) + sns.Web3State = createWeb3State(signal) + }, + Web3UI, +} + +export default sns diff --git a/packages/plugins/Solana/src/UI/Web3State/index.ts b/packages/plugins/Solana/src/UI/Web3State/index.ts new file mode 100644 index 000000000000..92ea8098cbb0 --- /dev/null +++ b/packages/plugins/Solana/src/UI/Web3State/index.ts @@ -0,0 +1,62 @@ +import type { Web3Plugin } from '@masknet/plugin-infra' +import { createConstantSubscription, mapSubscription } from '@masknet/shared-base' +import { + ChainId, + NetworkType, + ProviderType, + resolveAddressLinkOnExplorer, + resolveBlockLinkOnExplorer, + resolveTransactionLinkOnExplorer, +} from '@masknet/web3-shared-solana' +import BigNumber from 'bignumber.js' +import { getFungibleAssets, getNonFungibleAssets } from '../../apis' +import { formatAddress } from '../../helpers' +import { getStorage, StorageDefaultValue } from '../../storage' + +function createSubscriptionFromPublicKey(getter: (value: typeof StorageDefaultValue.publicKey) => T) { + return mapSubscription(getStorage().publicKey.subscription, getter) +} + +export function createWeb3State(signal: AbortSignal): Web3Plugin.ObjectCapabilities.Capabilities { + const chainId = ChainId.Mainnet + + return { + Shared: { + allowTestnet: createConstantSubscription(false), + account: createSubscriptionFromPublicKey((publicKey) => { + return publicKey ?? '' + }), + wallets: createSubscriptionFromPublicKey((publicKey): Web3Plugin.Wallet[] => { + if (!publicKey) return [] + return [ + { + name: 'Solana', + address: publicKey, + hasDerivationPath: false, + hasStoredKeyInfo: false, + }, + ] + }), + chainId: createConstantSubscription(chainId), + networkType: createConstantSubscription(NetworkType.Solana), + providerType: createSubscriptionFromPublicKey((publicKey) => { + return publicKey ? ProviderType.Phantom : undefined + }), + }, + Asset: { + getFungibleAssets, + getNonFungibleAssets, + }, + Utils: { + formatAddress, + formatBalance: (value) => new BigNumber(value).toFixed(), + formatCurrency: (value) => new BigNumber(value).toFixed(), + + isChainIdValid: () => true, + + resolveTransactionLink: resolveTransactionLinkOnExplorer, + resolveAddressLink: resolveAddressLinkOnExplorer, + resolveBlockLink: resolveBlockLinkOnExplorer, + }, + } +} diff --git a/packages/plugins/Solana/src/UI/Web3UI/index.tsx b/packages/plugins/Solana/src/UI/Web3UI/index.tsx new file mode 100644 index 000000000000..017a04ffe144 --- /dev/null +++ b/packages/plugins/Solana/src/UI/Web3UI/index.tsx @@ -0,0 +1,8 @@ +import type { Web3Plugin } from '@masknet/plugin-infra' +import { ProviderIconClickBait } from '../components/ProviderIconClickBait' + +export const Web3UI: Web3Plugin.UI.UI = { + SelectProviderDialog: { + ProviderIconClickBait, + }, +} diff --git a/packages/plugins/Solana/src/UI/components/ProviderIconClickBait.tsx b/packages/plugins/Solana/src/UI/components/ProviderIconClickBait.tsx new file mode 100644 index 000000000000..f3a99a4b94fe --- /dev/null +++ b/packages/plugins/Solana/src/UI/components/ProviderIconClickBait.tsx @@ -0,0 +1,36 @@ +import { bridgedSolanaProvider } from '@masknet/injected-script' +import type { Web3Plugin } from '@masknet/plugin-infra' +import { cloneElement, isValidElement, useCallback } from 'react' +import { getStorage } from '../../storage' +import { hexToBase58 } from '../../utils' + +export function ProviderIconClickBait({ + network, + provider, + children, + onSubmit, + onClick, +}: Web3Plugin.UI.ProviderIconClickBaitProps) { + const onLogIn = useCallback(async () => { + onClick?.(network, provider) + const rsp = await bridgedSolanaProvider.connect() + if (rsp?.publicKey) { + const base58Key = hexToBase58(rsp.publicKey._bn) + const storage = getStorage() + await storage.publicKey.setValue(base58Key) + await storage.network.setValue(network.chainId) + onSubmit?.(network, provider) + } + }, [provider, onClick, onSubmit]) + + return ( + <> + {isValidElement(children) + ? cloneElement(children, { + ...children.props, + onClick: onLogIn, + }) + : children} + + ) +} diff --git a/packages/plugins/Solana/src/Worker/index.ts b/packages/plugins/Solana/src/Worker/index.ts new file mode 100644 index 000000000000..824d930b57e1 --- /dev/null +++ b/packages/plugins/Solana/src/Worker/index.ts @@ -0,0 +1,9 @@ +import type { Plugin } from '@masknet/plugin-infra' +import { base } from '../base' +import '../messages' + +const worker: Plugin.Worker.Definition = { + ...base, + init(signal) {}, +} +export default worker diff --git a/packages/plugins/Solana/src/apis/getFungibleAssets.ts b/packages/plugins/Solana/src/apis/getFungibleAssets.ts new file mode 100644 index 000000000000..f04b4e1c328c --- /dev/null +++ b/packages/plugins/Solana/src/apis/getFungibleAssets.ts @@ -0,0 +1,78 @@ +import { Pagination, Web3Plugin, CurrencyType } from '@masknet/plugin-infra' +import { ChainId, getTokenConstants } from '@masknet/web3-shared-solana' +import { CoinGecko } from '@masknet/web3-providers' +import { createFungibleAsset, createFungibleToken } from '../helpers' +import { TokenListProvider, TokenInfo } from '@solana/spl-token-registry' +import { GetAccountInfoResponse, GetProgramAccountsResponse, requestRPC, SPL_TOKEN_PROGRAM_ID } from './shared' + +async function getSolanaBalance(chainId: ChainId, account: string) { + const { SOL_ADDRESS = '' } = getTokenConstants(chainId) + const price = await CoinGecko.getTokenPrice('solana', CurrencyType.USD) + const data = await requestRPC(chainId, { + method: 'getAccountInfo', + params: [account], + }) + const balance = data.result?.value.lamports.toString() ?? '0' + return createFungibleAsset( + createFungibleToken(chainId, SOL_ADDRESS, 'Solana', 'SOL', 9), + balance, + new URL('../assets/solana.png', import.meta.url).toString(), + price, + ) +} +async function getSplTokenList(chainId: ChainId, account: string) { + const data = await requestRPC(chainId, { + method: 'getProgramAccounts', + params: [ + SPL_TOKEN_PROGRAM_ID, + { + encoding: 'jsonParsed', + filters: [ + { + dataSize: 165, + }, + { + memcmp: { + offset: 32, + bytes: account, + }, + }, + ], + }, + ], + }) + if (!data.result?.length) return [] + const tokenListProvider = new TokenListProvider() + const provider = await tokenListProvider.resolve() + const tokenList = provider.filterByChainId(chainId).getList() + return data.result + .filter((x) => x.account.data.parsed.info.tokenAmount.decimals !== 0) // Filter out non fun. + .map((x) => { + const info = x.account.data.parsed.info + const token = tokenList.find((y) => y.address === info.mint) ?? ({} as TokenInfo) + const name = token.name || 'Unknown Token' + const symbol = token.symbol || 'Unknown Token' + return createFungibleAsset( + createFungibleToken(chainId, info.mint, name, symbol, info.tokenAmount.decimals), + info.tokenAmount.amount, + token.logoURI, + ) + }) +} + +export async function getFungibleAssets( + address: string, + provider: string, + network: Web3Plugin.NetworkDescriptor, + pagination?: Pagination, +): Promise[]> { + const allSettled = await Promise.allSettled([ + getSolanaBalance(network.chainId, address).then((x) => [x]), + getSplTokenList(network.chainId, address), + ]) + + return allSettled + .map((x) => (x.status === 'fulfilled' ? x.value : null)) + .flat() + .filter(Boolean) as Web3Plugin.Asset[] +} diff --git a/packages/plugins/Solana/src/apis/getNonFungibleAssets.ts b/packages/plugins/Solana/src/apis/getNonFungibleAssets.ts new file mode 100644 index 000000000000..1b3e2861dff8 --- /dev/null +++ b/packages/plugins/Solana/src/apis/getNonFungibleAssets.ts @@ -0,0 +1,102 @@ +import { Connection } from '@metaplex/js' +import { ChainId } from '@masknet/web3-shared-solana' +import { Metadata } from '@metaplex-foundation/mpl-token-metadata' +import { Pageable, Pagination, TokenType, Web3Plugin } from '@masknet/plugin-infra' +import { fetchJSON, GetProgramAccountsResponse, requestRPC, SPL_TOKEN_PROGRAM_ID } from './shared' + +const ENDPOINT_KEY = 'devnet' + +interface ExternalMetadata { + name: string + symbol: string + description: string + image?: string + animation?: string + properties: { + files: Array<{ + uri: string + type: 'image/jpeg' | string + }> + category: string + creators: Array<{ + address: string + share: 100 + }> + } +} + +async function getNftList(chainId: ChainId, account: string) { + const data = await requestRPC(chainId, { + method: 'getProgramAccounts', + params: [ + SPL_TOKEN_PROGRAM_ID, + { + encoding: 'jsonParsed', + filters: [ + { + dataSize: 165, + }, + { + memcmp: { + offset: 32, + bytes: account, + }, + }, + ], + }, + ], + }) + if (!data.result?.length) return [] + const connection = new Connection(ENDPOINT_KEY) + const nftTokens = data.result.filter((x) => x.account.data.parsed.info.tokenAmount.decimals === 0) + const promises = nftTokens.map((x) => + Metadata.load(connection, x.pubkey).then(async (metadata) => { + if (!metadata) return null + const externalMeta = await fetchJSON(metadata.data.data.uri).catch(() => null) + const pubkey = metadata.pubkey.toBase58() + return { + id: pubkey, + tokenId: pubkey, + chainId: chainId, + type: TokenType.NonFungible, + name: metadata.data.data.name, + description: externalMeta?.description, + contract: { + name: metadata.data.data.name, + symbol: metadata.data.data.symbol, + chainId: ChainId.Mainnet, + address: pubkey, + tokenId: pubkey, + }, + metadata: { + name: metadata.data.data.name, + description: metadata.data.data.name, + mediaType: externalMeta?.properties?.category || 'Unknown', + iconURL: '', + assetURL: externalMeta?.animation ?? externalMeta?.image ?? '', + }, + } as Web3Plugin.NonFungibleToken + }), + ) + + const allSettled = await Promise.allSettled(promises) + const tokens = allSettled + .map((x) => (x.status === 'fulfilled' ? x.value : null)) + .filter(Boolean) as Web3Plugin.NonFungibleToken[] + return tokens +} + +export async function getNonFungibleAssets( + address: string, + pagination: Pagination, + providerType?: string, + network?: Web3Plugin.NetworkDescriptor, +): Promise> { + const tokens = await getNftList(ChainId.Mainnet, address) + + return { + currentPage: 1, + hasNextPage: false, + data: tokens, + } +} diff --git a/packages/plugins/Solana/src/apis/index.ts b/packages/plugins/Solana/src/apis/index.ts new file mode 100644 index 000000000000..cd7781fd4a5f --- /dev/null +++ b/packages/plugins/Solana/src/apis/index.ts @@ -0,0 +1,2 @@ +export * from './getFungibleAssets' +export * from './getNonFungibleAssets' diff --git a/packages/plugins/Solana/src/apis/shared.ts b/packages/plugins/Solana/src/apis/shared.ts new file mode 100644 index 000000000000..e8dbe25e6364 --- /dev/null +++ b/packages/plugins/Solana/src/apis/shared.ts @@ -0,0 +1,75 @@ +import type { ChainId } from '@masknet/web3-shared-solana' +import { TOKEN_PROGRAM_ID } from '@solana/spl-token' +import { NETWORK_ENDPOINTS } from '../constants' + +export const SPL_TOKEN_PROGRAM_ID = TOKEN_PROGRAM_ID.toBase58() + +interface RpcOptions { + method: string + params?: any[] +} + +export interface RpcResponse { + jsonrpc: '2.0' + result: T | null +} + +export interface AccountInfo { + data: [string, string] | object + executable: boolean + lamports: number +} + +export type GetAccountInfoResponse = RpcResponse<{ value: AccountInfo }> +export interface ProgramAccount { + account: { + data: { + parsed: { + info: { + isNative: false + mint: string + owner: string + state: string + tokenAmount: { + amount: string + decimals: number + uiAmount: number + uiAmountString: string + } + } + } + program: 'spl-token' + space: number + } + executable: boolean + lamports: number + owner: string + rentEpoch: string + } + pubkey: string +} + +export type GetProgramAccountsResponse = RpcResponse> + +let id = 0 +export async function requestRPC(chainId: ChainId, options: RpcOptions): Promise { + const endpoint = NETWORK_ENDPOINTS[chainId] + id += 1 + const res = await globalThis.fetch(endpoint, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + ...options, + jsonrpc: '2.0', + id, + }), + }) + return res.json() +} + +export async function fetchJSON(url: string): Promise { + const res = await globalThis.fetch(url) + return res.json() +} diff --git a/packages/plugins/Solana/src/assets/phantom.png b/packages/plugins/Solana/src/assets/phantom.png new file mode 100644 index 000000000000..fe0c961445d0 Binary files /dev/null and b/packages/plugins/Solana/src/assets/phantom.png differ diff --git a/packages/plugins/Solana/src/assets/solana.png b/packages/plugins/Solana/src/assets/solana.png new file mode 100644 index 000000000000..c327fd9505c1 Binary files /dev/null and b/packages/plugins/Solana/src/assets/solana.png differ diff --git a/packages/plugins/Solana/src/assets/sollet.png b/packages/plugins/Solana/src/assets/sollet.png new file mode 100644 index 000000000000..62d363ae1d4b Binary files /dev/null and b/packages/plugins/Solana/src/assets/sollet.png differ diff --git a/packages/plugins/Solana/src/assets/usdc.png b/packages/plugins/Solana/src/assets/usdc.png new file mode 100644 index 000000000000..eafbaac194aa Binary files /dev/null and b/packages/plugins/Solana/src/assets/usdc.png differ diff --git a/packages/plugins/Solana/src/base.ts b/packages/plugins/Solana/src/base.ts new file mode 100644 index 000000000000..4e01c76b7749 --- /dev/null +++ b/packages/plugins/Solana/src/base.ts @@ -0,0 +1,20 @@ +import type { Plugin } from '@masknet/plugin-infra' +import { languages } from './locales/languages' +import { PLUGIN_ID, PLUGIN_ICON, PLUGIN_NAME, PLUGIN_DESCRIPTION, PLUGIN_PROVIDERS, PLUGIN_NETWORKS } from './constants' + +export const base: Plugin.Shared.Definition = { + ID: PLUGIN_ID, + icon: PLUGIN_ICON, + name: { fallback: PLUGIN_NAME }, + description: { fallback: PLUGIN_DESCRIPTION }, + publisher: { name: { fallback: 'Mask Network' }, link: 'https://mask.io/' }, + enableRequirement: { + architecture: { app: true, web: true }, + networks: { type: 'opt-out', networks: {} }, + target: 'stable', + }, + i18n: languages, + declareApplicationCategories: [], + declareWeb3Networks: PLUGIN_NETWORKS, + declareWeb3Providers: PLUGIN_PROVIDERS, +} diff --git a/packages/plugins/Solana/src/constants.ts b/packages/plugins/Solana/src/constants.ts new file mode 100644 index 000000000000..e91744765cc5 --- /dev/null +++ b/packages/plugins/Solana/src/constants.ts @@ -0,0 +1,45 @@ +import type { Web3Plugin } from '@masknet/plugin-infra' +import { ChainId, NetworkType, ProviderType } from '@masknet/web3-shared-solana' + +export const PLUGIN_META_KEY = 'com.mask.solana' +export const PLUGIN_ID = 'com.mask.solana' +export const PLUGIN_NAME = 'Solana Chain' +export const PLUGIN_ICON = '🌅' +export const PLUGIN_DESCRIPTION = '' +export const PLUGIN_NETWORKS: Web3Plugin.NetworkDescriptor[] = [ + { + ID: `${PLUGIN_ID}_solana`, + networkSupporterPluginID: PLUGIN_ID, + chainId: ChainId.Mainnet, + type: NetworkType.Solana, + name: 'Solana', + icon: new URL('./assets/solana.png', import.meta.url), + iconColor: '#5d6fc0', + isMainnet: true, + }, + { + ID: `${PLUGIN_ID}_solana_testnet`, + networkSupporterPluginID: PLUGIN_ID, + chainId: ChainId.Testnet, + type: NetworkType.Solana, + name: 'Solana Testnet', + icon: new URL('./assets/solana.png', import.meta.url), + iconColor: '#5d6fc0', + isMainnet: false, + }, +] +export const PLUGIN_PROVIDERS: Web3Plugin.ProviderDescriptor[] = [ + { + ID: `${PLUGIN_ID}_phantom`, + providerAdaptorPluginID: PLUGIN_ID, + type: ProviderType.Phantom, + name: 'Phantom', + icon: new URL('./assets/phantom.png', import.meta.url), + }, +] + +export const NETWORK_ENDPOINTS: Record = { + [ChainId.Mainnet]: 'https://solana-api.projectserum.com', + [ChainId.Testnet]: 'https://api.testnet.solana.com', + [ChainId.Devnet]: 'https://api.devnet.solana.com', +} diff --git a/packages/plugins/Solana/src/helpers/formatter.ts b/packages/plugins/Solana/src/helpers/formatter.ts new file mode 100644 index 000000000000..4bc7441dee4f --- /dev/null +++ b/packages/plugins/Solana/src/helpers/formatter.ts @@ -0,0 +1,4 @@ +export function formatAddress(address: string, size = 0) { + if (size === 0 || size >= 22) return address + return `${address.substr(0, 2 + size)}...${address.substr(-size)}` +} diff --git a/packages/plugins/Solana/src/helpers/index.ts b/packages/plugins/Solana/src/helpers/index.ts new file mode 100644 index 000000000000..cf2dcad8733b --- /dev/null +++ b/packages/plugins/Solana/src/helpers/index.ts @@ -0,0 +1,2 @@ +export * from './formatter' +export * from './token' diff --git a/packages/plugins/Solana/src/helpers/token.ts b/packages/plugins/Solana/src/helpers/token.ts new file mode 100644 index 000000000000..b760927bfd52 --- /dev/null +++ b/packages/plugins/Solana/src/helpers/token.ts @@ -0,0 +1,40 @@ +import { CurrencyType, TokenType, Web3Plugin } from '@masknet/plugin-infra' +import { leftShift, multipliedBy } from '@masknet/web3-shared-base' +import type { ChainId } from '@masknet/web3-shared-solana' + +export function createFungibleToken( + chainId: ChainId, + address: string, + name: string, + symbol: string, + decimals: number, +): Web3Plugin.FungibleToken { + return { + id: address, + chainId, + type: TokenType.Fungible, + address, + name, + symbol, + decimals, + } +} + +export function createFungibleAsset( + token: Web3Plugin.FungibleToken, + balance: string, + logoURI?: string, + price?: { [key in CurrencyType]?: string }, +): Web3Plugin.Asset { + return { + id: token.address, + chainId: token.chainId, + balance: leftShift(balance, token.decimals).toFixed(), + token, + logoURI, + value: { + [CurrencyType.USD]: multipliedBy(price?.usd ?? 0, leftShift(balance, token.decimals)).toFixed(), + }, + price, + } +} diff --git a/packages/plugins/Solana/src/hooks/index.ts b/packages/plugins/Solana/src/hooks/index.ts new file mode 100644 index 000000000000..336ce12bb910 --- /dev/null +++ b/packages/plugins/Solana/src/hooks/index.ts @@ -0,0 +1 @@ +export {} diff --git a/packages/plugins/Solana/src/index.ts b/packages/plugins/Solana/src/index.ts new file mode 100644 index 000000000000..48ab76cba202 --- /dev/null +++ b/packages/plugins/Solana/src/index.ts @@ -0,0 +1,23 @@ +import { registerPlugin } from '@masknet/plugin-infra' +import { base } from './base' + +registerPlugin({ + ...base, + SNSAdaptor: { + load: () => import('./UI/SNSAdaptor'), + hotModuleReload: (hot) => + import.meta.webpackHot && + import.meta.webpackHot.accept('./UI/SNSAdaptor', () => hot(import('./UI/SNSAdaptor'))), + }, + Dashboard: { + load: () => import('./UI/Dashboard'), + hotModuleReload: (hot) => + import.meta.webpackHot && + import.meta.webpackHot.accept('./UI/Dashboard', () => hot(import('./UI/Dashboard'))), + }, + Worker: { + load: () => import('./Worker'), + hotModuleReload: (hot) => + import.meta.webpackHot && import.meta.webpackHot.accept('./Worker', () => hot(import('./Worker'))), + }, +}) diff --git a/packages/plugins/Solana/src/locales/en-US.json b/packages/plugins/Solana/src/locales/en-US.json new file mode 100644 index 000000000000..ee5e3125b8c9 --- /dev/null +++ b/packages/plugins/Solana/src/locales/en-US.json @@ -0,0 +1,6 @@ +{ + "button_log_in": "Log In", + "button_log_out": "Log Out", + "button_sign_up": "Sign Up", + "card_state_text_no_profile": "No Profile" +} diff --git a/packages/plugins/Solana/src/locales/index.ts b/packages/plugins/Solana/src/locales/index.ts new file mode 100644 index 000000000000..d6ead60252e4 --- /dev/null +++ b/packages/plugins/Solana/src/locales/index.ts @@ -0,0 +1,6 @@ +// This file is auto generated. DO NOT EDIT +// Run `npx gulp sync-languages` to regenerate. +// Default fallback language in a family of languages are chosen by the alphabet order +// To overwrite this, please overwrite packages/scripts/src/locale-kit-next/index.ts + +export * from './i18n_generated' diff --git a/packages/plugins/Solana/src/locales/ja-JP.json b/packages/plugins/Solana/src/locales/ja-JP.json new file mode 100644 index 000000000000..0967ef424bce --- /dev/null +++ b/packages/plugins/Solana/src/locales/ja-JP.json @@ -0,0 +1 @@ +{} diff --git a/packages/plugins/Solana/src/locales/ko-KR.json b/packages/plugins/Solana/src/locales/ko-KR.json new file mode 100644 index 000000000000..0967ef424bce --- /dev/null +++ b/packages/plugins/Solana/src/locales/ko-KR.json @@ -0,0 +1 @@ +{} diff --git a/packages/plugins/Solana/src/locales/languages.ts b/packages/plugins/Solana/src/locales/languages.ts new file mode 100644 index 000000000000..5aefce48b681 --- /dev/null +++ b/packages/plugins/Solana/src/locales/languages.ts @@ -0,0 +1,34 @@ +// This file is auto generated. DO NOT EDIT +// Run `npx gulp sync-languages` to regenerate. +// Default fallback language in a family of languages are chosen by the alphabet order +// To overwrite this, please overwrite packages/scripts/src/locale-kit-next/index.ts +import en_US from './en-US.json' +import ja_JP from './ja-JP.json' +import ko_KR from './ko-KR.json' +import qya_AA from './qya-AA.json' +import zh_CN from './zh-CN.json' +import zh_TW from './zh-TW.json' +export const languages = { + en: en_US, + ja: ja_JP, + ko: ko_KR, + qy: qya_AA, + 'zh-CN': zh_CN, + zh: zh_TW, +} +// @ts-ignore +if (import.meta.webpackHot) { + // @ts-ignore + import.meta.webpackHot.accept( + ['./en-US.json', './ja-JP.json', './ko-KR.json', './qya-AA.json', './zh-CN.json', './zh-TW.json'], + () => + globalThis.dispatchEvent?.( + new CustomEvent('MASK_I18N_HMR', { + detail: [ + 'com.maskbook.solana', + { en: en_US, ja: ja_JP, ko: ko_KR, qy: qya_AA, 'zh-CN': zh_CN, zh: zh_TW }, + ], + }), + ), + ) +} diff --git a/packages/plugins/Solana/src/locales/qya-AA.json b/packages/plugins/Solana/src/locales/qya-AA.json new file mode 100644 index 000000000000..b3c231a9fe1c --- /dev/null +++ b/packages/plugins/Solana/src/locales/qya-AA.json @@ -0,0 +1,6 @@ +{ + "button_log_in": "crwdns9789:0crwdne9789:0", + "button_log_out": "crwdns9791:0crwdne9791:0", + "button_sign_up": "crwdns9793:0crwdne9793:0", + "card_state_text_no_profile": "crwdns9795:0crwdne9795:0" +} diff --git a/packages/plugins/Solana/src/locales/zh-CN.json b/packages/plugins/Solana/src/locales/zh-CN.json new file mode 100644 index 000000000000..0967ef424bce --- /dev/null +++ b/packages/plugins/Solana/src/locales/zh-CN.json @@ -0,0 +1 @@ +{} diff --git a/packages/plugins/Solana/src/locales/zh-TW.json b/packages/plugins/Solana/src/locales/zh-TW.json new file mode 100644 index 000000000000..0967ef424bce --- /dev/null +++ b/packages/plugins/Solana/src/locales/zh-TW.json @@ -0,0 +1 @@ +{} diff --git a/packages/plugins/Solana/src/messages.ts b/packages/plugins/Solana/src/messages.ts new file mode 100644 index 000000000000..2ab1707c64d9 --- /dev/null +++ b/packages/plugins/Solana/src/messages.ts @@ -0,0 +1,6 @@ +import { createPluginMessage, createPluginRPC } from '@masknet/plugin-infra' +import { PLUGIN_ID } from './constants' + +if (import.meta.webpackHot) import.meta.webpackHot.accept() +const SolanaMessage = createPluginMessage(PLUGIN_ID) +export const SolanaRPC = createPluginRPC(PLUGIN_ID, () => import('./services'), SolanaMessage.rpc) diff --git a/packages/plugins/Solana/src/services.ts b/packages/plugins/Solana/src/services.ts new file mode 100644 index 000000000000..5914b704d67f --- /dev/null +++ b/packages/plugins/Solana/src/services.ts @@ -0,0 +1 @@ +export * from './apis' diff --git a/packages/plugins/Solana/src/storage/index.ts b/packages/plugins/Solana/src/storage/index.ts new file mode 100644 index 000000000000..d8f0f8d8cee7 --- /dev/null +++ b/packages/plugins/Solana/src/storage/index.ts @@ -0,0 +1,16 @@ +import type { ScopedStorage } from '@masknet/shared-base' + +export const StorageDefaultValue = { + publicKey: null as null | string, + network: null as null | number, +} + +let storage: ScopedStorage = null! + +export function setupStorage(_: typeof storage) { + storage = _ +} + +export function getStorage() { + return storage.storage +} diff --git a/packages/plugins/Solana/src/types.ts b/packages/plugins/Solana/src/types.ts new file mode 100644 index 000000000000..7e98c52e47e2 --- /dev/null +++ b/packages/plugins/Solana/src/types.ts @@ -0,0 +1,3 @@ +export interface FungibleToken { + address: string +} diff --git a/packages/plugins/Solana/src/utils.ts b/packages/plugins/Solana/src/utils.ts new file mode 100644 index 000000000000..5f479850e303 --- /dev/null +++ b/packages/plugins/Solana/src/utils.ts @@ -0,0 +1,7 @@ +import { Buffer } from 'buffer' +import bs58 from 'bs58' + +export function hexToBase58(hex: string) { + const buffer = Buffer.from(hex, 'hex') + return bs58.encode(buffer) +} diff --git a/packages/plugins/Solana/tsconfig.json b/packages/plugins/Solana/tsconfig.json new file mode 100644 index 000000000000..ed75026f419a --- /dev/null +++ b/packages/plugins/Solana/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "tsBuildInfoFile": "dist/.tsbuildinfo", + "resolveJsonModule": true + }, + "include": ["src", "src/**/*.json"], + "references": [ + { "path": "../../icons" }, + { "path": "../../injected-script" }, + { "path": "../../plugin-infra" }, + { "path": "../../shared" }, + { "path": "../../shared-base" }, + { "path": "../../theme" }, + { "path": "../../web3-providers" }, + { "path": "../../web3-shared/base" }, + { "path": "../../web3-shared/solana" } + ] +} diff --git a/packages/web3-constants/compile-constants.ts b/packages/web3-constants/compile-constants.ts index b8f7b4c5f707..fae7b7dffefd 100644 --- a/packages/web3-constants/compile-constants.ts +++ b/packages/web3-constants/compile-constants.ts @@ -57,6 +57,6 @@ compileConstants(path.join(__dirname, 'evm'), [ 'Fantom', ]) -compileConstants(path.join(__dirname, 'solana'), ['mainnet-beta', 'testnet', 'devnet']) +compileConstants(path.join(__dirname, 'solana'), ['Mainnet', 'Testnet', 'Devnet']) compileConstants(path.join(__dirname, 'flow'), ['Mainnet', 'Testnet']) diff --git a/packages/web3-constants/solana/token.json b/packages/web3-constants/solana/token.json new file mode 100644 index 000000000000..f99d39ec2a02 --- /dev/null +++ b/packages/web3-constants/solana/token.json @@ -0,0 +1,12 @@ +{ + "USDC_ADDRESS": { + "Mainnet": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "Testnet": "CpMah17kQEL2wqyMKt3mZBdTnZbkbfx4nqmQMFDP5vwp", + "Devnet": "" + }, + "SOL_ADDRESS": { + "Mainnet": "So11111111111111111111111111111111111111112", + "Testnet": "So11111111111111111111111111111111111111112", + "Devnet": "So11111111111111111111111111111111111111112" + } +} diff --git a/packages/web3-shared/solana/constants/index.ts b/packages/web3-shared/solana/constants/index.ts new file mode 100644 index 000000000000..292cae20cbf9 --- /dev/null +++ b/packages/web3-shared/solana/constants/index.ts @@ -0,0 +1,6 @@ +import Token from '@masknet/web3-constants/solana/token.json' +import { hookTransform, transform } from '@masknet/web3-kit' +import { ChainId } from '../types' + +export const getTokenConstants = transform(ChainId, Token) +export const useTokenConstants = hookTransform(getTokenConstants) diff --git a/packages/web3-shared/solana/hooks/index.ts b/packages/web3-shared/solana/hooks/index.ts new file mode 100644 index 000000000000..336ce12bb910 --- /dev/null +++ b/packages/web3-shared/solana/hooks/index.ts @@ -0,0 +1 @@ +export {} diff --git a/packages/web3-shared/solana/index.ts b/packages/web3-shared/solana/index.ts index 336ce12bb910..fc405ba933b2 100644 --- a/packages/web3-shared/solana/index.ts +++ b/packages/web3-shared/solana/index.ts @@ -1 +1,5 @@ -export {} +export * from './sdk' +export * from './types' +export * from './pipes' +export * from './hooks' +export * from './constants' diff --git a/packages/web3-shared/solana/package.json b/packages/web3-shared/solana/package.json index 95c1370158a3..b4322381fd4e 100644 --- a/packages/web3-shared/solana/package.json +++ b/packages/web3-shared/solana/package.json @@ -2,5 +2,11 @@ "name": "@masknet/web3-shared-solana", "private": true, "main": "./dist/index.js", - "types": "./dist/index.d.ts" + "types": "./dist/index.d.ts", + "dependencies": { + "@masknet/web3-constants": "workspace:*", + "@masknet/web3-kit": "workspace:*", + "react-use": "^17.3.1", + "urlcat": "^2.0.4" + } } diff --git a/packages/web3-shared/solana/pipes/index.ts b/packages/web3-shared/solana/pipes/index.ts new file mode 100644 index 000000000000..2fb0ac4464ac --- /dev/null +++ b/packages/web3-shared/solana/pipes/index.ts @@ -0,0 +1,45 @@ +import urlcat from 'urlcat' +import { createLookupTableResolver } from '@masknet/web3-kit' +import { ChainId, ProviderType } from '../types' + +export const resolveChainName = createLookupTableResolver( + { + [ChainId.Mainnet]: 'mainnet', + [ChainId.Testnet]: 'testnet', + [ChainId.Devnet]: 'devnet', + }, + () => 'Unknown chain id', +) + +export const resolveProviderName = createLookupTableResolver( + { + [ProviderType.Phantom]: 'Phantom', + [ProviderType.Sollet]: 'Sollet', + }, + () => 'Unknown provider type', +) + +export const resolveLinkOnExplorer = createLookupTableResolver( + { + [ChainId.Mainnet]: 'https://explorer.solana.com/', + [ChainId.Testnet]: 'https://explorer.solana.com/?cluster=testnet', + [ChainId.Devnet]: 'https://explorer.solana.com/?cluster=devnet', + }, + () => 'Unknown chain id', +) + +export function resolveTransactionLinkOnExplorer(chainId: ChainId, tx: string) { + return urlcat(resolveLinkOnExplorer(chainId), '/transaction/:tx', { + tx, + }) +} + +export function resolveAddressLinkOnExplorer(chainId: ChainId, address: string) { + return urlcat(resolveLinkOnExplorer(chainId), '/account/:address', { + address, + }) +} + +export function resolveBlockLinkOnExplorer(chainId: ChainId, blockNumber: string) { + return '' +} diff --git a/packages/web3-shared/solana/sdk/index.ts b/packages/web3-shared/solana/sdk/index.ts new file mode 100644 index 000000000000..3e461a7182e2 --- /dev/null +++ b/packages/web3-shared/solana/sdk/index.ts @@ -0,0 +1,5 @@ +import type { ChainId } from '../types' + +export function createClient(chainId: ChainId) { + return {} +} diff --git a/packages/web3-shared/solana/tsconfig.json b/packages/web3-shared/solana/tsconfig.json index 5863529e241a..9c09406d2dfe 100644 --- a/packages/web3-shared/solana/tsconfig.json +++ b/packages/web3-shared/solana/tsconfig.json @@ -5,5 +5,6 @@ "outDir": "../dist/solana", "tsBuildInfoFile": "../dist/solana.tsbuildinfo" }, - "include": ["./", "./**/*.json"] + "include": ["./", "./**/*.json"], + "references": [{ "path": "../../web3-kit" }] } diff --git a/packages/web3-shared/solana/types.ts b/packages/web3-shared/solana/types.ts new file mode 100644 index 000000000000..6ca4951f26c3 --- /dev/null +++ b/packages/web3-shared/solana/types.ts @@ -0,0 +1,14 @@ +export enum ChainId { + Mainnet = 101, + Testnet = 102, + Devnet = 103, +} + +export enum NetworkType { + Solana = 'Solana', +} + +export enum ProviderType { + Phantom = 'Phantom', + Sollet = 'Sollet', +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a1e80e5aee7..6b0e365ceff2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -164,8 +164,8 @@ importers: path-browserify: ^1.0.1 react-avatar-editor: ^12.0.0 react-hook-form: ^7.22.5 - react-router: ^6.0.0-beta.0 - react-router-dom: ^6.0.0-beta.0 + react-router: 6.0.0-beta.0 + react-router-dom: 6.0.0-beta.0 react-use: ^17.3.1 stream-browserify: ^3.0.0 unstated-next: ^1.1.0 @@ -206,8 +206,8 @@ importers: json-stable-stringify: 1.0.1 react-avatar-editor: 12.0.0_2a5ce53653c2861b1c74a6612fe40887 react-hook-form: 7.22.5_react@18.0.0-rc.0 - react-router: 6.0.0-beta.4_history@5.2.0+react@18.0.0-rc.0 - react-router-dom: 6.0.0-beta.4_154c53788755629e2430b224cbac559e + react-router: 6.0.0-beta.0_history@5.2.0+react@18.0.0-rc.0 + react-router-dom: 6.0.0-beta.0_154c53788755629e2430b224cbac559e react-use: 17.3.1_757a802188413a36d4f24237d13b8e90 unstated-next: 1.1.0 urlcat: 2.0.4 @@ -295,6 +295,7 @@ importers: '@masknet/plugin-flow': workspace:* '@masknet/plugin-infra': workspace:* '@masknet/plugin-rss3': workspace:* + '@masknet/plugin-solana': workspace:* '@masknet/plugin-wallet': workspace:* '@masknet/public-api': workspace:* '@masknet/sdk': workspace:* @@ -431,6 +432,7 @@ importers: '@masknet/plugin-flow': link:../plugins/Flow '@masknet/plugin-infra': link:../plugin-infra '@masknet/plugin-rss3': link:../plugins/RSS3 + '@masknet/plugin-solana': link:../plugins/Solana '@masknet/plugin-wallet': link:../plugins/Wallet '@masknet/public-api': link:../public-api '@masknet/sdk': link:../mask-sdk @@ -722,6 +724,48 @@ importers: react-use: 17.3.1_757a802188413a36d4f24237d13b8e90 urlcat: 2.0.4 + packages/plugins/Solana: + specifiers: + '@masknet/icons': workspace:* + '@masknet/injected-script': workspace:* + '@masknet/plugin-infra': workspace:* + '@masknet/shared': workspace:* + '@masknet/shared-base': workspace:* + '@masknet/theme': workspace:* + '@masknet/web3-providers': workspace:* + '@masknet/web3-shared-base': workspace:* + '@masknet/web3-shared-solana': workspace:* + '@metaplex-foundation/mpl-token-metadata': ^0.0.2 + '@metaplex/js': ^4.11.2 + '@solana/spl-token': ^0.1.8 + '@solana/spl-token-registry': ^0.2.1301 + '@solana/web3.js': ^1.30.2 + bignumber.js: ^9.0.1 + bn.js: ^4.12.0 + bs58: ^4.0.1 + buffer: ^6.0.3 + react-use: ^17.3.1 + dependencies: + '@masknet/icons': link:../../icons + '@masknet/injected-script': link:../../injected-script + '@masknet/plugin-infra': link:../../plugin-infra + '@masknet/shared': link:../../shared + '@masknet/shared-base': link:../../shared-base + '@masknet/theme': link:../../theme + '@masknet/web3-providers': link:../../web3-providers + '@masknet/web3-shared-base': link:../../web3-shared/base + '@masknet/web3-shared-solana': link:../../web3-shared/solana + '@metaplex-foundation/mpl-token-metadata': 0.0.2 + '@metaplex/js': 4.11.2 + '@solana/spl-token': 0.1.8 + '@solana/spl-token-registry': 0.2.1301 + '@solana/web3.js': 1.31.0 + bignumber.js: 9.0.1 + bn.js: 4.12.0 + bs58: 4.0.1 + buffer: 6.0.3 + react-use: 17.3.1_757a802188413a36d4f24237d13b8e90 + packages/plugins/Wallet: specifiers: '@masknet/plugin-infra': workspace:* @@ -1107,7 +1151,16 @@ importers: urlcat: 2.0.4 packages/web3-shared/solana: - specifiers: {} + specifiers: + '@masknet/web3-constants': workspace:* + '@masknet/web3-kit': workspace:* + react-use: ^17.3.1 + urlcat: ^2.0.4 + dependencies: + '@masknet/web3-constants': link:../../web3-constants + '@masknet/web3-kit': link:../../web3-kit + react-use: 17.3.1_757a802188413a36d4f24237d13b8e90 + urlcat: 2.0.4 packages: @@ -1238,13 +1291,6 @@ packages: '@babel/highlight': 7.16.0 dev: true - /@babel/code-frame/7.15.8: - resolution: {integrity: sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.14.5 - dev: true - /@babel/code-frame/7.16.0: resolution: {integrity: sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==} engines: {node: '>=6.9.0'} @@ -1254,7 +1300,6 @@ packages: /@babel/compat-data/7.16.0: resolution: {integrity: sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==} engines: {node: '>=6.9.0'} - dev: false /@babel/compat-data/7.16.4: resolution: {integrity: sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==} @@ -1266,10 +1311,10 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.16.0 - '@babel/generator': 7.16.0 + '@babel/generator': 7.16.5 '@babel/helper-module-transforms': 7.16.5 '@babel/helpers': 7.16.5 - '@babel/parser': 7.16.4 + '@babel/parser': 7.16.6 '@babel/template': 7.16.0 '@babel/traverse': 7.16.5 '@babel/types': 7.16.0 @@ -1293,10 +1338,10 @@ packages: '@babel/generator': 7.16.0 '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.16.0 '@babel/helper-module-transforms': 7.16.0 - '@babel/helpers': 7.16.3 - '@babel/parser': 7.16.4 + '@babel/helpers': 7.16.5 + '@babel/parser': 7.16.2 '@babel/template': 7.16.0 - '@babel/traverse': 7.16.3 + '@babel/traverse': 7.16.0 '@babel/types': 7.16.0 convert-source-map: 1.8.0 debug: 4.3.2 @@ -1352,6 +1397,7 @@ packages: '@babel/types': 7.16.0 jsesc: 2.5.2 source-map: 0.5.7 + dev: true /@babel/generator/7.16.5: resolution: {integrity: sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==} @@ -1360,7 +1406,6 @@ packages: '@babel/types': 7.16.0 jsesc: 2.5.2 source-map: 0.5.7 - dev: true /@babel/helper-annotate-as-pure/7.16.0: resolution: {integrity: sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==} @@ -1377,26 +1422,13 @@ packages: '@babel/types': 7.16.0 dev: true - /@babel/helper-compilation-targets/7.16.0_@babel+core@7.16.5: - resolution: {integrity: sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.16.0 - '@babel/core': 7.16.5 - '@babel/helper-validator-option': 7.14.5 - browserslist: 4.18.1 - semver: 6.3.0 - dev: false - /@babel/helper-compilation-targets/7.16.3_@babel+core@7.16.0: resolution: {integrity: sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.16.4 + '@babel/compat-data': 7.16.0 '@babel/core': 7.16.0 '@babel/helper-validator-option': 7.14.5 browserslist: 4.19.1 @@ -1409,12 +1441,11 @@ packages: peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.16.4 + '@babel/compat-data': 7.16.0 '@babel/core': 7.16.5 '@babel/helper-validator-option': 7.14.5 browserslist: 4.19.1 semver: 6.3.0 - dev: true /@babel/helper-create-class-features-plugin/7.16.0_@babel+core@7.16.5: resolution: {integrity: sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==} @@ -1452,7 +1483,7 @@ packages: '@babel/core': 7.16.5 '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.16.5 '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/traverse': 7.16.5 debug: 4.3.3 lodash.debounce: 4.0.8 @@ -1462,35 +1493,17 @@ packages: - supports-color dev: true - /@babel/helper-define-polyfill-provider/0.2.3_@babel+core@7.16.5: - resolution: {integrity: sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-compilation-targets': 7.16.0_@babel+core@7.16.5 - '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/traverse': 7.16.0 - debug: 4.3.2 - lodash.debounce: 4.0.8 - resolve: 1.20.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-define-polyfill-provider/0.2.4_@babel+core@7.16.5: resolution: {integrity: sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-compilation-targets': 7.16.0_@babel+core@7.16.5 + '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.16.5 '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/traverse': 7.16.0 - debug: 4.3.2 + '@babel/helper-plugin-utils': 7.16.5 + '@babel/traverse': 7.16.5 + debug: 4.3.3 lodash.debounce: 4.0.8 resolve: 1.20.0 semver: 6.3.0 @@ -1506,7 +1519,7 @@ packages: '@babel/core': 7.16.5 '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.16.5 '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/traverse': 7.16.5 debug: 4.3.3 lodash.debounce: 4.0.8 @@ -1521,7 +1534,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.16.0 - dev: true /@babel/helper-explode-assignable-expression/7.16.0: resolution: {integrity: sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==} @@ -1573,7 +1585,7 @@ packages: '@babel/helper-split-export-declaration': 7.16.0 '@babel/helper-validator-identifier': 7.15.7 '@babel/template': 7.16.0 - '@babel/traverse': 7.16.3 + '@babel/traverse': 7.16.0 '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color @@ -1613,7 +1625,6 @@ packages: /@babel/helper-plugin-utils/7.16.5: resolution: {integrity: sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-remap-async-to-generator/7.16.4: resolution: {integrity: sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==} @@ -1678,17 +1689,6 @@ packages: - supports-color dev: true - /@babel/helpers/7.16.3: - resolution: {integrity: sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.16.0 - '@babel/traverse': 7.16.3 - '@babel/types': 7.16.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helpers/7.16.5: resolution: {integrity: sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==} engines: {node: '>=6.9.0'} @@ -1700,15 +1700,6 @@ packages: - supports-color dev: true - /@babel/highlight/7.14.5: - resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.15.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - /@babel/highlight/7.16.0: resolution: {integrity: sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==} engines: {node: '>=6.9.0'} @@ -1721,7 +1712,7 @@ packages: resolution: {integrity: sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==} engines: {node: '>=6.0.0'} hasBin: true - dev: false + dev: true /@babel/parser/7.16.4: resolution: {integrity: sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==} @@ -1741,7 +1732,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.0_@babel+core@7.16.5: @@ -1751,7 +1742,7 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 '@babel/plugin-proposal-optional-chaining': 7.16.0_@babel+core@7.16.5 dev: true @@ -1763,7 +1754,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-remap-async-to-generator': 7.16.4 '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.5 transitivePeerDependencies: @@ -1778,7 +1769,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 transitivePeerDependencies: - supports-color dev: true @@ -1791,7 +1782,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.16.5 transitivePeerDependencies: - supports-color @@ -1805,7 +1796,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-decorators': 7.16.0_@babel+core@7.16.5 transitivePeerDependencies: - supports-color @@ -1818,7 +1809,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.5 dev: true @@ -1829,7 +1820,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-export-default-from': 7.16.0_@babel+core@7.16.5 dev: true @@ -1840,7 +1831,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.16.5 dev: true @@ -1851,7 +1842,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.5 dev: true @@ -1862,7 +1853,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.5 dev: true @@ -1873,7 +1864,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.5 dev: true @@ -1884,7 +1875,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.5 dev: true @@ -1894,7 +1885,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.12.9 dev: true @@ -1905,10 +1896,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.16.4 + '@babel/compat-data': 7.16.0 '@babel/core': 7.16.5 '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.5 '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.16.5 dev: true @@ -1920,7 +1911,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.5 dev: true @@ -1931,7 +1922,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.5 dev: true @@ -1944,7 +1935,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 transitivePeerDependencies: - supports-color dev: true @@ -1958,7 +1949,7 @@ packages: '@babel/core': 7.16.5 '@babel/helper-annotate-as-pure': 7.16.0 '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.16.5 transitivePeerDependencies: - supports-color @@ -1972,7 +1963,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.16.5: @@ -1981,7 +1972,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.16.5: @@ -1999,7 +1990,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.16.5: @@ -2009,7 +2000,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-decorators/7.16.0_@babel+core@7.16.5: @@ -2019,7 +2010,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.16.5: @@ -2028,7 +2019,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-export-default-from/7.16.0_@babel+core@7.16.5: @@ -2038,7 +2029,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.16.5: @@ -2047,7 +2038,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-flow/7.16.0: @@ -2056,7 +2047,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-flow/7.16.0_@babel+core@7.16.5: @@ -2066,7 +2057,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.16.5: @@ -2084,7 +2075,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-jsx/7.12.1_@babel+core@7.12.9: @@ -2093,7 +2084,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-jsx/7.16.0: @@ -2120,7 +2111,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.16.5: @@ -2129,7 +2120,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.16.5: @@ -2138,7 +2129,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.9: @@ -2147,7 +2138,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.16.5: @@ -2156,7 +2147,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.16.5: @@ -2165,7 +2156,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.16.5: @@ -2174,7 +2165,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.16.5: @@ -2184,7 +2175,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.16.5: @@ -2194,7 +2185,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-typescript/7.16.0_@babel+core@7.16.5: @@ -2204,7 +2195,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-syntax-typescript/7.16.5_@babel+core@7.16.5: @@ -2224,7 +2215,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-async-to-generator/7.16.0_@babel+core@7.16.5: @@ -2235,7 +2226,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-remap-async-to-generator': 7.16.4 transitivePeerDependencies: - supports-color @@ -2248,7 +2239,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-block-scoping/7.16.0_@babel+core@7.16.5: @@ -2258,7 +2249,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-classes/7.16.0_@babel+core@7.16.5: @@ -2271,7 +2262,7 @@ packages: '@babel/helper-annotate-as-pure': 7.16.0 '@babel/helper-function-name': 7.16.0 '@babel/helper-optimise-call-expression': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-replace-supers': 7.16.0 '@babel/helper-split-export-declaration': 7.16.0 globals: 11.12.0 @@ -2286,7 +2277,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-destructuring/7.16.0_@babel+core@7.16.5: @@ -2296,7 +2287,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-dotall-regex/7.16.0_@babel+core@7.16.5: @@ -2307,7 +2298,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-duplicate-keys/7.16.0_@babel+core@7.16.5: @@ -2317,7 +2308,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-exponentiation-operator/7.16.0_@babel+core@7.16.5: @@ -2328,7 +2319,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-flow-strip-types/7.16.0: @@ -2337,7 +2328,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-flow': 7.16.0 dev: true @@ -2348,7 +2339,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-flow': 7.16.0_@babel+core@7.16.5 dev: true @@ -2359,7 +2350,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-function-name/7.16.0_@babel+core@7.16.5: @@ -2370,7 +2361,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-function-name': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-literals/7.16.0_@babel+core@7.16.5: @@ -2380,7 +2371,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-member-expression-literals/7.16.0_@babel+core@7.16.5: @@ -2390,7 +2381,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-modules-amd/7.16.0_@babel+core@7.16.5: @@ -2401,7 +2392,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-module-transforms': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color @@ -2415,7 +2406,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-module-transforms': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-simple-access': 7.16.0 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: @@ -2431,7 +2422,7 @@ packages: '@babel/core': 7.16.5 '@babel/helper-hoist-variables': 7.16.0 '@babel/helper-module-transforms': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-validator-identifier': 7.15.7 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: @@ -2446,7 +2437,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-module-transforms': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 transitivePeerDependencies: - supports-color dev: true @@ -2468,7 +2459,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-object-super/7.16.0_@babel+core@7.16.5: @@ -2478,7 +2469,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-replace-supers': 7.16.0 transitivePeerDependencies: - supports-color @@ -2491,7 +2482,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-parameters/7.16.3_@babel+core@7.16.5: @@ -2501,7 +2492,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-property-literals/7.16.0_@babel+core@7.16.5: @@ -2511,7 +2502,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-react-display-name/7.16.0: @@ -2520,7 +2511,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-react-display-name/7.16.0_@babel+core@7.16.5: @@ -2530,7 +2521,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-react-jsx-development/7.16.0: @@ -2560,7 +2551,7 @@ packages: dependencies: '@babel/helper-annotate-as-pure': 7.16.0 '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-jsx': 7.16.0 '@babel/types': 7.16.0 dev: true @@ -2574,7 +2565,7 @@ packages: '@babel/core': 7.16.5 '@babel/helper-annotate-as-pure': 7.16.0 '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-jsx': 7.16.0_@babel+core@7.16.5 '@babel/types': 7.16.0 dev: true @@ -2586,7 +2577,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/helper-annotate-as-pure': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-react-pure-annotations/7.16.0_@babel+core@7.16.5: @@ -2597,7 +2588,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-annotate-as-pure': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-regenerator/7.16.0_@babel+core@7.16.5: @@ -2617,7 +2608,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-runtime/7.15.0_@babel+core@7.16.5: @@ -2628,7 +2619,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 babel-plugin-polyfill-corejs2: 0.2.3_@babel+core@7.16.5 babel-plugin-polyfill-corejs3: 0.2.4_@babel+core@7.16.5 babel-plugin-polyfill-regenerator: 0.2.3_@babel+core@7.16.5 @@ -2644,7 +2635,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-spread/7.16.0_@babel+core@7.16.5: @@ -2654,7 +2645,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 dev: true @@ -2665,7 +2656,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-template-literals/7.16.0_@babel+core@7.16.5: @@ -2675,7 +2666,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-typeof-symbol/7.16.0_@babel+core@7.16.5: @@ -2685,7 +2676,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-typescript/7.16.1_@babel+core@7.16.5: @@ -2696,7 +2687,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-syntax-typescript': 7.16.0_@babel+core@7.16.5 transitivePeerDependencies: - supports-color @@ -2709,7 +2700,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/plugin-transform-unicode-regex/7.16.0_@babel+core@7.16.5: @@ -2720,7 +2711,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 dev: true /@babel/preset-env/7.16.4_@babel+core@7.16.5: @@ -2732,7 +2723,7 @@ packages: '@babel/compat-data': 7.16.4 '@babel/core': 7.16.5 '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-validator-option': 7.14.5 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.2_@babel+core@7.16.5 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.0_@babel+core@7.16.5 @@ -2802,7 +2793,7 @@ packages: babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.16.5 babel-plugin-polyfill-corejs3: 0.4.0_@babel+core@7.16.5 babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.16.5 - core-js-compat: 3.19.3 + core-js-compat: 3.20.1 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -2814,7 +2805,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-validator-option': 7.14.5 '@babel/plugin-transform-flow-strip-types': 7.16.0 dev: true @@ -2826,7 +2817,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-validator-option': 7.14.5 '@babel/plugin-transform-flow-strip-types': 7.16.0_@babel+core@7.16.5 dev: true @@ -2837,7 +2828,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/plugin-proposal-unicode-property-regex': 7.16.0_@babel+core@7.16.5 '@babel/plugin-transform-dotall-regex': 7.16.0_@babel+core@7.16.5 '@babel/types': 7.16.0 @@ -2850,7 +2841,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-validator-option': 7.14.5 '@babel/plugin-transform-react-display-name': 7.16.0 '@babel/plugin-transform-react-jsx': 7.16.0 @@ -2865,7 +2856,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-validator-option': 7.14.5 '@babel/plugin-transform-react-display-name': 7.16.0_@babel+core@7.16.5 '@babel/plugin-transform-react-jsx': 7.16.0_@babel+core@7.16.5 @@ -2880,7 +2871,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@babel/helper-validator-option': 7.14.5 '@babel/plugin-transform-typescript': 7.16.1_@babel+core@7.16.5 transitivePeerDependencies: @@ -2950,23 +2941,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false - - /@babel/traverse/7.16.3: - resolution: {integrity: sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.0 - '@babel/generator': 7.16.0 - '@babel/helper-function-name': 7.16.0 - '@babel/helper-hoist-variables': 7.16.0 - '@babel/helper-split-export-declaration': 7.16.0 - '@babel/parser': 7.16.4 - '@babel/types': 7.16.0 - debug: 4.3.2 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color dev: true /@babel/traverse/7.16.5: @@ -2985,7 +2959,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/types/7.16.0: resolution: {integrity: sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==} @@ -3611,11 +3584,6 @@ packages: web-ext-types: 3.2.1 dev: true - /@discoveryjs/json-ext/0.5.5: - resolution: {integrity: sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==} - engines: {node: '>=10.0.0'} - dev: true - /@discoveryjs/json-ext/0.5.6: resolution: {integrity: sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==} engines: {node: '>=10.0.0'} @@ -3871,7 +3839,7 @@ packages: resolution: {integrity: sha512-UdkhFWzWcJCZVsj1O/H8/oqj/0RVYjLc1OhPjBrQdALAkQHpCp8xXI4WLnuGTADqTdJZww0NtgwG+TRPkXt27w==} dependencies: crc-32: 1.2.0 - ethereumjs-util: 7.1.3 + ethereumjs-util: 7.1.0 /@ethereumjs/tx/3.3.0: resolution: {integrity: sha512-yTwEj2lVzSMgE6Hjw9Oa1DZks/nKTWM8Wn4ykDNapBPua2f4nXO3qKnni86O6lgDj5fVNRqbDsD0yy7/XNGDEA==} @@ -3978,6 +3946,12 @@ packages: dependencies: '@ethersproject/logger': 5.4.0 + /@ethersproject/bytes/5.5.0: + resolution: {integrity: sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==} + dependencies: + '@ethersproject/logger': 5.5.0 + dev: false + /@ethersproject/constants/5.4.0: resolution: {integrity: sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==} dependencies: @@ -4069,6 +4043,10 @@ packages: /@ethersproject/logger/5.4.0: resolution: {integrity: sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ==} + /@ethersproject/logger/5.5.0: + resolution: {integrity: sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==} + dev: false + /@ethersproject/networks/5.4.1: resolution: {integrity: sha512-8SvowCKz9Uf4xC5DTKI8+il8lWqOr78kmiqAVLYT9lzB8aSmJHQMD1GSuJI0CW4hMAnzocpGpZLgiMdzsNSPig==} dependencies: @@ -4221,6 +4199,14 @@ packages: hash.js: 1.1.7 dev: false + /@ethersproject/sha2/5.5.0: + resolution: {integrity: sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==} + dependencies: + '@ethersproject/bytes': 5.5.0 + '@ethersproject/logger': 5.5.0 + hash.js: 1.1.7 + dev: false + /@ethersproject/signing-key/5.4.0: resolution: {integrity: sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==} dependencies: @@ -4706,6 +4692,87 @@ packages: resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} dev: false + /@metaplex-foundation/mpl-auction/0.0.2: + resolution: {integrity: sha512-4UDDi8OiQr+D6KrCNTRrqf/iDD6vi5kzRtMRtuNpywTyhX9hnbr1Zkc6Ncncbh9GZhbhcn+/h5wHgzh+xA6TnQ==} + dependencies: + '@metaplex-foundation/mpl-core': 0.0.2 + '@solana/spl-token': 0.1.8 + '@solana/web3.js': 1.31.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@metaplex-foundation/mpl-core/0.0.2: + resolution: {integrity: sha512-UUJ4BlYiWdDegAWmjsNQiNehwYU3QfSFWs3sv4VX0J6/ZrQ28zqosGhQ+I2ZCTEy216finJ82sZWNjuwSWCYyQ==} + dependencies: + '@solana/web3.js': 1.31.0 + bs58: 4.0.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@metaplex-foundation/mpl-metaplex/0.0.5: + resolution: {integrity: sha512-VRt3fiO/7/jcHwN+gWvTtpp+7wYhIcEDzMG1lOeV3yYyhz9fAT0E3LqEl2moifNTAopGCE4zYa84JA/OW+1YvA==} + dependencies: + '@metaplex-foundation/mpl-auction': 0.0.2 + '@metaplex-foundation/mpl-core': 0.0.2 + '@metaplex-foundation/mpl-token-metadata': 0.0.2 + '@metaplex-foundation/mpl-token-vault': 0.0.2 + '@solana/spl-token': 0.1.8 + '@solana/web3.js': 1.31.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@metaplex-foundation/mpl-token-metadata/0.0.2: + resolution: {integrity: sha512-yKJPhFlX8MkNbSCi1iwHn4xKmguLK/xFhYa+RuYdL2seuT4CKXHj2CnR2AkcdQj46Za4/nR3jZcRFKq7QlnvBw==} + dependencies: + '@metaplex-foundation/mpl-core': 0.0.2 + '@solana/spl-token': 0.1.8 + '@solana/web3.js': 1.31.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@metaplex-foundation/mpl-token-vault/0.0.2: + resolution: {integrity: sha512-JiVcow8OzUGW0KTs/E1QrAdmYGqE9EGKE6cc2gxNNBYqDeVdjYlgEa64IiGvNF9rvbI2g2Z3jw0mYuA9LD9S/A==} + dependencies: + '@metaplex-foundation/mpl-core': 0.0.2 + '@solana/spl-token': 0.1.8 + '@solana/web3.js': 1.31.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@metaplex/js/4.11.2: + resolution: {integrity: sha512-BJvbYGz0l8e2iZSSFMeOr4n7cNvPMYhkrl/vuXeqZR0EoyhfCQgobE2QHUyEKPMwe6VxWu9VQ7Ra1oBlhC2xTg==} + dependencies: + '@metaplex-foundation/mpl-auction': 0.0.2 + '@metaplex-foundation/mpl-core': 0.0.2 + '@metaplex-foundation/mpl-metaplex': 0.0.5 + '@metaplex-foundation/mpl-token-metadata': 0.0.2 + '@metaplex-foundation/mpl-token-vault': 0.0.2 + '@solana/spl-token': 0.1.8 + '@solana/web3.js': 1.31.0 + '@types/bs58': 4.0.1 + axios: 0.21.4 + bn.js: 5.2.0 + borsh: 0.4.0 + bs58: 4.0.1 + buffer: 6.0.3 + crypto-hash: 1.3.0 + form-data: 4.0.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false + /@mrmlnc/readdir-enhanced/2.2.1: resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} engines: {node: '>=4'} @@ -5047,6 +5114,16 @@ packages: resolution: {integrity: sha512-tAG9LWg8+M2CMu7hIsqHPaTyG4uDzjr6mhvH96LvOpLZZj6tgzTluBt+LsCf1/QaYrlis6pITvpIaIhE+iZB+Q==} dev: false + /@peculiar/asn1-schema/2.0.38: + resolution: {integrity: sha512-zZ64UpCTm9me15nuCpPgJghSdbEm8atcDQPCyK+bKXjZAQ1735NCZXCSCfbckbQ4MH36Rm9403n/qMq77LFDzQ==} + dependencies: + '@types/asn1js': 2.0.2 + asn1js: 2.2.0 + pvtsutils: 1.2.1 + tslib: 2.3.1 + dev: false + optional: true + /@peculiar/asn1-schema/2.0.44: resolution: {integrity: sha512-uaCnjQ9A9WwQSMuDJcNOCYEPXTahgKbFMvI7eMOMd8lXgx0J1eU7F3BoMsK5PFxa3dVUxjSQbaOjfgGoeHGgoQ==} dependencies: @@ -5063,16 +5140,16 @@ packages: tslib: 2.3.1 dev: false - /@peculiar/webcrypto/1.2.3: - resolution: {integrity: sha512-q7wDfZy3k/tpnsYB23/MyyDkjn6IdHh8w+xwoVMS5cu6CjVoFzngXDZEOOuSE4zus2yO6ciQhhHxd4XkLpwVnQ==} + /@peculiar/webcrypto/1.2.2: + resolution: {integrity: sha512-xb8MEgfq93TAkIb70kn+llZgIFQwhdiCiOJHzekVTAS74Y+ae5bZn8KEsuycop/LXAm1kx+Kad/v9eTDTWuY/w==} engines: {node: '>=10.12.0'} requiresBuild: true dependencies: - '@peculiar/asn1-schema': 2.0.44 + '@peculiar/asn1-schema': 2.0.38 '@peculiar/json-schema': 1.1.12 pvtsutils: 1.2.1 tslib: 2.3.1 - webcrypto-core: 1.4.0 + webcrypto-core: 1.3.0 dev: false optional: true @@ -5168,7 +5245,7 @@ packages: error-stack-parser: 2.0.6 find-up: 5.0.0 html-entities: 2.3.2 - loader-utils: 2.0.2 + loader-utils: 2.0.1 react-refresh: 0.11.0 schema-utils: 3.1.1 source-map: 0.7.3 @@ -5349,6 +5426,58 @@ packages: resolution: {integrity: sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==} dev: false + /@solana/buffer-layout/3.0.0: + resolution: {integrity: sha512-MVdgAKKL39tEs0l8je0hKaXLQFb7Rdfb0Xg2LjFZd8Lfdazkg6xiS98uAZrEKvaoF3i4M95ei9RydkGIDMeo3w==} + engines: {node: '>=5.10'} + dependencies: + buffer: 6.0.3 + dev: false + + /@solana/spl-token-registry/0.2.1301: + resolution: {integrity: sha512-6T5AL18n9PxhGAA3useBON1DVxZg8QbrmkD9dNTzvPZQdrzSi8Hha2GmJst4kZSPAQ77l6GlcIw8ibQTAm3SZQ==} + engines: {node: '>=10'} + dependencies: + cross-fetch: 3.0.6 + dev: false + + /@solana/spl-token/0.1.8: + resolution: {integrity: sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==} + engines: {node: '>= 10'} + dependencies: + '@babel/runtime': 7.16.5 + '@solana/web3.js': 1.31.0 + bn.js: 5.2.0 + buffer: 6.0.3 + buffer-layout: 1.2.2 + dotenv: 10.0.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@solana/web3.js/1.31.0: + resolution: {integrity: sha512-7nHHx1JNFnrt15e9y8m38I/EJCbaB+bFC3KZVM1+QhybCikFxGMtGA5r7PDC3GEL1R2RZA8yKoLkDKo3vzzqnw==} + engines: {node: '>=12.20.0'} + dependencies: + '@babel/runtime': 7.16.3 + '@ethersproject/sha2': 5.5.0 + '@solana/buffer-layout': 3.0.0 + bn.js: 5.2.0 + borsh: 0.4.0 + bs58: 4.0.1 + buffer: 6.0.1 + cross-fetch: 3.1.4 + jayson: 3.6.5 + js-sha3: 0.8.0 + rpc-websockets: 7.4.16 + secp256k1: 4.0.2 + superstruct: 0.14.2 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /@storybook/addon-actions/6.4.9_2f50eb45a1501445764b3dbbd8573d7c: resolution: {integrity: sha512-L1N66p/vr+wPUBfrH3qffjNAcWSS/wvuL370T7cWxALA9LLA8yY9U2EpITc5btuCC5QOxApCeyHkFnrBhNa94g==} peerDependencies: @@ -5536,7 +5665,7 @@ packages: nanoid: 3.1.30 p-limit: 3.1.0 prettier: 2.5.1 - prop-types: 15.7.2 + prop-types: 15.8.0 react: 18.0.0-rc.0 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 react-element-to-jsx-string: 14.3.4_757a802188413a36d4f24237d13b8e90 @@ -5748,7 +5877,7 @@ packages: core-js: 3.19.3 global: 4.4.0 memoizerific: 1.11.3 - prop-types: 15.7.2 + prop-types: 15.8.0 react: 18.0.0-rc.0 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 regenerator-runtime: 0.13.9 @@ -6162,7 +6291,7 @@ packages: memoizerific: 1.11.3 overlayscrollbars: 1.13.1 polished: 4.1.3 - prop-types: 15.7.2 + prop-types: 15.8.0 react: 18.0.0-rc.0 react-colorful: 5.5.1_757a802188413a36d4f24237d13b8e90 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 @@ -6392,7 +6521,7 @@ packages: util-deprecate: 1.0.2 watchpack: 2.3.1 webpack: 4.46.0 - ws: 8.3.0 + ws: 8.4.0 transitivePeerDependencies: - '@types/react' - acorn @@ -6465,7 +6594,7 @@ packages: util-deprecate: 1.0.2 watchpack: 2.3.1 webpack: 4.46.0 - ws: 8.3.0 + ws: 8.4.0 transitivePeerDependencies: - '@types/react' - acorn @@ -6540,7 +6669,7 @@ packages: util-deprecate: 1.0.2 watchpack: 2.3.1 webpack: 4.46.0 - ws: 8.3.0 + ws: 8.4.0 transitivePeerDependencies: - '@types/react' - acorn @@ -6658,8 +6787,8 @@ packages: resolution: {integrity: sha512-zbgsx9vY5XOA9bBmyw+KyuRspFXAjEJ6I3d/6Z3G1kNBeOEj9i3DT7O99Rd/THfL/3mWl8DJ/7CJVPk1ZYxunA==} dependencies: '@babel/core': 7.16.5 - '@babel/generator': 7.16.0 - '@babel/parser': 7.16.4 + '@babel/generator': 7.16.5 + '@babel/parser': 7.16.6 '@babel/plugin-transform-react-jsx': 7.16.0_@babel+core@7.16.5 '@babel/preset-env': 7.16.4_@babel+core@7.16.5 '@babel/traverse': 7.16.5 @@ -7427,6 +7556,12 @@ packages: '@types/node': 16.11.17 dev: true + /@types/bs58/4.0.1: + resolution: {integrity: sha512-yfAgiWgVLjFCmRv8zAcOIHywYATEwiTVccTLnRp6UxTNavT55M9d/uhK3T03St/+8/z/wW+CRjGKUNmEqoHHCA==} + dependencies: + base-x: 3.0.8 + dev: false + /@types/chrome/0.0.136: resolution: {integrity: sha512-XDEiRhLkMd+SB7Iw3ZUIj/fov3wLd4HyTdLltVszkgl1dBfc3Rb7oPMVZ2Mz2TLqnF7Ow+StbR8E7r9lqpb4DA==} dependencies: @@ -7459,7 +7594,6 @@ packages: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: '@types/node': 16.11.17 - dev: true /@types/d3-array/1.2.9: resolution: {integrity: sha512-E/7RgPr2ylT5dWG0CswMi9NpFcjIEDqLcUSBgNHe/EMahfqYaTx4zhcggG3khqoEB/leY4Vl6nTSbwLUPjXceA==} @@ -7664,12 +7798,12 @@ packages: /@types/eslint-scope/3.7.1: resolution: {integrity: sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==} dependencies: - '@types/eslint': 8.2.0 + '@types/eslint': 7.28.2 '@types/estree': 0.0.50 dev: true - /@types/eslint/8.2.0: - resolution: {integrity: sha512-74hbvsnc+7TEDa1z5YLSe4/q8hGYB3USNvCuzHUJrjPV6hXaq8IXcngCrHkuvFt0+8rFz7xYXrHgNayIX0UZvQ==} + /@types/eslint/7.28.2: + resolution: {integrity: sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==} dependencies: '@types/estree': 0.0.50 '@types/json-schema': 7.0.9 @@ -7697,7 +7831,6 @@ packages: '@types/node': 16.11.17 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 - dev: true /@types/express/4.17.13: resolution: {integrity: sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==} @@ -7842,7 +7975,6 @@ packages: /@types/lodash/4.14.177: resolution: {integrity: sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==} - dev: true /@types/lodash/4.14.178: resolution: {integrity: sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==} @@ -7874,10 +8006,6 @@ packages: form-data: 3.0.1 dev: true - /@types/node/16.11.10: - resolution: {integrity: sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==} - dev: false - /@types/node/16.11.12: resolution: {integrity: sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==} dev: true @@ -7888,6 +8016,10 @@ packages: /@types/node/16.11.6: resolution: {integrity: sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==} + /@types/node/16.11.7: + resolution: {integrity: sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==} + dev: false + /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -7944,11 +8076,9 @@ packages: /@types/qs/6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - dev: true /@types/range-parser/1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - dev: true /@types/react-avatar-editor/10.3.6: resolution: {integrity: sha512-2r9+WYriqXIyjOTxy/DSiCUhr2TBiYD4Gzbyych1WUEwdPboNj0JRz9B5868TwiGgKD61jdWYyKy/OutHs7L6A==} @@ -8232,6 +8362,12 @@ packages: source-map: 0.6.1 dev: true + /@types/ws/7.4.7: + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + dependencies: + '@types/node': 16.11.7 + dev: false + /@types/ws/8.2.2: resolution: {integrity: sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==} dependencies: @@ -8790,7 +8926,6 @@ packages: dependencies: jsonparse: 1.3.1 through: 2.3.8 - dev: true /abab/2.0.5: resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} @@ -8826,12 +8961,12 @@ packages: acorn: 7.4.1 acorn-walk: 7.2.0 - /acorn-import-assertions/1.8.0_acorn@8.6.0: + /acorn-import-assertions/1.8.0_acorn@8.5.0: resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.6.0 + acorn: 8.5.0 dev: true /acorn-jsx/5.3.2_acorn@7.4.1: @@ -8888,12 +9023,6 @@ packages: hasBin: true dev: true - /acorn/8.6.0: - resolution: {integrity: sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - /acorn/8.7.0: resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} engines: {node: '>=0.4.0'} @@ -8982,7 +9111,7 @@ packages: ajv: optional: true dependencies: - ajv: 8.8.2 + ajv: 8.8.1 dev: true /ajv-keywords/3.5.2_ajv@6.12.6: @@ -8992,12 +9121,12 @@ packages: dependencies: ajv: 6.12.6 - /ajv-keywords/5.1.0_ajv@8.8.2: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + /ajv-keywords/5.0.0_ajv@8.8.1: + resolution: {integrity: sha512-ULd1QMjRoH6JDNUQIfDLrlE+OgZlFaxyYCjzt58uNuUQtKXt8/U+vK/8Ql0gyn/C5mqZzUWtKMqr/4YquvTrWA==} peerDependencies: - ajv: ^8.8.2 + ajv: ^8.0.0 dependencies: - ajv: 8.8.2 + ajv: 8.8.1 fast-deep-equal: 3.1.3 dev: true @@ -9018,8 +9147,8 @@ packages: uri-js: 4.4.1 dev: false - /ajv/8.8.2: - resolution: {integrity: sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==} + /ajv/8.8.1: + resolution: {integrity: sha512-6CiMNDrzv0ZR916u2T+iRunnD60uWmNn8SkdB44/6stVORUg0aAkWO7PkOhpCmjmW8f2I/G/xnowD66fxGyQJg==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -9394,8 +9523,8 @@ packages: minimalistic-assert: 1.0.1 safer-buffer: 2.1.2 - /asn1/0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + /asn1/0.2.4: + resolution: {integrity: sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==} dependencies: safer-buffer: 2.1.2 dev: false @@ -9513,7 +9642,7 @@ packages: hasBin: true dependencies: browserslist: 4.19.1 - caniuse-lite: 1.0.30001286 + caniuse-lite: 1.0.30001292 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -9566,6 +9695,14 @@ packages: - debug dev: false + /axios/0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + dependencies: + follow-redirects: 1.14.5 + transitivePeerDependencies: + - debug + dev: false + /babel-code-frame/6.26.0: resolution: {integrity: sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=} dependencies: @@ -9818,7 +9955,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.1.0 @@ -9900,7 +10037,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.16.5 - core-js-compat: 3.19.3 + core-js-compat: 3.20.1 transitivePeerDependencies: - supports-color dev: true @@ -9911,8 +10048,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.5 - '@babel/helper-define-polyfill-provider': 0.2.3_@babel+core@7.16.5 - core-js-compat: 3.17.3 + '@babel/helper-define-polyfill-provider': 0.2.4_@babel+core@7.16.5 + core-js-compat: 3.20.1 transitivePeerDependencies: - supports-color dev: false @@ -9924,7 +10061,7 @@ packages: dependencies: '@babel/core': 7.16.5 '@babel/helper-define-polyfill-provider': 0.3.0_@babel+core@7.16.5 - core-js-compat: 3.19.3 + core-js-compat: 3.20.1 transitivePeerDependencies: - supports-color dev: true @@ -10514,6 +10651,15 @@ packages: resolution: {integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24=} dev: true + /borsh/0.4.0: + resolution: {integrity: sha512-aX6qtLya3K0AkT66CmYWCCDr77qsE9arV05OmdFpmat9qu8Pg9J5tBUPDztAW5fNh/d/MyVG/OYziP52Ndzx1g==} + dependencies: + '@types/bn.js': 4.11.6 + bn.js: 5.2.0 + bs58: 4.0.1 + text-encoding-utf-8: 1.0.2 + dev: false + /boxen/4.2.0: resolution: {integrity: sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==} engines: {node: '>=8'} @@ -10641,8 +10787,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001286 - electron-to-chromium: 1.4.16 + caniuse-lite: 1.0.30001292 + electron-to-chromium: 1.4.28 escalade: 3.1.1 node-releases: 1.1.77 dev: true @@ -10657,6 +10803,7 @@ packages: escalade: 3.1.1 node-releases: 2.0.1 picocolors: 1.0.0 + dev: true /browserslist/4.19.1: resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==} @@ -10668,7 +10815,6 @@ packages: escalade: 3.1.1 node-releases: 2.0.1 picocolors: 1.0.0 - dev: true /bs-logger/0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -10715,6 +10861,11 @@ packages: resolution: {integrity: sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==} dev: true + /buffer-layout/1.2.2: + resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} + engines: {node: '>=4.5'} + dev: false + /buffer-to-arraybuffer/0.0.5: resolution: {integrity: sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=} @@ -10735,6 +10886,13 @@ packages: ieee754: 1.2.1 dev: false + /buffer/6.0.1: + resolution: {integrity: sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + /buffer/6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: @@ -10923,6 +11081,7 @@ packages: /caniuse-lite/1.0.30001286: resolution: {integrity: sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==} + dev: true /caniuse-lite/1.0.30001292: resolution: {integrity: sha512-jnT4Tq0Q4ma+6nncYQVe7d73kmDmE9C3OGTx3MvW7lBM/eY1S1DZTMBON7dqV481RhNiS5OxD7k9JQvmDOTirw==} @@ -11061,6 +11220,10 @@ packages: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} dev: true + /ci-info/3.2.0: + resolution: {integrity: sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==} + dev: true + /ci-info/3.3.0: resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} dev: true @@ -11083,6 +11246,11 @@ packages: inherits: 2.0.4 safe-buffer: 5.2.1 + /circular-json/0.5.9: + resolution: {integrity: sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==} + deprecated: CircularJSON is in maintenance only, flatted is its successor. + dev: false + /cjs-module-lexer/1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true @@ -11611,26 +11779,11 @@ packages: - webpack-command dev: true - /core-js-compat/3.17.3: - resolution: {integrity: sha512-+in61CKYs4hQERiADCJsdgewpdl/X0GhEX77pjKgbeibXviIt2oxEjTc8O2fqHX8mDdBrDvX8MYD/RYsBv4OiA==} - dependencies: - browserslist: 4.18.1 - semver: 7.0.0 - dev: false - - /core-js-compat/3.19.3: - resolution: {integrity: sha512-59tYzuWgEEVU9r+SRgceIGXSSUn47JknoiXW6Oq7RW8QHjXWz3/vp8pa7dbtuVu40sewz3OP3JmQEcDdztrLhA==} - dependencies: - browserslist: 4.18.1 - semver: 7.0.0 - dev: true - /core-js-compat/3.20.1: resolution: {integrity: sha512-AVhKZNpqMV3Jz8hU0YEXXE06qoxtQGsAqU0u1neUngz5IusDJRX/ZJ6t3i7mS7QxNyEONbCo14GprkBrxPlTZA==} dependencies: browserslist: 4.19.1 semver: 7.0.0 - dev: true /core-js-pure/3.19.3: resolution: {integrity: sha512-N3JruInmCyt7EJj5mAq3csCgGYgiSqu7p7TQp2KOztr180/OAIxyIvL1FCjzgmQk/t3Yniua50Fsak7FShI9lA==} @@ -11775,6 +11928,12 @@ packages: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true + /cross-fetch/3.0.6: + resolution: {integrity: sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==} + dependencies: + node-fetch: 2.6.1 + dev: false + /cross-fetch/3.1.4: resolution: {integrity: sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==} dependencies: @@ -11836,6 +11995,11 @@ packages: randombytes: 2.1.0 randomfill: 1.0.4 + /crypto-hash/1.3.0: + resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} + engines: {node: '>=8'} + dev: false + /crypto-js/3.3.0: resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==} dev: false @@ -12481,6 +12645,11 @@ packages: slash: 3.0.0 dev: true + /delay/5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} + dev: false + /delayed-stream/1.0.0: resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} engines: {node: '>=0.4.0'} @@ -12716,6 +12885,11 @@ packages: resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} dev: true + /dotenv/10.0.0: + resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} + engines: {node: '>=10'} + dev: false + /dotenv/8.6.0: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} @@ -12735,7 +12909,7 @@ packages: dependencies: '@babel/runtime': 7.16.5 compute-scroll-into-view: 1.0.17 - prop-types: 15.7.2 + prop-types: 15.8.0 react: 18.0.0-rc.0 react-is: 17.0.2 tslib: 2.3.1 @@ -12798,6 +12972,7 @@ packages: /electron-to-chromium/1.4.16: resolution: {integrity: sha512-BQb7FgYwnu6haWLU63/CdVW+9xhmHls3RCQUFiV4lvw3wimEHTVcUk2hkuZo76QhR8nnDdfZE7evJIZqijwPdA==} + dev: true /electron-to-chromium/1.4.28: resolution: {integrity: sha512-Gzbf0wUtKfyPaqf0Plz+Ctinf9eQIzxEqBHwSvbGfeOm9GMNdLxyu1dNiCUfM+x6r4BE0xUJNh3Nmg9gfAtTmg==} @@ -13092,6 +13267,16 @@ packages: resolution: {integrity: sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=} dev: false + /es6-promise/4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + dev: false + + /es6-promisify/5.0.0: + resolution: {integrity: sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=} + dependencies: + es6-promise: 4.2.8 + dev: false + /es6-set/0.1.5: resolution: {integrity: sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=} dependencies: @@ -13213,7 +13398,7 @@ packages: minimatch: 3.0.4 object.values: 1.1.5 resolve: 1.20.0 - tsconfig-paths: 3.12.0 + tsconfig-paths: 3.11.0 dev: true /eslint-plugin-prettier/4.0.0_94e1b6d3ce6ea916847122712570e9ae: @@ -13272,7 +13457,7 @@ packages: eslint: '>=7.32.0' dependencies: '@babel/helper-validator-identifier': 7.15.7 - ci-info: 3.3.0 + ci-info: 3.2.0 clean-regexp: 1.0.0 eslint: 8.5.0 eslint-template-visitor: 2.3.2_eslint@8.5.0 @@ -13538,7 +13723,7 @@ packages: /eth-rpc-errors/4.0.3: resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} dependencies: - fast-safe-stringify: 2.0.8 + fast-safe-stringify: 2.1.1 dev: false /eth-sig-util/1.4.2: @@ -13699,7 +13884,6 @@ packages: ethereum-cryptography: 0.1.3 ethjs-util: 0.1.6 rlp: 2.2.7 - dev: false /ethereumjs-util/7.1.3: resolution: {integrity: sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw==} @@ -13710,6 +13894,7 @@ packages: create-hash: 1.2.0 ethereum-cryptography: 0.1.3 rlp: 2.2.7 + dev: false /ethereumjs-vm/2.6.0: resolution: {integrity: sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==} @@ -13849,7 +14034,6 @@ packages: dependencies: is-hex-prefixed: 1.0.0 strip-hex-prefix: 1.0.0 - dev: false /event-emitter/0.3.5: resolution: {integrity: sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=} @@ -13867,7 +14051,6 @@ packages: /eventemitter3/4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - dev: true /events/3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} @@ -13920,7 +14103,7 @@ packages: merge-stream: 2.0.0 npm-run-path: 4.0.1 onetime: 5.1.2 - signal-exit: 3.0.6 + signal-exit: 3.0.5 strip-final-newline: 2.0.0 dev: true @@ -14093,6 +14276,11 @@ packages: engines: {'0': node >=0.6.0} dev: false + /eyes/0.1.8: + resolution: {integrity: sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=} + engines: {node: '> 0.1.90'} + dev: false + /fake-merkle-patricia-tree/1.0.1: resolution: {integrity: sha1-S4w6z7Ugr635hgsfFM2M40As3dM=} dependencies: @@ -14157,8 +14345,8 @@ packages: /fast-levenshtein/2.0.6: resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} - /fast-safe-stringify/2.0.8: - resolution: {integrity: sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag==} + /fast-safe-stringify/2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} dev: false /fast-shallow-equal/1.0.0: @@ -14467,7 +14655,7 @@ packages: resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} engines: {node: '>=6.11.5', yarn: '>=1.0.0'} dependencies: - '@babel/code-frame': 7.10.4 + '@babel/code-frame': 7.16.0 chalk: 2.4.2 micromatch: 3.1.10 minimatch: 3.0.4 @@ -15183,7 +15371,7 @@ packages: dependencies: ws: 7.5.5 optionalDependencies: - '@peculiar/webcrypto': 1.2.3 + '@peculiar/webcrypto': 1.2.2 emailjs: 2.2.0 text-encoding: 0.7.0 transitivePeerDependencies: @@ -15266,6 +15454,11 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + /has-flag/5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + dev: true + /has-glob/1.0.0: resolution: {integrity: sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=} engines: {node: '>=0.10.0'} @@ -15544,7 +15737,9 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.9.0 + terser: 5.10.0 + transitivePeerDependencies: + - acorn dev: true /html-parse-stringify/3.0.1: @@ -15603,6 +15798,8 @@ packages: pretty-error: 4.0.0 tapable: 2.2.1 webpack: 5.65.0 + transitivePeerDependencies: + - acorn dev: true /htmlparser2/6.1.0: @@ -16485,6 +16682,14 @@ packages: unfetch: 3.1.2 dev: false + /isomorphic-ws/4.0.1_ws@7.5.5: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + dependencies: + ws: 7.5.5 + dev: false + /isstream/0.1.2: resolution: {integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=} dev: false @@ -16511,7 +16716,7 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.16.5 - '@babel/parser': 7.16.4 + '@babel/parser': 7.16.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -16574,6 +16779,31 @@ packages: iterate-iterator: 1.0.2 dev: true + /jayson/3.6.5: + resolution: {integrity: sha512-wmOjX+eQcnCDyPF4KORomaIj9wj3h0B5VEbeD0+2VHfTfErB+h1zpR7oBkgCZp36AFjp3+a4CLz6U72BYpFHAw==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@types/connect': 3.4.35 + '@types/express-serve-static-core': 4.17.25 + '@types/lodash': 4.14.177 + '@types/node': 16.11.7 + '@types/ws': 7.4.7 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1_ws@7.5.5 + json-stringify-safe: 5.0.1 + JSONStream: 1.3.5 + lodash: 4.17.21 + uuid: 3.4.0 + ws: 7.5.5 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /jest-changed-files/27.4.2: resolution: {integrity: sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -17076,7 +17306,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 16.11.12 + '@types/node': 16.11.17 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -17664,6 +17894,7 @@ packages: colorette: 2.0.16 commander: 8.3.0 debug: 4.3.3_supports-color@9.2.1 + enquirer: 2.3.6 execa: 5.1.1 lilconfig: 2.0.4 listr2: 3.13.5 @@ -17687,6 +17918,7 @@ packages: optional: true dependencies: cli-truncate: 2.1.0 + clone: 2.1.2 colorette: 2.0.16 log-update: 4.0.0 p-map: 4.0.0 @@ -17742,6 +17974,15 @@ packages: json5: 2.2.0 dev: true + /loader-utils/2.0.1: + resolution: {integrity: sha512-g4miPa9uUrZz4iElkaVJgDFwKJGh8aQGM7pUL4ejXl6cu7kSb30seQOVGNMP6sW8j7DW77X68hJZ+GM7UGhXeQ==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.0 + dev: true + /loader-utils/2.0.2: resolution: {integrity: sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==} engines: {node: '>=8.9.0'} @@ -18072,6 +18313,13 @@ packages: safe-buffer: 5.1.2 dev: false + /memfs/3.3.0: + resolution: {integrity: sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.3 + dev: true + /memfs/3.4.0: resolution: {integrity: sha512-o/RfP0J1d03YwsAxyHxAYs2kyJp55AFkMazlFAZFR2I2IXkxiUTXRabJ6RmNNCQ83LAD2jy52Khj0m3OffpNdA==} engines: {node: '>= 4.0.0'} @@ -19522,7 +19770,7 @@ packages: resolution: {integrity: sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==} engines: {node: '>=10'} dependencies: - '@babel/runtime': 7.16.3 + '@babel/runtime': 7.16.5 dev: true /portfinder/1.0.28: @@ -20077,8 +20325,8 @@ packages: react-dom: '>=0.14.0' dependencies: '@babel/plugin-transform-runtime': 7.15.0_@babel+core@7.16.5 - '@babel/runtime': 7.16.3 - prop-types: 15.7.2 + '@babel/runtime': 7.16.5 + prop-types: 15.8.0 react: 18.0.0-rc.0 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 transitivePeerDependencies: @@ -20150,8 +20398,8 @@ packages: hasBin: true dependencies: '@babel/core': 7.16.5 - '@babel/generator': 7.16.0 - '@babel/runtime': 7.16.3 + '@babel/generator': 7.16.5 + '@babel/runtime': 7.16.5 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 @@ -20223,7 +20471,7 @@ packages: dependencies: '@babel/runtime': 7.16.5 invariant: 2.2.4 - prop-types: 15.7.2 + prop-types: 15.8.0 react: 18.0.0-rc.0 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 react-fast-compare: 3.2.0 @@ -20268,9 +20516,9 @@ packages: peerDependencies: react: ^16.8.4 || ^17.0.0 dependencies: - '@babel/runtime': 7.16.3 + '@babel/runtime': 7.16.5 is-dom: 1.1.0 - prop-types: 15.7.2 + prop-types: 15.8.0 react: 18.0.0-rc.0 dev: true @@ -20286,7 +20534,7 @@ packages: react: ^16.6.0 || ^17.0.0 react-dom: ^16.6.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.16.3 + '@babel/runtime': 7.16.5 '@popperjs/core': 2.11.0 react: 18.0.0-rc.0 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 @@ -20330,17 +20578,18 @@ packages: tiny-warning: 1.0.3 dev: false - /react-router-dom/6.0.0-beta.4_154c53788755629e2430b224cbac559e: - resolution: {integrity: sha512-yppoRR8S7FxNMG6OGFn9DPJBPLsjeIuQa7GYnkRlgOSTBSPhAQpD6z7rvRzZnesQ9r6W+ibD9RvnqTcna4w/Pg==} + /react-router-dom/6.0.0-beta.0_154c53788755629e2430b224cbac559e: + resolution: {integrity: sha512-36yNNGMT8RB9FRPL9nKJi6HKDkgOakU+o/2hHpSzR6e37gN70MpOU6QQlmif4oAWWBwjyGc3ZNOMFCsFuHUY5w==} peerDependencies: history: '>=5' react: '>=16.8' react-dom: '>=16.8' dependencies: history: 5.2.0 + prop-types: 15.8.0 react: 18.0.0-rc.0 react-dom: 18.0.0-rc.0_react@18.0.0-rc.0 - react-router: 6.0.0-beta.4_history@5.2.0+react@18.0.0-rc.0 + react-router: 6.0.0-beta.0_history@5.2.0+react@18.0.0-rc.0 dev: false /react-router-dom/6.1.1_757a802188413a36d4f24237d13b8e90: @@ -20373,13 +20622,14 @@ packages: tiny-warning: 1.0.3 dev: false - /react-router/6.0.0-beta.4_history@5.2.0+react@18.0.0-rc.0: - resolution: {integrity: sha512-48JRRZJOwmfOKM12Tv3WjmNkVb2NpSEgDTWC4+MEJaud0+eyLJxqy62CKzOydMlk7hrfRFpC/elUYSZAuyx3qA==} + /react-router/6.0.0-beta.0_history@5.2.0+react@18.0.0-rc.0: + resolution: {integrity: sha512-VgMdfpVcmFQki/LZuLh8E/MNACekDetz4xqft+a6fBZvvJnVqKbLqebF7hyoawGrV1HcO5tVaUang2Og4W2j1Q==} peerDependencies: history: '>=5' react: '>=16.8' dependencies: history: 5.2.0 + prop-types: 15.8.0 react: 18.0.0-rc.0 dev: false @@ -20406,7 +20656,7 @@ packages: peerDependencies: react: '>= 0.14.0' dependencies: - '@babel/runtime': 7.16.3 + '@babel/runtime': 7.16.5 highlight.js: 10.7.3 lowlight: 1.20.0 prismjs: 1.25.0 @@ -20420,7 +20670,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.16.3 + '@babel/runtime': 7.16.5 react: 18.0.0-rc.0 use-composed-ref: 1.1.0_react@18.0.0-rc.0 use-latest: 1.2.0_2fa291bfae6e56080648438396754a97 @@ -21018,7 +21268,7 @@ packages: engines: {node: '>=8'} dependencies: onetime: 5.1.2 - signal-exit: 3.0.6 + signal-exit: 3.0.5 dev: true /resumer/0.0.0: @@ -21113,11 +21363,13 @@ packages: peerDependencies: rollup: ^2.0.0 dependencies: - '@babel/code-frame': 7.15.8 + '@babel/code-frame': 7.16.0 jest-worker: 26.6.2 rollup: 2.62.0 serialize-javascript: 4.0.0 - terser: 5.8.0 + terser: 5.10.0 + transitivePeerDependencies: + - acorn dev: true /rollup/2.62.0: @@ -21128,6 +21380,19 @@ packages: fsevents: 2.3.2 dev: true + /rpc-websockets/7.4.16: + resolution: {integrity: sha512-0b7OVhutzwRIaYAtJo5tqtaQTWKfwAsKnaThOSOy+VkhVdleNUgb8eZnWSdWITRZZEigV5uPEIDr5KZe4DBrdQ==} + dependencies: + '@babel/runtime': 7.16.5 + circular-json: 0.5.9 + eventemitter3: 4.0.7 + uuid: 8.3.2 + ws: 7.5.5_72ef9f06cb99540da679cbf1bf7a3256 + optionalDependencies: + bufferutil: 4.0.3 + utf-8-validate: 5.0.5 + dev: false + /rss3-next/0.6.17_typescript@4.6.0-dev.20211202: resolution: {integrity: sha512-UEVpr9somInaz8kreZjUjVmo0cay/Q24CQSo8QJogChlphUpFyMAJSXtC7xS2p67ZSXL9CWPtzoPZtQ4wh0hBg==} dependencies: @@ -21155,7 +21420,7 @@ packages: /rtl-css-js/1.14.2: resolution: {integrity: sha512-t6Wc/wpqm8s3kuXAV6tL/T7VS6n0XszzX58CgCsLj3O2xi9ITSLfzYhtl+GKyxCi/3QEqVctOJQwCiDzb2vteQ==} dependencies: - '@babel/runtime': 7.16.3 + '@babel/runtime': 7.16.5 dev: false /run-parallel/1.2.0: @@ -21294,9 +21559,9 @@ packages: engines: {node: '>= 12.13.0'} dependencies: '@types/json-schema': 7.0.9 - ajv: 8.8.2 + ajv: 8.8.1 ajv-formats: 2.1.1 - ajv-keywords: 5.1.0_ajv@8.8.2 + ajv-keywords: 5.0.0_ajv@8.8.1 dev: true /screenfull/5.1.0: @@ -21587,6 +21852,10 @@ packages: resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==} dev: false + /signal-exit/3.0.5: + resolution: {integrity: sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==} + dev: true + /signal-exit/3.0.6: resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==} @@ -21775,13 +22044,6 @@ packages: source-map: 0.5.7 dev: false - /source-map-support/0.5.20: - resolution: {integrity: sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -21825,7 +22087,7 @@ packages: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.11 + spdx-license-ids: 3.0.10 /spdx-exceptions/2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} @@ -21834,10 +22096,10 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.11 + spdx-license-ids: 3.0.10 - /spdx-license-ids/3.0.11: - resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} + /spdx-license-ids/3.0.10: + resolution: {integrity: sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==} /spdy-transport/3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} @@ -21890,7 +22152,7 @@ packages: engines: {node: '>=0.10.0'} hasBin: true dependencies: - asn1: 0.2.6 + asn1: 0.2.4 assert-plus: 1.0.0 bcrypt-pbkdf: 1.0.2 dashdash: 1.14.1 @@ -22259,6 +22521,10 @@ packages: ts-interface-checker: 0.1.13 dev: true + /superstruct/0.14.2: + resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==} + dev: false + /supports-color/2.0.0: resolution: {integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=} engines: {node: '>=0.8.0'} @@ -22293,6 +22559,8 @@ packages: /supports-color/9.2.1: resolution: {integrity: sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==} engines: {node: '>=12'} + dependencies: + has-flag: 5.0.1 dev: true /supports-hyperlinks/2.2.0: @@ -22503,7 +22771,7 @@ packages: - acorn dev: true - /terser-webpack-plugin/5.2.5_2f107d0327a8dfc6e414b5a82aeaeb8f: + /terser-webpack-plugin/5.2.5_acorn@8.5.0+webpack@5.65.0: resolution: {integrity: sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -22519,18 +22787,17 @@ packages: uglify-js: optional: true dependencies: - '@swc/core': 1.2.123 jest-worker: 27.3.1 schema-utils: 3.1.1 serialize-javascript: 6.0.0 source-map: 0.6.1 - terser: 5.10.0_acorn@8.6.0 - webpack: 5.64.4_3204a841348537a686702d158b0479f4 + terser: 5.10.0_acorn@8.5.0 + webpack: 5.65.0 transitivePeerDependencies: - acorn dev: true - /terser-webpack-plugin/5.2.5_acorn@8.6.0+webpack@5.65.0: + /terser-webpack-plugin/5.2.5_cb0c2697fca0d33c1d1d223a954bca85: resolution: {integrity: sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -22546,12 +22813,13 @@ packages: uglify-js: optional: true dependencies: + '@swc/core': 1.2.123 jest-worker: 27.3.1 schema-utils: 3.1.1 serialize-javascript: 6.0.0 source-map: 0.6.1 - terser: 5.10.0_acorn@8.6.0 - webpack: 5.65.0 + terser: 5.10.0_acorn@8.5.0 + webpack: 5.64.4_3204a841348537a686702d158b0479f4 transitivePeerDependencies: - acorn dev: true @@ -22623,7 +22891,7 @@ packages: source-map-support: 0.5.21 dev: true - /terser/5.10.0_acorn@8.6.0: + /terser/5.10.0_acorn@8.5.0: resolution: {integrity: sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==} engines: {node: '>=10'} hasBin: true @@ -22633,27 +22901,7 @@ packages: acorn: optional: true dependencies: - acorn: 8.6.0 - commander: 2.20.3 - source-map: 0.7.3 - source-map-support: 0.5.21 - dev: true - - /terser/5.8.0: - resolution: {integrity: sha512-f0JH+6yMpneYcRJN314lZrSwu9eKkUFEHLN/kNy8ceh8gaRiLgFPJqrB9HsXjhEGdv4e/ekjTOFxIlL6xlma8A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - commander: 2.20.3 - source-map: 0.7.3 - source-map-support: 0.5.20 - dev: true - - /terser/5.9.0: - resolution: {integrity: sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: + acorn: 8.5.0 commander: 2.20.3 source-map: 0.7.3 source-map-support: 0.5.21 @@ -22676,6 +22924,10 @@ packages: typical: 2.6.1 dev: false + /text-encoding-utf-8/1.0.2: + resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + dev: false + /text-encoding/0.7.0: resolution: {integrity: sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==} deprecated: no longer maintained @@ -23094,8 +23346,8 @@ packages: resolution: {integrity: sha512-FWqxGX2NHp5oCyaMd96o2y2uMQmSu8Dey6kvyuFdRJ2AzfmWo3kWa4UsPlCGlfQ/qu03m09ZZtppMoY8EMHuiA==} dev: false - /tsconfig-paths/3.12.0: - resolution: {integrity: sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==} + /tsconfig-paths/3.11.0: + resolution: {integrity: sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==} dependencies: '@types/json5': 0.0.29 json5: 1.0.1 @@ -24034,7 +24286,7 @@ packages: engines: {node: '>=8.0.0'} requiresBuild: true dependencies: - '@types/node': 16.11.10 + '@types/node': 16.11.7 got: 9.6.0 swarm-js: 0.1.40 dev: false @@ -24154,7 +24406,7 @@ packages: resolution: {integrity: sha512-nH5N2GiVC0C5XeMEKU16PeFP3Hb3hkPvlR6Tf9WQ+pE+jw1c8eaXBO1CJQLr15ikhUF3s94ICyHcfjzkDsmRbA==} engines: {node: '>=8.0.0'} dependencies: - '@types/node': 16.11.10 + '@types/node': 16.11.7 web3-core: 1.5.2 web3-core-helpers: 1.5.2 web3-core-method: 1.5.2 @@ -24295,6 +24547,17 @@ packages: web3-utils: 1.5.2 dev: false + /webcrypto-core/1.3.0: + resolution: {integrity: sha512-/+Hz+uNM6T8FtizWRYMNdGTXxWaljLFzQ5GKU4WqCTZKpaki94YqDA39h/SpWxEZfgkVMZzrqqtPlfy2+BloQw==} + dependencies: + '@peculiar/asn1-schema': 2.0.38 + '@peculiar/json-schema': 1.1.12 + asn1js: 2.2.0 + pvtsutils: 1.2.1 + tslib: 2.3.1 + dev: false + optional: true + /webcrypto-core/1.4.0: resolution: {integrity: sha512-HY3Zo0GcRIQUUDnlZ/shGjN+4f7LVMkdJZoGPog+oHhJsJdMz6iM8Za5xZ0t6qg7Fx/JXXz+oBv2J2p982hGTQ==} dependencies: @@ -24377,7 +24640,7 @@ packages: webpack-dev-server: optional: true dependencies: - '@discoveryjs/json-ext': 0.5.5 + '@discoveryjs/json-ext': 0.5.6 '@webpack-cli/configtest': 1.1.0_webpack-cli@4.9.1+webpack@5.65.0 '@webpack-cli/info': 1.4.0_webpack-cli@4.9.1 '@webpack-cli/serve': 1.6.0_8901023807dfe689cb4e2c4e87ee3f8e @@ -24429,7 +24692,7 @@ packages: webpack: ^4.0.0 || ^5.0.0 dependencies: colorette: 2.0.16 - memfs: 3.4.0 + memfs: 3.3.0 mime-types: 2.1.34 range-parser: 1.2.1 schema-utils: 4.0.0 @@ -24474,6 +24737,7 @@ packages: sockjs: 0.3.24 spdy: 4.0.2 strip-ansi: 7.0.1 + url: 0.11.0 webpack: 5.65.0 webpack-cli: 4.9.1_b84c6ca1a0d1a6eaa102e036920cc264 webpack-dev-middleware: 5.3.0_webpack@5.65.0 @@ -24631,8 +24895,8 @@ packages: '@webassemblyjs/ast': 1.11.1 '@webassemblyjs/wasm-edit': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 - acorn: 8.6.0 - acorn-import-assertions: 1.8.0_acorn@8.6.0 + acorn: 8.5.0 + acorn-import-assertions: 1.8.0_acorn@8.5.0 browserslist: 4.18.1 chrome-trace-event: 1.0.3 enhanced-resolve: 5.8.3 @@ -24647,7 +24911,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.2.5_2f107d0327a8dfc6e414b5a82aeaeb8f + terser-webpack-plugin: 5.2.5_cb0c2697fca0d33c1d1d223a954bca85 watchpack: 2.3.0 webpack-cli: 4.9.1_b84c6ca1a0d1a6eaa102e036920cc264 webpack-sources: 3.2.2 @@ -24672,8 +24936,8 @@ packages: '@webassemblyjs/ast': 1.11.1 '@webassemblyjs/wasm-edit': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 - acorn: 8.6.0 - acorn-import-assertions: 1.8.0_acorn@8.6.0 + acorn: 8.5.0 + acorn-import-assertions: 1.8.0_acorn@8.5.0 browserslist: 4.18.1 chrome-trace-event: 1.0.3 enhanced-resolve: 5.8.3 @@ -24688,7 +24952,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.2.5_acorn@8.6.0+webpack@5.65.0 + terser-webpack-plugin: 5.2.5_acorn@8.5.0+webpack@5.65.0 watchpack: 2.3.1 webpack-sources: 3.2.2 transitivePeerDependencies: @@ -24908,7 +25172,7 @@ packages: dependencies: imurmurhash: 0.1.4 is-typedarray: 1.0.0 - signal-exit: 3.0.6 + signal-exit: 3.0.5 typedarray-to-buffer: 3.1.5 dev: true @@ -24972,8 +25236,8 @@ packages: optional: true dev: false - /ws/7.5.6: - resolution: {integrity: sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==} + /ws/7.5.5_72ef9f06cb99540da679cbf1bf7a3256: + resolution: {integrity: sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -24983,11 +25247,14 @@ packages: optional: true utf-8-validate: optional: true - dev: true + dependencies: + bufferutil: 4.0.3 + utf-8-validate: 5.0.5 + dev: false - /ws/8.3.0: - resolution: {integrity: sha512-Gs5EZtpqZzLvmIM59w4igITU57lrtYVFneaa434VROv4thzJyV6UjIL3D42lslWlI+D4KzLYnxSwtfuiO79sNw==} - engines: {node: '>=10.0.0'} + /ws/7.5.6: + resolution: {integrity: sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==} + engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index dab9fff242bf..03fa5787a12b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -32,6 +32,7 @@ packages: - 'packages/plugins/FileService' - 'packages/plugins/DAO' - 'packages/plugins/RSS3' + - 'packages/plugins/Solana' - 'packages/external-plugin-previewer' - 'packages/backup-format' - 'packages/encryption'