diff --git a/apps/iframe/src/components/interface/GlobalHeader.tsx b/apps/iframe/src/components/interface/GlobalHeader.tsx index 3051cb8984..5489f5dfdf 100644 --- a/apps/iframe/src/components/interface/GlobalHeader.tsx +++ b/apps/iframe/src/components/interface/GlobalHeader.tsx @@ -4,7 +4,7 @@ import { GearSix } from "@phosphor-icons/react/dist/ssr" import { Link, useLocation } from "@tanstack/react-router" import { useAtom } from "jotai" import { appMessageBus } from "#src/services/eventBus" -import { secondaryMenuVisibilityAtom } from "#src/state/interfaceState.ts" +import { secondaryMenuVisibilityAtom } from "#src/state/interfaceState" function signalClosed() { void appMessageBus.emit(Msgs.WalletVisibility, { isOpen: false }) diff --git a/apps/iframe/src/components/interface/banners/BannerList.tsx b/apps/iframe/src/components/interface/banners/BannerList.tsx index 8d30921157..fb4ed7c23b 100644 --- a/apps/iframe/src/components/interface/banners/BannerList.tsx +++ b/apps/iframe/src/components/interface/banners/BannerList.tsx @@ -1,5 +1,5 @@ import { useAtom } from "jotai" -import { bannersAtom } from "#src/state/banner.ts" +import { bannersAtom } from "#src/state/banner" import { PopupBlockedAlert } from "./alerts/PopupBlockedAlert" function useBanners() { diff --git a/apps/iframe/src/components/interface/home/AppStatus.tsx b/apps/iframe/src/components/interface/home/AppStatus.tsx index 3e790fbace..d07a10e2d9 100644 --- a/apps/iframe/src/components/interface/home/AppStatus.tsx +++ b/apps/iframe/src/components/interface/home/AppStatus.tsx @@ -1,7 +1,7 @@ import { Link } from "@tanstack/react-router" import { useAtomValue } from "jotai" import { useHasPermissions } from "#src/hooks/useHasPermissions" -import { currentChainAtom } from "#src/state/chains.ts" +import { currentChainAtom } from "#src/state/chains" import { getAppURL } from "#src/utils/appURL" export const AppStatus = () => { diff --git a/apps/iframe/src/components/interface/home/HappyBalance.tsx b/apps/iframe/src/components/interface/home/HappyBalance.tsx index 41fcd3c658..45b80e0e6e 100644 --- a/apps/iframe/src/components/interface/home/HappyBalance.tsx +++ b/apps/iframe/src/components/interface/home/HappyBalance.tsx @@ -1,7 +1,7 @@ import { useAtom, useAtomValue } from "jotai" import { useEffect } from "react" import { useBalance } from "wagmi" -import { walletOpenSignalAtom } from "#src/state/interfaceState.ts" +import { walletOpenSignalAtom } from "#src/state/interfaceState" import { userAtom } from "#src/state/user" import { formatUserBalance } from "#src/utils/formatUserBalance" diff --git a/apps/iframe/src/components/interface/home/tabs/views/GamesView.tsx b/apps/iframe/src/components/interface/home/tabs/views/GamesView.tsx index 54c60af1be..84ff3131cb 100644 --- a/apps/iframe/src/components/interface/home/tabs/views/GamesView.tsx +++ b/apps/iframe/src/components/interface/home/tabs/views/GamesView.tsx @@ -1,4 +1,4 @@ -import { appList } from "#src/utils/lists.ts" +import { appList } from "#src/utils/lists" /** Displays recently played games that the user logged into. */ const GamesView = () => { diff --git a/apps/iframe/src/components/interface/home/tabs/views/tokens/ImportTokensDialog.tsx b/apps/iframe/src/components/interface/home/tabs/views/tokens/ImportTokensDialog.tsx index 328f499331..5ae1b1c579 100644 --- a/apps/iframe/src/components/interface/home/tabs/views/tokens/ImportTokensDialog.tsx +++ b/apps/iframe/src/components/interface/home/tabs/views/tokens/ImportTokensDialog.tsx @@ -8,7 +8,7 @@ import { useWatchAsset } from "wagmi" import { Button } from "#src/components/primitives/button/Button" import { FieldInput } from "#src/components/primitives/input/FieldInput" import { Input } from "#src/components/primitives/input/Input" -import { recipeTextInput } from "#src/components/primitives/input/variants.ts" +import { recipeTextInput } from "#src/components/primitives/input/variants" import { recipePositioner } from "#src/components/primitives/popover/variants" import { useERC20Balance } from "#src/hooks/useERC20Balance" import { importTokensDialogVisibilityAtom } from "#src/state/interfaceState" diff --git a/apps/iframe/src/components/interface/permissions/SessionKeyCheckbox.tsx b/apps/iframe/src/components/interface/permissions/SessionKeyCheckbox.tsx index 906a7230e6..97d0df51bf 100644 --- a/apps/iframe/src/components/interface/permissions/SessionKeyCheckbox.tsx +++ b/apps/iframe/src/components/interface/permissions/SessionKeyCheckbox.tsx @@ -3,7 +3,7 @@ import { Check } from "@phosphor-icons/react" import { useState } from "react" import type { Address } from "viem" import { Permissions } from "#src/constants/permissions" -import { type SessionKeyRequest, hasPermissions } from "#src/state/permissions.ts" +import { type SessionKeyRequest, hasPermissions } from "#src/state/permissions" import type { AppURL } from "#src/utils/appURL" interface SessionKeyContractProps { diff --git a/apps/iframe/src/components/requests/WalletRequestPermissions.tsx b/apps/iframe/src/components/requests/WalletRequestPermissions.tsx index 6f49b09bd5..3312723111 100644 --- a/apps/iframe/src/components/requests/WalletRequestPermissions.tsx +++ b/apps/iframe/src/components/requests/WalletRequestPermissions.tsx @@ -1,5 +1,5 @@ import { EthRequestAccounts } from "#src/components/requests/EthRequestAccounts" -import { type PermissionDescriptionIndex, permissionDescriptions } from "#src/constants/requestLabels.ts" +import { type PermissionDescriptionIndex, permissionDescriptions } from "#src/constants/requestLabels" import { getAppURL } from "#src/utils/appURL" import { FormattedDetailsLine, diff --git a/apps/iframe/src/connections/GoogleConnector.ts b/apps/iframe/src/connections/GoogleConnector.ts index 2f7dff3e54..6cc32bb61a 100644 --- a/apps/iframe/src/connections/GoogleConnector.ts +++ b/apps/iframe/src/connections/GoogleConnector.ts @@ -1,11 +1,11 @@ import { type HappyUser, WalletType } from "@happy.tech/wallet-common" import { type AuthProvider, GoogleAuthProvider } from "firebase/auth" import type { EIP1193Provider } from "viem" -import { setUserWithProvider } from "#src/actions/setUserWithProvider.ts" -import { StorageKey, storage } from "#src/services/storage.ts" -import { getChains } from "#src/state/chains.ts" -import { grantPermissions } from "#src/state/permissions.ts" -import { getAppURL } from "#src/utils/appURL.ts" +import { setUserWithProvider } from "#src/actions/setUserWithProvider" +import { StorageKey, storage } from "#src/services/storage" +import { getChains } from "#src/state/chains" +import { grantPermissions } from "#src/state/permissions" +import { getAppURL } from "#src/utils/appURL" import { FirebaseConnector } from "./firebase" import { googleLogo } from "./firebase/logos" diff --git a/apps/iframe/src/connections/InjectedProviderProxy.ts b/apps/iframe/src/connections/InjectedProviderProxy.ts index 94bfc8c101..da1526034b 100644 --- a/apps/iframe/src/connections/InjectedProviderProxy.ts +++ b/apps/iframe/src/connections/InjectedProviderProxy.ts @@ -10,14 +10,14 @@ import { standardizeRpcError, } from "@happy.tech/wallet-common" import type { EIP1193Provider } from "viem" -import { setUserWithProvider } from "#src/actions/setUserWithProvider.ts" -import { happyProviderBus } from "#src/services/eventBus.ts" -import { getInjectedProvider } from "#src/state/injectedProvider.ts" -import { grantPermissions } from "#src/state/permissions.ts" -import { getUser } from "#src/state/user.ts" -import { getAppURL, isStandaloneWallet, walletID } from "#src/utils/appURL.ts" -import { createHappyUserFromWallet } from "#src/utils/createHappyUserFromWallet.ts" -import { iframeProvider } from "#src/wagmi/provider.ts" +import { setUserWithProvider } from "#src/actions/setUserWithProvider" +import { happyProviderBus } from "#src/services/eventBus" +import { getInjectedProvider } from "#src/state/injectedProvider" +import { grantPermissions } from "#src/state/permissions" +import { getUser } from "#src/state/user" +import { getAppURL, isStandaloneWallet, walletID } from "#src/utils/appURL" +import { createHappyUserFromWallet } from "#src/utils/createHappyUserFromWallet" +import { iframeProvider } from "#src/wagmi/provider" /** * A proxy implementation of the EIP-1193 provider interface diff --git a/apps/iframe/src/connections/initialize.ts b/apps/iframe/src/connections/initialize.ts index 4628aff241..6ec1440519 100644 --- a/apps/iframe/src/connections/initialize.ts +++ b/apps/iframe/src/connections/initialize.ts @@ -3,8 +3,8 @@ import { type ConnectionProvider, type EIP6963ProviderDetail, Msgs } from "@happ import { atom, getDefaultStore, useAtomValue } from "jotai" import { createStore } from "mipd" import { useMemo } from "react" -import { appMessageBus } from "#src/services/eventBus.ts" -import { isStandaloneWallet } from "#src/utils/appURL.ts" +import { appMessageBus } from "#src/services/eventBus" +import { isStandaloneWallet } from "#src/utils/appURL" import { userAtom } from "../state/user" import { GoogleConnector } from "./GoogleConnector" import { InjectedConnector } from "./InjectedConnector" diff --git a/apps/iframe/src/listeners/atoms.ts b/apps/iframe/src/listeners/atoms.ts index 4001fe8cac..0f5743fdbc 100644 --- a/apps/iframe/src/listeners/atoms.ts +++ b/apps/iframe/src/listeners/atoms.ts @@ -2,7 +2,7 @@ import { Msgs } from "@happy.tech/wallet-common" import { getDefaultStore } from "jotai/vanilla" import { http, createPublicClient } from "viem" import { mainnet } from "viem/chains" -import { permissionsMapAtom } from "#src/state/permissions.ts" +import { permissionsMapAtom } from "#src/state/permissions" import { appMessageBus } from "../services/eventBus" import { authStateAtom } from "../state/authState" import { userAtom } from "../state/user" diff --git a/apps/iframe/src/listeners/overlay.ts b/apps/iframe/src/listeners/overlay.ts index b826ddf6df..4896a799f1 100644 --- a/apps/iframe/src/listeners/overlay.ts +++ b/apps/iframe/src/listeners/overlay.ts @@ -1,5 +1,5 @@ import { Msgs } from "@happy.tech/wallet-common" -import { appMessageBus } from "#src/services/eventBus.ts" +import { appMessageBus } from "#src/services/eventBus" /** * Forward error display requests to the front diff --git a/apps/iframe/src/requests/handlers/rejected.ts b/apps/iframe/src/requests/handlers/rejected.ts index 27e02ca7b0..4a129a4b75 100644 --- a/apps/iframe/src/requests/handlers/rejected.ts +++ b/apps/iframe/src/requests/handlers/rejected.ts @@ -5,9 +5,9 @@ import { WalletType, serializeRpcError, } from "@happy.tech/wallet-common" -import { InjectedProviderProxy } from "#src/connections/InjectedProviderProxy.ts" +import { InjectedProviderProxy } from "#src/connections/InjectedProviderProxy" import { happyProviderBus } from "#src/services/eventBus" -import { getUser } from "#src/state/user.ts" +import { getUser } from "#src/state/user" import { appForSourceID, isWallet } from "#src/utils/appURL" import { iframeProvider } from "#src/wagmi/provider" diff --git a/apps/iframe/src/requests/tests/eth_requestAccounts.cross_origin.spec.ts b/apps/iframe/src/requests/tests/eth_requestAccounts.cross_origin.spec.ts index 51209794de..983c016cb0 100644 --- a/apps/iframe/src/requests/tests/eth_requestAccounts.cross_origin.spec.ts +++ b/apps/iframe/src/requests/tests/eth_requestAccounts.cross_origin.spec.ts @@ -4,7 +4,7 @@ import type { HappyUser } from "@happy.tech/wallet-common" import { beforeEach, describe, expect, test, vi } from "vitest" import { dispatchedPermissionlessRequest } from "#src/requests/handlers/permissionless" import { setAuthState } from "#src/state/authState" -import { clearPermissions, getAllPermissions, grantPermissions } from "#src/state/permissions.ts" +import { clearPermissions, getAllPermissions, grantPermissions } from "#src/state/permissions" import { setUser } from "#src/state/user" const { appURL, parentID, appURLMock } = await vi // diff --git a/apps/iframe/src/requests/tests/eth_requestAccounts.same_origin.spec.ts b/apps/iframe/src/requests/tests/eth_requestAccounts.same_origin.spec.ts index 895d5917ec..92f48cd1d6 100644 --- a/apps/iframe/src/requests/tests/eth_requestAccounts.same_origin.spec.ts +++ b/apps/iframe/src/requests/tests/eth_requestAccounts.same_origin.spec.ts @@ -4,7 +4,7 @@ import type { HappyUser } from "@happy.tech/wallet-common" import { beforeEach, describe, expect, test } from "vitest" import { vi } from "vitest" import { setAuthState } from "#src/state/authState" -import { clearPermissions, getAllPermissions } from "#src/state/permissions.ts" +import { clearPermissions, getAllPermissions } from "#src/state/permissions" import { setUser } from "#src/state/user" import { dispatchedPermissionlessRequest } from "../handlers/permissionless" diff --git a/apps/iframe/src/requests/tests/wallet_requestPermissions.no_conf.cross_origin.spec.ts b/apps/iframe/src/requests/tests/wallet_requestPermissions.no_conf.cross_origin.spec.ts index bc31d628fe..d6e05ac105 100644 --- a/apps/iframe/src/requests/tests/wallet_requestPermissions.no_conf.cross_origin.spec.ts +++ b/apps/iframe/src/requests/tests/wallet_requestPermissions.no_conf.cross_origin.spec.ts @@ -4,7 +4,7 @@ import type { HappyUser } from "@happy.tech/wallet-common" import { beforeEach, describe, expect, test, vi } from "vitest" import { dispatchedPermissionlessRequest } from "#src/requests/handlers/permissionless" import { setAuthState } from "#src/state/authState" -import { clearPermissions, getAllPermissions } from "#src/state/permissions.ts" +import { clearPermissions, getAllPermissions } from "#src/state/permissions" import { setUser } from "#src/state/user" const { appURL, parentID, appURLMock } = await vi // diff --git a/apps/iframe/src/requests/tests/wallet_requestPermissions.no_conf.same_origin.spec.ts b/apps/iframe/src/requests/tests/wallet_requestPermissions.no_conf.same_origin.spec.ts index eb54ea00d7..a820058738 100644 --- a/apps/iframe/src/requests/tests/wallet_requestPermissions.no_conf.same_origin.spec.ts +++ b/apps/iframe/src/requests/tests/wallet_requestPermissions.no_conf.same_origin.spec.ts @@ -5,7 +5,7 @@ import { beforeEach, describe, expect, test } from "vitest" import { vi } from "vitest" import { dispatchedPermissionlessRequest } from "#src/requests/handlers/permissionless" import { setAuthState } from "#src/state/authState" -import { clearPermissions, getAllPermissions } from "#src/state/permissions.ts" +import { clearPermissions, getAllPermissions } from "#src/state/permissions" import { setUser } from "#src/state/user" const { appURL, walletID, appURLMock } = await vi // diff --git a/apps/iframe/src/requests/tests/wallet_requestPermissions.user_conf.cross_origin.spec.ts b/apps/iframe/src/requests/tests/wallet_requestPermissions.user_conf.cross_origin.spec.ts index 77aaff2863..c220a4d126 100644 --- a/apps/iframe/src/requests/tests/wallet_requestPermissions.user_conf.cross_origin.spec.ts +++ b/apps/iframe/src/requests/tests/wallet_requestPermissions.user_conf.cross_origin.spec.ts @@ -4,7 +4,7 @@ import type { HappyUser } from "@happy.tech/wallet-common" import { beforeEach, describe, expect, test, vi } from "vitest" import { dispatchApprovedRequest } from "#src/requests/handlers/approved" import { setAuthState } from "#src/state/authState" -import { clearPermissions, getAllPermissions } from "#src/state/permissions.ts" +import { clearPermissions, getAllPermissions } from "#src/state/permissions" import { setUser } from "#src/state/user" const { appURL, walletURL, parentID, appURLMock } = await vi // diff --git a/apps/iframe/src/requests/tests/wallet_requestPermissions.user_conf.same_origin.spec.ts b/apps/iframe/src/requests/tests/wallet_requestPermissions.user_conf.same_origin.spec.ts index 56ff9f85cd..b147527c5c 100644 --- a/apps/iframe/src/requests/tests/wallet_requestPermissions.user_conf.same_origin.spec.ts +++ b/apps/iframe/src/requests/tests/wallet_requestPermissions.user_conf.same_origin.spec.ts @@ -5,7 +5,7 @@ import { beforeEach, describe, expect, test } from "vitest" import { vi } from "vitest" import { dispatchApprovedRequest } from "#src/requests/handlers/approved" import { setAuthState } from "#src/state/authState" -import { clearPermissions, getAllPermissions } from "#src/state/permissions.ts" +import { clearPermissions, getAllPermissions } from "#src/state/permissions" import { setUser } from "#src/state/user" const { appURL, walletID, appURLMock } = await vi // diff --git a/apps/iframe/src/requests/tests/wallet_watchAsset.spec.ts b/apps/iframe/src/requests/tests/wallet_watchAsset.spec.ts index 663cf6fc0d..a66e1d20e7 100644 --- a/apps/iframe/src/requests/tests/wallet_watchAsset.spec.ts +++ b/apps/iframe/src/requests/tests/wallet_watchAsset.spec.ts @@ -4,7 +4,7 @@ import type { HappyUser } from "@happy.tech/wallet-common" import { beforeEach, describe, expect, test, vi } from "vitest" import { setAuthState } from "#src/state/authState" import { setUser } from "#src/state/user" -import { getWatchedAssets } from "#src/state/watchedAssets.ts" +import { getWatchedAssets } from "#src/state/watchedAssets" import { dispatchApprovedRequest } from "../handlers/approved" const { walletID, appURLMock } = await vi // diff --git a/apps/iframe/src/requests/utils/boop.ts b/apps/iframe/src/requests/utils/boop.ts index 29d0f8bdaf..4c2455d894 100644 --- a/apps/iframe/src/requests/utils/boop.ts +++ b/apps/iframe/src/requests/utils/boop.ts @@ -187,15 +187,16 @@ function safeParseSignature(validatorData?: Hex) { } export async function boopFromTransaction(account: Address, tx: ValidRpcTransactionRequest): Promise { - // TODO bigint casts need validation - return { - account: tx.from, + account: tx.from ?? account, dest: tx.to, payer: zeroAddress, // happyPaymaster, // TODO need to fund paymaster - value: tx.value ? BigInt(tx.value) : 0n, + value: tx.value !== undefined ? (parseBigInt(tx.value) ?? 0n) : 0n, nonceTrack: 0n, - nonceValue: tx.nonce ? BigInt(tx.nonce) : await getNextNonce(account), + nonceValue: + tx.nonce !== undefined + ? (parseBigInt(tx.nonce) ?? (await getNextNonce(account))) + : await getNextNonce(account), callData: tx.data ?? "0x", validatorData: "0x", // we will fill after signing extraData: createValidatorExtraData(account, tx.to), diff --git a/apps/iframe/src/requests/utils/checks.ts b/apps/iframe/src/requests/utils/checks.ts index 2e69fd9d2d..f4ca468a86 100644 --- a/apps/iframe/src/requests/utils/checks.ts +++ b/apps/iframe/src/requests/utils/checks.ts @@ -28,20 +28,21 @@ export function checkAuthenticated() { /** * Type of valid tx requests, use {@link checkedTx} to verify. */ -export type ValidRpcTransactionRequest = RpcTransactionRequest & { from: Address; to: Address } +export type ValidRpcTransactionRequest = RpcTransactionRequest & { to: Address } /** * Asserts that the transaction has its destination defined, throws a {@link EIP1474InvalidInput}. * @throws EIP1474InvalidInput if the transaction is malformatted */ export function checkedTx(tx: RpcTransactionRequest): ValidRpcTransactionRequest { + // Check required fields if (!tx.to) /****/ throw new EIP1474InvalidInput("missing 'to' field in transaction parameters") - if (!tx.from) /**/ throw new EIP1474InvalidInput("missing 'from' field in transaction parameters") + // Validate addresses if (!isAddress(tx.to)) /****/ throw new EIP1474InvalidInput(`not an address: ${tx.to}`) - if (!isAddress(tx.from)) /**/ throw new EIP1474InvalidInput(`not an address: ${tx.from}`) + if (tx.from !== undefined && !isAddress(tx.from)) /**/ throw new EIP1474InvalidInput(`not an address: ${tx.from}`) - // Check if value exists and can be parsed as BigInt (allows zero values) + // Check if the value and nonce exist, and can be parsed as BigInt (allows zero values) if (tx.value !== undefined && parseBigInt(tx.value) === undefined) throw new EIP1474InvalidInput(`value is not a number: ${tx.value}`) if (tx.nonce !== undefined && parseBigInt(tx.nonce) === undefined) diff --git a/apps/iframe/src/requests/utils/sendResponse.ts b/apps/iframe/src/requests/utils/sendResponse.ts index 62fcf13b31..742531178d 100644 --- a/apps/iframe/src/requests/utils/sendResponse.ts +++ b/apps/iframe/src/requests/utils/sendResponse.ts @@ -9,10 +9,10 @@ import { } from "@happy.tech/wallet-common" // biome-ignore lint/correctness/noUnusedImports: keep type for doc import { RpcError, type UnauthorizedProviderError } from "viem" -import { InjectedProviderProxy } from "#src/connections/InjectedProviderProxy.ts" +import { InjectedProviderProxy } from "#src/connections/InjectedProviderProxy" import { happyProviderBus } from "#src/services/eventBus" import { getCurrentChain } from "#src/state/chains" -import { getUser } from "#src/state/user.ts" +import { getUser } from "#src/state/user" import { appForSourceID, isWallet } from "#src/utils/appURL" import { reqLogger } from "#src/utils/logger" import { iframeProvider } from "#src/wagmi/provider" diff --git a/apps/iframe/src/requests/utils/sessionKeys.ts b/apps/iframe/src/requests/utils/sessionKeys.ts index faf14b89d4..10b261ff5d 100644 --- a/apps/iframe/src/requests/utils/sessionKeys.ts +++ b/apps/iframe/src/requests/utils/sessionKeys.ts @@ -12,11 +12,11 @@ import { Permissions } from "#src/constants/permissions" import { sendBoop } from "#src/requests/utils/boop" import { eoaSigner } from "#src/requests/utils/signers" import { StorageKey, storage } from "#src/services/storage" -import { revokedSessionKeys } from "#src/state/interfaceState.ts" +import { revokedSessionKeys } from "#src/state/interfaceState" import { getPermissions, grantPermissions, revokePermissions } from "#src/state/permissions" import { getPublicClient } from "#src/state/publicClient" -import { getCheckedUser } from "#src/state/user.ts" -import { getWalletClient } from "#src/state/walletClient.ts" +import { getCheckedUser } from "#src/state/user" +import { getWalletClient } from "#src/state/walletClient" import type { AppURL } from "#src/utils/appURL" import { sessionKeyLogger } from "#src/utils/logger" diff --git a/apps/iframe/src/requests/utils/shared.ts b/apps/iframe/src/requests/utils/shared.ts index ede5fd3435..e24720fc4c 100644 --- a/apps/iframe/src/requests/utils/shared.ts +++ b/apps/iframe/src/requests/utils/shared.ts @@ -123,7 +123,8 @@ export async function eth_estimateGas( user: HappyUser | undefined, tx: ValidRpcTransactionRequest, ): Promise { - if (user?.address !== tx.from) return FORWARD + const account = user?.address ?? tx.from + if (!account || account !== tx.from) return FORWARD try { const boopClient = getBoopClient() @@ -131,7 +132,7 @@ export async function eth_estimateGas( // boopFromTransaction already handles both legacy and EIP-1559 transactions // by converting gasPrice to maxFeePerGas when needed - const boop = await boopFromTransaction(user?.address, tx) + const boop = await boopFromTransaction(account, tx) const output = await boopClient.simulate({ entryPoint, boop }) if (output.status !== Onchain.Success) { diff --git a/apps/iframe/src/routes/__root.tsx b/apps/iframe/src/routes/__root.tsx index c6a66322ce..ba35df98a5 100644 --- a/apps/iframe/src/routes/__root.tsx +++ b/apps/iframe/src/routes/__root.tsx @@ -1,9 +1,9 @@ import { Outlet, type RouterEvents, createRootRoute, useRouter } from "@tanstack/react-router" import { revokedSessionKeys } from "#src/state/interfaceState" import type { AppURL } from "#src/utils/appURL" -import "#src/connections/initialize.ts" +import "#src/connections/initialize" import { useEffect } from "react" -import { revokeSessionKeys } from "#src/requests/utils/sessionKeys.ts" +import { revokeSessionKeys } from "#src/requests/utils/sessionKeys" import { DevTools } from "../components/DevTools" export const Route = createRootRoute({ diff --git a/apps/iframe/src/state/injectedClient.ts b/apps/iframe/src/state/injectedClient.ts index d1048fb79d..a3659844ca 100644 --- a/apps/iframe/src/state/injectedClient.ts +++ b/apps/iframe/src/state/injectedClient.ts @@ -1,7 +1,7 @@ import { accessorsFromAtom } from "@happy.tech/common" import { type Atom, atom } from "jotai" import { createWalletClient, custom } from "viem" -import { InjectedProviderProxy } from "#src/connections/InjectedProviderProxy.ts" +import { InjectedProviderProxy } from "#src/connections/InjectedProviderProxy" import { userAtom } from "./user" import type { AccountWalletClient } from "./walletClient" diff --git a/apps/iframe/src/state/permissions.spec.ts b/apps/iframe/src/state/permissions.spec.ts index 954f720c00..2895803552 100644 --- a/apps/iframe/src/state/permissions.spec.ts +++ b/apps/iframe/src/state/permissions.spec.ts @@ -8,7 +8,7 @@ import { grantPermissions, hasPermissions, revokePermissions, -} from "#src/state/permissions.ts" +} from "#src/state/permissions" import { setUser } from "../state/user" const { appURL, walletURL, appURLMock } = await vi // diff --git a/apps/iframe/src/utils/emitUserUpdate.ts b/apps/iframe/src/utils/emitUserUpdate.ts index 12b213841c..9bd162ddda 100644 --- a/apps/iframe/src/utils/emitUserUpdate.ts +++ b/apps/iframe/src/utils/emitUserUpdate.ts @@ -1,6 +1,6 @@ import { debounce } from "@happy.tech/common" import { type HappyUser, Msgs } from "@happy.tech/wallet-common" -import { hasPermissions } from "#src/state/permissions.ts" +import { hasPermissions } from "#src/state/permissions" import { appMessageBus, happyProviderBus } from "../services/eventBus" import { getAppURL, isStandaloneWallet } from "./appURL" diff --git a/apps/iframe/src/utils/walletState.ts b/apps/iframe/src/utils/walletState.ts index 3fb18b4915..686006d563 100644 --- a/apps/iframe/src/utils/walletState.ts +++ b/apps/iframe/src/utils/walletState.ts @@ -1,7 +1,7 @@ import { AuthState, Msgs } from "@happy.tech/wallet-common" -import { appMessageBus } from "#src/services/eventBus.ts" -import { getAuthState } from "#src/state/authState.ts" -import { setWalletOpenSignal } from "#src/state/interfaceState.ts" +import { appMessageBus } from "#src/services/eventBus" +import { getAuthState } from "#src/state/authState" +import { setWalletOpenSignal } from "#src/state/interfaceState" /** * Wallet State (open vs closed) is managed entirely through the WalletVisibility event here. This diff --git a/apps/iframe/src/wagmi/provider.ts b/apps/iframe/src/wagmi/provider.ts index 2d1bc6e08a..d58162e07a 100644 --- a/apps/iframe/src/wagmi/provider.ts +++ b/apps/iframe/src/wagmi/provider.ts @@ -8,9 +8,9 @@ import { waitForCondition, } from "@happy.tech/wallet-common" import type { EIP1193Provider } from "viem" -import { addBanner } from "#src/state/banner.ts" +import { addBanner } from "#src/state/banner" import { getCurrentChain } from "#src/state/chains" -import { getUser } from "#src/state/user.ts" +import { getUser } from "#src/state/user" import { handleInjectedRequest, handlePermissionlessRequest } from "../requests" import { getAuthState } from "../state/authState" import { getWalletURL, walletID } from "../utils/appURL" diff --git a/packages/core/lib/config.ts b/packages/core/lib/config.ts index 969fe0412d..ed3753745b 100644 --- a/packages/core/lib/config.ts +++ b/packages/core/lib/config.ts @@ -4,3 +4,8 @@ export const config = { iframePath: import.meta.env.IFRAME_URL || "http://localhost:5160", } + +/** Box to hold the chainId loaded with {@link loadHappyWallet}. */ +export const chain = { + id: 0xdeadbeef, +} diff --git a/packages/core/lib/happyProvider/injectedWalletHandler.ts b/packages/core/lib/happyProvider/injectedWalletHandler.ts index c37a2b245d..e45bf9ca38 100644 --- a/packages/core/lib/happyProvider/injectedWalletHandler.ts +++ b/packages/core/lib/happyProvider/injectedWalletHandler.ts @@ -1,6 +1,6 @@ import type { UUID } from "@happy.tech/common" import { BasePopupProvider, type EIP1193RequestParameters, Msgs } from "@happy.tech/wallet-common" -import { chain } from "../loadHappyWallet" +import { chain } from "../config" import { InjectedWalletWrapper } from "./InjectedWalletWrapper" import type { HappyProviderConfig } from "./happyProviderImplem" import type { EIP1193ConnectionHandler } from "./interface" diff --git a/packages/core/lib/happyProvider/socialWalletHandler.ts b/packages/core/lib/happyProvider/socialWalletHandler.ts index 4503df7858..f499d74a21 100644 --- a/packages/core/lib/happyProvider/socialWalletHandler.ts +++ b/packages/core/lib/happyProvider/socialWalletHandler.ts @@ -1,8 +1,7 @@ import { type UUID, createUUID, promiseWithResolvers } from "@happy.tech/common" import type { EIP1193RequestParameters, HappyUser, ProviderMsgsFromWallet } from "@happy.tech/wallet-common" import { AuthState, BasePopupProvider, LoginRequiredError, Msgs, OverlayErrorCode } from "@happy.tech/wallet-common" -import { config } from "../config" -import { chain } from "../loadHappyWallet" +import { chain, config } from "../config" import { type HappyProviderConfig, HappyProviderImplem } from "./happyProviderImplem" import type { EIP1193ConnectionHandler } from "./interface" diff --git a/packages/core/lib/index.ts b/packages/core/lib/index.ts index 97a2915294..d01849969f 100644 --- a/packages/core/lib/index.ts +++ b/packages/core/lib/index.ts @@ -13,7 +13,7 @@ export { requestSessionKey, showSendScreen, onUserUpdate, -} from "./functions.ts" +} from "./functions" export { anvil, happyChainSepolia } from "@happy.tech/wallet-common" diff --git a/packages/core/lib/loadHappyWallet.ts b/packages/core/lib/loadHappyWallet.ts index 853f089707..2ccaac3bb0 100644 --- a/packages/core/lib/loadHappyWallet.ts +++ b/packages/core/lib/loadHappyWallet.ts @@ -1,16 +1,12 @@ import { defaultChain } from "@happy.tech/wallet-common" import define from "preact-custom-element" import { defineBadgeComponent } from "./badge/define" +import { chain } from "./config" import { windowId } from "./happyProvider" import { HappyOverlay } from "./overlay/HappyOverlay" import { HappyWallet } from "./wallet/HappyWallet" import { isFirefox, makeIframeUrl } from "./wallet/utils" -/** Box to hold the chainId loaded with {@link loadHappyWallet}. */ -export const chain = { - id: 0xdeadbeef, -} - /** * Options for the {@link loadHappyWallet} function. */