diff --git a/package.json b/package.json index dffd691..45a89ff 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,11 @@ "import": "./dist/fordefi.js", "require": "./dist/fordefi.cjs" }, + "./xverse": { + "types": "./dist/xverse.d.ts", + "import": "./dist/xverse.js", + "require": "./dist/xverse.cjs" + }, "./braavosMobile": { "types": "./dist/braavosMobile.d.ts", "import": "./dist/braavosMobile.js", @@ -97,8 +102,8 @@ "dependencies": { "@argent/x-ui": "^1.109.0", "@cartridge/controller": "^0.10.0", - "@starknet-io/get-starknet": "^4.0.7", - "@starknet-io/get-starknet-core": "^4.0.7", + "@starknet-io/get-starknet": "^4.0.8", + "@starknet-io/get-starknet-core": "^4.0.8", "@starknet-io/types-js": "0.8.4", "@trpc/client": "^10.38.1", "@trpc/server": "^10.38.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc6652e..b542a90 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,11 +15,11 @@ importers: specifier: ^0.10.0 version: 0.10.0(@types/react@18.3.24)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@starknet-io/get-starknet': - specifier: ^4.0.7 - version: 4.0.7 + specifier: ^4.0.8 + version: 4.0.8 '@starknet-io/get-starknet-core': - specifier: ^4.0.7 - version: 4.0.7 + specifier: ^4.0.8 + version: 4.0.8 '@starknet-io/types-js': specifier: 0.8.4 version: 0.8.4 @@ -1609,11 +1609,11 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@starknet-io/get-starknet-core@4.0.7': - resolution: {integrity: sha512-ocwQTdDvGa+0CvjGygyaTuFkda2R82dofydts8uXr9p0Diy/bmYW1fkuqJfi1nC5M+YcvvuEpl6wFvwXM1og5w==} + '@starknet-io/get-starknet-core@4.0.8': + resolution: {integrity: sha512-UCyaO5T+5IZN1qPiQhLPzCSmoy06FU42tZtDmpj0UifSP7vdSMe+KRnkegiikpPJ8wZmel1o26GQkBFoUrHQlQ==} - '@starknet-io/get-starknet@4.0.7': - resolution: {integrity: sha512-env/ZN5EmDJ6vDtIgjOjsEvvzdKBDaWZ0aLe79IVJ7lq2icqKbX86yR1/CUf4AU31AFYZHWZ3daOaGFT4nHSUQ==} + '@starknet-io/get-starknet@4.0.8': + resolution: {integrity: sha512-51qlJqQMQnpW9MwvVUzOsnuSK0YbP88EEuzFbVDmtvMICuOjZd+Dr7CYgF/yK2sVbX8eA/hmY74/9S1vIWhptg==} '@starknet-io/types-js@0.7.10': resolution: {integrity: sha512-1VtCqX4AHWJlRRSYGSn+4X1mqolI1Tdq62IwzoU2vUuEE72S1OlEeGhpvd6XsdqXcfHmVzYfj8k1XtKBQqwo9w==} @@ -8602,15 +8602,15 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@starknet-io/get-starknet-core@4.0.7': + '@starknet-io/get-starknet-core@4.0.8': dependencies: '@module-federation/runtime': 0.1.21 '@starknet-io/types-js': 0.7.10 async-mutex: 0.5.0 - '@starknet-io/get-starknet@4.0.7': + '@starknet-io/get-starknet@4.0.8': dependencies: - '@starknet-io/get-starknet-core': 4.0.7 + '@starknet-io/get-starknet-core': 4.0.8 bowser: 2.12.1 '@starknet-io/types-js@0.7.10': {} diff --git a/src/connectors/injected/index.ts b/src/connectors/injected/index.ts index b60cdef..de07c81 100644 --- a/src/connectors/injected/index.ts +++ b/src/connectors/injected/index.ts @@ -67,6 +67,11 @@ export const injectedWalletIcons = { light: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzNDk0XzY2MjU0KSI+CjxwYXRoIGQ9Ik0xMC44NzY5IDE1LjYzNzhIMS41VjE4LjM5OUMxLjUgMTkuODAxMyAyLjYzNDQ3IDIwLjkzOCA0LjAzMzkyIDIwLjkzOEg4LjI0OTkyTDEwLjg3NjkgMTUuNjM3OFoiIGZpbGw9IiM3OTk0RkYiLz4KPHBhdGggZD0iTTEuNSA5Ljc3NTUxSDE5LjA1MTZMMTcuMDEzOSAxMy44NzExSDEuNVY5Ljc3NTUxWiIgZmlsbD0iIzQ4NkRGRiIvPgo8cGF0aCBkPSJNNy42NTk5NiAzSDEuNTI0NDFWOC4wMDcwNEgyMi40NjEyVjNIMTYuMzI1NlY2LjczOTQ0SDE1LjA2MDZWM0g4LjkyNTAyVjYuNzM5NDRINy42NTk5NlYzWiIgZmlsbD0iIzVDRDFGQSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzNDk0XzY2MjU0Ij4KPHJlY3Qgd2lkdGg9IjIxIiBoZWlnaHQ9IjE4IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS41IDMpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==", }, + xverse: { + dark: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIiBmaWxsPSIjMTgxODE4Ii8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xNTc4MV82ODc5KSI+CjxwYXRoIGQ9Ik0yOTIuNzYyIDI4OS43NThWMjU1LjgwOUMyOTIuNzYyIDI1NC40NjMgMjkyLjIyNiAyNTMuMTc5IDI5MS4yNzIgMjUyLjIyNUwxNDYuODIyIDEwNy43NzRDMTQ1Ljg2OSAxMDYuODIxIDE0NC41ODUgMTA2LjI4NiAxNDMuMjM4IDEwNi4yODZIMTA5LjI5QzEwNy42MTQgMTA2LjI4NiAxMDYuMjUgMTA3LjY1IDEwNi4yNSAxMDkuMzI2VjE0MC44NjdDMTA2LjI1IDE0Mi4yMTMgMTA2Ljc4NSAxNDMuNDk3IDEwNy43MzkgMTQ0LjQ1MUwxNTkuNTg5IDE5Ni4zMDFDMTYwLjc3NCAxOTcuNDg3IDE2MC43NzQgMTk5LjQxMiAxNTkuNTg5IDIwMC41OThMMTA3LjE0MiAyNTMuMDQ1QzEwNi41NzEgMjUzLjYxNiAxMDYuMjUgMjU0LjM5MSAxMDYuMjUgMjU1LjE5NFYyODkuNzU4QzEwNi4yNSAyOTEuNDMzIDEwNy42MTQgMjkyLjc5OCAxMDkuMjkgMjkyLjc5OEgxNjYuMDE2QzE2Ny42OTIgMjkyLjc5OCAxNjkuMDU2IDI5MS40MzMgMTY5LjA1NiAyODkuNzU4VjI2OS4zOTVDMTY5LjA1NiAyNjguNTkzIDE2OS4zNzcgMjY3LjgxOCAxNjkuOTQ4IDI2Ny4yNDdMMTk4LjA4NCAyMzkuMTExQzE5OS4yNyAyMzcuOTI1IDIwMS4xOTUgMjM3LjkyNSAyMDIuMzgxIDIzOS4xMTFMMjU0LjU4OCAyOTEuMzE4QzI1NS41NDIgMjkyLjI3MiAyNTYuODI1IDI5Mi44MDcgMjU4LjE3MSAyOTIuODA3SDI4OS43MTJDMjkxLjM4OSAyOTIuODA3IDI5Mi43NTIgMjkxLjQ0MiAyOTIuNzUyIDI4OS43NjdMMjkyLjc2MiAyODkuNzU4WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIxNy4wOSAxNTEuMjQ0SDI0NS41MDNDMjQ3LjE4OCAxNTEuMjQ0IDI0OC41NiAxNTIuNjE3IDI0OC41NiAxNTQuMzAyVjE4Mi43MTRDMjQ4LjU2IDE4NS40NDIgMjUxLjg1OSAxODYuODA2IDI1My43ODUgMTg0Ljg3MUwyOTIuNzYxIDE0NS44MzJDMjkzLjMzMSAxNDUuMjYyIDI5My42NTMgMTQ0LjQ4NiAyOTMuNjUzIDE0My42NzVWMTA5LjQ4NkMyOTMuNjUzIDEwNy44MDEgMjkyLjI4OCAxMDYuNDI4IDI5MC41OTUgMTA2LjQyOEwyNTUuODk4IDEwNi4zODNDMjU1LjA4NiAxMDYuMzgzIDI1NC4zMTEgMTA2LjcwNCAyNTMuNzMxIDEwNy4yNzVMMjE0LjkyNCAxNDYuMDJDMjEyLjk5OCAxNDcuOTQ1IDIxNC4zNjIgMTUxLjI0NCAyMTcuMDgxIDE1MS4yNDRIMjE3LjA5WiIgZmlsbD0iI0VFN0EzMCIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzE1NzgxXzY4NzkiPgo8cmVjdCB3aWR0aD0iMTg3LjUiIGhlaWdodD0iMTg3LjUiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDYuMjUgMTA2LjI1KSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=", + light: + "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIiBmaWxsPSIjMTgxODE4Ii8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xNTc4MV82ODc5KSI+CjxwYXRoIGQ9Ik0yOTIuNzYyIDI4OS43NThWMjU1LjgwOUMyOTIuNzYyIDI1NC40NjMgMjkyLjIyNiAyNTMuMTc5IDI5MS4yNzIgMjUyLjIyNUwxNDYuODIyIDEwNy43NzRDMTQ1Ljg2OSAxMDYuODIxIDE0NC41ODUgMTA2LjI4NiAxNDMuMjM4IDEwNi4yODZIMTA5LjI5QzEwNy42MTQgMTA2LjI4NiAxMDYuMjUgMTA3LjY1IDEwNi4yNSAxMDkuMzI2VjE0MC44NjdDMTA2LjI1IDE0Mi4yMTMgMTA2Ljc4NSAxNDMuNDk3IDEwNy43MzkgMTQ0LjQ1MUwxNTkuNTg5IDE5Ni4zMDFDMTYwLjc3NCAxOTcuNDg3IDE2MC43NzQgMTk5LjQxMiAxNTkuNTg5IDIwMC41OThMMTA3LjE0MiAyNTMuMDQ1QzEwNi41NzEgMjUzLjYxNiAxMDYuMjUgMjU0LjM5MSAxMDYuMjUgMjU1LjE5NFYyODkuNzU4QzEwNi4yNSAyOTEuNDMzIDEwNy42MTQgMjkyLjc5OCAxMDkuMjkgMjkyLjc5OEgxNjYuMDE2QzE2Ny42OTIgMjkyLjc5OCAxNjkuMDU2IDI5MS40MzMgMTY5LjA1NiAyODkuNzU4VjI2OS4zOTVDMTY5LjA1NiAyNjguNTkzIDE2OS4zNzcgMjY3LjgxOCAxNjkuOTQ4IDI2Ny4yNDdMMTk4LjA4NCAyMzkuMTExQzE5OS4yNyAyMzcuOTI1IDIwMS4xOTUgMjM3LjkyNSAyMDIuMzgxIDIzOS4xMTFMMjU0LjU4OCAyOTEuMzE4QzI1NS41NDIgMjkyLjI3MiAyNTYuODI1IDI5Mi44MDcgMjU4LjE3MSAyOTIuODA3SDI4OS43MTJDMjkxLjM4OSAyOTIuODA3IDI5Mi43NTIgMjkxLjQ0MiAyOTIuNzUyIDI4OS43NjdMMjkyLjc2MiAyODkuNzU4WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIxNy4wOSAxNTEuMjQ0SDI0NS41MDNDMjQ3LjE4OCAxNTEuMjQ0IDI0OC41NiAxNTIuNjE3IDI0OC41NiAxNTQuMzAyVjE4Mi43MTRDMjQ4LjU2IDE4NS40NDIgMjUxLjg1OSAxODYuODA2IDI1My43ODUgMTg0Ljg3MUwyOTIuNzYxIDE0NS44MzJDMjkzLjMzMSAxNDUuMjYyIDI5My42NTMgMTQ0LjQ4NiAyOTMuNjUzIDE0My42NzVWMTA5LjQ4NkMyOTMuNjUzIDEwNy44MDEgMjkyLjI4OCAxMDYuNDI4IDI5MC41OTUgMTA2LjQyOEwyNTUuODk4IDEwNi4zODNDMjU1LjA4NiAxMDYuMzgzIDI1NC4zMTEgMTA2LjcwNCAyNTMuNzMxIDEwNy4yNzVMMjE0LjkyNCAxNDYuMDJDMjEyLjk5OCAxNDcuOTQ1IDIxNC4zNjIgMTUxLjI0NCAyMTcuMDgxIDE1MS4yNDRIMjE3LjA5WiIgZmlsbD0iI0VFN0EzMCIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzE1NzgxXzY4NzkiPgo8cmVjdCB3aWR0aD0iMTg3LjUiIGhlaWdodD0iMTg3LjUiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDYuMjUgMTA2LjI1KSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=", + }, } export class InjectedConnector extends Connector { diff --git a/src/connectors/injected/xverse.ts b/src/connectors/injected/xverse.ts new file mode 100644 index 0000000..14c7149 --- /dev/null +++ b/src/connectors/injected/xverse.ts @@ -0,0 +1,17 @@ +import { InjectedConnector, type InjectedConnectorOptions } from "./index" + +const id = "xverse" + +export class Xverse extends InjectedConnector { + constructor(options?: Omit) { + super({ options: { id, ...options } }) + } + + static getInjectedWallet() { + return super.getInjectedWallet(id) + } + + static isWalletInjected() { + return super.isWalletInjected(id) + } +} diff --git a/src/helpers/defaultConnectors.ts b/src/helpers/defaultConnectors.ts index dee8e3e..4ab5ee2 100644 --- a/src/helpers/defaultConnectors.ts +++ b/src/helpers/defaultConnectors.ts @@ -2,22 +2,16 @@ import type { StarknetkitConnector } from "../connectors" import { type ArgentMobileConnectorOptions } from "../connectors/argent/argentMobile" import { BraavosMobileBaseConnector } from "../connectors/braavosMobile" import { ControllerConnector } from "../connectors/controller" -import { WebWalletConnector } from "../connectors/webwallet" import { Braavos } from "../connectors/injected/braavos" import { Fordefi } from "../connectors/injected/fordefi" import { Keplr } from "../connectors/injected/keplr" +import { Xverse } from "../connectors/injected/xverse" import { MetaMask } from "../connectors/injected/metamask" import { isMobileDevice, isSafari } from "./navigator" import { ArgentX } from "../connectors/injected/argentX" -export const defaultConnectors = ({ - argentMobileOptions, - webWalletUrl, -}: { - argentMobileOptions: ArgentMobileConnectorOptions - webWalletUrl?: string -}): StarknetkitConnector[] => { +export const defaultConnectors = (): StarknetkitConnector[] => { // | StarknetkitCompoundConnector const defaultConnectors: StarknetkitConnector[] = // | StarknetkitCompoundConnector @@ -37,6 +31,9 @@ export const defaultConnectors = ({ if (Keplr.isWalletInjected()) { defaultConnectors.push(new Keplr()) } + if (Xverse.isWalletInjected()) { + defaultConnectors.push(new Xverse()) + } } defaultConnectors.push(new ControllerConnector()) diff --git a/src/main.ts b/src/main.ts index ab232d1..4678bf4 100644 --- a/src/main.ts +++ b/src/main.ts @@ -81,12 +81,7 @@ export const connect = async ({ // force null in case it was disconnected from mobile app selectedConnector = null const availableConnectors = - !connectors || connectors.length === 0 - ? defaultConnectors({ - argentMobileOptions, - webWalletUrl, - }) - : connectors + !connectors || connectors.length === 0 ? defaultConnectors() : connectors if (skipEmit) { // This is ugly but needed fix for useStarknetkitConnectModal diff --git a/vite.config.ts b/vite.config.ts index e16c430..5431dec 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -49,6 +49,7 @@ export default defineConfig({ metamask: resolve(__dirname, "src/connectors/injected/metamask.ts"), keplr: resolve(__dirname, "src/connectors/injected/keplr.ts"), fordefi: resolve(__dirname, "src/connectors/injected/fordefi.ts"), + xverse: resolve(__dirname, "src/connectors/injected/xverse.ts"), }, formats: ["es", "cjs"], },