@reown/appkit-solana-react-native 0.0.0-chore-solflare-20250730210452 → 0.0.0-chore-spring-effect-20250909214820
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/adapter.js +4 -5
- package/lib/commonjs/adapter.js.map +1 -1
- package/lib/commonjs/connectors/{SolanaDeeplinkConnector.js → DeeplinkConnector.js} +80 -51
- package/lib/commonjs/connectors/DeeplinkConnector.js.map +1 -0
- package/lib/commonjs/connectors/PhantomConnector.js +5 -4
- package/lib/commonjs/connectors/PhantomConnector.js.map +1 -1
- package/lib/commonjs/connectors/SolflareConnector.js +5 -4
- package/lib/commonjs/connectors/SolflareConnector.js.map +1 -1
- package/lib/commonjs/index.js +0 -20
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/providers/{SolanaDeeplinkProvider.js → DeeplinkProvider.js} +177 -138
- package/lib/commonjs/providers/DeeplinkProvider.js.map +1 -0
- package/lib/module/adapter.js +4 -5
- package/lib/module/adapter.js.map +1 -1
- package/lib/module/connectors/{SolanaDeeplinkConnector.js → DeeplinkConnector.js} +77 -48
- package/lib/module/connectors/DeeplinkConnector.js.map +1 -0
- package/lib/module/connectors/PhantomConnector.js +5 -4
- package/lib/module/connectors/PhantomConnector.js.map +1 -1
- package/lib/module/connectors/SolflareConnector.js +5 -4
- package/lib/module/connectors/SolflareConnector.js.map +1 -1
- package/lib/module/index.js +2 -6
- package/lib/module/index.js.map +1 -1
- package/lib/module/providers/{SolanaDeeplinkProvider.js → DeeplinkProvider.js} +175 -136
- package/lib/module/providers/DeeplinkProvider.js.map +1 -0
- package/lib/typescript/adapter.d.ts +1 -3
- package/lib/typescript/adapter.d.ts.map +1 -1
- package/lib/typescript/connectors/{SolanaDeeplinkConnector.d.ts → DeeplinkConnector.d.ts} +11 -13
- package/lib/typescript/connectors/DeeplinkConnector.d.ts.map +1 -0
- package/lib/typescript/connectors/PhantomConnector.d.ts +4 -3
- package/lib/typescript/connectors/PhantomConnector.d.ts.map +1 -1
- package/lib/typescript/connectors/SolflareConnector.d.ts +4 -3
- package/lib/typescript/connectors/SolflareConnector.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -3
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/providers/{SolanaDeeplinkProvider.d.ts → DeeplinkProvider.d.ts} +29 -8
- package/lib/typescript/providers/DeeplinkProvider.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +33 -33
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/adapter.ts +4 -5
- package/src/connectors/{SolanaDeeplinkConnector.ts → DeeplinkConnector.ts} +107 -90
- package/src/connectors/PhantomConnector.ts +5 -4
- package/src/connectors/SolflareConnector.ts +5 -4
- package/src/index.ts +3 -22
- package/src/providers/{SolanaDeeplinkProvider.ts → DeeplinkProvider.ts} +271 -225
- package/src/types.ts +41 -48
- package/lib/commonjs/connectors/SolanaDeeplinkConnector.js.map +0 -1
- package/lib/commonjs/providers/SolanaDeeplinkProvider.js.map +0 -1
- package/lib/module/connectors/SolanaDeeplinkConnector.js.map +0 -1
- package/lib/module/providers/SolanaDeeplinkProvider.js.map +0 -1
- package/lib/typescript/connectors/SolanaDeeplinkConnector.d.ts.map +0 -1
- package/lib/typescript/providers/SolanaDeeplinkProvider.d.ts.map +0 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.SOLANA_SIGNING_METHODS = exports.DeeplinkProvider = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _tweetnacl = _interopRequireDefault(require("tweetnacl"));
|
|
9
9
|
var _bs = _interopRequireDefault(require("bs58"));
|
|
@@ -19,19 +19,55 @@ const SOLANA_SIGNING_METHODS = exports.SOLANA_SIGNING_METHODS = {
|
|
|
19
19
|
function isValidSolanaSigningMethod(method) {
|
|
20
20
|
return Object.values(SOLANA_SIGNING_METHODS).includes(method);
|
|
21
21
|
}
|
|
22
|
-
class
|
|
23
|
-
|
|
22
|
+
class DeeplinkProvider extends _events.default {
|
|
23
|
+
sharedKey = null;
|
|
24
24
|
sessionToken = null;
|
|
25
25
|
userPublicKey = null;
|
|
26
26
|
walletEncryptionPublicKeyBs58 = null;
|
|
27
|
+
|
|
28
|
+
// Single subscription management - deep links are sequential by nature
|
|
29
|
+
activeSubscription = null;
|
|
30
|
+
isOperationPending = false;
|
|
27
31
|
constructor(config) {
|
|
28
32
|
super();
|
|
29
33
|
this.config = config;
|
|
34
|
+
this.currentCluster = config.cluster ?? 'mainnet-beta';
|
|
30
35
|
this.dappEncryptionKeyPair = config.dappEncryptionKeyPair;
|
|
31
36
|
this.storage = config.storage;
|
|
32
37
|
}
|
|
33
|
-
|
|
34
|
-
return `@appkit/${this.config.
|
|
38
|
+
getSessionStorageKey() {
|
|
39
|
+
return `@appkit/${this.config.type}-provider-session`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Cleanup method to be called when the provider is destroyed
|
|
44
|
+
*/
|
|
45
|
+
destroy() {
|
|
46
|
+
this.cleanupActiveSubscription();
|
|
47
|
+
this.removeAllListeners();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Safely cleanup the active subscription
|
|
52
|
+
*/
|
|
53
|
+
cleanupActiveSubscription() {
|
|
54
|
+
if (this.activeSubscription) {
|
|
55
|
+
this.activeSubscription.remove();
|
|
56
|
+
this.activeSubscription = null;
|
|
57
|
+
}
|
|
58
|
+
this.isOperationPending = false;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Safely set a new subscription, ensuring no operation is pending
|
|
63
|
+
*/
|
|
64
|
+
setActiveSubscription(subscription) {
|
|
65
|
+
// If there's already a pending operation, reject it
|
|
66
|
+
if (this.isOperationPending) {
|
|
67
|
+
this.cleanupActiveSubscription();
|
|
68
|
+
}
|
|
69
|
+
this.activeSubscription = subscription;
|
|
70
|
+
this.isOperationPending = true;
|
|
35
71
|
}
|
|
36
72
|
getUserPublicKey() {
|
|
37
73
|
return this.userPublicKey;
|
|
@@ -39,10 +75,48 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
39
75
|
isConnected() {
|
|
40
76
|
return !!this.sessionToken && !!this.userPublicKey && !!this.dappEncryptionKeyPair;
|
|
41
77
|
}
|
|
78
|
+
getCurrentCluster() {
|
|
79
|
+
return this.currentCluster;
|
|
80
|
+
}
|
|
42
81
|
buildUrl(rpcMethod, params) {
|
|
43
82
|
const query = new URLSearchParams(params).toString();
|
|
44
83
|
return `${this.config.baseUrl}/${rpcMethod}?${query}`;
|
|
45
84
|
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Open a deeplink URL and wait for a redirect back to the app. Handles subscription
|
|
88
|
+
* lifecycle and common error extraction from `errorCode`/`errorMessage` query params.
|
|
89
|
+
*/
|
|
90
|
+
async openDeeplinkAndWait(deeplinkUrl, processParams, contextLabel) {
|
|
91
|
+
return new Promise((resolve, reject) => {
|
|
92
|
+
const handleDeepLink = async event => {
|
|
93
|
+
try {
|
|
94
|
+
this.cleanupActiveSubscription();
|
|
95
|
+
const fullUrl = event.url;
|
|
96
|
+
if (!fullUrl.startsWith(this.config.appScheme)) {
|
|
97
|
+
return reject(new Error(`${this.config.type} provider: ${contextLabel}: Unexpected redirect URI.`));
|
|
98
|
+
}
|
|
99
|
+
const params = new URLSearchParams(fullUrl.substring(fullUrl.indexOf('?') + 1));
|
|
100
|
+
const errorCode = params.get('errorCode');
|
|
101
|
+
const errorMessage = params.get('errorMessage');
|
|
102
|
+
if (errorCode) {
|
|
103
|
+
return reject(new Error(`${this.config.type} provider: ${contextLabel} Failed: ${errorMessage || 'Unknown error'} (Code: ${errorCode})`));
|
|
104
|
+
}
|
|
105
|
+
const result = await Promise.resolve(processParams(params));
|
|
106
|
+
resolve(result);
|
|
107
|
+
} catch (error) {
|
|
108
|
+
this.cleanupActiveSubscription();
|
|
109
|
+
reject(error);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
const subscription = _reactNative.Linking.addEventListener('url', handleDeepLink);
|
|
113
|
+
this.setActiveSubscription(subscription);
|
|
114
|
+
_reactNative.Linking.openURL(deeplinkUrl).catch(err => {
|
|
115
|
+
this.cleanupActiveSubscription();
|
|
116
|
+
reject(new Error(`${this.config.type} provider: Failed to open wallet for ${contextLabel}: ${err.message}.`));
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
}
|
|
46
120
|
getRpcMethodName(method) {
|
|
47
121
|
switch (method) {
|
|
48
122
|
case SOLANA_SIGNING_METHODS.SOLANA_SIGN_TRANSACTION:
|
|
@@ -58,47 +132,68 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
58
132
|
throw new Error(`Unsupported Solana signing method: ${method}`);
|
|
59
133
|
}
|
|
60
134
|
}
|
|
61
|
-
encryptPayload(payload,
|
|
62
|
-
if (!
|
|
135
|
+
encryptPayload(payload, walletPublicKeyBs58) {
|
|
136
|
+
if (!walletPublicKeyBs58) {
|
|
63
137
|
return null;
|
|
64
138
|
}
|
|
65
139
|
try {
|
|
66
|
-
const walletPublicKeyBytes = _bs.default.decode(walletPublicKeyBs58ToEncryptFor);
|
|
67
140
|
const nonce = _tweetnacl.default.randomBytes(_tweetnacl.default.box.nonceLength);
|
|
68
141
|
const payloadBytes = _buffer.Buffer.from(JSON.stringify(payload), 'utf8');
|
|
69
|
-
|
|
142
|
+
let encryptedPayload;
|
|
143
|
+
if (this.sharedKey) {
|
|
144
|
+
encryptedPayload = _tweetnacl.default.box.after(payloadBytes, nonce, this.sharedKey);
|
|
145
|
+
} else {
|
|
146
|
+
const walletPublicKeyBytes = _bs.default.decode(walletPublicKeyBs58);
|
|
147
|
+
encryptedPayload = _tweetnacl.default.box(payloadBytes, nonce, walletPublicKeyBytes, this.dappEncryptionKeyPair.secretKey);
|
|
148
|
+
}
|
|
70
149
|
return {
|
|
71
150
|
nonce: _bs.default.encode(nonce),
|
|
72
151
|
encryptedPayload: _bs.default.encode(encryptedPayload)
|
|
73
152
|
};
|
|
74
153
|
} catch (error) {
|
|
154
|
+
console.warn(`${this.config.type} provider: Failed to encrypt payload.`, error);
|
|
75
155
|
return null;
|
|
76
156
|
}
|
|
77
157
|
}
|
|
78
158
|
decryptPayload(encryptedDataBs58, nonceBs58, walletSenderPublicKeyBs58) {
|
|
79
159
|
try {
|
|
80
|
-
const
|
|
160
|
+
const formattedEncryptedDataBs58 = encryptedDataBs58.replace('#', '');
|
|
161
|
+
const encryptedDataBytes = _bs.default.decode(formattedEncryptedDataBs58);
|
|
81
162
|
const nonceBytes = _bs.default.decode(nonceBs58);
|
|
82
|
-
|
|
83
|
-
|
|
163
|
+
let decryptedPayloadBytes;
|
|
164
|
+
if (this.sharedKey) {
|
|
165
|
+
decryptedPayloadBytes = _tweetnacl.default.box.open.after(encryptedDataBytes, nonceBytes, this.sharedKey);
|
|
166
|
+
} else {
|
|
167
|
+
const walletSenderPublicKeyBytes = _bs.default.decode(walletSenderPublicKeyBs58);
|
|
168
|
+
decryptedPayloadBytes = _tweetnacl.default.box.open(encryptedDataBytes, nonceBytes, walletSenderPublicKeyBytes, this.dappEncryptionKeyPair.secretKey);
|
|
169
|
+
}
|
|
84
170
|
if (!decryptedPayloadBytes) {
|
|
85
171
|
return null;
|
|
86
172
|
}
|
|
87
173
|
return JSON.parse(_buffer.Buffer.from(decryptedPayloadBytes).toString('utf8'));
|
|
88
174
|
} catch (error) {
|
|
175
|
+
console.warn(`${this.config.type} provider: Failed to decrypt payload.`, error);
|
|
89
176
|
return null;
|
|
90
177
|
}
|
|
91
178
|
}
|
|
92
179
|
async restoreSession() {
|
|
93
180
|
try {
|
|
94
|
-
const session = await this.storage.getItem(this.
|
|
181
|
+
const session = await this.storage.getItem(this.getSessionStorageKey());
|
|
95
182
|
if (session) {
|
|
96
183
|
this.setSession(session);
|
|
184
|
+
|
|
185
|
+
// Recompute shared key on session restore
|
|
186
|
+
try {
|
|
187
|
+
const walletPublicKeyBytes = _bs.default.decode(session.walletEncryptionPublicKeyBs58);
|
|
188
|
+
this.sharedKey = _tweetnacl.default.box.before(walletPublicKeyBytes, this.dappEncryptionKeyPair.secretKey);
|
|
189
|
+
} catch (e) {
|
|
190
|
+
this.sharedKey = null;
|
|
191
|
+
}
|
|
97
192
|
return true;
|
|
98
193
|
}
|
|
99
194
|
return false;
|
|
100
195
|
} catch (error) {
|
|
101
|
-
// console.error(`${this.config.
|
|
196
|
+
// console.error(`${this.config.type} provider: Failed to restore session.`, error);
|
|
102
197
|
await this.clearSessionStorage(); // Clear potentially corrupt data
|
|
103
198
|
|
|
104
199
|
return false;
|
|
@@ -115,16 +210,16 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
115
210
|
cluster: this.currentCluster
|
|
116
211
|
};
|
|
117
212
|
try {
|
|
118
|
-
await this.storage.setItem(this.
|
|
213
|
+
await this.storage.setItem(this.getSessionStorageKey(), session);
|
|
119
214
|
} catch (error) {
|
|
120
|
-
// console.error(`${this.config.
|
|
215
|
+
// console.error(`${this.config.type} provider: Failed to save session.`, error);
|
|
121
216
|
}
|
|
122
217
|
}
|
|
123
218
|
async clearSessionStorage() {
|
|
124
219
|
try {
|
|
125
|
-
await this.storage.removeItem(this.
|
|
220
|
+
await this.storage.removeItem(this.getSessionStorageKey());
|
|
126
221
|
} catch (error) {
|
|
127
|
-
// console.error(`${this.config.
|
|
222
|
+
// console.error(`${this.config.type} provider: Failed to clear session storage.`, error);
|
|
128
223
|
}
|
|
129
224
|
}
|
|
130
225
|
async connect(params) {
|
|
@@ -137,57 +232,40 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
137
232
|
cluster
|
|
138
233
|
};
|
|
139
234
|
const url = this.buildUrl('connect', connectDeeplinkParams);
|
|
140
|
-
return
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
wallet_encryption_public_key: walletEncryptionPublicKey,
|
|
157
|
-
nonce: responseUrlParams.get('nonce'),
|
|
158
|
-
data: responseUrlParams.get('data')
|
|
159
|
-
};
|
|
160
|
-
if (!responsePayload.wallet_encryption_public_key || !responsePayload.nonce || !responsePayload.data) {
|
|
161
|
-
return reject(new Error(`${this.config.walletType} Connect: Invalid response - missing parameters.`));
|
|
162
|
-
}
|
|
163
|
-
const decryptedData = this.decryptPayload(responsePayload.data, responsePayload.nonce, responsePayload.wallet_encryption_public_key);
|
|
164
|
-
if (!decryptedData || !decryptedData.public_key || !decryptedData.session) {
|
|
165
|
-
return reject(new Error(`${this.config.walletType} Connect: Failed to decrypt or invalid decrypted data.`));
|
|
166
|
-
}
|
|
167
|
-
this.userPublicKey = decryptedData.public_key;
|
|
168
|
-
this.sessionToken = decryptedData.session;
|
|
169
|
-
this.walletEncryptionPublicKeyBs58 = responsePayload.wallet_encryption_public_key;
|
|
235
|
+
return this.openDeeplinkAndWait(url, responseUrlParams => {
|
|
236
|
+
const responsePayload = {
|
|
237
|
+
wallet_encryption_public_key: responseUrlParams.get(this.config.encryptionKeyFieldName),
|
|
238
|
+
nonce: responseUrlParams.get('nonce'),
|
|
239
|
+
data: responseUrlParams.get('data')
|
|
240
|
+
};
|
|
241
|
+
if (!responsePayload.wallet_encryption_public_key || !responsePayload.nonce || !responsePayload.data) {
|
|
242
|
+
throw new Error(`${this.config.type} provider: Invalid response - missing parameters.`);
|
|
243
|
+
}
|
|
244
|
+
const decryptedData = this.decryptPayload(responsePayload.data, responsePayload.nonce, responsePayload.wallet_encryption_public_key);
|
|
245
|
+
if (!decryptedData || !decryptedData.public_key || !decryptedData.session) {
|
|
246
|
+
throw new Error(`${this.config.type} provider: Failed to decrypt or invalid decrypted data.`);
|
|
247
|
+
}
|
|
248
|
+
this.userPublicKey = decryptedData.public_key;
|
|
249
|
+
this.sessionToken = decryptedData.session;
|
|
250
|
+
this.walletEncryptionPublicKeyBs58 = responsePayload.wallet_encryption_public_key;
|
|
170
251
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
252
|
+
// Precompute shared key for subsequent communications
|
|
253
|
+
try {
|
|
254
|
+
const walletPublicKeyBytes = _bs.default.decode(this.walletEncryptionPublicKeyBs58);
|
|
255
|
+
this.sharedKey = _tweetnacl.default.box.before(walletPublicKeyBytes, this.dappEncryptionKeyPair.secretKey);
|
|
256
|
+
} catch (e) {
|
|
257
|
+
this.sharedKey = null;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Save session on successful connect
|
|
261
|
+
this.saveSession();
|
|
262
|
+
return {
|
|
263
|
+
userPublicKey: this.userPublicKey,
|
|
264
|
+
sessionToken: this.sessionToken,
|
|
265
|
+
walletEncryptionPublicKeyBs58: this.walletEncryptionPublicKeyBs58,
|
|
266
|
+
cluster
|
|
182
267
|
};
|
|
183
|
-
|
|
184
|
-
_reactNative.Linking.openURL(url).catch(err => {
|
|
185
|
-
if (subscription) {
|
|
186
|
-
subscription.remove();
|
|
187
|
-
}
|
|
188
|
-
reject(new Error(`Failed to open ${this.config.walletType} wallet: ${err.message}. Is it installed?`));
|
|
189
|
-
});
|
|
190
|
-
});
|
|
268
|
+
}, 'Connection');
|
|
191
269
|
}
|
|
192
270
|
async disconnect() {
|
|
193
271
|
if (!this.sessionToken || !this.walletEncryptionPublicKeyBs58) {
|
|
@@ -200,7 +278,7 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
200
278
|
};
|
|
201
279
|
const encryptedDisconnectPayload = this.encryptPayload(payloadToEncrypt, this.walletEncryptionPublicKeyBs58);
|
|
202
280
|
if (!encryptedDisconnectPayload) {
|
|
203
|
-
// console.warn(`${this.config.
|
|
281
|
+
// console.warn(`${this.config.type} provider: Failed to encrypt disconnect payload. Clearing session locally.`);
|
|
204
282
|
await this.clearSession();
|
|
205
283
|
this.emit('disconnect');
|
|
206
284
|
return Promise.resolve(); // Or reject, depending on desired strictness
|
|
@@ -212,34 +290,19 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
212
290
|
nonce: encryptedDisconnectPayload.nonce
|
|
213
291
|
};
|
|
214
292
|
const url = this.buildUrl('disconnect', disconnectDeeplinkParams);
|
|
215
|
-
return
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
if (subscription) {
|
|
219
|
-
subscription.remove();
|
|
220
|
-
}
|
|
221
|
-
if (event.url.startsWith(this.config.appScheme)) {
|
|
222
|
-
this.clearSession();
|
|
223
|
-
resolve();
|
|
224
|
-
} else {
|
|
225
|
-
this.clearSession();
|
|
226
|
-
reject(new Error(`${this.config.walletType} Disconnect: Unexpected redirect URI.`));
|
|
227
|
-
}
|
|
228
|
-
};
|
|
229
|
-
subscription = _reactNative.Linking.addEventListener('url', handleDeepLink);
|
|
230
|
-
_reactNative.Linking.openURL(url).catch(err => {
|
|
231
|
-
if (subscription) {
|
|
232
|
-
subscription.remove();
|
|
233
|
-
}
|
|
234
|
-
this.clearSession();
|
|
235
|
-
reject(new Error(`Failed to open ${this.config.walletType} for disconnection: ${err.message}.`));
|
|
236
|
-
});
|
|
237
|
-
});
|
|
293
|
+
return this.openDeeplinkAndWait(url, () => {
|
|
294
|
+
this.clearSession();
|
|
295
|
+
}, 'Disconnection');
|
|
238
296
|
}
|
|
239
297
|
async clearSession() {
|
|
240
298
|
this.sessionToken = null;
|
|
241
299
|
this.userPublicKey = null;
|
|
242
300
|
this.walletEncryptionPublicKeyBs58 = null;
|
|
301
|
+
if (this.sharedKey) {
|
|
302
|
+
this.sharedKey.fill(0);
|
|
303
|
+
}
|
|
304
|
+
this.sharedKey = null;
|
|
305
|
+
this.cleanupActiveSubscription();
|
|
243
306
|
await this.clearSessionStorage();
|
|
244
307
|
}
|
|
245
308
|
setSession(session) {
|
|
@@ -250,12 +313,12 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
250
313
|
}
|
|
251
314
|
async request(args, _chainId) {
|
|
252
315
|
if (!isValidSolanaSigningMethod(args.method)) {
|
|
253
|
-
throw new Error(`${this.config.
|
|
316
|
+
throw new Error(`${this.config.type} provider: Unsupported method: ${args.method}. Only Solana signing methods are supported.`);
|
|
254
317
|
}
|
|
255
318
|
const signingMethod = args.method;
|
|
256
319
|
const requestParams = args.params;
|
|
257
320
|
if (!this.isConnected() || !this.sessionToken || !this.walletEncryptionPublicKeyBs58) {
|
|
258
|
-
throw new Error(`${this.config.
|
|
321
|
+
throw new Error(`${this.config.type} provider: Not connected or session details missing. Cannot process request.`);
|
|
259
322
|
}
|
|
260
323
|
const rpcMethodName = this.getRpcMethodName(signingMethod);
|
|
261
324
|
let deeplinkUrl = '';
|
|
@@ -273,7 +336,7 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
273
336
|
};
|
|
274
337
|
const encryptedData = this.encryptPayload(dataToEncrypt, this.walletEncryptionPublicKeyBs58);
|
|
275
338
|
if (!encryptedData) {
|
|
276
|
-
throw new Error(`${this.config.
|
|
339
|
+
throw new Error(`${this.config.type} provider: Failed to encrypt payload for ${signingMethod}.`);
|
|
277
340
|
}
|
|
278
341
|
const signTxDeeplinkParams = {
|
|
279
342
|
dapp_encryption_public_key: _bs.default.encode(this.dappEncryptionKeyPair.publicKey),
|
|
@@ -289,7 +352,7 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
289
352
|
{
|
|
290
353
|
const typedParams = requestParams;
|
|
291
354
|
if (!typedParams || typeof typedParams.message === 'undefined') {
|
|
292
|
-
throw new Error(
|
|
355
|
+
throw new Error(`${this.config.type} provider: Missing 'message' in params for ${signingMethod}`);
|
|
293
356
|
}
|
|
294
357
|
let messageBs58;
|
|
295
358
|
if (typedParams.message instanceof Uint8Array) {
|
|
@@ -302,7 +365,7 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
302
365
|
messageBs58 = _bs.default.encode(_buffer.Buffer.from(typedParams.message));
|
|
303
366
|
}
|
|
304
367
|
} else {
|
|
305
|
-
throw new Error(
|
|
368
|
+
throw new Error(`${this.config.type} provider: Invalid message format for signMessage. Expected Uint8Array or string.`);
|
|
306
369
|
}
|
|
307
370
|
const dataToEncrypt = {
|
|
308
371
|
message: messageBs58,
|
|
@@ -311,7 +374,7 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
311
374
|
};
|
|
312
375
|
const encryptedPayloadData = this.encryptPayload(dataToEncrypt, this.walletEncryptionPublicKeyBs58);
|
|
313
376
|
if (!encryptedPayloadData) {
|
|
314
|
-
throw new Error(`${this.config.
|
|
377
|
+
throw new Error(`${this.config.type} provider: Failed to encrypt payload for signMessage.`);
|
|
315
378
|
}
|
|
316
379
|
const signMsgDeeplinkQueryPayload = {
|
|
317
380
|
dapp_encryption_public_key: _bs.default.encode(this.dappEncryptionKeyPair.publicKey),
|
|
@@ -326,7 +389,7 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
326
389
|
{
|
|
327
390
|
const typedParams = requestParams;
|
|
328
391
|
if (!typedParams || !Array.isArray(typedParams.transactions) || !typedParams.transactions.every(t => typeof t === 'string')) {
|
|
329
|
-
throw new Error(
|
|
392
|
+
throw new Error(`${this.config.type} provider: Missing or invalid 'transactions' (array of base58 strings) in params for ${signingMethod}`);
|
|
330
393
|
}
|
|
331
394
|
const dataToEncrypt = {
|
|
332
395
|
session: this.sessionToken,
|
|
@@ -334,7 +397,7 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
334
397
|
};
|
|
335
398
|
const encryptedData = this.encryptPayload(dataToEncrypt, this.walletEncryptionPublicKeyBs58);
|
|
336
399
|
if (!encryptedData) {
|
|
337
|
-
throw new Error(`${this.config.
|
|
400
|
+
throw new Error(`${this.config.type} provider: Failed to encrypt payload for ${signingMethod}.`);
|
|
338
401
|
}
|
|
339
402
|
const signAllTxDeeplinkParams = {
|
|
340
403
|
dapp_encryption_public_key: _bs.default.encode(this.dappEncryptionKeyPair.publicKey),
|
|
@@ -348,46 +411,22 @@ class SolanaDeeplinkProvider extends _events.default {
|
|
|
348
411
|
}
|
|
349
412
|
default:
|
|
350
413
|
{
|
|
351
|
-
throw new Error(`${this.config.
|
|
414
|
+
throw new Error(`${this.config.type} provider: Unhandled signing method: ${signingMethod}`);
|
|
352
415
|
}
|
|
353
416
|
}
|
|
354
|
-
return
|
|
355
|
-
|
|
356
|
-
const
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
return reject(new Error(`${this.config.walletType} ${signingMethod} Failed: ${errorMessage || 'Unknown error'} (Code: ${errorCode})`));
|
|
367
|
-
}
|
|
368
|
-
const responseNonce = responseUrlParams.get('nonce');
|
|
369
|
-
const responseData = responseUrlParams.get('data');
|
|
370
|
-
if (!responseNonce || !responseData) {
|
|
371
|
-
return reject(new Error(`${this.config.walletType} ${signingMethod}: Invalid response - missing nonce or data.`));
|
|
372
|
-
}
|
|
373
|
-
const decryptedResult = this.decryptPayload(responseData, responseNonce, this.walletEncryptionPublicKeyBs58);
|
|
374
|
-
if (!decryptedResult) {
|
|
375
|
-
return reject(new Error(`${this.config.walletType} ${signingMethod}: Failed to decrypt response or invalid decrypted data.`));
|
|
376
|
-
}
|
|
377
|
-
resolve(decryptedResult);
|
|
378
|
-
} else {
|
|
379
|
-
reject(new Error(`${this.config.walletType} ${signingMethod}: Unexpected redirect URI.`));
|
|
380
|
-
}
|
|
381
|
-
};
|
|
382
|
-
subscription = _reactNative.Linking.addEventListener('url', handleDeepLink);
|
|
383
|
-
_reactNative.Linking.openURL(deeplinkUrl).catch(err => {
|
|
384
|
-
if (subscription) {
|
|
385
|
-
subscription.remove();
|
|
386
|
-
}
|
|
387
|
-
reject(new Error(`Failed to open ${this.config.walletType} for ${signingMethod}: ${err.message}. Is it installed?`));
|
|
388
|
-
});
|
|
389
|
-
});
|
|
417
|
+
return this.openDeeplinkAndWait(deeplinkUrl, responseUrlParams => {
|
|
418
|
+
const responseNonce = responseUrlParams.get('nonce');
|
|
419
|
+
const responseData = responseUrlParams.get('data');
|
|
420
|
+
if (!responseNonce || !responseData) {
|
|
421
|
+
throw new Error(`${this.config.type} provider: ${signingMethod}: Invalid response - missing nonce or data.`);
|
|
422
|
+
}
|
|
423
|
+
const decryptedResult = this.decryptPayload(responseData, responseNonce, this.walletEncryptionPublicKeyBs58);
|
|
424
|
+
if (!decryptedResult) {
|
|
425
|
+
throw new Error(`${this.config.type} provider: ${signingMethod}: Failed to decrypt response or invalid decrypted data.`);
|
|
426
|
+
}
|
|
427
|
+
return decryptedResult;
|
|
428
|
+
}, signingMethod);
|
|
390
429
|
}
|
|
391
430
|
}
|
|
392
|
-
exports.
|
|
393
|
-
//# sourceMappingURL=
|
|
431
|
+
exports.DeeplinkProvider = DeeplinkProvider;
|
|
432
|
+
//# sourceMappingURL=DeeplinkProvider.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","DeeplinkProvider","EventEmitter","sharedKey","sessionToken","userPublicKey","walletEncryptionPublicKeyBs58","activeSubscription","isOperationPending","constructor","config","currentCluster","cluster","dappEncryptionKeyPair","storage","getSessionStorageKey","type","destroy","cleanupActiveSubscription","removeAllListeners","remove","setActiveSubscription","subscription","getUserPublicKey","isConnected","getCurrentCluster","buildUrl","rpcMethod","params","query","URLSearchParams","toString","baseUrl","openDeeplinkAndWait","deeplinkUrl","processParams","contextLabel","Promise","resolve","reject","handleDeepLink","event","fullUrl","url","startsWith","appScheme","Error","substring","indexOf","errorCode","get","errorMessage","result","error","Linking","addEventListener","openURL","catch","err","message","getRpcMethodName","encryptPayload","payload","walletPublicKeyBs58","nonce","nacl","randomBytes","box","nonceLength","payloadBytes","Buffer","from","JSON","stringify","encryptedPayload","after","walletPublicKeyBytes","bs58","decode","secretKey","encode","console","warn","decryptPayload","encryptedDataBs58","nonceBs58","walletSenderPublicKeyBs58","formattedEncryptedDataBs58","replace","encryptedDataBytes","nonceBytes","decryptedPayloadBytes","open","walletSenderPublicKeyBytes","parse","restoreSession","session","getItem","setSession","before","clearSessionStorage","saveSession","setItem","removeItem","connect","connectDeeplinkParams","app_url","dappUrl","dapp_encryption_public_key","publicKey","redirect_link","responseUrlParams","responsePayload","wallet_encryption_public_key","encryptionKeyFieldName","data","decryptedData","public_key","disconnect","clearSession","emit","payloadToEncrypt","encryptedDisconnectPayload","disconnectDeeplinkParams","fill","request","args","_chainId","signingMethod","requestParams","rpcMethodName","typedParams","transaction","dataToEncrypt","encryptedData","signTxDeeplinkParams","messageBs58","Uint8Array","display","encryptedPayloadData","signMsgDeeplinkQueryPayload","Array","isArray","transactions","every","t","signAllTxDeeplinkParams","responseNonce","responseData","decryptedResult"],"sourceRoot":"../../../src","sources":["providers/DeeplinkProvider.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/adapter.js
CHANGED
|
@@ -7,9 +7,8 @@ import base58 from 'bs58';
|
|
|
7
7
|
import { createSendTransaction } from './utils/createSendTransaction';
|
|
8
8
|
export class SolanaAdapter extends SolanaBaseAdapter {
|
|
9
9
|
static supportedNamespace = 'solana';
|
|
10
|
-
constructor(
|
|
10
|
+
constructor() {
|
|
11
11
|
super({
|
|
12
|
-
projectId: configParams.projectId,
|
|
13
12
|
supportedNamespace: SolanaAdapter.supportedNamespace,
|
|
14
13
|
adapterType: 'solana'
|
|
15
14
|
});
|
|
@@ -71,7 +70,7 @@ export class SolanaAdapter extends SolanaBaseAdapter {
|
|
|
71
70
|
if (!network) {
|
|
72
71
|
throw new Error('SolanaAdapter:signTransaction - network is undefined');
|
|
73
72
|
}
|
|
74
|
-
const provider = this.connector.getProvider();
|
|
73
|
+
const provider = this.connector.getProvider('solana');
|
|
75
74
|
if (!provider) {
|
|
76
75
|
throw new Error('SolanaAdapter:signTransaction - provider is undefined');
|
|
77
76
|
}
|
|
@@ -124,7 +123,7 @@ export class SolanaAdapter extends SolanaBaseAdapter {
|
|
|
124
123
|
if (!this.connector) {
|
|
125
124
|
throw new Error('SolanaAdapter:sendTransaction - no active connector');
|
|
126
125
|
}
|
|
127
|
-
const provider = this.connector.getProvider();
|
|
126
|
+
const provider = this.connector.getProvider('solana');
|
|
128
127
|
if (!provider) {
|
|
129
128
|
throw new Error('SolanaAdapter:sendTransaction - provider is undefined');
|
|
130
129
|
}
|
|
@@ -180,7 +179,7 @@ export class SolanaAdapter extends SolanaBaseAdapter {
|
|
|
180
179
|
}
|
|
181
180
|
async switchNetwork(network) {
|
|
182
181
|
if (!this.connector) throw new Error('No active connector');
|
|
183
|
-
const provider = this.connector.getProvider();
|
|
182
|
+
const provider = this.connector.getProvider('solana');
|
|
184
183
|
if (!provider) throw new Error('No active provider');
|
|
185
184
|
try {
|
|
186
185
|
await this.connector.switchNetwork(network);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SolanaBaseAdapter","getSolanaNativeBalance","getSolanaTokenBalance","Connection","Transaction","VersionedTransaction","base58","createSendTransaction","SolanaAdapter","supportedNamespace","constructor","
|
|
1
|
+
{"version":3,"names":["SolanaBaseAdapter","getSolanaNativeBalance","getSolanaTokenBalance","Connection","Transaction","VersionedTransaction","base58","createSendTransaction","SolanaAdapter","supportedNamespace","constructor","adapterType","getBalance","params","network","address","tokens","connector","Error","balanceAddress","getAccounts","find","account","includes","id","toString","amount","symbol","rpcUrl","rpcUrls","default","http","base58Address","split","token","caipNetworkId","balance","emit","error","signTransaction","transaction","provider","getProvider","serializedTransaction","Buffer","from","Uint8Array","serialize","verifySignatures","result","request","method","pubkey","signature","decoded","decode","feePayer","addSignature","decodedTransaction","deserialize","message","sendTransaction","data","fromAddress","toAddress","connectionRpcUrl","connection","value","signedTransaction","sendRawTransaction","skipPreflight","preflightCommitment","switchNetwork","switchError","namespaces","getNamespaces","getSupportedNamespace","accounts","disconnect"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":"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","ignoreList":[]}
|