From ed077080af27eb90933f4abb41c4a54c8ba8be31 Mon Sep 17 00:00:00 2001 From: Corban Brook Date: Wed, 15 May 2024 17:00:58 -0400 Subject: [PATCH] Refine Package Exports (#51) * Move TxnDetails into KitProvider dir * packages/kit: Remove barrel files and place explicit exports in root index * Fixing imports * package/connectors: Remove barrel file and explicity export each connector and types * packages/wallet: Only export KitWalletProvider and openWalletModal hook * packages/checkout: Exporting KitCheckoutProvider and openCheckoutModal * Export CheckoutSettings --- examples/react-waas/package.json | 3 +- packages/checkout/src/api/data.ts | 2 +- .../{CheckoutModal.tsx => CheckoutModal.ts} | 4 +- .../{Navigation.tsx => Navigation.ts} | 2 +- .../src/contexts}/genericContext.ts | 0 packages/checkout/src/index.ts | 7 ++ packages/checkout/src/index.tsx | 3 - .../src/connectors/apple/AppleLogo.tsx | 2 +- .../coinbaseWallet/CoinbaseWalletLogo.tsx | 2 +- .../src/connectors/discord/DiscordLogo.tsx | 2 +- .../src/connectors/email/EmailLogo.tsx | 2 +- .../src/connectors/facebook/FacebookLogo.tsx | 2 +- .../src/connectors/google/GoogleLogo.tsx | 2 +- packages/connectors/src/connectors/index.ts | 14 ---- .../src/connectors/injected/InjectedLogo.tsx | 2 +- .../src/connectors/metamask/MetamaskLogo.tsx | 2 +- .../src/connectors/sequence/SequenceLogo.tsx | 2 +- .../src/connectors/twitch/TwitchLogo.tsx | 2 +- .../walletConnect/WalletConnectLogo.tsx | 2 +- packages/connectors/src/defaultConnectors.ts | 10 ++- packages/connectors/src/index.ts | 26 ++++++- .../connectors/src/{connectors => }/types.ts | 0 .../ConnectWalletContent/index.tsx | 4 +- .../components/KitProvider/NetworkBadge.tsx | 2 +- .../{ => KitProvider}/TxnDetails/index.tsx | 9 +-- .../kit/src/components/KitProvider/index.tsx | 18 +++-- packages/kit/src/components/index.ts | 1 - packages/kit/src/contexts/Analytics.ts | 2 +- packages/kit/src/contexts/ConnectModal.ts | 2 +- packages/kit/src/contexts/KitConfig.ts | 3 +- packages/kit/src/contexts/Theme.ts | 3 +- packages/kit/src/contexts/WalletSettings.ts | 3 +- packages/kit/src/contexts/genericContext.ts | 19 +++++ packages/kit/src/contexts/index.ts | 6 -- packages/kit/src/hooks/index.ts | 10 --- packages/kit/src/index.ts | 69 +++++++++++++++++-- packages/kit/src/utils/helpers.ts | 4 ++ packages/kit/src/utils/index.ts | 9 --- packages/kit/src/utils/string.ts | 3 - .../{Navigation.tsx => Navigation.ts} | 2 +- .../{WalletModal.tsx => WalletModal.ts} | 2 +- .../src/{utils => contexts}/genericContext.ts | 0 packages/wallet/src/index.ts | 8 ++- 43 files changed, 175 insertions(+), 97 deletions(-) rename packages/checkout/src/contexts/{CheckoutModal.tsx => CheckoutModal.ts} (92%) rename packages/checkout/src/contexts/{Navigation.tsx => Navigation.ts} (95%) rename packages/{kit/src/utils => checkout/src/contexts}/genericContext.ts (100%) create mode 100644 packages/checkout/src/index.ts delete mode 100644 packages/checkout/src/index.tsx delete mode 100644 packages/connectors/src/connectors/index.ts rename packages/connectors/src/{connectors => }/types.ts (100%) rename packages/kit/src/components/{ => KitProvider}/TxnDetails/index.tsx (96%) delete mode 100644 packages/kit/src/components/index.ts create mode 100644 packages/kit/src/contexts/genericContext.ts delete mode 100644 packages/kit/src/contexts/index.ts delete mode 100644 packages/kit/src/hooks/index.ts delete mode 100644 packages/kit/src/utils/index.ts delete mode 100644 packages/kit/src/utils/string.ts rename packages/wallet/src/contexts/{Navigation.tsx => Navigation.ts} (97%) rename packages/wallet/src/contexts/{WalletModal.tsx => WalletModal.ts} (81%) rename packages/wallet/src/{utils => contexts}/genericContext.ts (100%) diff --git a/examples/react-waas/package.json b/examples/react-waas/package.json index 2c9c0354..1e1e43e5 100644 --- a/examples/react-waas/package.json +++ b/examples/react-waas/package.json @@ -8,7 +8,8 @@ "start": "vite --port 4444", "build": "tsc && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" + "preview": "vite preview", + "typecheck": "tsc --noEmit" }, "dependencies": { "0xsequence": "^1.9.26", diff --git a/packages/checkout/src/api/data.ts b/packages/checkout/src/api/data.ts index 275c7b2f..f9fd658b 100644 --- a/packages/checkout/src/api/data.ts +++ b/packages/checkout/src/api/data.ts @@ -1,7 +1,7 @@ import { TokenMetadata } from '@0xsequence/metadata' import { ChainId, networks } from '@0xsequence/network' -import { SardineCheckout } from '..' +import { SardineCheckout } from '../contexts/CheckoutModal' export interface FetchSardineClientTokenReturn { token: string diff --git a/packages/checkout/src/contexts/CheckoutModal.tsx b/packages/checkout/src/contexts/CheckoutModal.ts similarity index 92% rename from packages/checkout/src/contexts/CheckoutModal.tsx rename to packages/checkout/src/contexts/CheckoutModal.ts index 58a57936..c06a9e8e 100644 --- a/packages/checkout/src/contexts/CheckoutModal.tsx +++ b/packages/checkout/src/contexts/CheckoutModal.ts @@ -1,4 +1,6 @@ -import { createGenericContext, Theme } from '@0xsequence/kit' +import { Theme } from '@0xsequence/kit' + +import { createGenericContext } from './genericContext' interface CoinQuantity { contractAddress: string diff --git a/packages/checkout/src/contexts/Navigation.tsx b/packages/checkout/src/contexts/Navigation.ts similarity index 95% rename from packages/checkout/src/contexts/Navigation.tsx rename to packages/checkout/src/contexts/Navigation.ts index 1fc3fe16..90b91497 100644 --- a/packages/checkout/src/contexts/Navigation.tsx +++ b/packages/checkout/src/contexts/Navigation.ts @@ -1,4 +1,4 @@ -import { createGenericContext } from '@0xsequence/kit' +import { createGenericContext } from './genericContext' export interface SelectCheckoutNavigation { location: 'select-method-checkout' diff --git a/packages/kit/src/utils/genericContext.ts b/packages/checkout/src/contexts/genericContext.ts similarity index 100% rename from packages/kit/src/utils/genericContext.ts rename to packages/checkout/src/contexts/genericContext.ts diff --git a/packages/checkout/src/index.ts b/packages/checkout/src/index.ts new file mode 100644 index 00000000..f67d1dd2 --- /dev/null +++ b/packages/checkout/src/index.ts @@ -0,0 +1,7 @@ +// Provider +export { KitCheckoutProvider } from './shared/components/KitCheckoutProvider' + +// Hooks +export { useCheckoutModal } from './hooks/useCheckoutModal' + +export { type CheckoutSettings } from './contexts/CheckoutModal' diff --git a/packages/checkout/src/index.tsx b/packages/checkout/src/index.tsx deleted file mode 100644 index 64be7bb2..00000000 --- a/packages/checkout/src/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export * from './hooks' -export * from './contexts' -export * from './shared/components' diff --git a/packages/connectors/src/connectors/apple/AppleLogo.tsx b/packages/connectors/src/connectors/apple/AppleLogo.tsx index d516586e..7ac8ebbd 100644 --- a/packages/connectors/src/connectors/apple/AppleLogo.tsx +++ b/packages/connectors/src/connectors/apple/AppleLogo.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { LogoProps } from '../types' +import { LogoProps } from '../../types' interface GetAppleLogo { isDarkMode: boolean diff --git a/packages/connectors/src/connectors/coinbaseWallet/CoinbaseWalletLogo.tsx b/packages/connectors/src/connectors/coinbaseWallet/CoinbaseWalletLogo.tsx index 2ffefedf..2c85f51d 100644 --- a/packages/connectors/src/connectors/coinbaseWallet/CoinbaseWalletLogo.tsx +++ b/packages/connectors/src/connectors/coinbaseWallet/CoinbaseWalletLogo.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { LogoProps } from '../types' +import { LogoProps } from '../../types' export const CoinbaseWalletLogo: React.FunctionComponent = (props: LogoProps) => { return ( diff --git a/packages/connectors/src/connectors/discord/DiscordLogo.tsx b/packages/connectors/src/connectors/discord/DiscordLogo.tsx index 7ce09e65..4f2e300e 100644 --- a/packages/connectors/src/connectors/discord/DiscordLogo.tsx +++ b/packages/connectors/src/connectors/discord/DiscordLogo.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { LogoProps } from '../types' +import { LogoProps } from '../../types' interface GetDiscordLogo { isDarkMode: boolean diff --git a/packages/connectors/src/connectors/email/EmailLogo.tsx b/packages/connectors/src/connectors/email/EmailLogo.tsx index 9cdead54..bf19eb08 100644 --- a/packages/connectors/src/connectors/email/EmailLogo.tsx +++ b/packages/connectors/src/connectors/email/EmailLogo.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { LogoProps } from '../types' +import { LogoProps } from '../../types' interface GetEmailLogo { isDarkMode: boolean diff --git a/packages/connectors/src/connectors/facebook/FacebookLogo.tsx b/packages/connectors/src/connectors/facebook/FacebookLogo.tsx index 41b6fbe2..2bd9d737 100644 --- a/packages/connectors/src/connectors/facebook/FacebookLogo.tsx +++ b/packages/connectors/src/connectors/facebook/FacebookLogo.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { LogoProps } from '../types' +import { LogoProps } from '../../types' export const FacebookLogo: React.FunctionComponent = (props: LogoProps) => { return ( diff --git a/packages/connectors/src/connectors/google/GoogleLogo.tsx b/packages/connectors/src/connectors/google/GoogleLogo.tsx index 30628e9e..ef04c936 100644 --- a/packages/connectors/src/connectors/google/GoogleLogo.tsx +++ b/packages/connectors/src/connectors/google/GoogleLogo.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { LogoProps } from '../types' +import { LogoProps } from '../../types' export const GoogleLogo: React.FunctionComponent = (props: LogoProps) => { return ( diff --git a/packages/connectors/src/connectors/index.ts b/packages/connectors/src/connectors/index.ts deleted file mode 100644 index 6dff6e3c..00000000 --- a/packages/connectors/src/connectors/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -export * from './apple' -export * from './coinbaseWallet' -export * from './discord' -export * from './email' -export * from './facebook' -export * from './google' -export * from './injected' -export * from './metamask' -export * from './mock' -export * from './sequence' -export * from './twitch' -export * from './walletConnect' -export * from './types' -export * from './wagmiConnectors' diff --git a/packages/connectors/src/connectors/injected/InjectedLogo.tsx b/packages/connectors/src/connectors/injected/InjectedLogo.tsx index 7f0d5a1c..8128d656 100644 --- a/packages/connectors/src/connectors/injected/InjectedLogo.tsx +++ b/packages/connectors/src/connectors/injected/InjectedLogo.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { LogoProps } from '../types' +import { LogoProps } from '../../types' export const InjectedLogo: React.FunctionComponent = (props: LogoProps) => { return ( diff --git a/packages/connectors/src/connectors/metamask/MetamaskLogo.tsx b/packages/connectors/src/connectors/metamask/MetamaskLogo.tsx index b9d3afc3..d6450f88 100644 --- a/packages/connectors/src/connectors/metamask/MetamaskLogo.tsx +++ b/packages/connectors/src/connectors/metamask/MetamaskLogo.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { LogoProps } from '../types' +import { LogoProps } from '../../types' export const MetamaskLogo: React.FunctionComponent = (props: LogoProps) => { return ( diff --git a/packages/connectors/src/connectors/sequence/SequenceLogo.tsx b/packages/connectors/src/connectors/sequence/SequenceLogo.tsx index f9372237..114870dc 100644 --- a/packages/connectors/src/connectors/sequence/SequenceLogo.tsx +++ b/packages/connectors/src/connectors/sequence/SequenceLogo.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { LogoProps } from '../types' +import { LogoProps } from '../../types' export const SequenceLogo: React.FunctionComponent = (props: LogoProps) => { return ( diff --git a/packages/connectors/src/connectors/twitch/TwitchLogo.tsx b/packages/connectors/src/connectors/twitch/TwitchLogo.tsx index b9fbdd73..85a9d522 100644 --- a/packages/connectors/src/connectors/twitch/TwitchLogo.tsx +++ b/packages/connectors/src/connectors/twitch/TwitchLogo.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { LogoProps } from '../types' +import { LogoProps } from '../../types' interface GetTwitchLogo { isDarkMode?: boolean diff --git a/packages/connectors/src/connectors/walletConnect/WalletConnectLogo.tsx b/packages/connectors/src/connectors/walletConnect/WalletConnectLogo.tsx index f618e5b9..fafd70be 100644 --- a/packages/connectors/src/connectors/walletConnect/WalletConnectLogo.tsx +++ b/packages/connectors/src/connectors/walletConnect/WalletConnectLogo.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { LogoProps } from '../types' +import { LogoProps } from '../../types' export const WalletConnectLogo: React.FunctionComponent = (props: LogoProps) => { return ( diff --git a/packages/connectors/src/defaultConnectors.ts b/packages/connectors/src/defaultConnectors.ts index 3c7c76d1..84936540 100644 --- a/packages/connectors/src/defaultConnectors.ts +++ b/packages/connectors/src/defaultConnectors.ts @@ -1,10 +1,18 @@ import { getKitConnectWallets } from '@0xsequence/kit' import { CreateConnectorFn } from 'wagmi' -import { apple, coinbaseWallet, email, facebook, google, metamask, sequence, twitch, walletConnect } from './connectors' +import { apple } from './connectors/apple' import { appleWaas } from './connectors/apple/appleWaas' // import { emailWaas } from './connectors/email/emailWaas' +import { coinbaseWallet } from './connectors/coinbaseWallet' +import { email } from './connectors/email' +import { facebook } from './connectors/facebook' +import { google } from './connectors/google' import { googleWaas } from './connectors/google/googleWaas' +import { metamask } from './connectors/metamask' +import { sequence } from './connectors/sequence' +import { twitch } from './connectors/twitch' +import { walletConnect } from './connectors/walletConnect' interface GetDefaultConnectors { walletConnectProjectId: string diff --git a/packages/connectors/src/index.ts b/packages/connectors/src/index.ts index ef68415e..b0ee0b39 100644 --- a/packages/connectors/src/index.ts +++ b/packages/connectors/src/index.ts @@ -1,2 +1,24 @@ -export * from './connectors' -export * from './defaultConnectors' +// Connectors +export { apple, type AppleOptions } from './connectors/apple' +export { coinbaseWallet } from './connectors/coinbaseWallet' +export { discord, type DiscordOptions } from './connectors/discord' +export { email, type EmailOptions } from './connectors/email' +export { facebook, type FacebookOptions } from './connectors/facebook' +export { google, type GoogleOptions } from './connectors/google' +export { injected } from './connectors/injected' +export { metamask } from './connectors/metamask' +export { mock } from './connectors/mock' +export { sequence, type SequenceOptions } from './connectors/sequence' +export { twitch, type TwitchOptions } from './connectors/twitch' +export { walletConnect } from './connectors/walletConnect' +export { + sequenceWallet, + sequenceWaasWallet, + type BaseSequenceConnectorOptions, + type BaseSequenceWaasConnectorOptions +} from './connectors/wagmiConnectors' + +// Default Connectors +export { getDefaultConnectors, getDefaultWaasConnectors } from './defaultConnectors' + +export type { LogoProps } from './types' diff --git a/packages/connectors/src/connectors/types.ts b/packages/connectors/src/types.ts similarity index 100% rename from packages/connectors/src/connectors/types.ts rename to packages/connectors/src/types.ts diff --git a/packages/kit/src/components/KitProvider/ConnectWalletContent/index.tsx b/packages/kit/src/components/KitProvider/ConnectWalletContent/index.tsx index a7baf54b..7a7623e3 100644 --- a/packages/kit/src/components/KitProvider/ConnectWalletContent/index.tsx +++ b/packages/kit/src/components/KitProvider/ConnectWalletContent/index.tsx @@ -21,10 +21,10 @@ import { appleAuthHelpers, useScript } from 'react-apple-signin-auth' import { useConnect, useAccount } from 'wagmi' import { LocalStorageKey, defaultSignInOptions } from '../../../constants' -import { useStorage, useStorageItem } from '../../../hooks' +import { useStorage, useStorageItem } from '../../../hooks/useStorage' import { useEmailAuth } from '../../../hooks/useWaasEmailAuth' import { ExtendedConnector, KitConfig } from '../../../types' -import { isEmailValid } from '../../../utils' +import { isEmailValid } from '../../../utils/helpers' import { KitConnectProviderProps } from '../index' import { Banner } from './Banner' diff --git a/packages/kit/src/components/KitProvider/NetworkBadge.tsx b/packages/kit/src/components/KitProvider/NetworkBadge.tsx index c7e92c99..f99f8aa6 100644 --- a/packages/kit/src/components/KitProvider/NetworkBadge.tsx +++ b/packages/kit/src/components/KitProvider/NetworkBadge.tsx @@ -2,7 +2,7 @@ import { Box, NetworkImage, Text } from '@0xsequence/design-system' import { getNetwork, getNetworkColor, getNetworkBackgroundColor } from '@0xsequence/kit' import React from 'react' -import { capitalize } from '../../utils/string' +import { capitalize } from '../../utils/helpers' interface NetworkBadgeProps { chainId: number diff --git a/packages/kit/src/components/TxnDetails/index.tsx b/packages/kit/src/components/KitProvider/TxnDetails/index.tsx similarity index 96% rename from packages/kit/src/components/TxnDetails/index.tsx rename to packages/kit/src/components/KitProvider/TxnDetails/index.tsx index ebfe4c52..02d51462 100644 --- a/packages/kit/src/components/TxnDetails/index.tsx +++ b/packages/kit/src/components/KitProvider/TxnDetails/index.tsx @@ -6,10 +6,11 @@ import { ethers } from 'ethers' import React, { useEffect, useState } from 'react' import { useConfig } from 'wagmi' -import { useAPIClient } from '../../hooks' -import { capitalize, compareAddress, getNativeTokenInfoByChainId } from '../../utils' -import { DecodingType, TransferProps, AwardItemProps, decodeTransactions } from '../../utils/txnDecoding' -import { CollectibleTileImage } from '../KitProvider/CollectibleTileImage' +import { useAPIClient } from '../../../hooks/useAPIClient' +import { compareAddress, capitalize } from '../../../utils/helpers' +import { getNativeTokenInfoByChainId } from '../../../utils/tokens' +import { DecodingType, TransferProps, AwardItemProps, decodeTransactions } from '../../../utils/txnDecoding' +import { CollectibleTileImage } from '../CollectibleTileImage' interface TxnDetailsProps { address: string diff --git a/packages/kit/src/components/KitProvider/index.tsx b/packages/kit/src/components/KitProvider/index.tsx index 4ad2bfc8..a623de04 100644 --- a/packages/kit/src/components/KitProvider/index.tsx +++ b/packages/kit/src/components/KitProvider/index.tsx @@ -9,22 +9,20 @@ import { Connector, useAccount, useConfig, useConnections } from 'wagmi' import '@0xsequence/design-system/styles.css' import { DEFAULT_SESSION_EXPIRATION, LocalStorageKey } from '../../constants' -import { - KitConfigContextProvider, - ConnectModalContextProvider, - ThemeContextProvider, - WalletConfigContextProvider, - AnalyticsContextProvider -} from '../../contexts' -import { useStorage } from '../../hooks' +import { AnalyticsContextProvider } from '../../contexts/Analytics' +import { ConnectModalContextProvider } from '../../contexts/ConnectModal' +import { KitConfigContextProvider } from '../../contexts/KitConfig' +import { ThemeContextProvider } from '../../contexts/Theme' +import { WalletConfigContextProvider } from '../../contexts/WalletSettings' +import { useStorage } from '../../hooks/useStorage' import { useWaasConfirmationHandler } from '../../hooks/useWaasConfirmationHandler' import { ExtendedConnector, DisplayedAsset, EthAuthSettings, KitConfig, Theme, ModalPosition } from '../../types' -import { getModalPositionCss } from '../../utils' -import { TxnDetails } from '../TxnDetails' +import { getModalPositionCss } from '../../utils/styling' import { ConnectWalletContent } from './ConnectWalletContent' import { NetworkBadge } from './NetworkBadge' import { SequenceLogo } from './SequenceLogo' +import { TxnDetails } from './TxnDetails' export type KitConnectProviderProps = { children: React.ReactNode diff --git a/packages/kit/src/components/index.ts b/packages/kit/src/components/index.ts deleted file mode 100644 index 65e177e3..00000000 --- a/packages/kit/src/components/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './KitProvider' diff --git a/packages/kit/src/contexts/Analytics.ts b/packages/kit/src/contexts/Analytics.ts index 51fb1695..98f3ec2f 100644 --- a/packages/kit/src/contexts/Analytics.ts +++ b/packages/kit/src/contexts/Analytics.ts @@ -1,7 +1,7 @@ import { sequence } from '0xsequence' import React from 'react' -import { createGenericContext } from '../utils' +import { createGenericContext } from './genericContext' type AnalyticsContext = { setAnalytics: React.Dispatch> diff --git a/packages/kit/src/contexts/ConnectModal.ts b/packages/kit/src/contexts/ConnectModal.ts index 8cc71438..727338c7 100644 --- a/packages/kit/src/contexts/ConnectModal.ts +++ b/packages/kit/src/contexts/ConnectModal.ts @@ -1,6 +1,6 @@ import React from 'react' -import { createGenericContext } from '../utils' +import { createGenericContext } from './genericContext' type ConnectModalContext = { setOpenConnectModal: React.Dispatch> diff --git a/packages/kit/src/contexts/KitConfig.ts b/packages/kit/src/contexts/KitConfig.ts index 266f8bba..a7cc9cbb 100644 --- a/packages/kit/src/contexts/KitConfig.ts +++ b/packages/kit/src/contexts/KitConfig.ts @@ -1,4 +1,5 @@ import { KitConfig } from '../types' -import { createGenericContext } from '../utils' + +import { createGenericContext } from './genericContext' export const [useKitConfig, KitConfigContextProvider] = createGenericContext() diff --git a/packages/kit/src/contexts/Theme.ts b/packages/kit/src/contexts/Theme.ts index 5bc1d10f..c22ae8b6 100644 --- a/packages/kit/src/contexts/Theme.ts +++ b/packages/kit/src/contexts/Theme.ts @@ -1,7 +1,8 @@ import React from 'react' import { ModalPosition, Theme } from '../index' -import { createGenericContext } from '../utils' + +import { createGenericContext } from './genericContext' type ThemeContext = { setTheme: React.Dispatch> diff --git a/packages/kit/src/contexts/WalletSettings.ts b/packages/kit/src/contexts/WalletSettings.ts index 5551c507..722adc2d 100644 --- a/packages/kit/src/contexts/WalletSettings.ts +++ b/packages/kit/src/contexts/WalletSettings.ts @@ -1,7 +1,8 @@ import React from 'react' import { DisplayedAsset } from '../types' -import { createGenericContext } from '../utils' + +import { createGenericContext } from './genericContext' type WalletConfigContext = { setDisplayedAssets: React.Dispatch> diff --git a/packages/kit/src/contexts/genericContext.ts b/packages/kit/src/contexts/genericContext.ts new file mode 100644 index 00000000..0ca6a4c9 --- /dev/null +++ b/packages/kit/src/contexts/genericContext.ts @@ -0,0 +1,19 @@ +import { useContext, createContext } from 'react' + +// https://medium.com/@rivoltafilippo/typing-react-context-to-avoid-an-undefined-default-value-2c7c5a7d5947 + +export const createGenericContext = () => { + // Create a context with a generic parameter or undefined + const genericContext = createContext(undefined) + + // Check if the value provided to the context is defined or throw an error + const useGenericContext = () => { + const contextIsDefined = useContext(genericContext) + if (!contextIsDefined) { + throw new Error('useGenericContext must be used within a Provider') + } + return contextIsDefined + } + + return [useGenericContext, genericContext.Provider] as const +} diff --git a/packages/kit/src/contexts/index.ts b/packages/kit/src/contexts/index.ts deleted file mode 100644 index a1a59864..00000000 --- a/packages/kit/src/contexts/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './KitConfig' - -export * from './Analytics' -export * from './ConnectModal' -export * from './Theme' -export * from './WalletSettings' diff --git a/packages/kit/src/hooks/index.ts b/packages/kit/src/hooks/index.ts deleted file mode 100644 index bf189d14..00000000 --- a/packages/kit/src/hooks/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -export * from './useOpenConnectModal' -export * from './useTheme' -export * from './useWalletSettings' -export * from './useWaasFeeOptions' -export * from './useProjectAccessKey' -export * from './useAPIClient' -export * from './useMetadataClient' -export * from './useIndexerClient' -export * from './useStorage' -export * from './data' diff --git a/packages/kit/src/index.ts b/packages/kit/src/index.ts index 274007b7..3a789e96 100644 --- a/packages/kit/src/index.ts +++ b/packages/kit/src/index.ts @@ -1,6 +1,63 @@ -export * from './components' -export * from './constants' -export * from './hooks' -export * from './contexts' -export * from './utils' -export * from './types' +// Provider +export { KitProvider } from './components/KitProvider' + +// Types +export type { + Wallet, + WalletField, + WalletProperties, + DisplayedAsset, + ExtendedConnector, + EthAuthSettings, + Theme, + ModalPosition, + KitConfig, + StorageItem +} from './types' + +// Constants +export { LocalStorageKey, defaultSignInOptions, DEFAULT_SESSION_EXPIRATION } from './constants' + +// Utils +export { getKitConnectWallets } from './utils/getKitConnectWallets' +export { isEmailValid, compareAddress, formatDisplay, capitalize } from './utils/helpers' +export { defaultNativeTokenInfo, getNativeTokenInfoByChainId, getChainIdList } from './utils/tokens' +export { getModalPositionCss } from './utils/styling' +export { getNetwork, getNetworkColor, getNetworkBackgroundColor } from './utils/networks' +export { walletClientToSigner, publicClientToProvider } from './utils/adapters' +export { signEthAuthProof, validateEthProof } from './utils/ethAuth' + +// Contexts +export { useKitConfig, KitConfigContextProvider } from './contexts/KitConfig' +export { useAnalyticsContext, AnalyticsContextProvider } from './contexts/Analytics' +export { useConnectModalContext, ConnectModalContextProvider } from './contexts/ConnectModal' +export { useThemeContext, ThemeContextProvider } from './contexts/Theme' +export { useWalletConfigContext, WalletConfigContextProvider } from './contexts/WalletSettings' + +// Hooks +export { useOpenConnectModal } from './hooks/useOpenConnectModal' +export { useTheme } from './hooks/useTheme' +export { useWalletSettings } from './hooks/useWalletSettings' +export { useWaasFeeOptions } from './hooks/useWaasFeeOptions' +export { useProjectAccessKey } from './hooks/useProjectAccessKey' +export { useAPIClient } from './hooks/useAPIClient' +export { useMetadataClient } from './hooks/useMetadataClient' +export { useIndexerClient, useIndexerClients } from './hooks/useIndexerClient' +export { useStorage, useStorageItem } from './hooks/useStorage' +export { + getNativeTokenBalance, + getCollectionBalance, + getCoinPrices, + getTransactionHistory, + useBalances, + useExchangeRate, + getTokenBalances, + useCoinBalance, + useCoinPrices, + useCollectionBalance, + useCollectibleBalance, + useCollectiblePrices, + useTokenMetadata, + useContractInfo, + useTransactionHistory +} from './hooks/data' diff --git a/packages/kit/src/utils/helpers.ts b/packages/kit/src/utils/helpers.ts index 7a7118b9..bc6e89be 100644 --- a/packages/kit/src/utils/helpers.ts +++ b/packages/kit/src/utils/helpers.ts @@ -71,3 +71,7 @@ export const formatDisplay = (_val: number | string): string => { ...config }).format(val) } + +export const capitalize = (word: string) => { + return word.charAt(0).toUpperCase() + word.slice(1) +} diff --git a/packages/kit/src/utils/index.ts b/packages/kit/src/utils/index.ts deleted file mode 100644 index bb8ec778..00000000 --- a/packages/kit/src/utils/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from './getKitConnectWallets' -export * from './helpers' -export * from './tokens' -export * from './genericContext' -export * from './styling' -export * from './networks' -export * from './adapters' -export * from './ethAuth' -export * from './string' diff --git a/packages/kit/src/utils/string.ts b/packages/kit/src/utils/string.ts deleted file mode 100644 index 7d36fd56..00000000 --- a/packages/kit/src/utils/string.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const capitalize = (word: string) => { - return word.charAt(0).toUpperCase() + word.slice(1) -} diff --git a/packages/wallet/src/contexts/Navigation.tsx b/packages/wallet/src/contexts/Navigation.ts similarity index 97% rename from packages/wallet/src/contexts/Navigation.tsx rename to packages/wallet/src/contexts/Navigation.ts index be9b06bb..54080496 100644 --- a/packages/wallet/src/contexts/Navigation.tsx +++ b/packages/wallet/src/contexts/Navigation.ts @@ -1,6 +1,6 @@ import { Transaction } from '@0xsequence/indexer' -import { createGenericContext } from '../utils/genericContext' +import { createGenericContext } from './genericContext' export interface CollectionDetailsParams { contractAddress: string diff --git a/packages/wallet/src/contexts/WalletModal.tsx b/packages/wallet/src/contexts/WalletModal.ts similarity index 81% rename from packages/wallet/src/contexts/WalletModal.tsx rename to packages/wallet/src/contexts/WalletModal.ts index d1927fe3..d6734406 100644 --- a/packages/wallet/src/contexts/WalletModal.tsx +++ b/packages/wallet/src/contexts/WalletModal.ts @@ -1,6 +1,6 @@ import React from 'react' -import { createGenericContext } from '../utils/genericContext' +import { createGenericContext } from './genericContext' type WalletModalContext = { setOpenWalletModal: React.Dispatch> diff --git a/packages/wallet/src/utils/genericContext.ts b/packages/wallet/src/contexts/genericContext.ts similarity index 100% rename from packages/wallet/src/utils/genericContext.ts rename to packages/wallet/src/contexts/genericContext.ts diff --git a/packages/wallet/src/index.ts b/packages/wallet/src/index.ts index 7014009a..99e83238 100644 --- a/packages/wallet/src/index.ts +++ b/packages/wallet/src/index.ts @@ -1,3 +1,5 @@ -export * from './hooks' -export * from './contexts' -export * from './shared' +// Provider +export { KitWalletProvider } from './shared/KitWalletProvider' + +// Hooks +export { useOpenWalletModal } from './hooks/useOpenWalletModal'