@metamask/connect-solana 0.1.0 → 0.3.0

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.
package/CHANGELOG.md CHANGED
@@ -7,11 +7,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.0]
11
+
12
+ ### Changed
13
+
14
+ - Correct README documentation across `connect-solana`, `connect-evm`, and `connect-multichain` to match actual API behaviour. ([#194](https://github.com/MetaMask/connect-monorepo/pull/194))
15
+ - Add missing changelogs from Release/17.0.0 ([#186](https://github.com/MetaMask/connect-monorepo/pull/186))
16
+
17
+ ### Fixed
18
+
19
+ - Explicitly disconnect only Solana scopes when calling `SolanaClient.disconnect()`. Previously calling this function would result in the wallet connection being terminated entirely even if other ecosystems (evm, bitcoin, etc) were still connected ([#193](https://github.com/MetaMask/connect-monorepo/pull/193))
20
+
21
+ ## [0.2.0]
22
+
23
+ ### Added
24
+
25
+ - Add node.js builds [#169](https://github.com/MetaMask/connect-monorepo/pull/169)
26
+
27
+ ### Changed
28
+
29
+ - **BREAKING:** Automatically register as MetaMask to Solana Wallet Standard registry upon instantiation - with option to skip auto-registration [#178](https://github.com/MetaMask/connect-monorepo/pull/178)
30
+ - **BREAKING** `getWallet()` no longer accepts a `walletName` argument and now always returns the `"MetaMask Connect"` wallet instance. ([#178](https://github.com/MetaMask/connect-monorepo/pull/178))
31
+ - **BREAKING** `registerWallet()` no longer accepts a `walletName` argument. Wallet naming is now fixed to `"MetaMask Connect"`. ([#178](https://github.com/MetaMask/connect-monorepo/pull/178))
32
+ - `registerWallet()` is now effectively a no-op when auto-registration is enabled (default). Use `skipAutoRegister: true` for manual registration control. ([#178](https://github.com/MetaMask/connect-monorepo/pull/178))
33
+
10
34
  ## [0.1.0]
11
35
 
12
36
  ### Added
13
37
 
14
38
  - Initial release
15
39
 
16
- [Unreleased]: https://github.com/MetaMask/connect-monorepo/compare/@metamask/connect-solana@0.1.0...HEAD
40
+ [Unreleased]: https://github.com/MetaMask/connect-monorepo/compare/@metamask/connect-solana@0.3.0...HEAD
41
+ [0.3.0]: https://github.com/MetaMask/connect-monorepo/compare/@metamask/connect-solana@0.2.0...@metamask/connect-solana@0.3.0
42
+ [0.2.0]: https://github.com/MetaMask/connect-monorepo/compare/@metamask/connect-solana@0.1.0...@metamask/connect-solana@0.2.0
17
43
  [0.1.0]: https://github.com/MetaMask/connect-monorepo/releases/tag/@metamask/connect-solana@0.1.0
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  - **Wallet Standard Compatible** - Automatically registers MetaMask with the wallet-standard registry
10
10
  - **Seamless Integration** - Works with `@solana/wallet-adapter-react` out of the box
11
- - **Session Management** - Handles session creation and revocation internally
11
+ - **Session Management** - Handles session creation internally; disconnect revokes only Solana scopes
12
12
  - **Cross-Platform Support** - Works with browser extensions and mobile applications
13
13
 
14
14
  ## Installation
@@ -29,16 +29,13 @@ npm install @metamask/connect-solana
29
29
  import { createSolanaClient } from '@metamask/connect-solana';
30
30
 
31
31
  // Create a Solana client
32
+ // MetaMask is automatically registered with the wallet-standard registry on creation
32
33
  const client = await createSolanaClient({
33
34
  dapp: {
34
35
  name: 'My Solana DApp',
35
36
  url: 'https://mydapp.com',
36
37
  },
37
38
  });
38
-
39
- // Register MetaMask with the wallet-standard registry
40
- // This makes MetaMask automatically discoverable by Solana dapps
41
- await client.registerWallet();
42
39
  ```
43
40
 
44
41
  ## Usage with Solana Wallet Adapter
@@ -61,14 +58,12 @@ import '@solana/wallet-adapter-react-ui/styles.css';
61
58
 
62
59
  function App() {
63
60
  useEffect(() => {
64
- // Register MetaMask wallet on app initialization
61
+ // MetaMask is automatically registered with the wallet-standard registry on creation
65
62
  createSolanaClient({
66
63
  dapp: {
67
64
  name: 'My Solana DApp',
68
65
  url: window.location.origin,
69
66
  },
70
- }).then((client) => {
71
- client.registerWallet();
72
67
  });
73
68
  }, []);
74
69
 
@@ -85,28 +80,86 @@ function App() {
85
80
  }
86
81
  ```
87
82
 
83
+ ### ⚠️ Wallet Adapter support
84
+
85
+ > **Note:** There is a known issue with `@solana/wallet-adapter-react` that prevents connecting to MetaMask when using the Wallet Standard provider from `@metamask/connect-solana` in Chrome on Android.
86
+ >
87
+ > See this [patch file](../../.yarn/patches/@solana-wallet-adapter-react-npm-0.15.39-86277fdcc0.patch) for details.
88
+
88
89
  ## API Reference
89
90
 
90
91
  ### `createSolanaClient(options)`
91
92
 
92
- Creates a new Solana client instance.
93
+ Creates a new Solana client instance. By default, the wallet is automatically registered with the wallet-standard registry on creation.
93
94
 
94
95
  #### Parameters
95
96
 
96
- - `options.dapp.name` (required) - The name of your dapp
97
- - `options.dapp.url` (optional) - The URL of your dapp
98
- - `options.dapp.iconUrl` (optional) - The icon URL of your dapp
99
- - `options.api.supportedNetworks` (optional) - Map of CAIP chain IDs to RPC URLs
100
- - `options.debug` (optional) - Enable debug logging
97
+ | Option | Type | Required | Description |
98
+ | ----------------------- | ------------------------- | -------- | ------------------------------------------------------------------------- |
99
+ | `dapp.name` | `string` | Yes | Name of your dApp |
100
+ | `dapp.url` | `string` | No | URL of your dApp |
101
+ | `dapp.iconUrl` | `string` | No | Icon URL for your dApp |
102
+ | `api.supportedNetworks` | `SolanaSupportedNetworks` | No | Map of network names (`mainnet`, `devnet`, `testnet`) to RPC URLs |
103
+ | `debug` | `boolean` | No | Reserved for future use; not currently forwarded to the underlying client |
104
+ | `skipAutoRegister` | `boolean` | No | Skip auto-registering the wallet during creation (defaults to `false`) |
101
105
 
102
106
  #### Returns
103
107
 
104
- A `SolanaClient` object with:
108
+ `Promise<SolanaClient>`
109
+
110
+ ---
111
+
112
+ ### `SolanaClient`
113
+
114
+ The object returned by `createSolanaClient`.
115
+
116
+ #### Properties
117
+
118
+ | Property | Type | Description |
119
+ | -------- | ---------------- | -------------------------------------- |
120
+ | `core` | `MultichainCore` | The underlying MultichainCore instance |
121
+
122
+ #### Methods
123
+
124
+ ##### `getWallet()`
125
+
126
+ Returns a wallet-standard compatible MetaMask wallet instance.
127
+
128
+ **Returns**
129
+
130
+ `Wallet` - A [wallet-standard](https://github.com/wallet-standard/wallet-standard) compatible wallet.
131
+
132
+ ##### `registerWallet()`
133
+
134
+ Registers the MetaMask wallet with the wallet-standard registry. This is a no-op if the wallet was already auto-registered during creation (i.e., `skipAutoRegister` was not set to `true`).
105
135
 
106
- - `core` - The underlying MultichainCore instance
107
- - `getWallet(walletName?)` - Returns a wallet-standard compatible wallet
108
- - `registerWallet(walletName?)` - Registers the wallet with the wallet-standard registry
109
- - `disconnect()` - Disconnects and revokes the session
136
+ **Returns**
137
+
138
+ `Promise<void>`
139
+
140
+ ##### `disconnect()`
141
+
142
+ Disconnects all Solana scopes from MetaMask. This only revokes the Solana-specific scopes (`mainnet`, `devnet`, `testnet`); it does not terminate the broader multichain session.
143
+
144
+ **Returns**
145
+
146
+ `Promise<void>`
147
+
148
+ ---
149
+
150
+ ### Types
151
+
152
+ #### `SolanaNetwork`
153
+
154
+ ```typescript
155
+ type SolanaNetwork = 'mainnet' | 'devnet' | 'testnet';
156
+ ```
157
+
158
+ #### `SolanaSupportedNetworks`
159
+
160
+ ```typescript
161
+ type SolanaSupportedNetworks = Partial<Record<SolanaNetwork, string>>;
162
+ ```
110
163
 
111
164
  ## TypeScript
112
165
 
@@ -1,3 +1,4 @@
1
+ /* Browser ES build */
1
2
  var __async = (__this, __arguments, generator) => {
2
3
  return new Promise((resolve, reject) => {
3
4
  var fulfilled = (value) => {
@@ -20,7 +21,9 @@ var __async = (__this, __arguments, generator) => {
20
21
  };
21
22
 
22
23
  // src/connect.ts
23
- import { createMultichainClient } from "@metamask/connect-multichain";
24
+ import {
25
+ createMultichainClient
26
+ } from "@metamask/connect-multichain";
24
27
  import {
25
28
  getWalletStandard,
26
29
  registerSolanaWalletStandard
@@ -48,12 +51,13 @@ function convertNetworksToCAIP(networks) {
48
51
  // src/connect.ts
49
52
  function createSolanaClient(options) {
50
53
  return __async(this, null, function* () {
51
- var _a, _b;
54
+ var _a, _b, _c;
52
55
  const defaultNetworks = {
53
56
  mainnet: "https://api.mainnet-beta.solana.com"
54
57
  };
58
+ const skipAutoRegister = (_a = options.skipAutoRegister) != null ? _a : false;
55
59
  const supportedNetworks = convertNetworksToCAIP(
56
- (_b = (_a = options.api) == null ? void 0 : _a.supportedNetworks) != null ? _b : defaultNetworks
60
+ (_c = (_b = options.api) == null ? void 0 : _b.supportedNetworks) != null ? _c : defaultNetworks
57
61
  );
58
62
  const core = yield createMultichainClient({
59
63
  dapp: options.dapp,
@@ -62,14 +66,21 @@ function createSolanaClient(options) {
62
66
  }
63
67
  });
64
68
  const client = core.provider;
69
+ const walletName = "MetaMask Connect";
70
+ if (!skipAutoRegister) {
71
+ yield registerSolanaWalletStandard({ client, walletName });
72
+ }
65
73
  return {
66
74
  core,
67
- getWallet: (walletName) => getWalletStandard({ client, walletName }),
68
- registerWallet: (walletName = "MetaMask Connect") => __async(null, null, function* () {
69
- return registerSolanaWalletStandard({ client, walletName });
75
+ getWallet: () => getWalletStandard({ client, walletName }),
76
+ registerWallet: () => __async(null, null, function* () {
77
+ if (!skipAutoRegister) {
78
+ return;
79
+ }
80
+ yield registerSolanaWalletStandard({ client, walletName });
70
81
  }),
71
82
  disconnect: () => __async(null, null, function* () {
72
- return yield core.disconnect();
83
+ return yield core.disconnect(Object.values(SOLANA_CAIP_IDS));
73
84
  })
74
85
  };
75
86
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/connect.ts","../../../src/networks.ts"],"sourcesContent":["import { createMultichainClient } from '@metamask/connect-multichain';\nimport {\n getWalletStandard,\n registerSolanaWalletStandard,\n} from '@metamask/solana-wallet-standard';\n\nimport { convertNetworksToCAIP } from './networks';\nimport type {\n SolanaClient,\n SolanaConnectOptions,\n SolanaSupportedNetworks,\n} from './types';\n\n/**\n * Creates a new Solana client for connecting to MetaMask via wallet-standard.\n *\n * This function initializes the MultichainSDK and provides methods to get or register\n * a wallet-standard compatible wallet. The wallet handles session creation internally\n * when users connect through the Solana wallet adapter UI.\n *\n * @param options - Configuration options for the Solana client\n * @param options.dapp - Dapp identification and branding settings\n * @param options.api - Optional API configuration with supported networks\n * @param options.api.supportedNetworks - Record mapping network names (mainnet, devnet, testnet) to RPC URLs\n * @param options.debug - Enable debug logging\n * @returns A promise that resolves to the Solana client instance\n *\n * @example\n * ```typescript\n * import { createSolanaClient } from '@metamask/connect-solana';\n *\n * const client = await createSolanaClient({\n * dapp: {\n * name: 'My Solana DApp',\n * url: 'https://mydapp.com',\n * },\n * api: {\n * supportedNetworks: {\n * mainnet: 'https://api.mainnet-beta.solana.com',\n * devnet: 'https://api.devnet.solana.com',\n * },\n * },\n * });\n *\n * // Register the wallet to make it discoverable by Solana dapps\n * await client.registerWallet();\n *\n * // Or get the wallet instance directly\n * const wallet = client.getWallet();\n * ```\n */\nexport async function createSolanaClient(\n options: SolanaConnectOptions,\n): Promise<SolanaClient> {\n const defaultNetworks: SolanaSupportedNetworks = {\n mainnet: 'https://api.mainnet-beta.solana.com',\n };\n\n const supportedNetworks = convertNetworksToCAIP(\n options.api?.supportedNetworks ?? defaultNetworks,\n );\n\n const core = await createMultichainClient({\n dapp: options.dapp,\n api: {\n supportedNetworks,\n },\n });\n\n const client = core.provider;\n\n return {\n core,\n getWallet: (walletName?: string) =>\n getWalletStandard({ client, walletName }),\n registerWallet: async (walletName = 'MetaMask Connect') =>\n registerSolanaWalletStandard({ client, walletName }),\n disconnect: async () => await core.disconnect(),\n };\n}\n","import type { SolanaNetwork, SolanaSupportedNetworks } from './types';\n\n/**\n * CAIP-2 chain IDs for Solana networks.\n * The reference is the first 32 characters of the Base58-encoded genesis hash.\n */\nexport const SOLANA_CAIP_IDS: Record<SolanaNetwork, string> = {\n mainnet: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n devnet: 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n testnet: 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n};\n\n/**\n * Converts a record of network names to RPC URLs into a record of CAIP IDs to RPC URLs.\n *\n * @param networks - A record of network names to RPC URLs\n * @returns A record of CAIP IDs to RPC URLs\n */\nexport function convertNetworksToCAIP(\n networks: SolanaSupportedNetworks,\n): Record<string, string> {\n return Object.entries(networks).reduce<Record<string, string>>(\n (acc, [network, rpcUrl]) => {\n const caipId = SOLANA_CAIP_IDS[network as SolanaNetwork];\n if (caipId && rpcUrl) {\n acc[caipId] = rpcUrl;\n }\n return acc;\n },\n {},\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,8BAA8B;AACvC;AAAA,EACE;AAAA,EACA;AAAA,OACK;;;ACEA,IAAM,kBAAiD;AAAA,EAC5D,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AACX;AAQO,SAAS,sBACd,UACwB;AACxB,SAAO,OAAO,QAAQ,QAAQ,EAAE;AAAA,IAC9B,CAAC,KAAK,CAAC,SAAS,MAAM,MAAM;AAC1B,YAAM,SAAS,gBAAgB,OAAwB;AACvD,UAAI,UAAU,QAAQ;AACpB,YAAI,MAAM,IAAI;AAAA,MAChB;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;;;ADoBA,SAAsB,mBACpB,SACuB;AAAA;AArDzB;AAsDE,UAAM,kBAA2C;AAAA,MAC/C,SAAS;AAAA,IACX;AAEA,UAAM,oBAAoB;AAAA,OACxB,mBAAQ,QAAR,mBAAa,sBAAb,YAAkC;AAAA,IACpC;AAEA,UAAM,OAAO,MAAM,uBAAuB;AAAA,MACxC,MAAM,QAAQ;AAAA,MACd,KAAK;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,SAAS,KAAK;AAEpB,WAAO;AAAA,MACL;AAAA,MACA,WAAW,CAAC,eACV,kBAAkB,EAAE,QAAQ,WAAW,CAAC;AAAA,MAC1C,gBAAgB,CAAO,aAAa,uBAAoB;AACtD,4CAA6B,EAAE,QAAQ,WAAW,CAAC;AAAA;AAAA,MACrD,YAAY,MAAS;AAAG,qBAAM,KAAK,WAAW;AAAA;AAAA,IAChD;AAAA,EACF;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../../src/connect.ts","../../../src/networks.ts"],"sourcesContent":["import {\n createMultichainClient,\n type Scope,\n} from '@metamask/connect-multichain';\nimport {\n getWalletStandard,\n registerSolanaWalletStandard,\n} from '@metamask/solana-wallet-standard';\n\nimport { convertNetworksToCAIP, SOLANA_CAIP_IDS } from './networks';\nimport type {\n SolanaClient,\n SolanaConnectOptions,\n SolanaSupportedNetworks,\n} from './types';\n\n/**\n * Creates a new Solana client for connecting to MetaMask via wallet-standard.\n *\n * This function initializes the MultichainSDK and provides methods to get or register\n * a wallet-standard compatible wallet. The wallet handles session creation internally\n * when users connect through the Solana wallet adapter UI.\n *\n * @param options - Configuration options for the Solana client\n * @param options.dapp - Dapp identification and branding settings\n * @param options.api - Optional API configuration with supported networks\n * @param options.api.supportedNetworks - Record mapping network names (mainnet, devnet, testnet) to RPC URLs\n * @param options.debug - Enable debug logging\n * @param options.skipAutoRegister - Skip auto-registering the wallet during creation (defaults to false)\n * @returns A promise that resolves to the Solana client instance\n *\n * @example\n * ```typescript\n * import { createSolanaClient } from '@metamask/connect-solana';\n *\n * // Wallet is auto-registered and ready to use\n * const client = await createSolanaClient({\n * dapp: {\n * name: 'My Solana DApp',\n * url: 'https://mydapp.com',\n * },\n * api: {\n * supportedNetworks: {\n * mainnet: 'https://api.mainnet-beta.solana.com',\n * devnet: 'https://api.devnet.solana.com',\n * },\n * },\n * });\n *\n * // Get the wallet instance directly\n * const wallet = client.getWallet();\n * ```\n */\nexport async function createSolanaClient(\n options: SolanaConnectOptions,\n): Promise<SolanaClient> {\n const defaultNetworks: SolanaSupportedNetworks = {\n mainnet: 'https://api.mainnet-beta.solana.com',\n };\n\n const skipAutoRegister = options.skipAutoRegister ?? false;\n\n const supportedNetworks = convertNetworksToCAIP(\n options.api?.supportedNetworks ?? defaultNetworks,\n );\n\n const core = await createMultichainClient({\n dapp: options.dapp,\n api: {\n supportedNetworks,\n },\n });\n\n const client = core.provider;\n\n const walletName = 'MetaMask Connect';\n\n if (!skipAutoRegister) {\n await registerSolanaWalletStandard({ client, walletName });\n }\n\n return {\n core,\n getWallet: () => getWalletStandard({ client, walletName }),\n registerWallet: async (): Promise<void> => {\n if (!skipAutoRegister) {\n return;\n }\n await registerSolanaWalletStandard({ client, walletName });\n },\n disconnect: async () =>\n await core.disconnect(Object.values(SOLANA_CAIP_IDS) as Scope[]),\n };\n}\n","import type { SolanaNetwork, SolanaSupportedNetworks } from './types';\n\n/**\n * CAIP-2 chain IDs for Solana networks.\n * The reference is the first 32 characters of the Base58-encoded genesis hash.\n */\nexport const SOLANA_CAIP_IDS: Record<SolanaNetwork, string> = {\n mainnet: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n devnet: 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n testnet: 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n};\n\n/**\n * Converts a record of network names to RPC URLs into a record of CAIP IDs to RPC URLs.\n *\n * @param networks - A record of network names to RPC URLs\n * @returns A record of CAIP IDs to RPC URLs\n */\nexport function convertNetworksToCAIP(\n networks: SolanaSupportedNetworks,\n): Record<string, string> {\n return Object.entries(networks).reduce<Record<string, string>>(\n (acc, [network, rpcUrl]) => {\n const caipId = SOLANA_CAIP_IDS[network as SolanaNetwork];\n if (caipId && rpcUrl) {\n acc[caipId] = rpcUrl;\n }\n return acc;\n },\n {},\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;;;ACDA,IAAM,kBAAiD;AAAA,EAC5D,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AACX;AAQO,SAAS,sBACd,UACwB;AACxB,SAAO,OAAO,QAAQ,QAAQ,EAAE;AAAA,IAC9B,CAAC,KAAK,CAAC,SAAS,MAAM,MAAM;AAC1B,YAAM,SAAS,gBAAgB,OAAwB;AACvD,UAAI,UAAU,QAAQ;AACpB,YAAI,MAAM,IAAI;AAAA,MAChB;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;;;ADsBA,SAAsB,mBACpB,SACuB;AAAA;AAvDzB;AAwDE,UAAM,kBAA2C;AAAA,MAC/C,SAAS;AAAA,IACX;AAEA,UAAM,oBAAmB,aAAQ,qBAAR,YAA4B;AAErD,UAAM,oBAAoB;AAAA,OACxB,mBAAQ,QAAR,mBAAa,sBAAb,YAAkC;AAAA,IACpC;AAEA,UAAM,OAAO,MAAM,uBAAuB;AAAA,MACxC,MAAM,QAAQ;AAAA,MACd,KAAK;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,SAAS,KAAK;AAEpB,UAAM,aAAa;AAEnB,QAAI,CAAC,kBAAkB;AACrB,YAAM,6BAA6B,EAAE,QAAQ,WAAW,CAAC;AAAA,IAC3D;AAEA,WAAO;AAAA,MACL;AAAA,MACA,WAAW,MAAM,kBAAkB,EAAE,QAAQ,WAAW,CAAC;AAAA,MACzD,gBAAgB,MAA2B;AACzC,YAAI,CAAC,kBAAkB;AACrB;AAAA,QACF;AACA,cAAM,6BAA6B,EAAE,QAAQ,WAAW,CAAC;AAAA,MAC3D;AAAA,MACA,YAAY,MAAS;AACnB,qBAAM,KAAK,WAAW,OAAO,OAAO,eAAe,CAAY;AAAA;AAAA,IACnE;AAAA,EACF;AAAA;","names":[]}
@@ -0,0 +1,112 @@
1
+ /* Node.js CJS build */
2
+ "use strict";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var __async = (__this, __arguments, generator) => {
21
+ return new Promise((resolve, reject) => {
22
+ var fulfilled = (value) => {
23
+ try {
24
+ step(generator.next(value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ };
29
+ var rejected = (value) => {
30
+ try {
31
+ step(generator.throw(value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ };
36
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
+ step((generator = generator.apply(__this, __arguments)).next());
38
+ });
39
+ };
40
+
41
+ // src/index.ts
42
+ var src_exports = {};
43
+ __export(src_exports, {
44
+ createSolanaClient: () => createSolanaClient
45
+ });
46
+ module.exports = __toCommonJS(src_exports);
47
+
48
+ // src/connect.ts
49
+ var import_connect_multichain = require("@metamask/connect-multichain");
50
+ var import_solana_wallet_standard = require("@metamask/solana-wallet-standard");
51
+
52
+ // src/networks.ts
53
+ var SOLANA_CAIP_IDS = {
54
+ mainnet: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
55
+ devnet: "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
56
+ testnet: "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z"
57
+ };
58
+ function convertNetworksToCAIP(networks) {
59
+ return Object.entries(networks).reduce(
60
+ (acc, [network, rpcUrl]) => {
61
+ const caipId = SOLANA_CAIP_IDS[network];
62
+ if (caipId && rpcUrl) {
63
+ acc[caipId] = rpcUrl;
64
+ }
65
+ return acc;
66
+ },
67
+ {}
68
+ );
69
+ }
70
+
71
+ // src/connect.ts
72
+ function createSolanaClient(options) {
73
+ return __async(this, null, function* () {
74
+ var _a, _b, _c;
75
+ const defaultNetworks = {
76
+ mainnet: "https://api.mainnet-beta.solana.com"
77
+ };
78
+ const skipAutoRegister = (_a = options.skipAutoRegister) != null ? _a : false;
79
+ const supportedNetworks = convertNetworksToCAIP(
80
+ (_c = (_b = options.api) == null ? void 0 : _b.supportedNetworks) != null ? _c : defaultNetworks
81
+ );
82
+ const core = yield (0, import_connect_multichain.createMultichainClient)({
83
+ dapp: options.dapp,
84
+ api: {
85
+ supportedNetworks
86
+ }
87
+ });
88
+ const client = core.provider;
89
+ const walletName = "MetaMask Connect";
90
+ if (!skipAutoRegister) {
91
+ yield (0, import_solana_wallet_standard.registerSolanaWalletStandard)({ client, walletName });
92
+ }
93
+ return {
94
+ core,
95
+ getWallet: () => (0, import_solana_wallet_standard.getWalletStandard)({ client, walletName }),
96
+ registerWallet: () => __async(null, null, function* () {
97
+ if (!skipAutoRegister) {
98
+ return;
99
+ }
100
+ yield (0, import_solana_wallet_standard.registerSolanaWalletStandard)({ client, walletName });
101
+ }),
102
+ disconnect: () => __async(null, null, function* () {
103
+ return yield core.disconnect(Object.values(SOLANA_CAIP_IDS));
104
+ })
105
+ };
106
+ });
107
+ }
108
+ // Annotate the CommonJS export names for ESM import in node:
109
+ 0 && (module.exports = {
110
+ createSolanaClient
111
+ });
112
+ //# sourceMappingURL=connect-solana.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/index.ts","../../../src/connect.ts","../../../src/networks.ts"],"sourcesContent":["export { createSolanaClient } from './connect';\nexport type {\n SolanaClient,\n SolanaConnectOptions,\n SolanaNetwork,\n SolanaSupportedNetworks,\n} from './types';\n","import {\n createMultichainClient,\n type Scope,\n} from '@metamask/connect-multichain';\nimport {\n getWalletStandard,\n registerSolanaWalletStandard,\n} from '@metamask/solana-wallet-standard';\n\nimport { convertNetworksToCAIP, SOLANA_CAIP_IDS } from './networks';\nimport type {\n SolanaClient,\n SolanaConnectOptions,\n SolanaSupportedNetworks,\n} from './types';\n\n/**\n * Creates a new Solana client for connecting to MetaMask via wallet-standard.\n *\n * This function initializes the MultichainSDK and provides methods to get or register\n * a wallet-standard compatible wallet. The wallet handles session creation internally\n * when users connect through the Solana wallet adapter UI.\n *\n * @param options - Configuration options for the Solana client\n * @param options.dapp - Dapp identification and branding settings\n * @param options.api - Optional API configuration with supported networks\n * @param options.api.supportedNetworks - Record mapping network names (mainnet, devnet, testnet) to RPC URLs\n * @param options.debug - Enable debug logging\n * @param options.skipAutoRegister - Skip auto-registering the wallet during creation (defaults to false)\n * @returns A promise that resolves to the Solana client instance\n *\n * @example\n * ```typescript\n * import { createSolanaClient } from '@metamask/connect-solana';\n *\n * // Wallet is auto-registered and ready to use\n * const client = await createSolanaClient({\n * dapp: {\n * name: 'My Solana DApp',\n * url: 'https://mydapp.com',\n * },\n * api: {\n * supportedNetworks: {\n * mainnet: 'https://api.mainnet-beta.solana.com',\n * devnet: 'https://api.devnet.solana.com',\n * },\n * },\n * });\n *\n * // Get the wallet instance directly\n * const wallet = client.getWallet();\n * ```\n */\nexport async function createSolanaClient(\n options: SolanaConnectOptions,\n): Promise<SolanaClient> {\n const defaultNetworks: SolanaSupportedNetworks = {\n mainnet: 'https://api.mainnet-beta.solana.com',\n };\n\n const skipAutoRegister = options.skipAutoRegister ?? false;\n\n const supportedNetworks = convertNetworksToCAIP(\n options.api?.supportedNetworks ?? defaultNetworks,\n );\n\n const core = await createMultichainClient({\n dapp: options.dapp,\n api: {\n supportedNetworks,\n },\n });\n\n const client = core.provider;\n\n const walletName = 'MetaMask Connect';\n\n if (!skipAutoRegister) {\n await registerSolanaWalletStandard({ client, walletName });\n }\n\n return {\n core,\n getWallet: () => getWalletStandard({ client, walletName }),\n registerWallet: async (): Promise<void> => {\n if (!skipAutoRegister) {\n return;\n }\n await registerSolanaWalletStandard({ client, walletName });\n },\n disconnect: async () =>\n await core.disconnect(Object.values(SOLANA_CAIP_IDS) as Scope[]),\n };\n}\n","import type { SolanaNetwork, SolanaSupportedNetworks } from './types';\n\n/**\n * CAIP-2 chain IDs for Solana networks.\n * The reference is the first 32 characters of the Base58-encoded genesis hash.\n */\nexport const SOLANA_CAIP_IDS: Record<SolanaNetwork, string> = {\n mainnet: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n devnet: 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n testnet: 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n};\n\n/**\n * Converts a record of network names to RPC URLs into a record of CAIP IDs to RPC URLs.\n *\n * @param networks - A record of network names to RPC URLs\n * @returns A record of CAIP IDs to RPC URLs\n */\nexport function convertNetworksToCAIP(\n networks: SolanaSupportedNetworks,\n): Record<string, string> {\n return Object.entries(networks).reduce<Record<string, string>>(\n (acc, [network, rpcUrl]) => {\n const caipId = SOLANA_CAIP_IDS[network as SolanaNetwork];\n if (caipId && rpcUrl) {\n acc[caipId] = rpcUrl;\n }\n return acc;\n },\n {},\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,gCAGO;AACP,oCAGO;;;ACDA,IAAM,kBAAiD;AAAA,EAC5D,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AACX;AAQO,SAAS,sBACd,UACwB;AACxB,SAAO,OAAO,QAAQ,QAAQ,EAAE;AAAA,IAC9B,CAAC,KAAK,CAAC,SAAS,MAAM,MAAM;AAC1B,YAAM,SAAS,gBAAgB,OAAwB;AACvD,UAAI,UAAU,QAAQ;AACpB,YAAI,MAAM,IAAI;AAAA,MAChB;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;;;ADsBA,SAAsB,mBACpB,SACuB;AAAA;AAvDzB;AAwDE,UAAM,kBAA2C;AAAA,MAC/C,SAAS;AAAA,IACX;AAEA,UAAM,oBAAmB,aAAQ,qBAAR,YAA4B;AAErD,UAAM,oBAAoB;AAAA,OACxB,mBAAQ,QAAR,mBAAa,sBAAb,YAAkC;AAAA,IACpC;AAEA,UAAM,OAAO,UAAM,kDAAuB;AAAA,MACxC,MAAM,QAAQ;AAAA,MACd,KAAK;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,SAAS,KAAK;AAEpB,UAAM,aAAa;AAEnB,QAAI,CAAC,kBAAkB;AACrB,gBAAM,4DAA6B,EAAE,QAAQ,WAAW,CAAC;AAAA,IAC3D;AAEA,WAAO;AAAA,MACL;AAAA,MACA,WAAW,UAAM,iDAAkB,EAAE,QAAQ,WAAW,CAAC;AAAA,MACzD,gBAAgB,MAA2B;AACzC,YAAI,CAAC,kBAAkB;AACrB;AAAA,QACF;AACA,kBAAM,4DAA6B,EAAE,QAAQ,WAAW,CAAC;AAAA,MAC3D;AAAA,MACA,YAAY,MAAS;AACnB,qBAAM,KAAK,WAAW,OAAO,OAAO,eAAe,CAAY;AAAA;AAAA,IACnE;AAAA,EACF;AAAA;","names":[]}
@@ -0,0 +1,91 @@
1
+ /* Node.js ES build */
2
+ var __async = (__this, __arguments, generator) => {
3
+ return new Promise((resolve, reject) => {
4
+ var fulfilled = (value) => {
5
+ try {
6
+ step(generator.next(value));
7
+ } catch (e) {
8
+ reject(e);
9
+ }
10
+ };
11
+ var rejected = (value) => {
12
+ try {
13
+ step(generator.throw(value));
14
+ } catch (e) {
15
+ reject(e);
16
+ }
17
+ };
18
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
19
+ step((generator = generator.apply(__this, __arguments)).next());
20
+ });
21
+ };
22
+
23
+ // src/connect.ts
24
+ import {
25
+ createMultichainClient
26
+ } from "@metamask/connect-multichain";
27
+ import {
28
+ getWalletStandard,
29
+ registerSolanaWalletStandard
30
+ } from "@metamask/solana-wallet-standard";
31
+
32
+ // src/networks.ts
33
+ var SOLANA_CAIP_IDS = {
34
+ mainnet: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
35
+ devnet: "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
36
+ testnet: "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z"
37
+ };
38
+ function convertNetworksToCAIP(networks) {
39
+ return Object.entries(networks).reduce(
40
+ (acc, [network, rpcUrl]) => {
41
+ const caipId = SOLANA_CAIP_IDS[network];
42
+ if (caipId && rpcUrl) {
43
+ acc[caipId] = rpcUrl;
44
+ }
45
+ return acc;
46
+ },
47
+ {}
48
+ );
49
+ }
50
+
51
+ // src/connect.ts
52
+ function createSolanaClient(options) {
53
+ return __async(this, null, function* () {
54
+ var _a, _b, _c;
55
+ const defaultNetworks = {
56
+ mainnet: "https://api.mainnet-beta.solana.com"
57
+ };
58
+ const skipAutoRegister = (_a = options.skipAutoRegister) != null ? _a : false;
59
+ const supportedNetworks = convertNetworksToCAIP(
60
+ (_c = (_b = options.api) == null ? void 0 : _b.supportedNetworks) != null ? _c : defaultNetworks
61
+ );
62
+ const core = yield createMultichainClient({
63
+ dapp: options.dapp,
64
+ api: {
65
+ supportedNetworks
66
+ }
67
+ });
68
+ const client = core.provider;
69
+ const walletName = "MetaMask Connect";
70
+ if (!skipAutoRegister) {
71
+ yield registerSolanaWalletStandard({ client, walletName });
72
+ }
73
+ return {
74
+ core,
75
+ getWallet: () => getWalletStandard({ client, walletName }),
76
+ registerWallet: () => __async(null, null, function* () {
77
+ if (!skipAutoRegister) {
78
+ return;
79
+ }
80
+ yield registerSolanaWalletStandard({ client, walletName });
81
+ }),
82
+ disconnect: () => __async(null, null, function* () {
83
+ return yield core.disconnect(Object.values(SOLANA_CAIP_IDS));
84
+ })
85
+ };
86
+ });
87
+ }
88
+ export {
89
+ createSolanaClient
90
+ };
91
+ //# sourceMappingURL=connect-solana.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/connect.ts","../../../src/networks.ts"],"sourcesContent":["import {\n createMultichainClient,\n type Scope,\n} from '@metamask/connect-multichain';\nimport {\n getWalletStandard,\n registerSolanaWalletStandard,\n} from '@metamask/solana-wallet-standard';\n\nimport { convertNetworksToCAIP, SOLANA_CAIP_IDS } from './networks';\nimport type {\n SolanaClient,\n SolanaConnectOptions,\n SolanaSupportedNetworks,\n} from './types';\n\n/**\n * Creates a new Solana client for connecting to MetaMask via wallet-standard.\n *\n * This function initializes the MultichainSDK and provides methods to get or register\n * a wallet-standard compatible wallet. The wallet handles session creation internally\n * when users connect through the Solana wallet adapter UI.\n *\n * @param options - Configuration options for the Solana client\n * @param options.dapp - Dapp identification and branding settings\n * @param options.api - Optional API configuration with supported networks\n * @param options.api.supportedNetworks - Record mapping network names (mainnet, devnet, testnet) to RPC URLs\n * @param options.debug - Enable debug logging\n * @param options.skipAutoRegister - Skip auto-registering the wallet during creation (defaults to false)\n * @returns A promise that resolves to the Solana client instance\n *\n * @example\n * ```typescript\n * import { createSolanaClient } from '@metamask/connect-solana';\n *\n * // Wallet is auto-registered and ready to use\n * const client = await createSolanaClient({\n * dapp: {\n * name: 'My Solana DApp',\n * url: 'https://mydapp.com',\n * },\n * api: {\n * supportedNetworks: {\n * mainnet: 'https://api.mainnet-beta.solana.com',\n * devnet: 'https://api.devnet.solana.com',\n * },\n * },\n * });\n *\n * // Get the wallet instance directly\n * const wallet = client.getWallet();\n * ```\n */\nexport async function createSolanaClient(\n options: SolanaConnectOptions,\n): Promise<SolanaClient> {\n const defaultNetworks: SolanaSupportedNetworks = {\n mainnet: 'https://api.mainnet-beta.solana.com',\n };\n\n const skipAutoRegister = options.skipAutoRegister ?? false;\n\n const supportedNetworks = convertNetworksToCAIP(\n options.api?.supportedNetworks ?? defaultNetworks,\n );\n\n const core = await createMultichainClient({\n dapp: options.dapp,\n api: {\n supportedNetworks,\n },\n });\n\n const client = core.provider;\n\n const walletName = 'MetaMask Connect';\n\n if (!skipAutoRegister) {\n await registerSolanaWalletStandard({ client, walletName });\n }\n\n return {\n core,\n getWallet: () => getWalletStandard({ client, walletName }),\n registerWallet: async (): Promise<void> => {\n if (!skipAutoRegister) {\n return;\n }\n await registerSolanaWalletStandard({ client, walletName });\n },\n disconnect: async () =>\n await core.disconnect(Object.values(SOLANA_CAIP_IDS) as Scope[]),\n };\n}\n","import type { SolanaNetwork, SolanaSupportedNetworks } from './types';\n\n/**\n * CAIP-2 chain IDs for Solana networks.\n * The reference is the first 32 characters of the Base58-encoded genesis hash.\n */\nexport const SOLANA_CAIP_IDS: Record<SolanaNetwork, string> = {\n mainnet: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n devnet: 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n testnet: 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n};\n\n/**\n * Converts a record of network names to RPC URLs into a record of CAIP IDs to RPC URLs.\n *\n * @param networks - A record of network names to RPC URLs\n * @returns A record of CAIP IDs to RPC URLs\n */\nexport function convertNetworksToCAIP(\n networks: SolanaSupportedNetworks,\n): Record<string, string> {\n return Object.entries(networks).reduce<Record<string, string>>(\n (acc, [network, rpcUrl]) => {\n const caipId = SOLANA_CAIP_IDS[network as SolanaNetwork];\n if (caipId && rpcUrl) {\n acc[caipId] = rpcUrl;\n }\n return acc;\n },\n {},\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;;;ACDA,IAAM,kBAAiD;AAAA,EAC5D,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AACX;AAQO,SAAS,sBACd,UACwB;AACxB,SAAO,OAAO,QAAQ,QAAQ,EAAE;AAAA,IAC9B,CAAC,KAAK,CAAC,SAAS,MAAM,MAAM;AAC1B,YAAM,SAAS,gBAAgB,OAAwB;AACvD,UAAI,UAAU,QAAQ;AACpB,YAAI,MAAM,IAAI;AAAA,MAChB;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;;;ADsBA,SAAsB,mBACpB,SACuB;AAAA;AAvDzB;AAwDE,UAAM,kBAA2C;AAAA,MAC/C,SAAS;AAAA,IACX;AAEA,UAAM,oBAAmB,aAAQ,qBAAR,YAA4B;AAErD,UAAM,oBAAoB;AAAA,OACxB,mBAAQ,QAAR,mBAAa,sBAAb,YAAkC;AAAA,IACpC;AAEA,UAAM,OAAO,MAAM,uBAAuB;AAAA,MACxC,MAAM,QAAQ;AAAA,MACd,KAAK;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,SAAS,KAAK;AAEpB,UAAM,aAAa;AAEnB,QAAI,CAAC,kBAAkB;AACrB,YAAM,6BAA6B,EAAE,QAAQ,WAAW,CAAC;AAAA,IAC3D;AAEA,WAAO;AAAA,MACL;AAAA,MACA,WAAW,MAAM,kBAAkB,EAAE,QAAQ,WAAW,CAAC;AAAA,MACzD,gBAAgB,MAA2B;AACzC,YAAI,CAAC,kBAAkB;AACrB;AAAA,QACF;AACA,cAAM,6BAA6B,EAAE,QAAQ,WAAW,CAAC;AAAA,MAC3D;AAAA,MACA,YAAY,MAAS;AACnB,qBAAM,KAAK,WAAW,OAAO,OAAO,eAAe,CAAY;AAAA;AAAA,IACnE;AAAA,EACF;AAAA;","names":[]}
@@ -32,6 +32,8 @@ type SolanaConnectOptions = Pick<MultichainOptions, 'dapp'> & {
32
32
  };
33
33
  /** Enable debug logging */
34
34
  debug?: boolean;
35
+ /** Skip auto-registering the wallet during creation. Defaults to false. Set to true for manual control. */
36
+ skipAutoRegister?: boolean;
35
37
  };
36
38
  /**
37
39
  * The Solana client instance returned by createSolanaClient.
@@ -40,19 +42,16 @@ type SolanaClient = {
40
42
  /** The underlying MultichainCore instance */
41
43
  core: MultichainCore;
42
44
  /**
43
- * Gets a wallet-standard compatible wallet instance.
45
+ * Gets the wallet-standard compatible MetaMask wallet instance.
44
46
  *
45
- * @param walletName - Optional custom name for the wallet
46
47
  * @returns The wallet instance
47
48
  */
48
- getWallet: (walletName?: string) => Wallet;
49
+ getWallet: () => Wallet;
49
50
  /**
50
51
  * Registers the MetaMask wallet with the wallet-standard registry.
51
52
  * This makes MetaMask automatically discoverable by Solana dapps.
52
- *
53
- * @param walletName - Optional custom name for the wallet
54
53
  */
55
- registerWallet: (walletName?: string) => Promise<void>;
54
+ registerWallet: () => Promise<void>;
56
55
  /**
57
56
  * Disconnects from the wallet and revokes the session.
58
57
  */
@@ -71,12 +70,14 @@ type SolanaClient = {
71
70
  * @param options.api - Optional API configuration with supported networks
72
71
  * @param options.api.supportedNetworks - Record mapping network names (mainnet, devnet, testnet) to RPC URLs
73
72
  * @param options.debug - Enable debug logging
73
+ * @param options.skipAutoRegister - Skip auto-registering the wallet during creation (defaults to false)
74
74
  * @returns A promise that resolves to the Solana client instance
75
75
  *
76
76
  * @example
77
77
  * ```typescript
78
78
  * import { createSolanaClient } from '@metamask/connect-solana';
79
79
  *
80
+ * // Wallet is auto-registered and ready to use
80
81
  * const client = await createSolanaClient({
81
82
  * dapp: {
82
83
  * name: 'My Solana DApp',
@@ -90,10 +91,7 @@ type SolanaClient = {
90
91
  * },
91
92
  * });
92
93
  *
93
- * // Register the wallet to make it discoverable by Solana dapps
94
- * await client.registerWallet();
95
- *
96
- * // Or get the wallet instance directly
94
+ * // Get the wallet instance directly
97
95
  * const wallet = client.getWallet();
98
96
  * ```
99
97
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask/connect-solana",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Solana Layer for MetaMask Connect",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -18,19 +18,23 @@
18
18
  "sideEffects": false,
19
19
  "exports": {
20
20
  ".": {
21
+ "browser": {
22
+ "types": "./dist/types/index.d.ts",
23
+ "import": "./dist/browser/es/connect-solana.mjs"
24
+ },
21
25
  "import": {
22
26
  "types": "./dist/types/index.d.ts",
23
- "default": "./dist/browser/es/connect-solana.mjs"
27
+ "default": "./dist/node/es/connect-solana.mjs"
24
28
  },
25
29
  "require": {
26
30
  "types": "./dist/types/index.d.ts",
27
- "default": "./dist/browser/es/connect-solana.mjs"
31
+ "default": "./dist/node/cjs/connect-solana.js"
28
32
  },
29
- "default": "./dist/browser/es/connect-solana.mjs"
33
+ "default": "./dist/node/cjs/connect-solana.js"
30
34
  },
31
35
  "./package.json": "./package.json"
32
36
  },
33
- "main": "./dist/browser/es/connect-solana.mjs",
37
+ "main": "./dist/node/cjs/connect-solana.js",
34
38
  "module": "./dist/browser/es/connect-solana.mjs",
35
39
  "browser": "./dist/browser/es/connect-solana.mjs",
36
40
  "types": "./dist/types/index.d.ts",
@@ -54,7 +58,7 @@
54
58
  "test:watch": "vitest watch"
55
59
  },
56
60
  "dependencies": {
57
- "@metamask/connect-multichain": "^0.5.3",
61
+ "@metamask/connect-multichain": "^0.7.0",
58
62
  "@metamask/solana-wallet-standard": "^0.6.0",
59
63
  "@wallet-standard/base": "^1.1.0"
60
64
  },