@reown/appkit-solana-react-native 0.0.0-chore-bump-builder-20250728195048 → 0.0.0-chore-solflare-20250730210452
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/lib/commonjs/connectors/PhantomConnector.js +15 -224
- package/lib/commonjs/connectors/PhantomConnector.js.map +1 -1
- package/lib/commonjs/connectors/SolanaDeeplinkConnector.js +242 -0
- package/lib/commonjs/connectors/SolanaDeeplinkConnector.js.map +1 -0
- package/lib/commonjs/connectors/SolflareConnector.js +35 -0
- package/lib/commonjs/connectors/SolflareConnector.js.map +1 -0
- package/lib/commonjs/index.js +27 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/providers/{PhantomProvider.js → SolanaDeeplinkProvider.js} +58 -56
- package/lib/commonjs/providers/SolanaDeeplinkProvider.js.map +1 -0
- package/lib/module/connectors/PhantomConnector.js +16 -224
- package/lib/module/connectors/PhantomConnector.js.map +1 -1
- package/lib/module/connectors/SolanaDeeplinkConnector.js +236 -0
- package/lib/module/connectors/SolanaDeeplinkConnector.js.map +1 -0
- package/lib/module/connectors/SolflareConnector.js +30 -0
- package/lib/module/connectors/SolflareConnector.js.map +1 -0
- package/lib/module/index.js +7 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/providers/{PhantomProvider.js → SolanaDeeplinkProvider.js} +56 -54
- package/lib/module/providers/SolanaDeeplinkProvider.js.map +1 -0
- package/lib/typescript/connectors/PhantomConnector.d.ts +9 -25
- package/lib/typescript/connectors/PhantomConnector.d.ts.map +1 -1
- package/lib/typescript/connectors/SolanaDeeplinkConnector.d.ts +32 -0
- package/lib/typescript/connectors/SolanaDeeplinkConnector.d.ts.map +1 -0
- package/lib/typescript/connectors/SolflareConnector.d.ts +11 -0
- package/lib/typescript/connectors/SolflareConnector.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +4 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/providers/{PhantomProvider.d.ts → SolanaDeeplinkProvider.d.ts} +9 -8
- package/lib/typescript/providers/SolanaDeeplinkProvider.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +30 -35
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/connectors/PhantomConnector.ts +17 -314
- package/src/connectors/SolanaDeeplinkConnector.ts +336 -0
- package/src/connectors/SolflareConnector.ts +32 -0
- package/src/index.ts +23 -3
- package/src/providers/{PhantomProvider.ts → SolanaDeeplinkProvider.ts} +109 -82
- package/src/types.ts +44 -45
- package/lib/commonjs/providers/PhantomProvider.js.map +0 -1
- package/lib/module/providers/PhantomProvider.js.map +0 -1
- package/lib/typescript/providers/PhantomProvider.d.ts.map +0 -1
|
@@ -3,15 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.SolanaDeeplinkProvider = exports.SOLANA_SIGNING_METHODS = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _tweetnacl = _interopRequireDefault(require("tweetnacl"));
|
|
9
9
|
var _bs = _interopRequireDefault(require("bs58"));
|
|
10
10
|
var _buffer = require("buffer");
|
|
11
11
|
var _events = _interopRequireDefault(require("events"));
|
|
12
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
-
const PHANTOM_BASE_URL = 'https://phantom.app/ul/v1';
|
|
14
|
-
const PHANTOM_PROVIDER_STORAGE_KEY = '@appkit/phantom-provider-session';
|
|
15
13
|
const SOLANA_SIGNING_METHODS = exports.SOLANA_SIGNING_METHODS = {
|
|
16
14
|
SOLANA_SIGN_TRANSACTION: 'solana_signTransaction',
|
|
17
15
|
SOLANA_SIGN_MESSAGE: 'solana_signMessage',
|
|
@@ -21,17 +19,20 @@ const SOLANA_SIGNING_METHODS = exports.SOLANA_SIGNING_METHODS = {
|
|
|
21
19
|
function isValidSolanaSigningMethod(method) {
|
|
22
20
|
return Object.values(SOLANA_SIGNING_METHODS).includes(method);
|
|
23
21
|
}
|
|
24
|
-
class
|
|
22
|
+
class SolanaDeeplinkProvider extends _events.default {
|
|
25
23
|
currentCluster = 'mainnet-beta';
|
|
26
24
|
sessionToken = null;
|
|
27
25
|
userPublicKey = null;
|
|
28
|
-
|
|
26
|
+
walletEncryptionPublicKeyBs58 = null;
|
|
29
27
|
constructor(config) {
|
|
30
28
|
super();
|
|
31
29
|
this.config = config;
|
|
32
30
|
this.dappEncryptionKeyPair = config.dappEncryptionKeyPair;
|
|
33
31
|
this.storage = config.storage;
|
|
34
32
|
}
|
|
33
|
+
getStorageKey() {
|
|
34
|
+
return `@appkit/${this.config.walletType}-provider-session`;
|
|
35
|
+
}
|
|
35
36
|
getUserPublicKey() {
|
|
36
37
|
return this.userPublicKey;
|
|
37
38
|
}
|
|
@@ -40,7 +41,7 @@ class PhantomProvider extends _events.default {
|
|
|
40
41
|
}
|
|
41
42
|
buildUrl(rpcMethod, params) {
|
|
42
43
|
const query = new URLSearchParams(params).toString();
|
|
43
|
-
return `${
|
|
44
|
+
return `${this.config.baseUrl}/${rpcMethod}?${query}`;
|
|
44
45
|
}
|
|
45
46
|
getRpcMethodName(method) {
|
|
46
47
|
switch (method) {
|
|
@@ -57,15 +58,15 @@ class PhantomProvider extends _events.default {
|
|
|
57
58
|
throw new Error(`Unsupported Solana signing method: ${method}`);
|
|
58
59
|
}
|
|
59
60
|
}
|
|
60
|
-
encryptPayload(payload,
|
|
61
|
-
if (!
|
|
61
|
+
encryptPayload(payload, walletPublicKeyBs58ToEncryptFor) {
|
|
62
|
+
if (!walletPublicKeyBs58ToEncryptFor) {
|
|
62
63
|
return null;
|
|
63
64
|
}
|
|
64
65
|
try {
|
|
65
|
-
const
|
|
66
|
+
const walletPublicKeyBytes = _bs.default.decode(walletPublicKeyBs58ToEncryptFor);
|
|
66
67
|
const nonce = _tweetnacl.default.randomBytes(_tweetnacl.default.box.nonceLength);
|
|
67
68
|
const payloadBytes = _buffer.Buffer.from(JSON.stringify(payload), 'utf8');
|
|
68
|
-
const encryptedPayload = _tweetnacl.default.box(payloadBytes, nonce,
|
|
69
|
+
const encryptedPayload = _tweetnacl.default.box(payloadBytes, nonce, walletPublicKeyBytes, this.dappEncryptionKeyPair.secretKey);
|
|
69
70
|
return {
|
|
70
71
|
nonce: _bs.default.encode(nonce),
|
|
71
72
|
encryptedPayload: _bs.default.encode(encryptedPayload)
|
|
@@ -74,12 +75,12 @@ class PhantomProvider extends _events.default {
|
|
|
74
75
|
return null;
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
|
-
decryptPayload(encryptedDataBs58, nonceBs58,
|
|
78
|
+
decryptPayload(encryptedDataBs58, nonceBs58, walletSenderPublicKeyBs58) {
|
|
78
79
|
try {
|
|
79
80
|
const encryptedDataBytes = _bs.default.decode(encryptedDataBs58);
|
|
80
81
|
const nonceBytes = _bs.default.decode(nonceBs58);
|
|
81
|
-
const
|
|
82
|
-
const decryptedPayloadBytes = _tweetnacl.default.box.open(encryptedDataBytes, nonceBytes,
|
|
82
|
+
const walletSenderPublicKeyBytes = _bs.default.decode(walletSenderPublicKeyBs58);
|
|
83
|
+
const decryptedPayloadBytes = _tweetnacl.default.box.open(encryptedDataBytes, nonceBytes, walletSenderPublicKeyBytes, this.dappEncryptionKeyPair.secretKey);
|
|
83
84
|
if (!decryptedPayloadBytes) {
|
|
84
85
|
return null;
|
|
85
86
|
}
|
|
@@ -90,40 +91,40 @@ class PhantomProvider extends _events.default {
|
|
|
90
91
|
}
|
|
91
92
|
async restoreSession() {
|
|
92
93
|
try {
|
|
93
|
-
const session = await this.storage.getItem(
|
|
94
|
+
const session = await this.storage.getItem(this.getStorageKey());
|
|
94
95
|
if (session) {
|
|
95
96
|
this.setSession(session);
|
|
96
97
|
return true;
|
|
97
98
|
}
|
|
98
99
|
return false;
|
|
99
100
|
} catch (error) {
|
|
100
|
-
// console.error(
|
|
101
|
+
// console.error(`${this.config.walletType}Provider: Failed to restore session.`, error);
|
|
101
102
|
await this.clearSessionStorage(); // Clear potentially corrupt data
|
|
102
103
|
|
|
103
104
|
return false;
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
async saveSession() {
|
|
107
|
-
if (!this.sessionToken || !this.userPublicKey || !this.
|
|
108
|
+
if (!this.sessionToken || !this.userPublicKey || !this.walletEncryptionPublicKeyBs58) {
|
|
108
109
|
return; // Cannot save incomplete session
|
|
109
110
|
}
|
|
110
111
|
const session = {
|
|
111
112
|
sessionToken: this.sessionToken,
|
|
112
113
|
userPublicKey: this.userPublicKey,
|
|
113
|
-
|
|
114
|
+
walletEncryptionPublicKeyBs58: this.walletEncryptionPublicKeyBs58,
|
|
114
115
|
cluster: this.currentCluster
|
|
115
116
|
};
|
|
116
117
|
try {
|
|
117
|
-
await this.storage.setItem(
|
|
118
|
+
await this.storage.setItem(this.getStorageKey(), session);
|
|
118
119
|
} catch (error) {
|
|
119
|
-
// console.error(
|
|
120
|
+
// console.error(`${this.config.walletType}Provider: Failed to save session.`, error);
|
|
120
121
|
}
|
|
121
122
|
}
|
|
122
123
|
async clearSessionStorage() {
|
|
123
124
|
try {
|
|
124
|
-
await this.storage.removeItem(
|
|
125
|
+
await this.storage.removeItem(this.getStorageKey());
|
|
125
126
|
} catch (error) {
|
|
126
|
-
// console.error(
|
|
127
|
+
// console.error(`${this.config.walletType}Provider: Failed to clear session storage.`, error);
|
|
127
128
|
}
|
|
128
129
|
}
|
|
129
130
|
async connect(params) {
|
|
@@ -148,34 +149,35 @@ class PhantomProvider extends _events.default {
|
|
|
148
149
|
const errorCode = responseUrlParams.get('errorCode');
|
|
149
150
|
const errorMessage = responseUrlParams.get('errorMessage');
|
|
150
151
|
if (errorCode) {
|
|
151
|
-
return reject(new Error(
|
|
152
|
+
return reject(new Error(`${this.config.walletType} Connection Failed: ${errorMessage || 'Unknown error'} (Code: ${errorCode})`));
|
|
152
153
|
}
|
|
154
|
+
const walletEncryptionPublicKey = responseUrlParams.get(this.config.encryptionKeyFieldName);
|
|
153
155
|
const responsePayload = {
|
|
154
|
-
|
|
156
|
+
wallet_encryption_public_key: walletEncryptionPublicKey,
|
|
155
157
|
nonce: responseUrlParams.get('nonce'),
|
|
156
158
|
data: responseUrlParams.get('data')
|
|
157
159
|
};
|
|
158
|
-
if (!responsePayload.
|
|
159
|
-
return reject(new Error(
|
|
160
|
+
if (!responsePayload.wallet_encryption_public_key || !responsePayload.nonce || !responsePayload.data) {
|
|
161
|
+
return reject(new Error(`${this.config.walletType} Connect: Invalid response - missing parameters.`));
|
|
160
162
|
}
|
|
161
|
-
const decryptedData = this.decryptPayload(responsePayload.data, responsePayload.nonce, responsePayload.
|
|
163
|
+
const decryptedData = this.decryptPayload(responsePayload.data, responsePayload.nonce, responsePayload.wallet_encryption_public_key);
|
|
162
164
|
if (!decryptedData || !decryptedData.public_key || !decryptedData.session) {
|
|
163
|
-
return reject(new Error(
|
|
165
|
+
return reject(new Error(`${this.config.walletType} Connect: Failed to decrypt or invalid decrypted data.`));
|
|
164
166
|
}
|
|
165
167
|
this.userPublicKey = decryptedData.public_key;
|
|
166
168
|
this.sessionToken = decryptedData.session;
|
|
167
|
-
this.
|
|
169
|
+
this.walletEncryptionPublicKeyBs58 = responsePayload.wallet_encryption_public_key;
|
|
168
170
|
|
|
169
171
|
// Save session on successful connect
|
|
170
172
|
this.saveSession();
|
|
171
173
|
resolve({
|
|
172
174
|
userPublicKey: this.userPublicKey,
|
|
173
175
|
sessionToken: this.sessionToken,
|
|
174
|
-
|
|
176
|
+
walletEncryptionPublicKeyBs58: this.walletEncryptionPublicKeyBs58,
|
|
175
177
|
cluster
|
|
176
178
|
});
|
|
177
179
|
} else {
|
|
178
|
-
reject(new Error(
|
|
180
|
+
reject(new Error(`${this.config.walletType} Connect: Unexpected redirect URI.`));
|
|
179
181
|
}
|
|
180
182
|
};
|
|
181
183
|
subscription = _reactNative.Linking.addEventListener('url', handleDeepLink);
|
|
@@ -183,12 +185,12 @@ class PhantomProvider extends _events.default {
|
|
|
183
185
|
if (subscription) {
|
|
184
186
|
subscription.remove();
|
|
185
187
|
}
|
|
186
|
-
reject(new Error(`Failed to open
|
|
188
|
+
reject(new Error(`Failed to open ${this.config.walletType} wallet: ${err.message}. Is it installed?`));
|
|
187
189
|
});
|
|
188
190
|
});
|
|
189
191
|
}
|
|
190
192
|
async disconnect() {
|
|
191
|
-
if (!this.sessionToken || !this.
|
|
193
|
+
if (!this.sessionToken || !this.walletEncryptionPublicKeyBs58) {
|
|
192
194
|
await this.clearSession();
|
|
193
195
|
this.emit('disconnect');
|
|
194
196
|
return Promise.resolve();
|
|
@@ -196,9 +198,9 @@ class PhantomProvider extends _events.default {
|
|
|
196
198
|
const payloadToEncrypt = {
|
|
197
199
|
session: this.sessionToken
|
|
198
200
|
};
|
|
199
|
-
const encryptedDisconnectPayload = this.encryptPayload(payloadToEncrypt, this.
|
|
201
|
+
const encryptedDisconnectPayload = this.encryptPayload(payloadToEncrypt, this.walletEncryptionPublicKeyBs58);
|
|
200
202
|
if (!encryptedDisconnectPayload) {
|
|
201
|
-
// console.warn(
|
|
203
|
+
// console.warn(`${this.config.walletType}Provider: Failed to encrypt disconnect payload. Clearing session locally.`);
|
|
202
204
|
await this.clearSession();
|
|
203
205
|
this.emit('disconnect');
|
|
204
206
|
return Promise.resolve(); // Or reject, depending on desired strictness
|
|
@@ -221,7 +223,7 @@ class PhantomProvider extends _events.default {
|
|
|
221
223
|
resolve();
|
|
222
224
|
} else {
|
|
223
225
|
this.clearSession();
|
|
224
|
-
reject(new Error(
|
|
226
|
+
reject(new Error(`${this.config.walletType} Disconnect: Unexpected redirect URI.`));
|
|
225
227
|
}
|
|
226
228
|
};
|
|
227
229
|
subscription = _reactNative.Linking.addEventListener('url', handleDeepLink);
|
|
@@ -230,30 +232,30 @@ class PhantomProvider extends _events.default {
|
|
|
230
232
|
subscription.remove();
|
|
231
233
|
}
|
|
232
234
|
this.clearSession();
|
|
233
|
-
reject(new Error(`Failed to open
|
|
235
|
+
reject(new Error(`Failed to open ${this.config.walletType} for disconnection: ${err.message}.`));
|
|
234
236
|
});
|
|
235
237
|
});
|
|
236
238
|
}
|
|
237
239
|
async clearSession() {
|
|
238
240
|
this.sessionToken = null;
|
|
239
241
|
this.userPublicKey = null;
|
|
240
|
-
this.
|
|
242
|
+
this.walletEncryptionPublicKeyBs58 = null;
|
|
241
243
|
await this.clearSessionStorage();
|
|
242
244
|
}
|
|
243
245
|
setSession(session) {
|
|
244
246
|
this.sessionToken = session.sessionToken;
|
|
245
247
|
this.userPublicKey = session.userPublicKey;
|
|
246
|
-
this.
|
|
248
|
+
this.walletEncryptionPublicKeyBs58 = session.walletEncryptionPublicKeyBs58;
|
|
247
249
|
this.currentCluster = session.cluster;
|
|
248
250
|
}
|
|
249
251
|
async request(args, _chainId) {
|
|
250
252
|
if (!isValidSolanaSigningMethod(args.method)) {
|
|
251
|
-
throw new Error(
|
|
253
|
+
throw new Error(`${this.config.walletType}Provider: Unsupported method: ${args.method}. Only Solana signing methods are supported.`);
|
|
252
254
|
}
|
|
253
255
|
const signingMethod = args.method;
|
|
254
256
|
const requestParams = args.params;
|
|
255
|
-
if (!this.isConnected() || !this.sessionToken || !this.
|
|
256
|
-
throw new Error(
|
|
257
|
+
if (!this.isConnected() || !this.sessionToken || !this.walletEncryptionPublicKeyBs58) {
|
|
258
|
+
throw new Error(`${this.config.walletType}Provider: Not connected or session details missing. Cannot process request.`);
|
|
257
259
|
}
|
|
258
260
|
const rpcMethodName = this.getRpcMethodName(signingMethod);
|
|
259
261
|
let deeplinkUrl = '';
|
|
@@ -269,9 +271,9 @@ class PhantomProvider extends _events.default {
|
|
|
269
271
|
session: this.sessionToken,
|
|
270
272
|
transaction: typedParams.transaction
|
|
271
273
|
};
|
|
272
|
-
const encryptedData = this.encryptPayload(dataToEncrypt, this.
|
|
274
|
+
const encryptedData = this.encryptPayload(dataToEncrypt, this.walletEncryptionPublicKeyBs58);
|
|
273
275
|
if (!encryptedData) {
|
|
274
|
-
throw new Error(
|
|
276
|
+
throw new Error(`${this.config.walletType}Provider: Failed to encrypt payload for ${signingMethod}.`);
|
|
275
277
|
}
|
|
276
278
|
const signTxDeeplinkParams = {
|
|
277
279
|
dapp_encryption_public_key: _bs.default.encode(this.dappEncryptionKeyPair.publicKey),
|
|
@@ -307,9 +309,9 @@ class PhantomProvider extends _events.default {
|
|
|
307
309
|
session: this.sessionToken,
|
|
308
310
|
display: typedParams.display || 'utf8'
|
|
309
311
|
};
|
|
310
|
-
const encryptedPayloadData = this.encryptPayload(dataToEncrypt, this.
|
|
312
|
+
const encryptedPayloadData = this.encryptPayload(dataToEncrypt, this.walletEncryptionPublicKeyBs58);
|
|
311
313
|
if (!encryptedPayloadData) {
|
|
312
|
-
throw new Error(
|
|
314
|
+
throw new Error(`${this.config.walletType}Provider: Failed to encrypt payload for signMessage.`);
|
|
313
315
|
}
|
|
314
316
|
const signMsgDeeplinkQueryPayload = {
|
|
315
317
|
dapp_encryption_public_key: _bs.default.encode(this.dappEncryptionKeyPair.publicKey),
|
|
@@ -330,9 +332,9 @@ class PhantomProvider extends _events.default {
|
|
|
330
332
|
session: this.sessionToken,
|
|
331
333
|
transactions: typedParams.transactions
|
|
332
334
|
};
|
|
333
|
-
const encryptedData = this.encryptPayload(dataToEncrypt, this.
|
|
335
|
+
const encryptedData = this.encryptPayload(dataToEncrypt, this.walletEncryptionPublicKeyBs58);
|
|
334
336
|
if (!encryptedData) {
|
|
335
|
-
throw new Error(
|
|
337
|
+
throw new Error(`${this.config.walletType}Provider: Failed to encrypt payload for ${signingMethod}.`);
|
|
336
338
|
}
|
|
337
339
|
const signAllTxDeeplinkParams = {
|
|
338
340
|
dapp_encryption_public_key: _bs.default.encode(this.dappEncryptionKeyPair.publicKey),
|
|
@@ -346,7 +348,7 @@ class PhantomProvider extends _events.default {
|
|
|
346
348
|
}
|
|
347
349
|
default:
|
|
348
350
|
{
|
|
349
|
-
throw new Error(
|
|
351
|
+
throw new Error(`${this.config.walletType}Provider: Unhandled signing method: ${signingMethod}`);
|
|
350
352
|
}
|
|
351
353
|
}
|
|
352
354
|
return new Promise((resolve, reject) => {
|
|
@@ -361,20 +363,20 @@ class PhantomProvider extends _events.default {
|
|
|
361
363
|
const errorCode = responseUrlParams.get('errorCode');
|
|
362
364
|
const errorMessage = responseUrlParams.get('errorMessage');
|
|
363
365
|
if (errorCode) {
|
|
364
|
-
return reject(new Error(
|
|
366
|
+
return reject(new Error(`${this.config.walletType} ${signingMethod} Failed: ${errorMessage || 'Unknown error'} (Code: ${errorCode})`));
|
|
365
367
|
}
|
|
366
368
|
const responseNonce = responseUrlParams.get('nonce');
|
|
367
369
|
const responseData = responseUrlParams.get('data');
|
|
368
370
|
if (!responseNonce || !responseData) {
|
|
369
|
-
return reject(new Error(
|
|
371
|
+
return reject(new Error(`${this.config.walletType} ${signingMethod}: Invalid response - missing nonce or data.`));
|
|
370
372
|
}
|
|
371
|
-
const decryptedResult = this.decryptPayload(responseData, responseNonce, this.
|
|
373
|
+
const decryptedResult = this.decryptPayload(responseData, responseNonce, this.walletEncryptionPublicKeyBs58);
|
|
372
374
|
if (!decryptedResult) {
|
|
373
|
-
return reject(new Error(
|
|
375
|
+
return reject(new Error(`${this.config.walletType} ${signingMethod}: Failed to decrypt response or invalid decrypted data.`));
|
|
374
376
|
}
|
|
375
377
|
resolve(decryptedResult);
|
|
376
378
|
} else {
|
|
377
|
-
reject(new Error(
|
|
379
|
+
reject(new Error(`${this.config.walletType} ${signingMethod}: Unexpected redirect URI.`));
|
|
378
380
|
}
|
|
379
381
|
};
|
|
380
382
|
subscription = _reactNative.Linking.addEventListener('url', handleDeepLink);
|
|
@@ -382,10 +384,10 @@ class PhantomProvider extends _events.default {
|
|
|
382
384
|
if (subscription) {
|
|
383
385
|
subscription.remove();
|
|
384
386
|
}
|
|
385
|
-
reject(new Error(`Failed to open
|
|
387
|
+
reject(new Error(`Failed to open ${this.config.walletType} for ${signingMethod}: ${err.message}. Is it installed?`));
|
|
386
388
|
});
|
|
387
389
|
});
|
|
388
390
|
}
|
|
389
391
|
}
|
|
390
|
-
exports.
|
|
391
|
-
//# sourceMappingURL=
|
|
392
|
+
exports.SolanaDeeplinkProvider = SolanaDeeplinkProvider;
|
|
393
|
+
//# sourceMappingURL=SolanaDeeplinkProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_tweetnacl","_interopRequireDefault","_bs","_buffer","_events","e","__esModule","default","SOLANA_SIGNING_METHODS","exports","SOLANA_SIGN_TRANSACTION","SOLANA_SIGN_MESSAGE","SOLANA_SIGN_AND_SEND_TRANSACTION","SOLANA_SIGN_ALL_TRANSACTIONS","isValidSolanaSigningMethod","method","Object","values","includes","SolanaDeeplinkProvider","EventEmitter","currentCluster","sessionToken","userPublicKey","walletEncryptionPublicKeyBs58","constructor","config","dappEncryptionKeyPair","storage","getStorageKey","walletType","getUserPublicKey","isConnected","buildUrl","rpcMethod","params","query","URLSearchParams","toString","baseUrl","getRpcMethodName","Error","encryptPayload","payload","walletPublicKeyBs58ToEncryptFor","walletPublicKeyBytes","bs58","decode","nonce","nacl","randomBytes","box","nonceLength","payloadBytes","Buffer","from","JSON","stringify","encryptedPayload","secretKey","encode","error","decryptPayload","encryptedDataBs58","nonceBs58","walletSenderPublicKeyBs58","encryptedDataBytes","nonceBytes","walletSenderPublicKeyBytes","decryptedPayloadBytes","open","parse","restoreSession","session","getItem","setSession","clearSessionStorage","saveSession","cluster","setItem","removeItem","connect","connectDeeplinkParams","app_url","dappUrl","dapp_encryption_public_key","publicKey","redirect_link","appScheme","url","Promise","resolve","reject","subscription","handleDeepLink","event","remove","fullUrl","startsWith","responseUrlParams","substring","indexOf","errorCode","get","errorMessage","walletEncryptionPublicKey","encryptionKeyFieldName","responsePayload","wallet_encryption_public_key","data","decryptedData","public_key","Linking","addEventListener","openURL","catch","err","message","disconnect","clearSession","emit","payloadToEncrypt","encryptedDisconnectPayload","disconnectDeeplinkParams","request","args","_chainId","signingMethod","requestParams","rpcMethodName","deeplinkUrl","typedParams","transaction","dataToEncrypt","encryptedData","signTxDeeplinkParams","messageBs58","Uint8Array","display","encryptedPayloadData","signMsgDeeplinkQueryPayload","Array","isArray","transactions","every","t","signAllTxDeeplinkParams","responseNonce","responseData","decryptedResult"],"sourceRoot":"../../../src","sources":["providers/SolanaDeeplinkProvider.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,238 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import { PhantomProvider, SOLANA_SIGNING_METHODS } from '../providers/PhantomProvider';
|
|
7
|
-
const SOLANA_CLUSTER_TO_CHAIN_ID_PART = {
|
|
8
|
-
'mainnet-beta': solana.id,
|
|
9
|
-
'testnet': solanaTestnet.id,
|
|
10
|
-
'devnet': solanaDevnet.id
|
|
11
|
-
};
|
|
3
|
+
import { ConstantsUtil } from '@reown/appkit-common-react-native';
|
|
4
|
+
import { SolanaDeeplinkConnector } from './SolanaDeeplinkConnector';
|
|
5
|
+
const PHANTOM_BASE_URL = 'https://phantom.app/ul/v1';
|
|
12
6
|
const PHANTOM_CONNECTOR_STORAGE_KEY = '@appkit/phantom-connector-data';
|
|
13
|
-
const
|
|
14
|
-
export class PhantomConnector extends
|
|
15
|
-
|
|
16
|
-
static SUPPORTED_NAMESPACE = 'solana';
|
|
17
|
-
constructor(config) {
|
|
7
|
+
const PHANTOM_DAPP_KEYPAIR_STORAGE_KEY = '@appkit/phantom-dapp-secret-key';
|
|
8
|
+
export class PhantomConnector extends SolanaDeeplinkConnector {
|
|
9
|
+
constructor() {
|
|
18
10
|
super({
|
|
19
|
-
|
|
11
|
+
walletType: 'phantom'
|
|
20
12
|
});
|
|
21
|
-
this.config = config ?? {
|
|
22
|
-
cluster: 'mainnet-beta'
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
async init(ops) {
|
|
26
|
-
super.init(ops);
|
|
27
|
-
this.storage = ops.storage;
|
|
28
|
-
await this.initializeKeyPair();
|
|
29
|
-
const appScheme = ops.metadata.redirect?.universal ?? ops.metadata.redirect?.native;
|
|
30
|
-
if (!appScheme) {
|
|
31
|
-
throw new Error('Phantom Connector: No redirect link found in metadata. Please add redirect.universal or redirect.native to the metadata.');
|
|
32
|
-
}
|
|
33
|
-
const providerConfig = {
|
|
34
|
-
appScheme,
|
|
35
|
-
dappUrl: ops.metadata.url,
|
|
36
|
-
storage: ops.storage,
|
|
37
|
-
dappEncryptionKeyPair: this.dappEncryptionKeyPair
|
|
38
|
-
};
|
|
39
|
-
this.provider = new PhantomProvider(providerConfig);
|
|
40
|
-
await this.restoreSession();
|
|
41
|
-
}
|
|
42
|
-
async initializeKeyPair() {
|
|
43
|
-
try {
|
|
44
|
-
const secretKeyB58 = await this.getStorage().getItem(DAPP_KEYPAIR_STORAGE_KEY);
|
|
45
|
-
if (secretKeyB58) {
|
|
46
|
-
const secretKey = bs58.decode(secretKeyB58);
|
|
47
|
-
this.dappEncryptionKeyPair = nacl.box.keyPair.fromSecretKey(secretKey);
|
|
48
|
-
} else {
|
|
49
|
-
const newKeyPair = nacl.box.keyPair();
|
|
50
|
-
this.dappEncryptionKeyPair = newKeyPair;
|
|
51
|
-
await this.getStorage().setItem(DAPP_KEYPAIR_STORAGE_KEY, bs58.encode(newKeyPair.secretKey));
|
|
52
|
-
}
|
|
53
|
-
} catch (error) {
|
|
54
|
-
// disconnect and clear session
|
|
55
|
-
await this.disconnect();
|
|
56
|
-
throw error;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
async connect(opts) {
|
|
60
|
-
if (this.isConnected()) {
|
|
61
|
-
return this.namespaces;
|
|
62
|
-
}
|
|
63
|
-
const defaultChain = opts?.defaultChain?.split(':')?.[0] === 'solana' ? opts?.defaultChain?.split(':')[1] : opts?.namespaces?.['solana']?.chains?.[0]?.split(':')[1];
|
|
64
|
-
const requestedCluster = this.config.cluster ?? Object.keys(SOLANA_CLUSTER_TO_CHAIN_ID_PART).find(key => SOLANA_CLUSTER_TO_CHAIN_ID_PART[key] === defaultChain);
|
|
65
|
-
try {
|
|
66
|
-
const connectResult = await this.getProvider().connect({
|
|
67
|
-
cluster: requestedCluster
|
|
68
|
-
});
|
|
69
|
-
const solanaChainIdPart = SOLANA_CLUSTER_TO_CHAIN_ID_PART[connectResult.cluster];
|
|
70
|
-
if (!solanaChainIdPart) {
|
|
71
|
-
throw new Error(`Phantom Connect: Internal - Unknown cluster mapping for ${connectResult.cluster}`);
|
|
72
|
-
}
|
|
73
|
-
this.currentCaipNetworkId = `solana:${solanaChainIdPart}`;
|
|
74
|
-
this.wallet = ConstantsUtil.PHANTOM_CUSTOM_WALLET;
|
|
75
|
-
const userPublicKey = this.getProvider().getUserPublicKey();
|
|
76
|
-
if (!userPublicKey) {
|
|
77
|
-
throw new Error('Phantom Connect: Provider failed to return a user public key.');
|
|
78
|
-
}
|
|
79
|
-
const caipAddress = `${this.currentCaipNetworkId}:${userPublicKey}`;
|
|
80
|
-
this.namespaces = {
|
|
81
|
-
[PhantomConnector.SUPPORTED_NAMESPACE]: {
|
|
82
|
-
accounts: [caipAddress],
|
|
83
|
-
methods: Object.values(SOLANA_SIGNING_METHODS),
|
|
84
|
-
events: [],
|
|
85
|
-
chains: [this.currentCaipNetworkId]
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
await this.saveSession(); // Save connector-specific session on successful connect
|
|
89
|
-
|
|
90
|
-
return this.namespaces;
|
|
91
|
-
} catch (error) {
|
|
92
|
-
this.clearSession();
|
|
93
|
-
throw error;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
async disconnect() {
|
|
97
|
-
try {
|
|
98
|
-
if (this.isConnected()) {
|
|
99
|
-
await super.disconnect();
|
|
100
|
-
}
|
|
101
|
-
} catch (error) {
|
|
102
|
-
// console.warn(`PhantomConnector: Error during provider disconnect: ${error.message}. Proceeding with local clear.`);
|
|
103
|
-
}
|
|
104
|
-
await this.clearSession();
|
|
105
|
-
}
|
|
106
|
-
async clearSession() {
|
|
107
|
-
this.namespaces = undefined;
|
|
108
|
-
this.wallet = undefined;
|
|
109
|
-
this.currentCaipNetworkId = null;
|
|
110
|
-
await this.clearSessionStorage();
|
|
111
|
-
}
|
|
112
|
-
getProvider() {
|
|
113
|
-
if (!this.provider) {
|
|
114
|
-
throw new Error('Phantom Connector: Provider not initialized. Call init() first.');
|
|
115
|
-
}
|
|
116
|
-
return this.provider;
|
|
117
|
-
}
|
|
118
|
-
getStorage() {
|
|
119
|
-
if (!this.storage) {
|
|
120
|
-
throw new Error('Phantom Connector: Storage not initialized. Call init() first.');
|
|
121
|
-
}
|
|
122
|
-
return this.storage;
|
|
123
|
-
}
|
|
124
|
-
getNamespaces() {
|
|
125
|
-
if (!this.namespaces) {
|
|
126
|
-
throw new Error('Phantom Connector: Not connected. Call connect() first.');
|
|
127
|
-
}
|
|
128
|
-
return this.namespaces;
|
|
129
|
-
}
|
|
130
|
-
getChainId(namespace) {
|
|
131
|
-
if (namespace === PhantomConnector.SUPPORTED_NAMESPACE) {
|
|
132
|
-
return this.currentCaipNetworkId ?? undefined;
|
|
133
|
-
}
|
|
134
|
-
return undefined;
|
|
135
|
-
}
|
|
136
|
-
getProperties() {
|
|
137
|
-
return this.properties;
|
|
138
13
|
}
|
|
139
14
|
getWalletInfo() {
|
|
140
|
-
|
|
141
|
-
return undefined;
|
|
142
|
-
}
|
|
143
|
-
return this.wallet;
|
|
15
|
+
return ConstantsUtil.PHANTOM_CUSTOM_WALLET;
|
|
144
16
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
return this.getProvider().isConnected() && !!this.getProvider().getUserPublicKey();
|
|
17
|
+
getBaseUrl() {
|
|
18
|
+
return PHANTOM_BASE_URL;
|
|
148
19
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
if (!targetClusterName) {
|
|
152
|
-
throw new Error(`Cannot switch to unsupported network ID: ${network.id}`);
|
|
153
|
-
}
|
|
154
|
-
const currentClusterName = Object.keys(SOLANA_CLUSTER_TO_CHAIN_ID_PART).find(key => `solana:${SOLANA_CLUSTER_TO_CHAIN_ID_PART[key]}` === this.currentCaipNetworkId);
|
|
155
|
-
if (targetClusterName === currentClusterName && this.isConnected()) {
|
|
156
|
-
return Promise.resolve();
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// Phantom doesn't provide a way to switch network, so we need to disconnect and reconnect.
|
|
160
|
-
await this.disconnect(); // Clear current session
|
|
161
|
-
|
|
162
|
-
// Create a temporary options object to guide the new connection
|
|
163
|
-
const tempConnectOpts = {
|
|
164
|
-
defaultChain: `solana:${SOLANA_CLUSTER_TO_CHAIN_ID_PART[targetClusterName]}`
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
// Attempt to connect to the new cluster
|
|
168
|
-
// The connect method will use the defaultChain from opts to determine the cluster.
|
|
169
|
-
await this.connect(tempConnectOpts);
|
|
170
|
-
this.getProvider().emit('chainChanged', network.id);
|
|
171
|
-
|
|
172
|
-
// Verify if the connection was successful and to the correct new network
|
|
173
|
-
if (!this.isConnected() || this.getChainId(PhantomConnector.SUPPORTED_NAMESPACE) !== tempConnectOpts.defaultChain) {
|
|
174
|
-
throw new Error(`Failed to switch network to ${targetClusterName}. Please try connecting manually.`);
|
|
175
|
-
}
|
|
20
|
+
getStorageKey() {
|
|
21
|
+
return PHANTOM_CONNECTOR_STORAGE_KEY;
|
|
176
22
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
async restoreSession() {
|
|
180
|
-
try {
|
|
181
|
-
const providerSession = await this.getProvider().restoreSession();
|
|
182
|
-
if (!providerSession) {
|
|
183
|
-
return false;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// If provider session is restored, try to restore connector data
|
|
187
|
-
const connectorData = await this.getStorage().getItem(PHANTOM_CONNECTOR_STORAGE_KEY);
|
|
188
|
-
if (!connectorData) {
|
|
189
|
-
return false; // Provider session exists but connector data is missing
|
|
190
|
-
}
|
|
191
|
-
this.namespaces = connectorData.namespaces;
|
|
192
|
-
this.wallet = connectorData.wallet;
|
|
193
|
-
this.currentCaipNetworkId = connectorData.currentCaipNetworkId;
|
|
194
|
-
|
|
195
|
-
// await this.initializeKeyPair();
|
|
196
|
-
|
|
197
|
-
// Final validation
|
|
198
|
-
if (this.isConnected()) {
|
|
199
|
-
return true;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// If validation fails, something is out of sync. Clear everything.
|
|
203
|
-
await this.disconnect();
|
|
204
|
-
return false;
|
|
205
|
-
} catch (error) {
|
|
206
|
-
// On any error, disconnect to ensure a clean state
|
|
207
|
-
await this.disconnect();
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
23
|
+
getDappKeypairStorageKey() {
|
|
24
|
+
return PHANTOM_DAPP_KEYPAIR_STORAGE_KEY;
|
|
210
25
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
async saveSession() {
|
|
214
|
-
if (!this.namespaces || !this.wallet || !this.currentCaipNetworkId) {
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
const connectorData = {
|
|
218
|
-
namespaces: this.namespaces,
|
|
219
|
-
wallet: this.wallet,
|
|
220
|
-
currentCaipNetworkId: this.currentCaipNetworkId
|
|
221
|
-
};
|
|
222
|
-
try {
|
|
223
|
-
await this.getStorage().setItem(PHANTOM_CONNECTOR_STORAGE_KEY, connectorData);
|
|
224
|
-
} catch (error) {
|
|
225
|
-
// console.error('PhantomConnector: Failed to save session.', error);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
// Clears only connector-specific data from storage
|
|
230
|
-
async clearSessionStorage() {
|
|
231
|
-
try {
|
|
232
|
-
await this.getStorage().removeItem(PHANTOM_CONNECTOR_STORAGE_KEY);
|
|
233
|
-
} catch (error) {
|
|
234
|
-
// console.error('PhantomConnector: Failed to clear session from storage.', error);
|
|
235
|
-
}
|
|
26
|
+
getEncryptionKeyFieldName() {
|
|
27
|
+
return 'phantom_encryption_public_key';
|
|
236
28
|
}
|
|
237
29
|
}
|
|
238
30
|
//# sourceMappingURL=PhantomConnector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["ConstantsUtil","SolanaDeeplinkConnector","PHANTOM_BASE_URL","PHANTOM_CONNECTOR_STORAGE_KEY","PHANTOM_DAPP_KEYPAIR_STORAGE_KEY","PhantomConnector","constructor","walletType","getWalletInfo","PHANTOM_CUSTOM_WALLET","getBaseUrl","getStorageKey","getDappKeypairStorageKey","getEncryptionKeyFieldName"],"sourceRoot":"../../../src","sources":["connectors/PhantomConnector.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAyB,mCAAmC;AAClF,SAASC,uBAAuB,QAAQ,2BAA2B;AAEnE,MAAMC,gBAAgB,GAAG,2BAA2B;AACpD,MAAMC,6BAA6B,GAAG,gCAAgC;AACtE,MAAMC,gCAAgC,GAAG,iCAAiC;AAE1E,OAAO,MAAMC,gBAAgB,SAASJ,uBAAuB,CAAC;EAC5DK,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC;MAAEC,UAAU,EAAE;IAAU,CAAC,CAAC;EAClC;EAESC,aAAaA,CAAA,EAAe;IACnC,OAAOR,aAAa,CAACS,qBAAqB;EAC5C;EAEUC,UAAUA,CAAA,EAAW;IAC7B,OAAOR,gBAAgB;EACzB;EAEUS,aAAaA,CAAA,EAAW;IAChC,OAAOR,6BAA6B;EACtC;EAEUS,wBAAwBA,CAAA,EAAW;IAC3C,OAAOR,gCAAgC;EACzC;EAEUS,yBAAyBA,CAAA,EAAW;IAC5C,OAAO,+BAA+B;EACxC;AACF","ignoreList":[]}
|