@getpara/solana-wallet-connectors 2.0.0-dev.2 → 2.0.0-dev.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  import { PropsWithChildren } from 'react';
2
2
  import { CreateWalletFn } from '../types/Wallet.js';
3
- import { ExternalWalletContextType, ExternalWalletProviderConfig, ExternalWalletProviderConfigBase } from '@getpara/react-common';
3
+ import { ExternalWalletContextType, ExternalWalletProviderConfig, ExternalWalletProviderConfigBase, FarcasterMiniAppManagement } from '@getpara/react-common';
4
4
  import { TExternalHooks } from './externalHooks.js';
5
- export type SolanaExternalWalletContextType = ExternalWalletContextType & TExternalHooks;
5
+ export type SolanaExternalWalletContextType = ExternalWalletContextType & TExternalHooks & FarcasterMiniAppManagement;
6
6
  export declare const SolanaExternalWalletContext: import("react").Context<SolanaExternalWalletContextType>;
7
7
  export type SolanaExternalWalletProviderConfig = ExternalWalletProviderConfigBase;
8
8
  type SolanaExternalWalletProviderConfigFull = ExternalWalletProviderConfig<CreateWalletFn>;
@@ -1,5 +1,7 @@
1
1
  "use client";
2
2
  var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
3
5
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
4
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
7
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -15,6 +17,7 @@ var __spreadValues = (a, b) => {
15
17
  }
16
18
  return a;
17
19
  };
20
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
18
21
  var __async = (__this, __arguments, generator) => {
19
22
  return new Promise((resolve, reject) => {
20
23
  var fulfilled = (value) => {
@@ -36,7 +39,7 @@ var __async = (__this, __arguments, generator) => {
36
39
  });
37
40
  };
38
41
  import { jsx } from "react/jsx-runtime";
39
- import { createContext, useEffect, useMemo, useRef } from "react";
42
+ import { createContext, useEffect, useMemo, useRef, useState } from "react";
40
43
  import { useWallet } from "@solana/wallet-adapter-react";
41
44
  import { isIosAndRedirectable, WalletReadyState } from "@solana/wallet-adapter-base";
42
45
  import {
@@ -44,7 +47,10 @@ import {
44
47
  } from "@getpara/react-common";
45
48
  import bs58 from "bs58";
46
49
  import { externalHooks } from "./externalHooks.js";
47
- const SolanaExternalWalletContext = createContext(defaultSolanaExternalWallet);
50
+ import { farcasterWallet } from "../wallets/connectors/index.js";
51
+ const SolanaExternalWalletContext = createContext(__spreadProps(__spreadValues({}, defaultSolanaExternalWallet), {
52
+ farcasterStatus: void 0
53
+ }));
48
54
  function SolanaExternalWalletProvider({
49
55
  children,
50
56
  wallets: walletFns,
@@ -67,16 +73,11 @@ function SolanaExternalWalletProvider({
67
73
  const solanaSignMessageRef = useRef(solanaSignMessage);
68
74
  const solanaAddressRef = useRef(solanaAddress);
69
75
  const verificationMessage = useRef();
76
+ const [isFarcasterSetup, setIsFarcasterSetup] = useState(false);
70
77
  const reset = () => __async(this, null, function* () {
71
78
  yield disconnect();
72
79
  yield para.logout();
73
80
  });
74
- const _reset = (..._0) => __async(this, [..._0], function* ({ logout = false } = {}) {
75
- yield disconnect();
76
- if (logout) {
77
- yield para.logout();
78
- }
79
- });
80
81
  const login = (_0) => __async(this, [_0], function* ({
81
82
  address,
82
83
  providerId,
@@ -86,6 +87,7 @@ function SolanaExternalWalletProvider({
86
87
  try {
87
88
  return yield para.loginExternalWallet({
88
89
  externalWallet: {
90
+ partnerId: para.partnerId,
89
91
  address,
90
92
  type: "SOLANA",
91
93
  provider: providerName,
@@ -114,7 +116,7 @@ function SolanaExternalWalletProvider({
114
116
  try {
115
117
  yield login({
116
118
  address,
117
- providerId: (_c = getWallet((_b = (_a = wallet == null ? void 0 : wallet.adapter) == null ? void 0 : _a.name) != null ? _b : "")) == null ? void 0 : _c.internalId,
119
+ providerId: (_c = getWallet((_b = (_a = wallet == null ? void 0 : wallet.adapter) == null ? void 0 : _a.name) != null ? _b : "")) == null ? void 0 : _c.id,
118
120
  providerName: (_d = wallet == null ? void 0 : wallet.adapter) == null ? void 0 : _d.name
119
121
  });
120
122
  } catch (err) {
@@ -225,7 +227,7 @@ function SolanaExternalWalletProvider({
225
227
  address = yield connectBase(adapter, true);
226
228
  if (address) {
227
229
  try {
228
- authState = yield login({ address, providerId: (_a = getWallet(adapter.name)) == null ? void 0 : _a.internalId, providerName: adapter.name });
230
+ authState = yield login({ address, providerId: (_a = getWallet(adapter.name)) == null ? void 0 : _a.id, providerName: adapter.name });
229
231
  verificationMessage.current = authState.stage === "verify" ? authState.signatureVerificationMessage : void 0;
230
232
  } catch (err) {
231
233
  yield disconnect();
@@ -252,15 +254,16 @@ function SolanaExternalWalletProvider({
252
254
  });
253
255
  const requestInfo = (providerId) => __async(this, null, function* () {
254
256
  var _a, _b;
255
- const wallet2 = wallets.find((w) => w.internalId === providerId);
257
+ const wallet2 = wallets.find((w) => w.id === providerId);
256
258
  const adapter = getAdapter((_a = wallet2.name) != null ? _a : "");
257
259
  isLinkingAccount.current = true;
258
260
  try {
259
261
  const address = yield connectBase(adapter);
260
262
  const externalWallet = {
263
+ partnerId: para.partnerId,
261
264
  address,
262
265
  type: "SOLANA",
263
- providerId: wallet2.internalId,
266
+ providerId: wallet2.id,
264
267
  provider: wallet2.name
265
268
  };
266
269
  return externalWallet;
@@ -271,7 +274,7 @@ function SolanaExternalWalletProvider({
271
274
  });
272
275
  const disconnectBase = (providerId) => __async(this, null, function* () {
273
276
  var _a, _b;
274
- const wallet2 = wallets.find((w) => w.internalId === providerId);
277
+ const wallet2 = wallets.find((w) => w.id === providerId);
275
278
  const adapter = getAdapter((_a = wallet2.name) != null ? _a : "");
276
279
  if (!(adapter == null ? void 0 : adapter.connected)) {
277
280
  return;
@@ -289,22 +292,101 @@ function SolanaExternalWalletProvider({
289
292
  return (_a = adapters.find((a) => a.adapter.name === "Mobile Wallet Adapter" ? a : a.adapter.name === name ? a : false)) == null ? void 0 : _a.adapter;
290
293
  };
291
294
  const getWallet = (name) => wallets.find((w) => w.name === name);
292
- const wallets = walletFns.map((walletFn) => {
295
+ const createWallet = (walletFn) => {
293
296
  const metaData = walletFn();
294
297
  const adapter = getAdapter(metaData.name);
295
- return __spreadValues({
298
+ return __spreadProps(__spreadValues({
296
299
  connect: () => connect(adapter),
297
300
  connectMobile: () => connect(adapter),
298
301
  type: "SOLANA",
299
302
  installed: adapter && ((adapter == null ? void 0 : adapter.readyState) === WalletReadyState.Installed || (adapter == null ? void 0 : adapter.readyState) === WalletReadyState.Loadable)
300
- }, metaData);
303
+ }, metaData), {
304
+ // Using name here since that's the only common id across the networks
305
+ id: metaData.name
306
+ });
307
+ };
308
+ const [wallets, setWallets] = useState(() => walletFns.map(createWallet));
309
+ const farcasterStatus = useMemo(() => {
310
+ if (!isFarcasterSetup) {
311
+ return void 0;
312
+ }
313
+ const farcasterAdapter = getAdapter("Farcaster");
314
+ if (!farcasterAdapter) {
315
+ return {
316
+ isPresent: false
317
+ };
318
+ }
319
+ return farcasterAdapter.connected && farcasterAdapter.publicKey ? {
320
+ isPresent: true,
321
+ isConnected: true,
322
+ address: farcasterAdapter.publicKey.toString()
323
+ } : {
324
+ isPresent: true,
325
+ isConnected: false
326
+ };
327
+ }, [isFarcasterSetup, adapters]);
328
+ useEffect(() => {
329
+ const detectFarcaster = () => __async(this, null, function* () {
330
+ if (para.isFarcasterMiniApp) {
331
+ try {
332
+ yield import("@farcaster/mini-app-solana");
333
+ } catch (e) {
334
+ }
335
+ }
336
+ });
337
+ detectFarcaster();
338
+ }, [para.isFarcasterMiniApp]);
339
+ useEffect(() => {
340
+ const setupFarcaster = () => __async(this, null, function* () {
341
+ const adapter = getAdapter("Farcaster");
342
+ if (para.isFarcasterMiniApp && !wallets.some((w) => w.internalId === "FARCASTER") && !!adapter) {
343
+ const wallet2 = createWallet(farcasterWallet);
344
+ setWallets((prev) => [...prev, wallet2]);
345
+ if (para.supportedWalletTypes.some(({ type }) => type === "SOLANA")) {
346
+ yield connectBase(adapter, true);
347
+ }
348
+ setIsFarcasterSetup(true);
349
+ }
350
+ });
351
+ setupFarcaster();
352
+ }, [para.isFarcasterMiniApp, wallets, adapters]);
353
+ const injectedWallets = adapters.filter((wallet2) => wallet2.adapter.name !== "Mobile Wallet Adapter" && !wallets.some((w) => w.name === wallet2.adapter.name)).map((wallet2) => {
354
+ const adapter = wallet2.adapter;
355
+ return {
356
+ connect: () => connect(adapter),
357
+ connectMobile: () => connect(adapter),
358
+ type: "SOLANA",
359
+ installed: adapter && ((adapter == null ? void 0 : adapter.readyState) === WalletReadyState.Installed || (adapter == null ? void 0 : adapter.readyState) === WalletReadyState.Loadable),
360
+ name: adapter.name,
361
+ iconUrl: adapter.icon,
362
+ // Using name here since that's the only common id across the networks
363
+ id: adapter.name,
364
+ internalId: adapter.name
365
+ };
301
366
  });
367
+ const walletsWithInjected = [...wallets, ...injectedWallets];
302
368
  return /* @__PURE__ */ jsx(
303
369
  SolanaExternalWalletContext.Provider,
304
370
  {
305
371
  value: useMemo(
306
- () => __spreadValues({ wallets, disconnect, signMessage, signVerificationMessage, requestInfo, disconnectBase }, externalHooks),
307
- [wallets, disconnect, signMessage, signVerificationMessage, requestInfo, disconnectBase]
372
+ () => __spreadValues({
373
+ wallets: walletsWithInjected,
374
+ disconnect,
375
+ signMessage,
376
+ signVerificationMessage,
377
+ requestInfo,
378
+ disconnectBase,
379
+ farcasterStatus
380
+ }, externalHooks),
381
+ [
382
+ walletsWithInjected,
383
+ disconnect,
384
+ signMessage,
385
+ signVerificationMessage,
386
+ requestInfo,
387
+ farcasterStatus,
388
+ disconnectBase
389
+ ]
308
390
  ),
309
391
  children
310
392
  }
@@ -0,0 +1,2 @@
1
+ import { Wallet } from '../../../types/Wallet.js';
2
+ export declare const farcasterWallet: () => Wallet;
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import { icon } from "./farcasterIcon.js";
3
+ const farcasterWallet = () => {
4
+ return {
5
+ id: "farcaster",
6
+ internalId: "FARCASTER",
7
+ name: "Farcaster",
8
+ iconUrl: icon,
9
+ isExtension: true,
10
+ hasIosSafariExtension: false,
11
+ downloadUrl: "https://farcaster.xyz"
12
+ };
13
+ };
14
+ export {
15
+ farcasterWallet
16
+ };
@@ -0,0 +1 @@
1
+ export declare const icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPG1hc2sgaWQ9Im1hc2swXzEzNDFfMzQiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSI0IiB5PSIwIiB3aWR0aD0iMTciIGhlaWdodD0iMjQiPgo8cGF0aCBkPSJNMjAuNSAwSDRWMjRIMjAuNVYwWiIgZmlsbD0id2hpdGUiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzEzNDFfMzQpIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy44MTMgMS44ODcwOEMxNC42ODUzIDEuODg3MDggMTUuNTAzNSAyLjAwNDAyIDE2LjI2MTIgMi4yMjA4OUMxNS41MTk1IDAuNDkyMjU0IDEzLjk3OTUgMCAxMi4yNjU2IDBDMTAuNTQ4MyAwIDkuMDA1NjUgMC40OTQxODggOC4yNjU2MiAyLjIzMTA3QzkuMDE3NjUgMi4wMDY1NyA5LjgzMjM2IDEuODg3MDggMTAuNzAxNyAxLjg4NzA4SDEzLjgxM1pNMTAuNTAyMiAzLjYyMjU2QzYuMzYwMDMgMy42MjI1NiA0IDYuODgxMTQgNCAxMC45MDA4VjE1LjAzQzQgMTUuNDMyIDQuMzM1NzkgMTUuNzUgNC43NSAxNS43NUgxOS43NUMyMC4xNjQyIDE1Ljc1IDIwLjUgMTUuNDMyIDIwLjUgMTUuMDNWMTAuOTAwOEMyMC41IDYuODgxMTQgMTcuNzU1NiAzLjYyMjU2IDEzLjYxMzUgMy42MjI1NkgxMC41MDIyWk0xMi4yNDQxIDEwLjkzNjVDMTMuNjkzOSAxMC45MzY1IDE0Ljg2OTIgOS43NjEyMyAxNC44NjkyIDguMzExNTNDMTQuODY5MiA2Ljg2MTc4IDEzLjY5MzkgNS42ODY1MyAxMi4yNDQxIDUuNjg2NTNDMTAuNzk0NCA1LjY4NjUzIDkuNjE5MTQgNi44NjE3OCA5LjYxOTE0IDguMzExNTNDOS42MTkxNCA5Ljc2MTIzIDEwLjc5NDQgMTAuOTM2NSAxMi4yNDQxIDEwLjkzNjVaTTQgMTguMTc3MUM0IDE3Ljc3NTEgNC4zMzU3OSAxNy40NDkyIDQuNzUgMTcuNDQ5MkgxOS43NUMyMC4xNjQyIDE3LjQ0OTIgMjAuNSAxNy43NzUxIDIwLjUgMTguMTc3MVYyMi41NDRDMjAuNSAyMy4zNDc5IDE5LjgyODQgMjMuOTk5NyAxOSAyMy45OTk3SDUuNUM0LjY3MTU3IDIzLjk5OTcgNCAyMy4zNDc5IDQgMjIuNTQ0VjE4LjE3NzFaIiBmaWxsPSIjRTMzRTNGIi8+CjwvZz4KPC9zdmc+Cg==";
@@ -0,0 +1,5 @@
1
+ "use client";
2
+ const icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPG1hc2sgaWQ9Im1hc2swXzEzNDFfMzQiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSI0IiB5PSIwIiB3aWR0aD0iMTciIGhlaWdodD0iMjQiPgo8cGF0aCBkPSJNMjAuNSAwSDRWMjRIMjAuNVYwWiIgZmlsbD0id2hpdGUiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzEzNDFfMzQpIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy44MTMgMS44ODcwOEMxNC42ODUzIDEuODg3MDggMTUuNTAzNSAyLjAwNDAyIDE2LjI2MTIgMi4yMjA4OUMxNS41MTk1IDAuNDkyMjU0IDEzLjk3OTUgMCAxMi4yNjU2IDBDMTAuNTQ4MyAwIDkuMDA1NjUgMC40OTQxODggOC4yNjU2MiAyLjIzMTA3QzkuMDE3NjUgMi4wMDY1NyA5LjgzMjM2IDEuODg3MDggMTAuNzAxNyAxLjg4NzA4SDEzLjgxM1pNMTAuNTAyMiAzLjYyMjU2QzYuMzYwMDMgMy42MjI1NiA0IDYuODgxMTQgNCAxMC45MDA4VjE1LjAzQzQgMTUuNDMyIDQuMzM1NzkgMTUuNzUgNC43NSAxNS43NUgxOS43NUMyMC4xNjQyIDE1Ljc1IDIwLjUgMTUuNDMyIDIwLjUgMTUuMDNWMTAuOTAwOEMyMC41IDYuODgxMTQgMTcuNzU1NiAzLjYyMjU2IDEzLjYxMzUgMy42MjI1NkgxMC41MDIyWk0xMi4yNDQxIDEwLjkzNjVDMTMuNjkzOSAxMC45MzY1IDE0Ljg2OTIgOS43NjEyMyAxNC44NjkyIDguMzExNTNDMTQuODY5MiA2Ljg2MTc4IDEzLjY5MzkgNS42ODY1MyAxMi4yNDQxIDUuNjg2NTNDMTAuNzk0NCA1LjY4NjUzIDkuNjE5MTQgNi44NjE3OCA5LjYxOTE0IDguMzExNTNDOS42MTkxNCA5Ljc2MTIzIDEwLjc5NDQgMTAuOTM2NSAxMi4yNDQxIDEwLjkzNjVaTTQgMTguMTc3MUM0IDE3Ljc3NTEgNC4zMzU3OSAxNy40NDkyIDQuNzUgMTcuNDQ5MkgxOS43NUMyMC4xNjQyIDE3LjQ0OTIgMjAuNSAxNy43NzUxIDIwLjUgMTguMTc3MVYyMi41NDRDMjAuNSAyMy4zNDc5IDE5LjgyODQgMjMuOTk5NyAxOSAyMy45OTk3SDUuNUM0LjY3MTU3IDIzLjk5OTcgNCAyMy4zNDc5IDQgMjIuNTQ0VjE4LjE3NzFaIiBmaWxsPSIjRTMzRTNGIi8+CjwvZz4KPC9zdmc+Cg==";
3
+ export {
4
+ icon
5
+ };
@@ -1,6 +1,7 @@
1
+ import { farcasterWallet } from './farcaster/farcaster.js';
1
2
  import { phantomWallet } from './phantom/phantom.js';
2
3
  import { glowWallet } from './glow/glow.js';
3
4
  import { backpackWallet } from './backpack/backpack.js';
4
5
  import { solflareWallet } from './solflare/solflare.js';
5
- export { phantomWallet, glowWallet, backpackWallet, solflareWallet };
6
+ export { farcasterWallet, phantomWallet, glowWallet, backpackWallet, solflareWallet };
6
7
  export declare const allWallets: (() => import("../../types/Wallet.js").Wallet)[];
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ import { farcasterWallet } from "./farcaster/farcaster.js";
2
3
  import { phantomWallet } from "./phantom/phantom.js";
3
4
  import { glowWallet } from "./glow/glow.js";
4
5
  import { backpackWallet } from "./backpack/backpack.js";
@@ -7,6 +8,7 @@ const allWallets = [phantomWallet, glowWallet, backpackWallet, solflareWallet];
7
8
  export {
8
9
  allWallets,
9
10
  backpackWallet,
11
+ farcasterWallet,
10
12
  glowWallet,
11
13
  phantomWallet,
12
14
  solflareWallet
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@getpara/solana-wallet-connectors",
3
- "version": "2.0.0-dev.2",
3
+ "version": "2.0.0-dev.6",
4
4
  "dependencies": {
5
- "@getpara/react-common": "2.0.0-dev.2",
6
- "@getpara/web-sdk": "2.0.0-dev.2",
5
+ "@getpara/react-common": "2.0.0-dev.6",
6
+ "@getpara/web-sdk": "2.0.0-dev.6",
7
7
  "bs58": "6.0.0"
8
8
  },
9
9
  "devDependencies": {
@@ -23,9 +23,10 @@
23
23
  "dist",
24
24
  "package.json"
25
25
  ],
26
- "gitHead": "77d818539daa181c839a40f0ad5362af4058844e",
26
+ "gitHead": "c2125e37c73a19f11978031f5aa2eab39b978c56",
27
27
  "main": "dist/index.js",
28
28
  "peerDependencies": {
29
+ "@farcaster/mini-app-solana": "^1.0.0",
29
30
  "@solana-mobile/wallet-adapter-mobile": "2.x",
30
31
  "@solana/wallet-adapter-base": "0.x",
31
32
  "@solana/wallet-adapter-react": "0.x",
@@ -33,6 +34,11 @@
33
34
  "react": ">=18",
34
35
  "react-dom": ">=18"
35
36
  },
37
+ "peerDependenciesMeta": {
38
+ "@farcaster/mini-app-solana": {
39
+ "optional": true
40
+ }
41
+ },
36
42
  "scripts": {
37
43
  "build": "rm -rf dist && yarn typegen && node ./scripts/build.mjs",
38
44
  "test": "vitest run --coverage",