diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index 794d858b72de..8377d54ea314 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -53,7 +53,6 @@ "react-use": "^17.3.2", "unstated-next": "^1.1.0", "urlcat": "^2.0.4", - "use-subscription": "1.6.0", "uuid": "^8.3.2", "wallet.ts": "^1.0.1", "web3-core-helpers": "1.7.3", @@ -68,7 +67,6 @@ "@storybook/builder-webpack5": "^6.4.22", "@storybook/manager-webpack5": "^6.4.22", "@storybook/react": "^6.4.22", - "@types/use-subscription": "^1.0.0", "@types/uuid": "^8.3.4", "babel-loader": "^8.2.5", "webpack": "^5.72.0" diff --git a/packages/dashboard/src/web3/context.ts b/packages/dashboard/src/web3/context.ts index d97ac196dc69..b03fd8c39557 100644 --- a/packages/dashboard/src/web3/context.ts +++ b/packages/dashboard/src/web3/context.ts @@ -1,4 +1,4 @@ -import type { Subscription } from 'use-subscription' +import type { Subscription } from '@masknet/shared-base' import { ChainId, ERC1155TokenDetailed, diff --git a/packages/mask/package.json b/packages/mask/package.json index 25d28a0b9d5a..53963f0536d9 100644 --- a/packages/mask/package.json +++ b/packages/mask/package.json @@ -62,7 +62,6 @@ "@types/react-window": "^1.8.4", "@types/remarkable": "^2.0.3", "@types/socket.io-client": "^1.4.36", - "@types/use-subscription": "^1.0.0", "@types/uuid": "^8.3.4", "@uniswap/sdk-core": "^3.0.1", "@uniswap/v2-sdk": "3.0.0-alpha.2", @@ -97,9 +96,9 @@ "millify": "^4.0.0", "next-tick": "^1.0.0", "opensea-js": "^1.2.7", - "pure-react-carousel": "^1.28.1", "promievent": "^0.1.4", "protobufjs": "^6.11.2", + "pure-react-carousel": "^1.28.1", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", "react-draggable": "^4.4.4", @@ -120,7 +119,7 @@ "stream-http": "^2.8.3", "unstated-next": "^1.1.0", "urlcat": "^2.0.4", - "use-subscription": "1.6.0", + "use-sync-external-store": "^1.1.0", "uuid": "^8.3.2", "wallet.ts": "^1.0.1", "web-ext-types": "^3.1.0", @@ -138,6 +137,7 @@ "@nice-labs/emit-file-webpack-plugin": "^1.1.2", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", "@types/color": "^3.0.3", + "@types/use-sync-external-store": "^0.0.3", "binaryen": "^107.0.0", "copy-webpack-plugin": "^10.2.4", "html-webpack-plugin": "^5.5.0", diff --git a/packages/mask/shared-ui/TypedMessageRender/context.tsx b/packages/mask/shared-ui/TypedMessageRender/context.tsx index 06cd69a1fb7b..29db29fd7139 100644 --- a/packages/mask/shared-ui/TypedMessageRender/context.tsx +++ b/packages/mask/shared-ui/TypedMessageRender/context.tsx @@ -8,7 +8,7 @@ import { TransformationContextProvider, } from '@masknet/typed-message/dom' import { TypedMessageRenderRegistry } from './registry' -import { useSubscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' import { useMemo } from 'react' import { Container, Link } from './Components/Text' import { TypedMessageTransformers } from './transformer' @@ -20,8 +20,18 @@ export interface TypedMessageRenderContextProps extends React.PropsWithChildren< } export function TypedMessageRenderContext(props: TypedMessageRenderContextProps) { - const registry = useSubscription(TypedMessageRenderRegistry.subscription) - const transformerFunction = useSubscription(TypedMessageTransformers.subscription) + const registry = useSyncExternalStoreWithSelector( + TypedMessageRenderRegistry.subscription.subscribe, + TypedMessageRenderRegistry.subscription.getCurrentValue, + TypedMessageRenderRegistry.subscription.getCurrentValue, + (s) => s, + ) + const transformerFunction = useSyncExternalStoreWithSelector( + TypedMessageTransformers.subscription.subscribe, + TypedMessageTransformers.subscription.getCurrentValue, + TypedMessageTransformers.subscription.getCurrentValue, + (s) => s, + ) const Provider = useMemo((): RenderFragmentsContextType => { return { Container, Link, Metadata: props.metadataRender, ...props.renderFragments } }, [props.metadataRender, props.renderFragments]) diff --git a/packages/mask/src/components/CompositionDialog/CompositionUI.tsx b/packages/mask/src/components/CompositionDialog/CompositionUI.tsx index 6578c5ba4333..1b94a8ae0e2a 100644 --- a/packages/mask/src/components/CompositionDialog/CompositionUI.tsx +++ b/packages/mask/src/components/CompositionDialog/CompositionUI.tsx @@ -13,7 +13,7 @@ import { ProfileInformation, EncryptionTargetType } from '@masknet/shared-base' import { CompositionContext } from '@masknet/plugin-infra/content-script' import { DebugMetadataInspector } from '../shared/DebugMetadataInspector' import type { EncryptTargetE2E, EncryptTargetPublic } from '@masknet/encryption' -import { useSubscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' import { SelectRecipientsUI } from '../shared/SelectRecipients/SelectRecipients' import { EncryptionTargetSelector } from './EncryptionTargetSelector' import { EncryptionMethodSelector, EncryptionMethodType } from './EncryptionMethodSelector' @@ -295,7 +295,12 @@ function useEncryptionEncode(props: Pick s, + ) const [__MetadataDebuggerMeta, __configureMetadataDebugger] = useState(null) const __syncMetadataDebugger = () => { diff --git a/packages/mask/src/components/DataSource/useActivatedUI.ts b/packages/mask/src/components/DataSource/useActivatedUI.ts index 7ae5e2609e6e..b3aad7ee22f2 100644 --- a/packages/mask/src/components/DataSource/useActivatedUI.ts +++ b/packages/mask/src/components/DataSource/useActivatedUI.ts @@ -1,8 +1,8 @@ import { ValueRef } from '@dimensiondev/holoflows-kit' import { useValueRef } from '@masknet/shared-base-ui' -import type { PersonaIdentifier, ProfileIdentifier, ProfileInformation } from '@masknet/shared-base' +import type { PersonaIdentifier, ProfileIdentifier, ProfileInformation, Subscription } from '@masknet/shared-base' import { activatedSocialNetworkUI, globalUIState } from '../../social-network' -import { Subscription, useSubscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' import type { IdentityResolved } from '@masknet/plugin-infra' import { isEqual } from 'lodash-unified' import { useAsync } from 'react-use' @@ -21,7 +21,12 @@ export function useCurrentIdentity(): { identifier: ProfileIdentifier linkedPersona?: PersonaIdentifier } | null { - return useSubscription(CurrentIdentitySubscription) + return useSyncExternalStoreWithSelector( + CurrentIdentitySubscription.subscribe, + CurrentIdentitySubscription.getCurrentValue, + CurrentIdentitySubscription.getCurrentValue, + (s) => s, + ) } export function useCurrentLinkedPersona() { diff --git a/packages/mask/src/components/DataSource/useMyPersonas.ts b/packages/mask/src/components/DataSource/useMyPersonas.ts index bb9115596bc5..b585b4757b06 100644 --- a/packages/mask/src/components/DataSource/useMyPersonas.ts +++ b/packages/mask/src/components/DataSource/useMyPersonas.ts @@ -1,7 +1,7 @@ import Services from '../../extension/service' import { MaskMessages } from '../../utils/messages' import { createSubscriptionFromAsyncSuspense } from '@masknet/shared-base' -import { useSubscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' const personas = createSubscriptionFromAsyncSuspense( () => Services.Identity.queryOwnedPersonaInformation(true), @@ -9,5 +9,10 @@ const personas = createSubscriptionFromAsyncSuspense( ) export function useMyPersonas() { - return useSubscription(personas) + return useSyncExternalStoreWithSelector( + personas.subscribe, + personas.getCurrentValue, + personas.getCurrentValue, + (s) => s, + ) } diff --git a/packages/mask/src/components/InjectedComponents/PostInspector.tsx b/packages/mask/src/components/InjectedComponents/PostInspector.tsx index 57c5382972de..91b06c1e6bc5 100644 --- a/packages/mask/src/components/InjectedComponents/PostInspector.tsx +++ b/packages/mask/src/components/InjectedComponents/PostInspector.tsx @@ -7,7 +7,7 @@ import { } from '@masknet/plugin-infra/content-script' import { PossiblePluginSuggestionPostInspector } from './DisabledPluginSuggestion' import { MaskPostExtraPluginWrapper } from '../../plugins/MaskPluginWrapper' -import { useSubscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' import { PersistentStorages } from '../../../shared' const PluginHooksRenderer = createInjectHooksRenderer( @@ -25,7 +25,12 @@ export function PostInspector(props: PostInspectorProps) { const postBy = usePostInfoDetails.author() const hasEncryptedPost = usePostInfoDetails.hasMaskPayload() const postImages = usePostInfoDetails.postMetadataImages() - const isDebugging = useSubscription(PersistentStorages.Settings.storage.debugging.subscription) + const isDebugging = useSyncExternalStoreWithSelector( + PersistentStorages.Settings.storage.debugging.subscription.subscribe, + PersistentStorages.Settings.storage.debugging.subscription.getCurrentValue, + PersistentStorages.Settings.storage.debugging.subscription.getCurrentValue, + (s) => s, + ) const whoAmI = useCurrentIdentity() if (hasEncryptedPost || postImages.length) { diff --git a/packages/mask/src/plugins/ITO/SNSAdaptor/PoolInList.tsx b/packages/mask/src/plugins/ITO/SNSAdaptor/PoolInList.tsx index e044f04798a5..e37ee7bd24bf 100644 --- a/packages/mask/src/plugins/ITO/SNSAdaptor/PoolInList.tsx +++ b/packages/mask/src/plugins/ITO/SNSAdaptor/PoolInList.tsx @@ -37,7 +37,7 @@ import { ITO_Status, JSON_PayloadFromChain, JSON_PayloadInMask, PoolFromNetwork import { useDestructCallback } from './hooks/useDestructCallback' import { useTransactionDialog } from '../../../web3/hooks/useTransactionDialog' import { omit } from 'lodash-unified' -import { useSubscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' import { PersistentStorages } from '../../../../shared' const useStyles = makeStyles()((theme) => { @@ -141,7 +141,12 @@ export function PoolInList(props: PoolInListProps) { const { classes } = useStyles() const { NATIVE_TOKEN_ADDRESS } = useTokenConstants() - const isDebugging = useSubscription(PersistentStorages.Settings.storage.debugging.subscription) + const isDebugging = useSyncExternalStoreWithSelector( + PersistentStorages.Settings.storage.debugging.subscription.subscribe, + PersistentStorages.Settings.storage.debugging.subscription.getCurrentValue, + PersistentStorages.Settings.storage.debugging.subscription.getCurrentValue, + (s) => s, + ) // #region Fetch tokens detailed const { value: _tokenDetailed } = useFungibleTokenDetailed( EthereumTokenType.ERC20, diff --git a/packages/mask/src/plugins/Tips/contexts/Tip/TipTaskProvider.tsx b/packages/mask/src/plugins/Tips/contexts/Tip/TipTaskProvider.tsx index 6c19627aed0f..9b8bb32ddb84 100644 --- a/packages/mask/src/plugins/Tips/contexts/Tip/TipTaskProvider.tsx +++ b/packages/mask/src/plugins/Tips/contexts/Tip/TipTaskProvider.tsx @@ -6,7 +6,7 @@ import { useNativeTokenDetailed, } from '@masknet/web3-shared-evm' import { FC, useContext, useEffect, useMemo, useState } from 'react' -import { useSubscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' import { getStorage } from '../../storage' import { TipTask, TipType } from '../../types' import { TargetChainIdContext } from '../TargetChainIdContext' @@ -28,7 +28,12 @@ export const TipTaskProvider: FC> = ({ children, const { value: nativeTokenDetailed = null } = useNativeTokenDetailed(targetChainId) const [token, setToken] = useState(nativeTokenDetailed) const [erc721TokenId, setErc721TokenId] = useState(null) - const storedTokens = useSubscription(getStorage().addedTokens.subscription) + const storedTokens = useSyncExternalStoreWithSelector( + getStorage().addedTokens.subscription.subscribe, + getStorage().addedTokens.subscription.getCurrentValue, + getStorage().addedTokens.subscription.getCurrentValue, + (s) => s, + ) const { value: erc721Contract } = useERC721ContractDetailed(erc721Address) diff --git a/packages/mask/src/social-network/types.ts b/packages/mask/src/social-network/types.ts index ccce3795ddb5..b48450ce5a9d 100644 --- a/packages/mask/src/social-network/types.ts +++ b/packages/mask/src/social-network/types.ts @@ -8,12 +8,12 @@ import type { PostIdentifier, ProfileIdentifier, ProfileInformation, + Subscription, } from '@masknet/shared-base' import type { SerializableTypedMessages } from '@masknet/typed-message' import type { RenderFragmentsContextType } from '@masknet/typed-message/dom' import type { SharedComponentOverwrite } from '@masknet/shared' import type { PaletteMode, Theme } from '@mui/material' -import type { Subscription } from 'use-subscription' import type { createSNSAdaptorSpecializedPostContext } from './utils/create-post-context' // Don't define values in namespaces diff --git a/packages/mask/src/social-network/utils/create-post-context.ts b/packages/mask/src/social-network/utils/create-post-context.ts index 240cf305a258..f8be0e3a945b 100644 --- a/packages/mask/src/social-network/utils/create-post-context.ts +++ b/packages/mask/src/social-network/utils/create-post-context.ts @@ -24,8 +24,8 @@ import { EMPTY_LIST, PostIVIdentifier, EnhanceableSite, + type Subscription, } from '@masknet/shared-base' -import type { Subscription } from 'use-subscription' import { activatedSocialNetworkUI } from '../ui' import { resolveFacebookLink } from '../../social-network-adaptor/facebook.com/utils/resolveFacebookLink' import type { SupportedPayloadVersions } from '@masknet/encryption' diff --git a/packages/mask/src/utils/theme/useClassicMaskSNSTheme.ts b/packages/mask/src/utils/theme/useClassicMaskSNSTheme.ts index 1c083fb4ec90..33c9ee4b5c48 100644 --- a/packages/mask/src/utils/theme/useClassicMaskSNSTheme.ts +++ b/packages/mask/src/utils/theme/useClassicMaskSNSTheme.ts @@ -2,7 +2,7 @@ import { unstable_createMuiStrictModeTheme } from '@mui/material' import type { Theme } from '@mui/material/styles/createTheme' import { useRef } from 'react' import { activatedSocialNetworkUI } from '../../social-network' -import { useSubscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' import { MaskDarkTheme, MaskLightTheme } from './MaskTheme' import { useThemeLanguage } from './useThemeLanguage' import { createSubscriptionFromValueRef } from '@masknet/shared-base' @@ -19,7 +19,12 @@ const defaultUseTheme = (t: Theme) => t export function useClassicMaskSNSTheme() { const provider = useRef(activatedSocialNetworkUI.customization.paletteMode?.current || staticRef).current const usePostTheme = useRef(activatedSocialNetworkUI.customization.useTheme || defaultUseTheme).current - const palette = useSubscription(provider) + const palette = useSyncExternalStoreWithSelector( + provider.subscribe, + provider.getCurrentValue, + provider.getCurrentValue, + (s) => s, + ) const baseTheme = palette === 'dark' ? MaskDarkTheme : MaskLightTheme // TODO: support RTL? diff --git a/packages/mask/src/web3/context.ts b/packages/mask/src/web3/context.ts index 3c3489b05712..733a744042d8 100644 --- a/packages/mask/src/web3/context.ts +++ b/packages/mask/src/web3/context.ts @@ -1,5 +1,4 @@ import { noop } from 'lodash-unified' -import type { Subscription } from 'use-subscription' import { ERC20TokenDetailed, ERC721TokenDetailed, @@ -15,7 +14,7 @@ import { createContract, isSameAddress, } from '@masknet/web3-shared-evm' -import { isPopupPage } from '@masknet/shared-base' +import { isPopupPage, type Subscription } from '@masknet/shared-base' import { bridgedCoin98Provider, bridgedEthereumProvider } from '@masknet/injected-script' import { currentAccountSettings, diff --git a/packages/plugin-infra/package.json b/packages/plugin-infra/package.json index 15f6f0c1e329..a0327c0e1fbd 100644 --- a/packages/plugin-infra/package.json +++ b/packages/plugin-infra/package.json @@ -64,12 +64,12 @@ "@masknet/typed-message": "workspace:*", "@masknet/web3-shared-base": "workspace:*", "@servie/events": "^3.0.0", - "@types/use-subscription": "^1.0.0", + "@types/use-sync-external-store": "^0.0.3", "async-call-rpc": "^6.0.2", "bignumber.js": "^9.0.2", "react-use": "^17.3.2", "unstated-next": "^1.1.0", - "use-subscription": "1.6.0" + "use-sync-external-store": "^1.1.0" }, "peerDependencies": { "react-i18next": "^11.15.3" diff --git a/packages/plugin-infra/src/PostContext.ts b/packages/plugin-infra/src/PostContext.ts index 12bc649b5467..8731d3357b07 100644 --- a/packages/plugin-infra/src/PostContext.ts +++ b/packages/plugin-infra/src/PostContext.ts @@ -4,13 +4,14 @@ import { PostIVIdentifier, type PostIdentifier, type ProfileIdentifier, + type Subscription, } from '@masknet/shared-base' import { useObservableValues, useValueRef } from '@masknet/shared-base-ui' import type { TypedMessageTuple } from '@masknet/typed-message' import { ValueRef, LiveSelector, DOMProxy } from '@dimensiondev/holoflows-kit' import type { Some } from 'ts-results' import { createContext, createElement, memo, useContext } from 'react' -import { Subscription, useSubscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector' import type { SupportedPayloadVersions } from '@masknet/encryption' export interface PostContextSNSActions { hasPayloadLike(content: string): boolean @@ -120,8 +121,14 @@ export const usePostInfoDetails: { if (k instanceof ObservableMap) return useObservableValues(k) // eslint-disable-next-line react-hooks/rules-of-hooks if (k instanceof ObservableSet) return useObservableValues(k) - // eslint-disable-next-line react-hooks/rules-of-hooks - if (isSubscription(k)) return useSubscription(k) + if (isSubscription(k)) + // eslint-disable-next-line react-hooks/rules-of-hooks + return useSyncExternalStoreWithSelector( + k.subscribe, + k.getCurrentValue, + k.getCurrentValue, + (s) => s, + ) return k } return _[key] diff --git a/packages/plugin-infra/src/manager/dashboard.ts b/packages/plugin-infra/src/manager/dashboard.ts index 824d85f1afc5..d9fc9c89461a 100644 --- a/packages/plugin-infra/src/manager/dashboard.ts +++ b/packages/plugin-infra/src/manager/dashboard.ts @@ -1,5 +1,6 @@ import { ALL_EVENTS } from '@servie/events' -import { useSubscription, Subscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector' +import type { Subscription } from '@masknet/shared-base' import { createManager } from './manage' import type { Plugin } from '../types' @@ -11,11 +12,21 @@ const subscription: Subscription = { } export function useActivatedPluginsDashboard() { - return useSubscription(subscription) + return useSyncExternalStoreWithSelector( + subscription.subscribe, + subscription.getCurrentValue, + subscription.getCurrentValue, + (s) => s, + ) } export function useActivatedPluginDashboard(pluginID: string) { - const plugins = useSubscription(subscription) + const plugins = useSyncExternalStoreWithSelector( + subscription.subscribe, + subscription.getCurrentValue, + subscription.getCurrentValue, + (s) => s, + ) return plugins.find((x) => x.ID === pluginID) } diff --git a/packages/plugin-infra/src/manager/sns-adaptor.ts b/packages/plugin-infra/src/manager/sns-adaptor.ts index 202666e5acc7..a9b9e5777c65 100644 --- a/packages/plugin-infra/src/manager/sns-adaptor.ts +++ b/packages/plugin-infra/src/manager/sns-adaptor.ts @@ -1,4 +1,5 @@ -import { useSubscription, Subscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector' +import type { Subscription } from '@masknet/shared-base' import { createManager } from './manage' import { getPluginDefine } from './store' import type { CurrentSNSNetwork, Plugin } from '../types' @@ -16,8 +17,18 @@ const minimalModeSub: Subscription = { subscribe: (f) => events.on('minimalModeChanged', f), } export function useActivatedPluginsSNSAdaptor(minimalModeEqualsTo: 'any' | boolean) { - const minimalMode = useSubscription(minimalModeSub) - const result = useSubscription(activatedSub) + const minimalMode = useSyncExternalStoreWithSelector( + minimalModeSub.subscribe, + minimalModeSub.getCurrentValue, + minimalModeSub.getCurrentValue, + (s) => s, + ) + const result = useSyncExternalStoreWithSelector( + activatedSub.subscribe, + activatedSub.getCurrentValue, + activatedSub.getCurrentValue, + (s) => s, + ) if (minimalModeEqualsTo === 'any') return result else if (minimalModeEqualsTo === true) return result.filter((x) => minimalMode.includes(x.ID)) else if (minimalModeEqualsTo === false) return result.filter((x) => !minimalMode.includes(x.ID)) @@ -30,7 +41,12 @@ useActivatedPluginsSNSAdaptor.visibility = { } export function useIsMinimalMode(pluginID: string) { - return useSubscription(minimalModeSub).includes(pluginID) + return useSyncExternalStoreWithSelector( + minimalModeSub.subscribe, + minimalModeSub.getCurrentValue, + minimalModeSub.getCurrentValue, + (s) => s.includes(pluginID), + ) } /** @@ -41,7 +57,12 @@ export function useIsMinimalMode(pluginID: string) { */ export function useActivatedPluginSNSAdaptor(pluginID: string, minimalModeEqualsTo: 'any' | boolean) { const plugins = useActivatedPluginsSNSAdaptor(minimalModeEqualsTo) - const minimalMode = useSubscription(minimalModeSub) + const minimalMode = useSyncExternalStoreWithSelector( + minimalModeSub.subscribe, + minimalModeSub.getCurrentValue, + minimalModeSub.getCurrentValue, + (s) => s, + ) const result = plugins.find((x) => x.ID === pluginID) if (!result) return result if (minimalModeEqualsTo === 'any') return result diff --git a/packages/plugin-infra/src/types.ts b/packages/plugin-infra/src/types.ts index 99697cefb7ed..9c7575b17f2e 100644 --- a/packages/plugin-infra/src/types.ts +++ b/packages/plugin-infra/src/types.ts @@ -2,10 +2,9 @@ import type React from 'react' import type { Option, Result } from 'ts-results' import type { TypedMessage } from '@masknet/typed-message' -import type { ScopedStorage, ProfileIdentifier, PersonaIdentifier } from '@masknet/shared-base' +import type { ScopedStorage, ProfileIdentifier, PersonaIdentifier, Subscription } from '@masknet/shared-base' import type { Emitter } from '@servie/events' import type { Web3Plugin } from './web3-types' -import type { Subscription } from 'use-subscription' export declare namespace Plugin { /** diff --git a/packages/plugin-infra/src/web3-types.ts b/packages/plugin-infra/src/web3-types.ts index fcc289bd62a6..7bea16d74694 100644 --- a/packages/plugin-infra/src/web3-types.ts +++ b/packages/plugin-infra/src/web3-types.ts @@ -1,5 +1,5 @@ import type { BigNumber } from 'bignumber.js' -import type { Subscription } from 'use-subscription' +import type { Subscription } from '@masknet/shared-base' import type { Plugin } from './types' export interface Pagination { diff --git a/packages/plugin-infra/src/web3/Context.tsx b/packages/plugin-infra/src/web3/Context.tsx index be8fd9e12190..c317d95f2580 100644 --- a/packages/plugin-infra/src/web3/Context.tsx +++ b/packages/plugin-infra/src/web3/Context.tsx @@ -1,6 +1,6 @@ import React, { createContext, useContext, useMemo } from 'react' import { createContainer } from 'unstated-next' -import { useSubscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector' import { CurrencyType, NetworkPluginID, Web3Plugin } from '../web3-types' import { createConstantSubscription } from '@masknet/shared-base' @@ -28,21 +28,96 @@ function usePluginWeb3State(pluginID: string, context: Record s, + ) + const chainId = useSyncExternalStoreWithSelector( + (Shared?.chainId ?? ZERO).subscribe, + (Shared?.chainId ?? ZERO).getCurrentValue, + (Shared?.chainId ?? ZERO).getCurrentValue, + (s) => s, + ) + const account = useSyncExternalStoreWithSelector( + (Shared?.account ?? EMPTY_STRING).subscribe, + (Shared?.account ?? EMPTY_STRING).getCurrentValue, + (Shared?.account ?? EMPTY_STRING).getCurrentValue, + (s) => s, + ) + const networkType = useSyncExternalStoreWithSelector( + (Shared?.networkType ?? EMPTY_STRING).subscribe, + (Shared?.networkType ?? EMPTY_STRING).getCurrentValue, + (Shared?.networkType ?? EMPTY_STRING).getCurrentValue, + (s) => s, + ) + const providerType = useSyncExternalStoreWithSelector( + (Shared?.providerType ?? EMPTY_STRING).subscribe, + (Shared?.providerType ?? EMPTY_STRING).getCurrentValue, + (Shared?.providerType ?? EMPTY_STRING).getCurrentValue, + (s) => s, + ) + const assetType = useSyncExternalStoreWithSelector( + (Shared?.assetType ?? EMPTY_STRING).subscribe, + (Shared?.assetType ?? EMPTY_STRING).getCurrentValue, + (Shared?.assetType ?? EMPTY_STRING).getCurrentValue, + (s) => s, + ) + const nameType = useSyncExternalStoreWithSelector( + (Shared?.nameType ?? EMPTY_STRING).subscribe, + (Shared?.nameType ?? EMPTY_STRING).getCurrentValue, + (Shared?.nameType ?? EMPTY_STRING).getCurrentValue, + (s) => s, + ) + const collectibleType = useSyncExternalStoreWithSelector( + (Shared?.collectibleType ?? EMPTY_STRING).subscribe, + (Shared?.collectibleType ?? EMPTY_STRING).getCurrentValue, + (Shared?.collectibleType ?? EMPTY_STRING).getCurrentValue, + (s) => s, + ) + const transactionType = useSyncExternalStoreWithSelector( + (Shared?.transactionType ?? EMPTY_STRING).subscribe, + (Shared?.transactionType ?? EMPTY_STRING).getCurrentValue, + (Shared?.transactionType ?? EMPTY_STRING).getCurrentValue, + (s) => s, + ) + const currencyType = useSyncExternalStoreWithSelector( + (Shared?.currencyType ?? USD_CURRENCY).subscribe, + (Shared?.currencyType ?? USD_CURRENCY).getCurrentValue, + (Shared?.currencyType ?? USD_CURRENCY).getCurrentValue, + (s) => s, + ) + const prices = useSyncExternalStoreWithSelector( + (Shared?.prices ?? NULL).subscribe, + (Shared?.prices ?? NULL).getCurrentValue, + (Shared?.prices ?? NULL).getCurrentValue, + (s) => s, + ) + const walletPrimary = useSyncExternalStoreWithSelector( + (Shared?.walletPrimary ?? NULL).subscribe, + (Shared?.walletPrimary ?? NULL).getCurrentValue, + (Shared?.walletPrimary ?? NULL).getCurrentValue, + (s) => s, + ) + const wallets = useSyncExternalStoreWithSelector( + (Shared?.wallets ?? EMPTY_ARRAY).subscribe, + (Shared?.wallets ?? EMPTY_ARRAY).getCurrentValue, + (Shared?.wallets ?? EMPTY_ARRAY).getCurrentValue, + (s) => s, + ) + const fungibleTokens = useSyncExternalStoreWithSelector( + (Shared?.fungibleTokens ?? EMPTY_ARRAY).subscribe, + (Shared?.fungibleTokens ?? EMPTY_ARRAY).getCurrentValue, + (Shared?.fungibleTokens ?? EMPTY_ARRAY).getCurrentValue, + (s) => s, + ) + const nonFungibleTokens = useSyncExternalStoreWithSelector( + (Shared?.nonFungibleTokens ?? EMPTY_ARRAY).subscribe, + (Shared?.nonFungibleTokens ?? EMPTY_ARRAY).getCurrentValue, + (Shared?.nonFungibleTokens ?? EMPTY_ARRAY).getCurrentValue, + (s) => s, + ) return { allowTestnet, diff --git a/packages/plugins/template/package.json b/packages/plugins/template/package.json index d3a4bf28d097..2e60e97471a0 100644 --- a/packages/plugins/template/package.json +++ b/packages/plugins/template/package.json @@ -13,6 +13,6 @@ "@masknet/shared": "workspace:*", "@masknet/shared-base": "workspace:*", "react-use": "^17.3.2", - "use-subscription": "1.6.0" + "use-sync-external-store": "^1.1.0" } } diff --git a/packages/shared-base-ui/package.json b/packages/shared-base-ui/package.json index 2427728465c3..f71df49197e5 100644 --- a/packages/shared-base-ui/package.json +++ b/packages/shared-base-ui/package.json @@ -12,10 +12,12 @@ "dependencies": { "@dimensiondev/holoflows-kit": "^0.9.0-20210902104757-7c3d0d0", "@masknet/shared-base": "workspace:*", - "@types/use-subscription": "^1.0.0", "@types/uuid": "^8.3.4", "react-use": "^17.3.2", - "use-subscription": "1.6.0", + "use-sync-external-store": "^1.1.0", "uuid": "^8.3.2" + }, + "devDependencies": { + "@types/use-sync-external-store": "^0.0.3" } } diff --git a/packages/shared-base-ui/src/hooks/createGlobalState.ts b/packages/shared-base-ui/src/hooks/createGlobalState.ts index caba21335fcc..df124bc14666 100644 --- a/packages/shared-base-ui/src/hooks/createGlobalState.ts +++ b/packages/shared-base-ui/src/hooks/createGlobalState.ts @@ -1,4 +1,5 @@ -import { useSubscription, Subscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' +import type { Subscription } from '@masknet/shared-base' import { Some, None, Err, Result, Ok, Option } from 'ts-results' /** * Create a new global state. @@ -38,7 +39,7 @@ export function createGlobalState(f: () => Promise, subscribe: (callback: }, } function useData() { - return useSubscription(sub) + return useSyncExternalStoreWithSelector(sub.subscribe, sub.getCurrentValue, sub.getCurrentValue, (s) => s) } function revalidate() { return f() diff --git a/packages/shared-base-ui/src/hooks/useObservableMapSet.ts b/packages/shared-base-ui/src/hooks/useObservableMapSet.ts index 84b7f88441cb..110895ed45dc 100644 --- a/packages/shared-base-ui/src/hooks/useObservableMapSet.ts +++ b/packages/shared-base-ui/src/hooks/useObservableMapSet.ts @@ -1,5 +1,6 @@ import { useMemo } from 'react' -import { useSubscription, Subscription } from 'use-subscription' +import type { Subscription } from '@masknet/shared-base' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' import { ALL_EVENTS, ObservableMap, ObservableSet } from '@masknet/shared-base' export function useObservableValues(map: ObservableMap | ObservableSet) { @@ -13,5 +14,10 @@ export function useObservableValues(map: ObservableMap | ObservableSe [map], ) - return useSubscription(subscription) + return useSyncExternalStoreWithSelector( + subscription.subscribe, + subscription.getCurrentValue, + subscription.getCurrentValue, + (s) => s, + ) } diff --git a/packages/shared-base-ui/src/hooks/useValueRef.ts b/packages/shared-base-ui/src/hooks/useValueRef.ts index 167019a75d3f..40e4fb2186da 100644 --- a/packages/shared-base-ui/src/hooks/useValueRef.ts +++ b/packages/shared-base-ui/src/hooks/useValueRef.ts @@ -1,5 +1,6 @@ import { useMemo } from 'react' -import { Subscription, useSubscription } from 'use-subscription' +import type { Subscription } from '@masknet/shared-base' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' import type { ValueRef } from '@dimensiondev/holoflows-kit' export function useValueRef(ref: ValueRef) { @@ -11,7 +12,12 @@ export function useValueRef(ref: ValueRef) { [ref], ) - return useSubscription(subscription) + return useSyncExternalStoreWithSelector( + subscription.subscribe, + subscription.getCurrentValue, + subscription.getCurrentValue, + (s) => s, + ) } export function useValueRefDelayed(ref: ValueRef, latency = 500) { @@ -27,5 +33,10 @@ export function useValueRefDelayed(ref: ValueRef, latency = 500) { [ref, latency], ) - return useSubscription(subscription) + return useSyncExternalStoreWithSelector( + subscription.subscribe, + subscription.getCurrentValue, + subscription.getCurrentValue, + (s) => s, + ) } diff --git a/packages/shared-base/package.json b/packages/shared-base/package.json index b7027e137e0a..cc36bd0c3bb3 100644 --- a/packages/shared-base/package.json +++ b/packages/shared-base/package.json @@ -30,9 +30,7 @@ "tiny-secp256k1": "^2.2.1", "typeson": "^7.0.2", "typeson-registry": "^3.0.0", + "use-sync-external-store": "^1.1.0", "z-schema": "^5.0.3" - }, - "devDependencies": { - "@types/use-subscription": "^1.0.0" } } diff --git a/packages/shared-base/src/kv-storage/index.ts b/packages/shared-base/src/kv-storage/index.ts index 8de4dd1851f7..29990935ae2c 100644 --- a/packages/shared-base/src/kv-storage/index.ts +++ b/packages/shared-base/src/kv-storage/index.ts @@ -1,6 +1,6 @@ import type { UnboundedRegistry as MessageChannel } from '@dimensiondev/holoflows-kit' import { combineAbortSignal } from '@dimensiondev/kit' -import type { Subscription } from 'use-subscription' +import type { Subscription } from '../utils/subscription' import type { KVStorageBackend } from './types' export { createInMemoryKVStorageBackend } from './in-memory' diff --git a/packages/shared-base/src/utils/subscription.ts b/packages/shared-base/src/utils/subscription.ts index 2529d7ad4a61..7b6b194b9b0e 100644 --- a/packages/shared-base/src/utils/subscription.ts +++ b/packages/shared-base/src/utils/subscription.ts @@ -1,8 +1,21 @@ import { noop } from 'lodash-unified' import type { ValueRef } from '@dimensiondev/holoflows-kit' -import type { Subscription } from 'use-subscription' import { None, Option, Some } from 'ts-results' +type Unsubscribe = () => void + +export interface Subscription { + /** + * (Synchronously) returns the current value of our subscription. + */ + getCurrentValue: () => T + /** + * This function is passed an event handler to attach to the subscription. + * It must return an unsubscribe function that removes the handler. + */ + subscribe: (callback: () => void) => Unsubscribe +} + export function createConstantSubscription(value: T) { return { getCurrentValue: () => value, diff --git a/packages/shared/package.json b/packages/shared/package.json index 19b61a2cfd4c..7066e2f273d8 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -25,7 +25,7 @@ "react-feather": "^2.0.9", "react-use": "^17.3.2", "urlcat": "^2.0.4", - "use-subscription": "1.6.0" + "use-sync-external-store": "^1.1.0" }, "devDependencies": { "@types/qrcode": "^1.4.2" diff --git a/packages/theme/package.json b/packages/theme/package.json index d41dc7c53f5d..3f31632d0ae0 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -40,7 +40,7 @@ "tinycolor2": "^1.4.2", "tss-react": "^3.6.2", "unstated-next": "^1.1.0", - "use-subscription": "1.6.0" + "use-sync-external-store": "^1.1.0" }, "devDependencies": { "@babel/core": "^7.17.10", diff --git a/packages/web3-shared/evm/context/index.tsx b/packages/web3-shared/evm/context/index.tsx index b27b668d0748..b18fe0d306d6 100644 --- a/packages/web3-shared/evm/context/index.tsx +++ b/packages/web3-shared/evm/context/index.tsx @@ -1,6 +1,6 @@ import { useMemo, useContext, createContext } from 'react' import { createContainer } from 'unstated-next' -import { useSubscription } from 'use-subscription' +import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector' import type { Web3ProviderType } from './type' import { getChainDetailed, isChainIdValid } from '../utils' @@ -17,19 +17,79 @@ export function useWeb3Context() { export function useWeb3State() { const _ = useWeb3Context() - const account = useSubscription(_.account) - const allowTestnet = useSubscription(_.allowTestnet) - const tokenPrices = useSubscription(_.tokenPrices) - const networkType = useSubscription(_.networkType) - const providerType = useSubscription(_.providerType) - const walletPrimary = useSubscription(_.walletPrimary) - const wallets = useSubscription(_.wallets) - const chainId = useSubscription(_.chainId) + const account = useSyncExternalStoreWithSelector( + _.account.subscribe, + _.account.getCurrentValue, + _.account.getCurrentValue, + (s) => s, + ) + const allowTestnet = useSyncExternalStoreWithSelector( + _.allowTestnet.subscribe, + _.allowTestnet.getCurrentValue, + _.allowTestnet.getCurrentValue, + (s) => s, + ) + const tokenPrices = useSyncExternalStoreWithSelector( + _.tokenPrices.subscribe, + _.tokenPrices.getCurrentValue, + _.tokenPrices.getCurrentValue, + (s) => s, + ) + const networkType = useSyncExternalStoreWithSelector( + _.networkType.subscribe, + _.networkType.getCurrentValue, + _.networkType.getCurrentValue, + (s) => s, + ) + const providerType = useSyncExternalStoreWithSelector( + _.providerType.subscribe, + _.providerType.getCurrentValue, + _.providerType.getCurrentValue, + (s) => s, + ) + const walletPrimary = useSyncExternalStoreWithSelector( + _.walletPrimary.subscribe, + _.walletPrimary.getCurrentValue, + _.walletPrimary.getCurrentValue, + (s) => s, + ) + const wallets = useSyncExternalStoreWithSelector( + _.wallets.subscribe, + _.wallets.getCurrentValue, + _.wallets.getCurrentValue, + (s) => s, + ) + const chainId = useSyncExternalStoreWithSelector( + _.chainId.subscribe, + _.chainId.getCurrentValue, + _.chainId.getCurrentValue, + (s) => s, + ) const chainDetailed = useMemo(() => getChainDetailed(chainId), [chainId]) - const erc20Tokens = useSubscription(_.erc20Tokens) - const erc721Tokens = useSubscription(_.erc721Tokens) - const erc1155Tokens = useSubscription(_.erc1155Tokens) - const portfolioProvider = useSubscription(_.portfolioProvider) + const erc20Tokens = useSyncExternalStoreWithSelector( + _.erc20Tokens.subscribe, + _.erc20Tokens.getCurrentValue, + _.erc20Tokens.getCurrentValue, + (s) => s, + ) + const erc721Tokens = useSyncExternalStoreWithSelector( + _.erc721Tokens.subscribe, + _.erc721Tokens.getCurrentValue, + _.erc721Tokens.getCurrentValue, + (s) => s, + ) + const erc1155Tokens = useSyncExternalStoreWithSelector( + _.erc1155Tokens.subscribe, + _.erc1155Tokens.getCurrentValue, + _.erc1155Tokens.getCurrentValue, + (s) => s, + ) + const portfolioProvider = useSyncExternalStoreWithSelector( + _.portfolioProvider.subscribe, + _.portfolioProvider.getCurrentValue, + _.portfolioProvider.getCurrentValue, + (s) => s, + ) return { allowTestnet, account, diff --git a/packages/web3-shared/evm/context/type.ts b/packages/web3-shared/evm/context/type.ts index 1f1d4d2e4fc1..42dc925f73c6 100644 --- a/packages/web3-shared/evm/context/type.ts +++ b/packages/web3-shared/evm/context/type.ts @@ -1,5 +1,5 @@ import type { RequestArguments } from 'web3-core' -import type { Subscription } from 'use-subscription' +import type { Subscription } from '@masknet/shared-base' import type { ChainId, ERC20TokenDetailed, diff --git a/packages/web3-shared/evm/package.json b/packages/web3-shared/evm/package.json index 7c2a76db6a04..511dd11641da 100644 --- a/packages/web3-shared/evm/package.json +++ b/packages/web3-shared/evm/package.json @@ -25,7 +25,7 @@ "react-use": "^17.3.2", "unstated-next": "^1.1.0", "urlcat": "^2.0.4", - "use-subscription": "1.6.0", + "use-sync-external-store": "^1.1.0", "uuid": "^8.3.2", "wallet.ts": "^1.0.1", "web3": "1.7.3", @@ -33,7 +33,7 @@ "web3-utils": "1.7.3" }, "devDependencies": { - "@types/use-subscription": "^1.0.0", + "@types/use-sync-external-store": "^0.0.3", "@types/uuid": "^8.3.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aa9db6a7ad7b..b6a550d3a29b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -178,7 +178,6 @@ importers: '@storybook/react': ^6.4.22 '@types/color': ^3.0.3 '@types/react-avatar-editor': ^12.0.0 - '@types/use-subscription': ^1.0.0 '@types/uuid': ^8.3.4 async-call-rpc: ^6.0.2 babel-loader: ^8.2.5 @@ -198,7 +197,6 @@ importers: react-use: ^17.3.2 unstated-next: ^1.1.0 urlcat: ^2.0.4 - use-subscription: 1.6.0 uuid: ^8.3.2 wallet.ts: ^1.0.1 web3-core-helpers: 1.7.3 @@ -245,7 +243,6 @@ importers: react-use: 17.3.2 unstated-next: 1.1.0 urlcat: 2.0.4 - use-subscription: 1.6.0 uuid: 8.3.2 wallet.ts: 1.0.1 web3-core-helpers: 1.7.3 @@ -259,7 +256,6 @@ importers: '@storybook/builder-webpack5': 6.4.22 '@storybook/manager-webpack5': 6.4.22 '@storybook/react': 6.4.22_25edyf2dljasinbq77nivmb22m - '@types/use-subscription': 1.0.0 '@types/uuid': 8.3.4 babel-loader: 8.2.5_rb5fcebzp6kx3hqg3ucus54t3m webpack: 5.72.0 @@ -380,7 +376,7 @@ importers: '@types/react-window': ^1.8.4 '@types/remarkable': ^2.0.3 '@types/socket.io-client': ^1.4.36 - '@types/use-subscription': ^1.0.0 + '@types/use-sync-external-store': ^0.0.3 '@types/uuid': ^8.3.4 '@uniswap/sdk-core': ^3.0.1 '@uniswap/v2-sdk': 3.0.0-alpha.2 @@ -446,7 +442,7 @@ importers: swc-loader: ^0.2.0 unstated-next: ^1.1.0 urlcat: ^2.0.4 - use-subscription: 1.6.0 + use-sync-external-store: ^1.1.0 uuid: ^8.3.2 wallet.ts: ^1.0.1 web-ext-types: ^3.1.0 @@ -521,7 +517,6 @@ importers: '@types/react-window': 1.8.5 '@types/remarkable': 2.0.3 '@types/socket.io-client': 1.4.36 - '@types/use-subscription': 1.0.0 '@types/uuid': 8.3.4 '@uniswap/sdk-core': 3.0.1 '@uniswap/v2-sdk': 3.0.0-alpha.2 @@ -555,7 +550,7 @@ importers: json2csv: 5.0.6 millify: 4.0.0 next-tick: 1.1.0 - opensea-js: 1.2.7 + opensea-js: 1.2.7_webpack-cli@4.9.2 promievent: 0.1.5 protobufjs: 6.11.2 pure-react-carousel: 1.28.1 @@ -579,7 +574,7 @@ importers: stream-http: 2.8.3 unstated-next: 1.1.0 urlcat: 2.0.4 - use-subscription: 1.6.0 + use-sync-external-store: 1.1.0 uuid: 8.3.2 wallet.ts: 1.0.1 web-ext-types: 3.2.1 @@ -596,6 +591,7 @@ importers: '@nice-labs/emit-file-webpack-plugin': 1.1.2_webpack@5.72.0 '@pmmmwh/react-refresh-webpack-plugin': 0.5.5_ffoope4bxc6zqgcasyqmdgdxky '@types/color': 3.0.3 + '@types/use-sync-external-store': 0.0.3 binaryen: 107.0.0 copy-webpack-plugin: 10.2.4_webpack@5.72.0 html-webpack-plugin: 5.5.0_webpack@5.72.0 @@ -634,12 +630,12 @@ importers: '@masknet/typed-message': workspace:* '@masknet/web3-shared-base': workspace:* '@servie/events': ^3.0.0 - '@types/use-subscription': ^1.0.0 + '@types/use-sync-external-store': ^0.0.3 async-call-rpc: ^6.0.2 bignumber.js: ^9.0.2 react-use: ^17.3.2 unstated-next: ^1.1.0 - use-subscription: 1.6.0 + use-sync-external-store: ^1.1.0 dependencies: '@dimensiondev/holoflows-kit': 0.9.0-20210902104757-7c3d0d0 '@masknet/encryption': link:../encryption @@ -649,12 +645,12 @@ importers: '@masknet/typed-message': link:../typed-message '@masknet/web3-shared-base': link:../web3-shared/base '@servie/events': 3.0.0 - '@types/use-subscription': 1.0.0 + '@types/use-sync-external-store': 0.0.3 async-call-rpc: 6.0.2 bignumber.js: 9.0.2 react-use: 17.3.2 unstated-next: 1.1.0 - use-subscription: 1.6.0 + use-sync-external-store: 1.1.0 packages/plugins/CrossChainBridge: specifiers: @@ -950,13 +946,13 @@ importers: '@masknet/shared': workspace:* '@masknet/shared-base': workspace:* react-use: ^17.3.2 - use-subscription: 1.6.0 + use-sync-external-store: ^1.1.0 dependencies: '@masknet/plugin-infra': link:../../plugin-infra '@masknet/shared': link:../../shared '@masknet/shared-base': link:../../shared-base react-use: 17.3.2 - use-subscription: 1.6.0 + use-sync-external-store: 1.1.0 packages/polyfills: specifiers: @@ -1077,7 +1073,7 @@ importers: react-feather: ^2.0.9 react-use: ^17.3.2 urlcat: ^2.0.4 - use-subscription: 1.6.0 + use-sync-external-store: ^1.1.0 dependencies: '@dimensiondev/holoflows-kit': 0.9.0-20210902104757-7c3d0d0 '@masknet/icons': link:../icons @@ -1096,7 +1092,7 @@ importers: react-feather: 2.0.9 react-use: 17.3.2 urlcat: 2.0.4 - use-subscription: 1.6.0 + use-sync-external-store: 1.1.0 devDependencies: '@types/qrcode': 1.4.2 @@ -1112,7 +1108,6 @@ importers: '@mui/system': link:..\empty '@servie/events': ^3.0.0 '@types/react': 18.0.9 - '@types/use-subscription': ^1.0.0 anchorme: ^2.1.2 async-call-rpc: ^6.0.2 bignumber.js: ^9.0.2 @@ -1123,6 +1118,7 @@ importers: tiny-secp256k1: ^2.2.1 typeson: ^7.0.2 typeson-registry: ^3.0.0 + use-sync-external-store: ^1.1.0 z-schema: ^5.0.3 dependencies: '@dimensiondev/holoflows-kit': 0.9.0-20210902104757-7c3d0d0 @@ -1145,27 +1141,27 @@ importers: tiny-secp256k1: 2.2.1 typeson: 7.0.2 typeson-registry: 3.0.0 + use-sync-external-store: 1.1.0 z-schema: 5.0.3 - devDependencies: - '@types/use-subscription': 1.0.0 packages/shared-base-ui: specifiers: '@dimensiondev/holoflows-kit': ^0.9.0-20210902104757-7c3d0d0 '@masknet/shared-base': workspace:* - '@types/use-subscription': ^1.0.0 + '@types/use-sync-external-store': ^0.0.3 '@types/uuid': ^8.3.4 react-use: ^17.3.2 - use-subscription: 1.6.0 + use-sync-external-store: ^1.1.0 uuid: ^8.3.2 dependencies: '@dimensiondev/holoflows-kit': 0.9.0-20210902104757-7c3d0d0 '@masknet/shared-base': link:../shared-base - '@types/use-subscription': 1.0.0 '@types/uuid': 8.3.4 react-use: 17.3.2 - use-subscription: 1.6.0 + use-sync-external-store: 1.1.0 uuid: 8.3.2 + devDependencies: + '@types/use-sync-external-store': 0.0.3 packages/storybook-shared: specifiers: @@ -1209,7 +1205,7 @@ importers: tinycolor2: ^1.4.2 tss-react: ^3.6.2 unstated-next: ^1.1.0 - use-subscription: 1.6.0 + use-sync-external-store: ^1.1.0 dependencies: '@masknet/icons': link:../icons '@masknet/shared-base': link:../shared-base @@ -1223,7 +1219,7 @@ importers: tinycolor2: 1.4.2 tss-react: 3.6.2 unstated-next: 1.1.0 - use-subscription: 1.6.0 + use-sync-external-store: 1.1.0 devDependencies: '@babel/core': 7.17.10 '@storybook/addon-actions': 6.4.22 @@ -1336,7 +1332,7 @@ importers: '@masknet/web3-shared-base': workspace:* '@types/ethereum-blockies': ^0.1.0 '@types/punycode': ^2.1.0 - '@types/use-subscription': ^1.0.0 + '@types/use-sync-external-store': ^0.0.3 '@types/uuid': ^8.3.4 bignumber.js: 9.0.2 ethereum-blockies: ^0.1.1 @@ -1346,7 +1342,7 @@ importers: react-use: ^17.3.2 unstated-next: ^1.1.0 urlcat: ^2.0.4 - use-subscription: 1.6.0 + use-sync-external-store: ^1.1.0 uuid: ^8.3.2 wallet.ts: ^1.0.1 web3: 1.7.3 @@ -1368,14 +1364,14 @@ importers: react-use: 17.3.2 unstated-next: 1.1.0 urlcat: 2.0.4 - use-subscription: 1.6.0 + use-sync-external-store: 1.1.0 uuid: 8.3.2 wallet.ts: 1.0.1 web3: 1.7.3 web3-core-helpers: 1.7.3 web3-utils: 1.7.3 devDependencies: - '@types/use-subscription': 1.0.0 + '@types/use-sync-external-store': 0.0.3 '@types/uuid': 8.3.4 packages/web3-shared/flow: @@ -1502,7 +1498,7 @@ packages: dev: false /@0xproject/json-schemas/0.7.24: - resolution: {integrity: sha1-IaErQ6sKtKowLQLEiRZozaNrbGQ=} + resolution: {integrity: sha512-20MeFHMptuv0e58mjSLmW84m2HbYdmuxFeeXqGZjv047zBawONe2aXKqLX266XYjgNSif/cDVzdgh7/46J9MVQ==} engines: {node: '>=6.12'} dependencies: '@0xproject/typescript-typings': 0.3.2 @@ -1519,7 +1515,7 @@ packages: dev: false /@0xproject/types/0.7.0: - resolution: {integrity: sha1-+tE5Je6SrU7hmAZopcsr7U3Kq48=} + resolution: {integrity: sha512-LlTnq7raPnCioCokNy5CLDxZJeg3KtcHT4PBJD6BDiXYtNJxBWvL7/jr6JiwdjReNg7ihGi1265VKfFX7qukRw==} engines: {node: '>=6.12'} dependencies: '@types/node': 17.0.31 @@ -1527,7 +1523,7 @@ packages: dev: false /@0xproject/typescript-typings/0.3.2: - resolution: {integrity: sha1-q8NgtEGv2pkxAEUMqDad+r91k2s=} + resolution: {integrity: sha512-sHwGTxerREyQhyXFHhZRHvy7PlbBUjsoVbxhf5f+9JasC+IhQ2Nv4uJFjOo16uUPPp7l+lsRUvK/ZwrdGRbFBA==} engines: {node: '>=6.12'} dependencies: '@0xproject/types': 0.7.0 @@ -1712,7 +1708,7 @@ packages: '@babel/parser': 7.17.9 '@babel/template': 7.16.7 '@babel/traverse': 7.17.9 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 convert-source-map: 1.8.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -1726,7 +1722,7 @@ packages: resolution: {integrity: sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.16.8 + '@babel/types': 7.17.10 jsesc: 2.5.2 source-map: 0.5.7 dev: false @@ -1753,7 +1749,7 @@ packages: resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 dev: true /@babel/helper-builder-binary-assignment-operator-visitor/7.16.7: @@ -1761,7 +1757,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.16.7 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 dev: true /@babel/helper-compilation-targets/7.16.7_@babel+core@7.17.10: @@ -2007,13 +2003,13 @@ packages: resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.16.8 + '@babel/types': 7.17.10 /@babel/helper-explode-assignable-expression/7.16.7: resolution: {integrity: sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 dev: true /@babel/helper-function-name/7.16.7: @@ -2022,7 +2018,7 @@ packages: dependencies: '@babel/helper-get-function-arity': 7.16.7 '@babel/template': 7.16.7 - '@babel/types': 7.16.8 + '@babel/types': 7.17.10 dev: false /@babel/helper-function-name/7.17.9: @@ -2030,14 +2026,14 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.16.7 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 dev: true /@babel/helper-get-function-arity/7.16.7: resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.16.8 + '@babel/types': 7.17.10 dev: false /@babel/helper-hoist-variables/7.16.7: @@ -2050,21 +2046,21 @@ packages: resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 dev: true /@babel/helper-module-imports/7.16.0: resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.16.8 + '@babel/types': 7.17.10 dev: false /@babel/helper-module-imports/7.16.7: resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 /@babel/helper-module-transforms/7.17.7: resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} @@ -2086,7 +2082,7 @@ packages: resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 dev: true /@babel/helper-plugin-utils/7.10.4: @@ -2108,7 +2104,7 @@ packages: dependencies: '@babel/helper-annotate-as-pure': 7.16.7 '@babel/helper-wrap-function': 7.16.8 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 transitivePeerDependencies: - supports-color dev: true @@ -2121,7 +2117,7 @@ packages: '@babel/helper-member-expression-to-functions': 7.17.7 '@babel/helper-optimise-call-expression': 7.16.7 '@babel/traverse': 7.17.9 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 transitivePeerDependencies: - supports-color dev: true @@ -2130,21 +2126,21 @@ packages: resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 dev: true /@babel/helper-skip-transparent-expression-wrappers/7.16.0: resolution: {integrity: sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 dev: true /@babel/helper-split-export-declaration/7.16.7: resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.16.8 + '@babel/types': 7.17.10 /@babel/helper-validator-identifier/7.15.7: resolution: {integrity: sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==} @@ -2166,7 +2162,7 @@ packages: '@babel/helper-function-name': 7.17.9 '@babel/template': 7.16.7 '@babel/traverse': 7.17.9 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 transitivePeerDependencies: - supports-color dev: true @@ -2203,23 +2199,31 @@ packages: resolution: {integrity: sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.17.10 dev: false /@babel/parser/7.17.10: resolution: {integrity: sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.17.10 dev: true /@babel/parser/7.17.3: resolution: {integrity: sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.17.10 /@babel/parser/7.17.9: resolution: {integrity: sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.17.10 dev: true /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.17.10: @@ -4166,7 +4170,7 @@ packages: '@babel/helper-module-imports': 7.16.7 '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.10 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 dev: true /@babel/plugin-transform-react-jsx/7.17.3_@babel+core@7.17.9: @@ -4183,7 +4187,7 @@ packages: '@babel/helper-module-imports': 7.16.7 '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.9 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 dev: true /@babel/plugin-transform-react-pure-annotations/7.16.7: @@ -4597,7 +4601,7 @@ packages: '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.17.10 '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.17.10 '@babel/preset-modules': 0.1.5_@babel+core@7.17.10 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.17.10 babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.17.10 babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.17.10 @@ -4685,7 +4689,7 @@ packages: '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.17.9 '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.17.9 '@babel/preset-modules': 0.1.5_@babel+core@7.17.9 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.17.9 babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.17.9 babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.17.9 @@ -4736,7 +4740,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.17.10 '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.17.10 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 esutils: 2.0.3 dev: true @@ -4752,7 +4756,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.17.9 '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.17.9 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 esutils: 2.0.3 dev: true @@ -4906,7 +4910,7 @@ packages: '@babel/helper-hoist-variables': 7.16.7 '@babel/helper-split-export-declaration': 7.16.7 '@babel/parser': 7.16.12 - '@babel/types': 7.16.8 + '@babel/types': 7.17.10 debug: 4.3.3 globals: 11.12.0 transitivePeerDependencies: @@ -4942,20 +4946,13 @@ packages: '@babel/helper-hoist-variables': 7.16.7 '@babel/helper-split-export-declaration': 7.16.7 '@babel/parser': 7.17.9 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.16.8: - resolution: {integrity: sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.16.7 - to-fast-properties: 2.0.0 - /@babel/types/7.17.0: resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} engines: {node: '>=6.9.0'} @@ -8492,6 +8489,7 @@ packages: - '@storybook/builder-webpack5' - '@storybook/manager-webpack5' - '@types/react' + - bluebird - bufferutil - encoding - eslint @@ -8602,6 +8600,7 @@ packages: - '@storybook/builder-webpack5' - '@storybook/manager-webpack5' - '@types/react' + - bluebird - bufferutil - encoding - eslint @@ -8664,6 +8663,7 @@ packages: - '@storybook/react' - '@storybook/vue3' - '@types/react' + - bluebird - bufferutil - encoding - eslint @@ -8731,6 +8731,7 @@ packages: - '@storybook/react' - '@storybook/vue3' - '@types/react' + - bluebird - bufferutil - encoding - eslint @@ -8982,7 +8983,7 @@ packages: css-loader: 3.6.0_webpack@4.46.0 file-loader: 6.2.0_webpack@4.46.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6 + fork-ts-checker-webpack-plugin: 4.1.6_webpack@4.46.0 glob: 7.2.0 glob-promise: 3.4.0_glob@7.2.0 global: 4.4.0 @@ -9005,6 +9006,7 @@ packages: webpack-virtual-modules: 0.2.2 transitivePeerDependencies: - '@types/react' + - bluebird - eslint - supports-color - vue-template-compiler @@ -9086,7 +9088,6 @@ packages: transitivePeerDependencies: - '@swc/core' - '@types/react' - - acorn - esbuild - eslint - supports-color @@ -9541,6 +9542,7 @@ packages: ws: 8.5.0 transitivePeerDependencies: - '@types/react' + - bluebird - bufferutil - encoding - eslint @@ -9576,6 +9578,7 @@ packages: transitivePeerDependencies: - '@storybook/manager-webpack5' - '@types/react' + - bluebird - bufferutil - encoding - eslint @@ -9610,6 +9613,7 @@ packages: transitivePeerDependencies: - '@storybook/manager-webpack5' - '@types/react' + - bluebird - bufferutil - encoding - eslint @@ -9645,6 +9649,7 @@ packages: transitivePeerDependencies: - '@storybook/manager-webpack5' - '@types/react' + - bluebird - bufferutil - encoding - eslint @@ -9771,6 +9776,7 @@ packages: webpack-virtual-modules: 0.2.2 transitivePeerDependencies: - '@types/react' + - bluebird - encoding - eslint - supports-color @@ -9829,7 +9835,6 @@ packages: transitivePeerDependencies: - '@swc/core' - '@types/react' - - acorn - encoding - esbuild - eslint @@ -10018,6 +10023,7 @@ packages: - '@storybook/manager-webpack5' - '@types/react' - '@types/webpack' + - bluebird - bufferutil - encoding - eslint @@ -10817,6 +10823,12 @@ packages: resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} dev: true + /@types/keyv/3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 17.0.31 + dev: false + /@types/lodash-es/4.17.6: resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==} dependencies: @@ -11016,6 +11028,12 @@ packages: '@types/node': 17.0.31 dev: true + /@types/responselike/1.0.0: + resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + dependencies: + '@types/node': 17.0.31 + dev: false + /@types/retry/0.12.1: resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} dev: true @@ -11100,8 +11118,8 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true - /@types/use-subscription/1.0.0: - resolution: {integrity: sha512-0WWZ5GUDKMXUY/1zy4Ur5/zsC0s/B+JjXfHdkvx6JgDNZzZV5eW+KKhDqsTGyqX56uh99gwGwbsKbVwkcVIKQA==} + /@types/use-sync-external-store/0.0.3: + resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} /@types/uuid/8.3.4: resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} @@ -12093,6 +12111,18 @@ packages: dependencies: micromatch: 3.1.10 normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + + /anymatch/2.0.0_supports-color@4.5.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + dependencies: + micromatch: 3.1.10_supports-color@4.5.0 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: false + optional: true /anymatch/3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} @@ -12509,6 +12539,8 @@ packages: mkdirp: 0.5.6 source-map-support: 0.5.21 typescript: 2.9.2 + transitivePeerDependencies: + - supports-color dev: false /aws-sign2/0.7.0: @@ -12583,6 +12615,8 @@ packages: private: 0.1.8 slash: 1.0.0 source-map: 0.5.7 + transitivePeerDependencies: + - supports-color dev: false /babel-generator/6.26.1: @@ -12604,6 +12638,8 @@ packages: babel-helper-explode-assignable-expression: 6.24.1 babel-runtime: 6.26.0 babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-helper-call-delegate/6.24.1: @@ -12613,6 +12649,8 @@ packages: babel-runtime: 6.26.0 babel-traverse: 6.26.0 babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-helper-define-map/6.26.0: @@ -12622,6 +12660,8 @@ packages: babel-runtime: 6.26.0 babel-types: 6.26.0 lodash: 4.17.21 + transitivePeerDependencies: + - supports-color dev: false /babel-helper-explode-assignable-expression/6.24.1: @@ -12630,6 +12670,8 @@ packages: babel-runtime: 6.26.0 babel-traverse: 6.26.0 babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-helper-function-name/6.24.1: @@ -12640,6 +12682,8 @@ packages: babel-template: 6.26.0 babel-traverse: 6.26.0 babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-helper-get-function-arity/6.24.1: @@ -12679,6 +12723,8 @@ packages: babel-template: 6.26.0 babel-traverse: 6.26.0 babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-helper-replace-supers/6.24.1: @@ -12690,6 +12736,8 @@ packages: babel-template: 6.26.0 babel-traverse: 6.26.0 babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-helpers/6.24.1: @@ -12697,6 +12745,8 @@ packages: dependencies: babel-runtime: 6.26.0 babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-jest/28.1.0_@babel+core@7.17.10: @@ -13103,6 +13153,8 @@ packages: babel-helper-remap-async-to-generator: 6.24.1 babel-plugin-syntax-async-functions: 6.13.0 babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-plugin-transform-es2015-arrow-functions/6.22.0: @@ -13125,6 +13177,8 @@ packages: babel-traverse: 6.26.0 babel-types: 6.26.0 lodash: 4.17.21 + transitivePeerDependencies: + - supports-color dev: false /babel-plugin-transform-es2015-classes/6.24.1: @@ -13139,6 +13193,8 @@ packages: babel-template: 6.26.0 babel-traverse: 6.26.0 babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-plugin-transform-es2015-computed-properties/6.24.1: @@ -13146,6 +13202,8 @@ packages: dependencies: babel-runtime: 6.26.0 babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-plugin-transform-es2015-destructuring/6.23.0: @@ -13173,6 +13231,8 @@ packages: babel-helper-function-name: 6.24.1 babel-runtime: 6.26.0 babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-plugin-transform-es2015-literals/6.22.0: @@ -13187,6 +13247,8 @@ packages: babel-plugin-transform-es2015-modules-commonjs: 6.26.2 babel-runtime: 6.26.0 babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-plugin-transform-es2015-modules-commonjs/6.26.2: @@ -13196,6 +13258,8 @@ packages: babel-runtime: 6.26.0 babel-template: 6.26.0 babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-plugin-transform-es2015-modules-systemjs/6.24.1: @@ -13204,6 +13268,8 @@ packages: babel-helper-hoist-variables: 6.24.1 babel-runtime: 6.26.0 babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-plugin-transform-es2015-modules-umd/6.24.1: @@ -13212,6 +13278,8 @@ packages: babel-plugin-transform-es2015-modules-amd: 6.24.1 babel-runtime: 6.26.0 babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-plugin-transform-es2015-object-super/6.24.1: @@ -13219,6 +13287,8 @@ packages: dependencies: babel-helper-replace-supers: 6.24.1 babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-plugin-transform-es2015-parameters/6.24.1: @@ -13230,6 +13300,8 @@ packages: babel-template: 6.26.0 babel-traverse: 6.26.0 babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-plugin-transform-es2015-shorthand-properties/6.24.1: @@ -13279,6 +13351,8 @@ packages: babel-helper-builder-binary-assignment-operator-visitor: 6.24.1 babel-plugin-syntax-exponentiation-operator: 6.13.0 babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color dev: false /babel-plugin-transform-regenerator/6.26.0: @@ -13350,6 +13424,8 @@ packages: browserslist: 3.2.8 invariant: 2.2.4 semver: 5.7.1 + transitivePeerDependencies: + - supports-color dev: false /babel-preset-jest/28.0.2_@babel+core@7.17.10: @@ -13376,6 +13452,8 @@ packages: lodash: 4.17.21 mkdirp: 0.5.6 source-map-support: 0.4.18 + transitivePeerDependencies: + - supports-color dev: false /babel-runtime/6.26.0: @@ -13393,6 +13471,8 @@ packages: babel-types: 6.26.0 babylon: 6.18.0 lodash: 4.17.21 + transitivePeerDependencies: + - supports-color dev: false /babel-traverse/6.26.0: @@ -13407,6 +13487,8 @@ packages: globals: 9.18.0 invariant: 2.2.4 lodash: 4.17.21 + transitivePeerDependencies: + - supports-color dev: false /babel-types/6.26.0: @@ -13423,6 +13505,8 @@ packages: dependencies: babel-core: 6.26.3 object-assign: 4.1.1 + transitivePeerDependencies: + - supports-color dev: false /babylon/6.18.0: @@ -13650,6 +13734,8 @@ packages: qs: 6.9.7 raw-body: 2.4.3 type-is: 1.6.18 + transitivePeerDependencies: + - supports-color /body-parser/1.20.0: resolution: {integrity: sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==} @@ -13667,6 +13753,8 @@ packages: raw-body: 2.5.1 type-is: 1.6.18 unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color dev: false /bonjour-service/1.0.11: @@ -13775,6 +13863,27 @@ packages: snapdragon-node: 2.1.1 split-string: 3.1.0 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + /braces/2.3.2_supports-color@4.5.0: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2_supports-color@4.5.0 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + optional: true /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -14020,7 +14129,7 @@ packages: mississippi: 3.0.0 mkdirp: 0.5.6 move-concurrently: 1.0.1 - promise-inflight: 1.0.1 + promise-inflight: 1.0.1_bluebird@3.7.2 rimraf: 2.7.1 ssri: 6.0.2 unique-filename: 1.1.1 @@ -14049,6 +14158,8 @@ packages: ssri: 8.0.1 tar: 6.1.11 unique-filename: 1.1.1 + transitivePeerDependencies: + - bluebird dev: true /cache-base/1.0.1: @@ -14271,6 +14382,30 @@ packages: upath: 1.2.0 optionalDependencies: fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + + /chokidar/2.1.8_supports-color@4.5.0: + resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + dependencies: + anymatch: 2.0.0_supports-color@4.5.0 + async-each: 1.0.3 + braces: 2.3.2_supports-color@4.5.0 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.3 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1_supports-color@4.5.0 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + dev: false + optional: true /chokidar/3.5.2: resolution: {integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==} @@ -14727,6 +14862,8 @@ packages: on-headers: 1.0.2 safe-buffer: 5.1.2 vary: 1.1.2 + transitivePeerDependencies: + - supports-color /compute-scroll-into-view/1.0.17: resolution: {integrity: sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==} @@ -15015,6 +15152,8 @@ packages: p-all: 2.1.0 p-filter: 2.1.0 p-map: 3.0.0 + transitivePeerDependencies: + - supports-color dev: true /crc-32/1.2.2: @@ -15634,17 +15773,45 @@ packages: /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + + /debug/2.6.9_supports-color@4.5.0: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 + supports-color: 4.5.0 + dev: false + optional: true /debug/3.1.0: resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 dev: false /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 @@ -15946,6 +16113,8 @@ packages: dependencies: address: 1.1.2 debug: 2.6.9 + transitivePeerDependencies: + - supports-color dev: true /did-jwt/5.12.3: @@ -16406,6 +16575,7 @@ packages: yeast: 0.1.2 transitivePeerDependencies: - bufferutil + - supports-color - utf-8-validate dev: false @@ -16999,7 +17169,7 @@ packages: engines: {node: '>=8.3.0'} dependencies: '@babel/traverse': 7.17.9 - '@babel/types': 7.17.0 + '@babel/types': 7.17.10 c8: 7.11.2 transitivePeerDependencies: - supports-color @@ -17037,6 +17207,8 @@ packages: json-rpc-engine: 3.8.0 pify: 2.3.0 tape: 4.15.1 + transitivePeerDependencies: + - supports-color dev: false /eth-ens-namehash/1.0.2: @@ -17062,6 +17234,10 @@ packages: servify: 0.1.12 ws: 3.3.3 xhr-request-promise: 0.1.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate dev: false /eth-lib/0.2.8: @@ -17505,6 +17681,24 @@ packages: regex-not: 1.0.2 snapdragon: 0.8.2 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + /expand-brackets/2.1.4_supports-color@4.5.0: + resolution: {integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI=} + engines: {node: '>=0.10.0'} + dependencies: + debug: 2.6.9_supports-color@4.5.0 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@4.5.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + optional: true /expand-tilde/2.0.2: resolution: {integrity: sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=} @@ -17558,6 +17752,8 @@ packages: type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 + transitivePeerDependencies: + - supports-color /ext/1.4.0: resolution: {integrity: sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==} @@ -17606,6 +17802,25 @@ packages: regex-not: 1.0.2 snapdragon: 0.8.2 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + /extglob/2.0.4_supports-color@4.5.0: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4_supports-color@4.5.0 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@4.5.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + optional: true /extract-files/9.0.0: resolution: {integrity: sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==} @@ -17663,6 +17878,8 @@ packages: is-glob: 4.0.3 merge2: 1.4.1 micromatch: 3.1.10 + transitivePeerDependencies: + - supports-color dev: true /fast-glob/3.2.11: @@ -17835,6 +18052,8 @@ packages: parseurl: 1.3.3 statuses: 1.5.0 unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color /find-cache-dir/2.1.0: resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} @@ -18058,9 +18277,21 @@ packages: resolution: {integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=} dev: false - /fork-ts-checker-webpack-plugin/4.1.6: + /fork-ts-checker-webpack-plugin/4.1.6_webpack@4.46.0: resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} engines: {node: '>=6.11.5', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + typescript: + optional: true + vue-template-compiler: + optional: true dependencies: '@babel/code-frame': 7.16.7 chalk: 2.4.2 @@ -18068,7 +18299,10 @@ packages: minimatch: 3.1.2 semver: 5.7.1 tapable: 1.1.3 + webpack: 4.46.0 worker-rpc: 0.1.1 + transitivePeerDependencies: + - supports-color dev: true /fork-ts-checker-webpack-plugin/6.5.1_webpack@4.46.0: @@ -18645,6 +18879,8 @@ packages: ignore: 4.0.6 pify: 4.0.1 slash: 2.0.0 + transitivePeerDependencies: + - supports-color dev: true /glogg/1.0.2: @@ -18658,6 +18894,8 @@ packages: resolution: {integrity: sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==} engines: {node: '>=4'} dependencies: + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.0 decompress-response: 3.3.0 duplexer3: 0.1.4 get-stream: 3.0.0 @@ -18680,6 +18918,8 @@ packages: dependencies: '@sindresorhus/is': 0.14.0 '@szmarczak/http-timer': 1.1.2 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.0 cacheable-request: 6.1.0 decompress-response: 3.3.0 duplexer3: 0.1.4 @@ -19134,8 +19374,6 @@ packages: param-case: 3.0.4 relateurl: 0.2.7 terser: 5.10.0 - transitivePeerDependencies: - - acorn dev: true /html-parse-stringify/3.0.1: @@ -19197,9 +19435,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.72.0_webpack-cli@4.9.2 - transitivePeerDependencies: - - acorn + webpack: 5.72.0 dev: true /htmlparser2/6.1.0: @@ -20646,6 +20882,8 @@ packages: walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 + transitivePeerDependencies: + - supports-color dev: true /jest-haste-map/28.1.0: @@ -21131,6 +21369,8 @@ packages: json-rpc-error: 2.0.0 promise-to-callback: 1.0.0 safe-event-emitter: 1.0.1 + transitivePeerDependencies: + - supports-color dev: false /json-rpc-engine/6.1.0: @@ -21759,7 +21999,7 @@ packages: /lower-case/2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.3.1 + tslib: 2.4.0 dev: true /lowercase-keys/1.0.1: @@ -22115,6 +22355,30 @@ packages: regex-not: 1.0.2 snapdragon: 0.8.2 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + /micromatch/3.1.10_supports-color@4.5.0: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2_supports-color@4.5.0 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4_supports-color@4.5.0 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13_supports-color@4.5.0 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@4.5.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + optional: true /micromatch/4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -22583,6 +22847,28 @@ packages: regex-not: 1.0.2 snapdragon: 0.8.2 to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + /nanomatch/1.2.13_supports-color@4.5.0: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@4.5.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + optional: true /native-abort-controller/1.0.4_abort-controller@3.0.0: resolution: {integrity: sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ==} @@ -22911,7 +23197,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 dev: false /object-keys/0.4.0: @@ -23069,7 +23355,7 @@ packages: is-wsl: 2.2.0 dev: true - /opensea-js/1.2.7: + /opensea-js/1.2.7_webpack-cli@4.9.2: resolution: {integrity: sha512-s/ixGOIOpvqKiau3lSdUJF/osKVYh9yVZBpOslsk5bgRlbkJkBrfqCh0/2GH11EvX/wRYSaL70IYKvYew7g2pg==} dependencies: bignumber.js: 4.1.0 @@ -23081,11 +23367,14 @@ packages: lodash: 4.17.21 query-string: 6.13.5 web3: 0.20.7 - webpack: 3.12.0 - wyvern-js: github.com/ProjectOpenSea/wyvern-js/fabb7660f23f2252c141077e32193d281036299e + webpack: 3.12.0_webpack-cli@4.9.2 + wyvern-js: github.com/ProjectOpenSea/wyvern-js/fabb7660f23f2252c141077e32193d281036299e_webpack-cli@4.9.2 wyvern-schemas: github.com/ProjectOpenSea/wyvern-schemas/e1a08fcf8ce2b11a0fe9cbdc7c9f77c59fadef26 transitivePeerDependencies: - debug + - supports-color + - webpack-cli + - webpack-command dev: false /opn/5.5.0: @@ -23881,6 +24170,22 @@ packages: /promise-inflight/1.0.1: resolution: {integrity: sha1-mEcocL8igTL8vdhoEputEsPAKeM=} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: true + + /promise-inflight/1.0.1_bluebird@3.7.2: + resolution: {integrity: sha1-mEcocL8igTL8vdhoEputEsPAKeM=} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dependencies: + bluebird: 3.7.2 dev: true /promise-to-callback/1.0.0: @@ -24840,6 +25145,20 @@ packages: graceful-fs: 4.2.10 micromatch: 3.1.10 readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color + + /readdirp/2.2.1_supports-color@4.5.0: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + dependencies: + graceful-fs: 4.2.10 + micromatch: 3.1.10_supports-color@4.5.0 + readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color + dev: false + optional: true /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -25569,6 +25888,8 @@ packages: micromatch: 3.1.10 minimist: 1.2.6 walker: 1.0.8 + transitivePeerDependencies: + - supports-color dev: true /saxes/5.0.1: @@ -25741,6 +26062,8 @@ packages: on-finished: 2.3.0 range-parser: 1.2.1 statuses: 1.5.0 + transitivePeerDependencies: + - supports-color /serialize-javascript/4.0.0: resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} @@ -25782,6 +26105,8 @@ packages: http-errors: 1.6.3 mime-types: 2.1.35 parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color /serve-static/1.14.2: resolution: {integrity: sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==} @@ -25791,6 +26116,8 @@ packages: escape-html: 1.0.3 parseurl: 1.3.3 send: 0.17.2 + transitivePeerDependencies: + - supports-color /servify/0.1.12: resolution: {integrity: sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==} @@ -25801,6 +26128,8 @@ packages: express: 4.17.3 request: 2.88.2 xhr: 2.6.0 + transitivePeerDependencies: + - supports-color dev: false /ses/0.15.15: @@ -26004,6 +26333,25 @@ packages: source-map: 0.5.7 source-map-resolve: 0.5.3 use: 3.1.1 + transitivePeerDependencies: + - supports-color + + /snapdragon/0.8.2_supports-color@4.5.0: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + dependencies: + base: 0.11.2 + debug: 2.6.9_supports-color@4.5.0 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false + optional: true /socket.io-client/2.4.0: resolution: {integrity: sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==} @@ -26021,6 +26369,7 @@ packages: to-array: 0.1.4 transitivePeerDependencies: - bufferutil + - supports-color - utf-8-validate dev: false @@ -26030,6 +26379,8 @@ packages: component-emitter: 1.3.0 debug: 3.1.0 isarray: 2.0.1 + transitivePeerDependencies: + - supports-color dev: false /sockjs-client/1.6.0: @@ -26755,6 +27106,10 @@ packages: setimmediate: 1.0.5 tar: 4.4.19 xhr-request: 1.1.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate dev: false /swc-loader/0.2.0_bv6b5h5gpy5xmvv4nr5rsqz4y4: @@ -26918,6 +27273,8 @@ packages: terser: 5.12.1 webpack: 4.46.0 webpack-sources: 1.4.3 + transitivePeerDependencies: + - bluebird dev: true /terser-webpack-plugin/5.3.1_bv6b5h5gpy5xmvv4nr5rsqz4y4: @@ -26974,6 +27331,7 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: + acorn: 8.7.1 commander: 2.20.3 source-map: 0.6.1 source-map-support: 0.5.21 @@ -26983,12 +27341,11 @@ packages: resolution: {integrity: sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==} engines: {node: '>=10'} hasBin: true - peerDependencies: - acorn: ^8.5.0 peerDependenciesMeta: acorn: optional: true dependencies: + acorn: 8.7.1 commander: 2.20.3 source-map: 0.7.3 source-map-support: 0.5.21 @@ -27854,7 +28211,7 @@ packages: dependencies: source-map: 0.5.7 uglify-js: 2.8.29 - webpack: 3.12.0 + webpack: 3.12.0_webpack-cli@4.9.2 webpack-sources: 1.4.3 dev: false @@ -28174,23 +28531,15 @@ packages: use-isomorphic-layout-effect: 1.1.2 dev: true - /use-subscription/1.6.0: - resolution: {integrity: sha512-0Y/cTLlZfw547tJhJMoRA16OUbVqRm6DmvGpiGbmLST6BIA5KU5cKlvlz8DVMrACnWpyEjCkgmhLatthP4jUbA==} + /use-sync-external-store/1.1.0: + resolution: {integrity: sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ==} peerDependencies: - react: ^18.0.0 || 18 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true dev: false - /use-subscription/1.6.0_react@packages+empty: - resolution: {integrity: sha512-0Y/cTLlZfw547tJhJMoRA16OUbVqRm6DmvGpiGbmLST6BIA5KU5cKlvlz8DVMrACnWpyEjCkgmhLatthP4jUbA==} - peerDependencies: - react: ^18.0.0 - dependencies: - react: link:packages/empty - dev: false - /use/3.1.1: resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} engines: {node: '>=0.10.0'} @@ -28483,6 +28832,18 @@ packages: resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==} dependencies: chokidar: 2.1.8 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /watchpack-chokidar2/2.0.1_supports-color@4.5.0: + resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==} + dependencies: + chokidar: 2.1.8_supports-color@4.5.0 + transitivePeerDependencies: + - supports-color + dev: false optional: true /watchpack/1.7.5: @@ -28493,6 +28854,21 @@ packages: optionalDependencies: chokidar: 3.5.3 watchpack-chokidar2: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /watchpack/1.7.5_supports-color@4.5.0: + resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==} + dependencies: + graceful-fs: 4.2.10 + neo-async: 2.6.2 + optionalDependencies: + chokidar: 3.5.3 + watchpack-chokidar2: 2.0.1_supports-color@4.5.0 + transitivePeerDependencies: + - supports-color + dev: false /watchpack/2.3.1: resolution: {integrity: sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==} @@ -28526,6 +28902,10 @@ packages: '@types/node': 17.0.31 got: 9.6.0 swarm-js: 0.1.40 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate dev: false /web3-core-helpers/1.7.3: @@ -28560,6 +28940,8 @@ packages: web3-providers-http: 1.7.3 web3-providers-ipc: 1.7.3 web3-providers-ws: 1.7.3 + transitivePeerDependencies: + - supports-color /web3-core-subscriptions/1.7.3: resolution: {integrity: sha512-/i1ZCLW3SDxEs5mu7HW8KL4Vq7x4/fDXY+yf/vPoDljlpvcLEOnI8y9r7om+0kYwvuTlM6DUHHafvW0221TyRQ==} @@ -28579,6 +28961,8 @@ packages: web3-core-method: 1.7.3 web3-core-requestmanager: 1.7.3 web3-utils: 1.7.3 + transitivePeerDependencies: + - supports-color /web3-eth-abi/1.7.3: resolution: {integrity: sha512-ZlD8DrJro0ocnbZViZpAoMX44x5aYAb73u2tMq557rMmpiluZNnhcCYF/NnVMy6UIkn7SF/qEA45GXA1ne6Tnw==} @@ -28602,6 +28986,8 @@ packages: web3-core-helpers: 1.7.3 web3-core-method: 1.7.3 web3-utils: 1.7.3 + transitivePeerDependencies: + - supports-color dev: false /web3-eth-contract/1.7.3: @@ -28616,6 +29002,8 @@ packages: web3-core-subscriptions: 1.7.3 web3-eth-abi: 1.7.3 web3-utils: 1.7.3 + transitivePeerDependencies: + - supports-color /web3-eth-ens/1.7.3: resolution: {integrity: sha512-q7+hFGHIc0mBI3LwgRVcLCQmp6GItsWgUtEZ5bjwdjOnJdbjYddm7PO9RDcTDQ6LIr7hqYaY4WTRnDHZ6BEt5Q==} @@ -28629,6 +29017,8 @@ packages: web3-eth-abi: 1.7.3 web3-eth-contract: 1.7.3 web3-utils: 1.7.3 + transitivePeerDependencies: + - supports-color dev: false /web3-eth-iban/1.7.3: @@ -28648,6 +29038,8 @@ packages: web3-core-method: 1.7.3 web3-net: 1.7.3 web3-utils: 1.7.3 + transitivePeerDependencies: + - supports-color dev: false /web3-eth/1.7.3: @@ -28666,6 +29058,8 @@ packages: web3-eth-personal: 1.7.3 web3-net: 1.7.3 web3-utils: 1.7.3 + transitivePeerDependencies: + - supports-color dev: false /web3-net/1.7.3: @@ -28675,6 +29069,8 @@ packages: web3-core: 1.7.3 web3-core-method: 1.7.3 web3-utils: 1.7.3 + transitivePeerDependencies: + - supports-color dev: false /web3-provider-engine/13.8.0: @@ -28699,6 +29095,8 @@ packages: tape: 4.15.1 xhr: 2.6.0 xtend: 4.0.2 + transitivePeerDependencies: + - supports-color dev: false /web3-providers-http/1.7.3: @@ -28722,6 +29120,8 @@ packages: eventemitter3: 4.0.4 web3-core-helpers: 1.7.3 websocket: 1.0.34 + transitivePeerDependencies: + - supports-color /web3-shh/1.7.3: resolution: {integrity: sha512-bQTSKkyG7GkuULdZInJ0osHjnmkHij9tAySibpev1XjYdjLiQnd0J9YGF4HjvxoG3glNROpuCyTaRLrsLwaZuw==} @@ -28731,6 +29131,8 @@ packages: web3-core-method: 1.7.3 web3-core-subscriptions: 1.7.3 web3-net: 1.7.3 + transitivePeerDependencies: + - supports-color dev: false /web3-utils/1.7.3: @@ -28766,6 +29168,10 @@ packages: web3-net: 1.7.3 web3-shh: 1.7.3 web3-utils: 1.7.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate dev: false /webcrypto-core/1.4.0: @@ -29050,16 +29456,26 @@ packages: resolution: {integrity: sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==} dependencies: debug: 3.2.7 + transitivePeerDependencies: + - supports-color dev: true /webpack-virtual-modules/0.4.3: resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==} dev: true - /webpack/3.12.0: + /webpack/3.12.0_webpack-cli@4.9.2: resolution: {integrity: sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==} engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} hasBin: true + peerDependencies: + webpack-cli: '*' + webpack-command: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + webpack-command: + optional: true dependencies: acorn: 5.7.4 acorn-dynamic-import: 2.0.2 @@ -29080,7 +29496,8 @@ packages: supports-color: 4.5.0 tapable: 0.2.9 uglifyjs-webpack-plugin: 0.4.6_webpack@3.12.0 - watchpack: 1.7.5 + watchpack: 1.7.5_supports-color@4.5.0 + webpack-cli: 4.9.2_4evrg3m2qioscfus6hwjof6pci webpack-sources: 1.4.3 yargs: 8.0.2 dev: false @@ -29121,6 +29538,8 @@ packages: terser-webpack-plugin: 1.4.5_webpack@4.46.0 watchpack: 1.7.5 webpack-sources: 1.4.3 + transitivePeerDependencies: + - supports-color dev: true /webpack/5.72.0: @@ -29266,6 +29685,8 @@ packages: typedarray-to-buffer: 3.1.5 utf-8-validate: 5.0.9 yaeti: 0.0.6 + transitivePeerDependencies: + - supports-color /whatwg-encoding/2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} @@ -29467,6 +29888,14 @@ packages: /ws/3.3.3: resolution: {integrity: sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true dependencies: async-limiter: 1.0.1 safe-buffer: 5.1.2 @@ -29952,8 +30381,9 @@ packages: web3: 0.20.7 dev: false - github.com/ProjectOpenSea/wyvern-js/fabb7660f23f2252c141077e32193d281036299e: + github.com/ProjectOpenSea/wyvern-js/fabb7660f23f2252c141077e32193d281036299e_webpack-cli@4.9.2: resolution: {tarball: https://codeload.github.com/ProjectOpenSea/wyvern-js/tar.gz/fabb7660f23f2252c141077e32193d281036299e} + id: github.com/ProjectOpenSea/wyvern-js/fabb7660f23f2252c141077e32193d281036299e name: wyvern-js version: 3.2.0 dependencies: @@ -29981,7 +30411,11 @@ packages: typescript: 2.9.2 typescript-eslint-parser: 16.0.1_typescript@2.9.2 web3: 0.20.7 - webpack: 3.12.0 + webpack: 3.12.0_webpack-cli@4.9.2 + transitivePeerDependencies: + - supports-color + - webpack-cli + - webpack-command dev: false github.com/ProjectOpenSea/wyvern-schemas/e1a08fcf8ce2b11a0fe9cbdc7c9f77c59fadef26: @@ -29997,6 +30431,7 @@ packages: wyvern-js: github.com/ProjectOpenSea/wyvern-js/6f85f1b42f0962d2cc8e97b7e7f680865e3f26c1 transitivePeerDependencies: - debug + - supports-color dev: false github.com/ProjectWyvern/ethereumjs-abi/3d2d89641a6ad5984929b6ca4b646452ec74f73d: