@phantom/browser-injected-sdk 1.0.2 → 1.0.4
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/dist/auto-confirm/index.js +22 -20
- package/dist/auto-confirm/index.mjs +13 -21
- package/dist/chunk-RGKAWEP4.mjs +39 -0
- package/dist/{chunk-CS23VDDD.mjs → chunk-YVP5ANEI.mjs} +25 -55
- package/dist/ethereum/index.js +34 -53
- package/dist/ethereum/index.mjs +2 -2
- package/dist/index.js +24 -53
- package/dist/index.mjs +4 -12
- package/dist/solana/index.js +33 -61
- package/dist/solana/index.mjs +24 -63
- package/package.json +4 -4
- package/dist/chunk-GV6AIHPN.mjs +0 -18
|
@@ -24,14 +24,28 @@ __export(auto_confirm_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(auto_confirm_exports);
|
|
26
26
|
|
|
27
|
+
// src/errors.ts
|
|
28
|
+
var PHANTOM_NOT_DETECTED = "Phantom wallet not detected.";
|
|
29
|
+
var APP_PROVIDER_NOT_FOUND = "App provider not found on window.phantom.";
|
|
30
|
+
|
|
31
|
+
// src/extension/isInstalled.ts
|
|
32
|
+
function isInstalled() {
|
|
33
|
+
try {
|
|
34
|
+
const phantom = window?.phantom;
|
|
35
|
+
return !!phantom;
|
|
36
|
+
} catch (error) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
27
41
|
// src/auto-confirm/getProvider.ts
|
|
28
42
|
function getProvider() {
|
|
29
|
-
if (
|
|
30
|
-
|
|
43
|
+
if (!isInstalled()) {
|
|
44
|
+
throw new Error(PHANTOM_NOT_DETECTED);
|
|
31
45
|
}
|
|
32
|
-
const provider = window
|
|
46
|
+
const provider = window.phantom.app;
|
|
33
47
|
if (!provider) {
|
|
34
|
-
|
|
48
|
+
throw new Error(APP_PROVIDER_NOT_FOUND);
|
|
35
49
|
}
|
|
36
50
|
return provider;
|
|
37
51
|
}
|
|
@@ -39,10 +53,7 @@ function getProvider() {
|
|
|
39
53
|
// src/auto-confirm/autoConfirmEnable.ts
|
|
40
54
|
var import_constants = require("@phantom/constants");
|
|
41
55
|
async function autoConfirmEnable(params) {
|
|
42
|
-
const provider =
|
|
43
|
-
if (!provider) {
|
|
44
|
-
throw new Error("Provider not found.");
|
|
45
|
-
}
|
|
56
|
+
const provider = getProvider();
|
|
46
57
|
const transformedParams = params?.chains ? { chains: params.chains.map(import_constants.networkIdToInternalCaip) } : {};
|
|
47
58
|
const result = await provider.request({
|
|
48
59
|
method: "phantom_auto_confirm_enable",
|
|
@@ -57,10 +68,7 @@ async function autoConfirmEnable(params) {
|
|
|
57
68
|
// src/auto-confirm/autoConfirmDisable.ts
|
|
58
69
|
var import_constants2 = require("@phantom/constants");
|
|
59
70
|
async function autoConfirmDisable() {
|
|
60
|
-
const provider =
|
|
61
|
-
if (!provider) {
|
|
62
|
-
throw new Error("Provider not found.");
|
|
63
|
-
}
|
|
71
|
+
const provider = getProvider();
|
|
64
72
|
const result = await provider.request({
|
|
65
73
|
method: "phantom_auto_confirm_disable",
|
|
66
74
|
params: {}
|
|
@@ -74,10 +82,7 @@ async function autoConfirmDisable() {
|
|
|
74
82
|
// src/auto-confirm/autoConfirmStatus.ts
|
|
75
83
|
var import_constants3 = require("@phantom/constants");
|
|
76
84
|
async function autoConfirmStatus() {
|
|
77
|
-
const provider =
|
|
78
|
-
if (!provider) {
|
|
79
|
-
throw new Error("Provider not found.");
|
|
80
|
-
}
|
|
85
|
+
const provider = getProvider();
|
|
81
86
|
const result = await provider.request({
|
|
82
87
|
method: "phantom_auto_confirm_status",
|
|
83
88
|
params: {}
|
|
@@ -91,10 +96,7 @@ async function autoConfirmStatus() {
|
|
|
91
96
|
// src/auto-confirm/autoConfirmSupportedChains.ts
|
|
92
97
|
var import_constants4 = require("@phantom/constants");
|
|
93
98
|
async function autoConfirmSupportedChains() {
|
|
94
|
-
const provider =
|
|
95
|
-
if (!provider) {
|
|
96
|
-
throw new Error("Provider not found.");
|
|
97
|
-
}
|
|
99
|
+
const provider = getProvider();
|
|
98
100
|
const result = await provider.request({
|
|
99
101
|
method: "phantom_auto_confirm_supported_chains",
|
|
100
102
|
params: {}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {
|
|
2
|
+
APP_PROVIDER_NOT_FOUND,
|
|
3
|
+
PHANTOM_NOT_DETECTED,
|
|
4
|
+
isInstalled
|
|
5
|
+
} from "../chunk-RGKAWEP4.mjs";
|
|
2
6
|
|
|
3
7
|
// src/auto-confirm/getProvider.ts
|
|
4
8
|
function getProvider() {
|
|
5
|
-
if (
|
|
6
|
-
|
|
9
|
+
if (!isInstalled()) {
|
|
10
|
+
throw new Error(PHANTOM_NOT_DETECTED);
|
|
7
11
|
}
|
|
8
|
-
const provider = window
|
|
12
|
+
const provider = window.phantom.app;
|
|
9
13
|
if (!provider) {
|
|
10
|
-
|
|
14
|
+
throw new Error(APP_PROVIDER_NOT_FOUND);
|
|
11
15
|
}
|
|
12
16
|
return provider;
|
|
13
17
|
}
|
|
@@ -15,10 +19,7 @@ function getProvider() {
|
|
|
15
19
|
// src/auto-confirm/autoConfirmEnable.ts
|
|
16
20
|
import { networkIdToInternalCaip, internalCaipToNetworkId } from "@phantom/constants";
|
|
17
21
|
async function autoConfirmEnable(params) {
|
|
18
|
-
const provider =
|
|
19
|
-
if (!provider) {
|
|
20
|
-
throw new Error("Provider not found.");
|
|
21
|
-
}
|
|
22
|
+
const provider = getProvider();
|
|
22
23
|
const transformedParams = params?.chains ? { chains: params.chains.map(networkIdToInternalCaip) } : {};
|
|
23
24
|
const result = await provider.request({
|
|
24
25
|
method: "phantom_auto_confirm_enable",
|
|
@@ -33,10 +34,7 @@ async function autoConfirmEnable(params) {
|
|
|
33
34
|
// src/auto-confirm/autoConfirmDisable.ts
|
|
34
35
|
import { internalCaipToNetworkId as internalCaipToNetworkId2 } from "@phantom/constants";
|
|
35
36
|
async function autoConfirmDisable() {
|
|
36
|
-
const provider =
|
|
37
|
-
if (!provider) {
|
|
38
|
-
throw new Error("Provider not found.");
|
|
39
|
-
}
|
|
37
|
+
const provider = getProvider();
|
|
40
38
|
const result = await provider.request({
|
|
41
39
|
method: "phantom_auto_confirm_disable",
|
|
42
40
|
params: {}
|
|
@@ -50,10 +48,7 @@ async function autoConfirmDisable() {
|
|
|
50
48
|
// src/auto-confirm/autoConfirmStatus.ts
|
|
51
49
|
import { internalCaipToNetworkId as internalCaipToNetworkId3 } from "@phantom/constants";
|
|
52
50
|
async function autoConfirmStatus() {
|
|
53
|
-
const provider =
|
|
54
|
-
if (!provider) {
|
|
55
|
-
throw new Error("Provider not found.");
|
|
56
|
-
}
|
|
51
|
+
const provider = getProvider();
|
|
57
52
|
const result = await provider.request({
|
|
58
53
|
method: "phantom_auto_confirm_status",
|
|
59
54
|
params: {}
|
|
@@ -67,10 +62,7 @@ async function autoConfirmStatus() {
|
|
|
67
62
|
// src/auto-confirm/autoConfirmSupportedChains.ts
|
|
68
63
|
import { internalCaipToNetworkId as internalCaipToNetworkId4 } from "@phantom/constants";
|
|
69
64
|
async function autoConfirmSupportedChains() {
|
|
70
|
-
const provider =
|
|
71
|
-
if (!provider) {
|
|
72
|
-
throw new Error("Provider not found.");
|
|
73
|
-
}
|
|
65
|
+
const provider = getProvider();
|
|
74
66
|
const result = await provider.request({
|
|
75
67
|
method: "phantom_auto_confirm_supported_chains",
|
|
76
68
|
params: {}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
var __accessCheck = (obj, member, msg) => {
|
|
2
|
+
if (!member.has(obj))
|
|
3
|
+
throw TypeError("Cannot " + msg);
|
|
4
|
+
};
|
|
5
|
+
var __privateAdd = (obj, member, value) => {
|
|
6
|
+
if (member.has(obj))
|
|
7
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
8
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
9
|
+
};
|
|
10
|
+
var __privateMethod = (obj, member, method) => {
|
|
11
|
+
__accessCheck(obj, member, "access private method");
|
|
12
|
+
return method;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// src/extension/isInstalled.ts
|
|
16
|
+
function isInstalled() {
|
|
17
|
+
try {
|
|
18
|
+
const phantom = window?.phantom;
|
|
19
|
+
return !!phantom;
|
|
20
|
+
} catch (error) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// src/errors.ts
|
|
26
|
+
var PHANTOM_NOT_DETECTED = "Phantom wallet not detected.";
|
|
27
|
+
var ETHEREUM_PROVIDER_NOT_FOUND = "Ethereum provider not found on window.phantom.";
|
|
28
|
+
var SOLANA_PROVIDER_NOT_FOUND = "Solana provider not found on window.phantom.";
|
|
29
|
+
var APP_PROVIDER_NOT_FOUND = "App provider not found on window.phantom.";
|
|
30
|
+
|
|
31
|
+
export {
|
|
32
|
+
__privateAdd,
|
|
33
|
+
__privateMethod,
|
|
34
|
+
isInstalled,
|
|
35
|
+
PHANTOM_NOT_DETECTED,
|
|
36
|
+
ETHEREUM_PROVIDER_NOT_FOUND,
|
|
37
|
+
SOLANA_PROVIDER_NOT_FOUND,
|
|
38
|
+
APP_PROVIDER_NOT_FOUND
|
|
39
|
+
};
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
+
ETHEREUM_PROVIDER_NOT_FOUND,
|
|
3
|
+
PHANTOM_NOT_DETECTED,
|
|
2
4
|
__privateAdd,
|
|
3
|
-
__privateMethod
|
|
4
|
-
|
|
5
|
+
__privateMethod,
|
|
6
|
+
isInstalled
|
|
7
|
+
} from "./chunk-RGKAWEP4.mjs";
|
|
5
8
|
|
|
6
9
|
// src/ethereum/siwe.ts
|
|
7
10
|
var ADDRESS_REGEX = /^0x[a-fA-F0-9]{40}$/;
|
|
@@ -127,7 +130,7 @@ function splitUri(value) {
|
|
|
127
130
|
}
|
|
128
131
|
|
|
129
132
|
// src/ethereum/strategies/injected.ts
|
|
130
|
-
var MAX_RETRIES =
|
|
133
|
+
var MAX_RETRIES = 6;
|
|
131
134
|
var BASE_DELAY = 100;
|
|
132
135
|
var _getProvider, getProvider_fn;
|
|
133
136
|
var InjectedEthereumStrategy = class {
|
|
@@ -146,7 +149,11 @@ var InjectedEthereumStrategy = class {
|
|
|
146
149
|
}
|
|
147
150
|
retryCount++;
|
|
148
151
|
if (retryCount >= MAX_RETRIES) {
|
|
149
|
-
|
|
152
|
+
if (!isInstalled()) {
|
|
153
|
+
reject(new Error(PHANTOM_NOT_DETECTED));
|
|
154
|
+
} else {
|
|
155
|
+
reject(new Error(ETHEREUM_PROVIDER_NOT_FOUND));
|
|
156
|
+
}
|
|
150
157
|
} else {
|
|
151
158
|
scheduleRetry(resolve, reject);
|
|
152
159
|
}
|
|
@@ -166,7 +173,7 @@ var InjectedEthereumStrategy = class {
|
|
|
166
173
|
async connect({ onlyIfTrusted }) {
|
|
167
174
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
168
175
|
if (!provider) {
|
|
169
|
-
throw new Error(
|
|
176
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
170
177
|
}
|
|
171
178
|
if (provider.isConnected && provider.selectedAddress) {
|
|
172
179
|
return this.getAccounts();
|
|
@@ -198,7 +205,7 @@ var InjectedEthereumStrategy = class {
|
|
|
198
205
|
async signMessage(message, address) {
|
|
199
206
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
200
207
|
if (!provider) {
|
|
201
|
-
throw new Error(
|
|
208
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
202
209
|
}
|
|
203
210
|
if (!provider.isConnected) {
|
|
204
211
|
throw new Error("Provider is not connected.");
|
|
@@ -212,7 +219,7 @@ var InjectedEthereumStrategy = class {
|
|
|
212
219
|
async signPersonalMessage(message, address) {
|
|
213
220
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
214
221
|
if (!provider) {
|
|
215
|
-
throw new Error(
|
|
222
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
216
223
|
}
|
|
217
224
|
if (!provider.isConnected) {
|
|
218
225
|
throw new Error("Provider is not connected.");
|
|
@@ -226,7 +233,7 @@ var InjectedEthereumStrategy = class {
|
|
|
226
233
|
async signTypedData(typedData, address) {
|
|
227
234
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
228
235
|
if (!provider) {
|
|
229
|
-
throw new Error(
|
|
236
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
230
237
|
}
|
|
231
238
|
if (!provider.isConnected) {
|
|
232
239
|
throw new Error("Provider is not connected.");
|
|
@@ -240,7 +247,7 @@ var InjectedEthereumStrategy = class {
|
|
|
240
247
|
async signIn(signInData) {
|
|
241
248
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
242
249
|
if (!provider) {
|
|
243
|
-
throw new Error(
|
|
250
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
244
251
|
}
|
|
245
252
|
const message = createSiweMessage(signInData);
|
|
246
253
|
const address = provider.selectedAddress;
|
|
@@ -257,7 +264,7 @@ var InjectedEthereumStrategy = class {
|
|
|
257
264
|
async sendTransaction(transaction) {
|
|
258
265
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
259
266
|
if (!provider) {
|
|
260
|
-
throw new Error(
|
|
267
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
261
268
|
}
|
|
262
269
|
if (!provider.isConnected) {
|
|
263
270
|
throw new Error("Provider is not connected.");
|
|
@@ -271,7 +278,7 @@ var InjectedEthereumStrategy = class {
|
|
|
271
278
|
async signTransaction(transaction) {
|
|
272
279
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
273
280
|
if (!provider) {
|
|
274
|
-
throw new Error(
|
|
281
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
275
282
|
}
|
|
276
283
|
if (!provider.isConnected) {
|
|
277
284
|
throw new Error("Provider is not connected.");
|
|
@@ -285,7 +292,7 @@ var InjectedEthereumStrategy = class {
|
|
|
285
292
|
async getChainId() {
|
|
286
293
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
287
294
|
if (!provider) {
|
|
288
|
-
throw new Error(
|
|
295
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
289
296
|
}
|
|
290
297
|
const chainId = await provider.request({ method: "eth_chainId" });
|
|
291
298
|
return chainId;
|
|
@@ -293,7 +300,7 @@ var InjectedEthereumStrategy = class {
|
|
|
293
300
|
async switchChain(chainId) {
|
|
294
301
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
295
302
|
if (!provider) {
|
|
296
|
-
throw new Error(
|
|
303
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
297
304
|
}
|
|
298
305
|
await provider.request({
|
|
299
306
|
method: "wallet_switchEthereumChain",
|
|
@@ -303,29 +310,25 @@ var InjectedEthereumStrategy = class {
|
|
|
303
310
|
async request(args) {
|
|
304
311
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
305
312
|
if (!provider) {
|
|
306
|
-
throw new Error(
|
|
313
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
307
314
|
}
|
|
308
315
|
return await provider.request(args);
|
|
309
316
|
}
|
|
310
317
|
};
|
|
311
318
|
_getProvider = new WeakSet();
|
|
312
319
|
getProvider_fn = function() {
|
|
313
|
-
if (
|
|
320
|
+
if (!isInstalled()) {
|
|
314
321
|
return void 0;
|
|
315
322
|
}
|
|
316
|
-
return window
|
|
323
|
+
return window.phantom.ethereum;
|
|
317
324
|
};
|
|
318
325
|
|
|
319
326
|
// src/ethereum/getProvider.ts
|
|
320
327
|
async function getProvider(strategy = "injected" /* INJECTED */) {
|
|
321
328
|
if (strategy === "injected") {
|
|
322
329
|
const provider = new InjectedEthereumStrategy();
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
return provider;
|
|
326
|
-
} catch (error) {
|
|
327
|
-
throw new Error("Provider not found.");
|
|
328
|
-
}
|
|
330
|
+
await provider.load();
|
|
331
|
+
return provider;
|
|
329
332
|
} else {
|
|
330
333
|
throw new Error("Invalid provider type.");
|
|
331
334
|
}
|
|
@@ -363,9 +366,6 @@ function triggerEvent(event, data) {
|
|
|
363
366
|
// src/ethereum/connect.ts
|
|
364
367
|
async function connect({ onlyIfTrusted = false } = {}) {
|
|
365
368
|
const provider = await getProvider();
|
|
366
|
-
if (!provider) {
|
|
367
|
-
throw new Error("Provider not found.");
|
|
368
|
-
}
|
|
369
369
|
if (provider.isConnected) {
|
|
370
370
|
const accounts = await provider.getAccounts();
|
|
371
371
|
return accounts;
|
|
@@ -395,9 +395,6 @@ async function connect({ onlyIfTrusted = false } = {}) {
|
|
|
395
395
|
// src/ethereum/disconnect.ts
|
|
396
396
|
async function disconnect() {
|
|
397
397
|
const provider = await getProvider();
|
|
398
|
-
if (!provider) {
|
|
399
|
-
throw new Error("Provider not found.");
|
|
400
|
-
}
|
|
401
398
|
await provider.disconnect();
|
|
402
399
|
triggerEvent("disconnect", []);
|
|
403
400
|
}
|
|
@@ -405,18 +402,12 @@ async function disconnect() {
|
|
|
405
402
|
// src/ethereum/getAccounts.ts
|
|
406
403
|
async function getAccounts() {
|
|
407
404
|
const provider = await getProvider();
|
|
408
|
-
if (!provider) {
|
|
409
|
-
throw new Error("Provider not found.");
|
|
410
|
-
}
|
|
411
405
|
return provider.getAccounts();
|
|
412
406
|
}
|
|
413
407
|
|
|
414
408
|
// src/ethereum/signMessage.ts
|
|
415
409
|
async function signPersonalMessage(message, address) {
|
|
416
410
|
const provider = await getProvider();
|
|
417
|
-
if (!provider) {
|
|
418
|
-
throw new Error("Provider not found.");
|
|
419
|
-
}
|
|
420
411
|
if (!provider.isConnected) {
|
|
421
412
|
await provider.connect({ onlyIfTrusted: false });
|
|
422
413
|
}
|
|
@@ -424,9 +415,6 @@ async function signPersonalMessage(message, address) {
|
|
|
424
415
|
}
|
|
425
416
|
async function signTypedData(typedData, address) {
|
|
426
417
|
const provider = await getProvider();
|
|
427
|
-
if (!provider) {
|
|
428
|
-
throw new Error("Provider not found.");
|
|
429
|
-
}
|
|
430
418
|
if (!provider.isConnected) {
|
|
431
419
|
await provider.connect({ onlyIfTrusted: false });
|
|
432
420
|
}
|
|
@@ -436,9 +424,6 @@ async function signTypedData(typedData, address) {
|
|
|
436
424
|
// src/ethereum/sendTransaction.ts
|
|
437
425
|
async function sendTransaction(transaction) {
|
|
438
426
|
const provider = await getProvider();
|
|
439
|
-
if (!provider) {
|
|
440
|
-
throw new Error("Provider not found.");
|
|
441
|
-
}
|
|
442
427
|
if (!provider.isConnected) {
|
|
443
428
|
await provider.connect({ onlyIfTrusted: false });
|
|
444
429
|
}
|
|
@@ -446,9 +431,6 @@ async function sendTransaction(transaction) {
|
|
|
446
431
|
}
|
|
447
432
|
async function signTransaction(transaction) {
|
|
448
433
|
const provider = await getProvider();
|
|
449
|
-
if (!provider) {
|
|
450
|
-
throw new Error("Provider not found.");
|
|
451
|
-
}
|
|
452
434
|
if (!provider.isConnected) {
|
|
453
435
|
await provider.connect({ onlyIfTrusted: false });
|
|
454
436
|
}
|
|
@@ -458,16 +440,10 @@ async function signTransaction(transaction) {
|
|
|
458
440
|
// src/ethereum/chainUtils.ts
|
|
459
441
|
async function getChainId() {
|
|
460
442
|
const provider = await getProvider();
|
|
461
|
-
if (!provider) {
|
|
462
|
-
throw new Error("Provider not found.");
|
|
463
|
-
}
|
|
464
443
|
return provider.getChainId();
|
|
465
444
|
}
|
|
466
445
|
async function switchChain(chainId) {
|
|
467
446
|
const provider = await getProvider();
|
|
468
|
-
if (!provider) {
|
|
469
|
-
throw new Error("Provider not found.");
|
|
470
|
-
}
|
|
471
447
|
return provider.switchChain(chainId);
|
|
472
448
|
}
|
|
473
449
|
|
|
@@ -478,9 +454,6 @@ var Ethereum = class {
|
|
|
478
454
|
this._accounts = [];
|
|
479
455
|
this.bindProviderEvents();
|
|
480
456
|
}
|
|
481
|
-
get connected() {
|
|
482
|
-
return this._accounts.length > 0;
|
|
483
|
-
}
|
|
484
457
|
get chainId() {
|
|
485
458
|
return this._chainId;
|
|
486
459
|
}
|
|
@@ -489,9 +462,6 @@ var Ethereum = class {
|
|
|
489
462
|
}
|
|
490
463
|
async request(args) {
|
|
491
464
|
const provider = await getProvider();
|
|
492
|
-
if (!provider) {
|
|
493
|
-
throw new Error("Provider not found.");
|
|
494
|
-
}
|
|
495
465
|
const providerInstance = provider.getProvider();
|
|
496
466
|
if (!providerInstance) {
|
|
497
467
|
throw new Error("Provider instance not found.");
|
package/dist/ethereum/index.js
CHANGED
|
@@ -161,8 +161,22 @@ function splitUri(value) {
|
|
|
161
161
|
return value.match(/(?:([^:/?#]+):)?(?:\/\/([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/);
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
+
// src/errors.ts
|
|
165
|
+
var PHANTOM_NOT_DETECTED = "Phantom wallet not detected.";
|
|
166
|
+
var ETHEREUM_PROVIDER_NOT_FOUND = "Ethereum provider not found on window.phantom.";
|
|
167
|
+
|
|
168
|
+
// src/extension/isInstalled.ts
|
|
169
|
+
function isInstalled() {
|
|
170
|
+
try {
|
|
171
|
+
const phantom = window?.phantom;
|
|
172
|
+
return !!phantom;
|
|
173
|
+
} catch (error) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
164
178
|
// src/ethereum/strategies/injected.ts
|
|
165
|
-
var MAX_RETRIES =
|
|
179
|
+
var MAX_RETRIES = 6;
|
|
166
180
|
var BASE_DELAY = 100;
|
|
167
181
|
var _getProvider, getProvider_fn;
|
|
168
182
|
var InjectedEthereumStrategy = class {
|
|
@@ -181,7 +195,11 @@ var InjectedEthereumStrategy = class {
|
|
|
181
195
|
}
|
|
182
196
|
retryCount++;
|
|
183
197
|
if (retryCount >= MAX_RETRIES) {
|
|
184
|
-
|
|
198
|
+
if (!isInstalled()) {
|
|
199
|
+
reject(new Error(PHANTOM_NOT_DETECTED));
|
|
200
|
+
} else {
|
|
201
|
+
reject(new Error(ETHEREUM_PROVIDER_NOT_FOUND));
|
|
202
|
+
}
|
|
185
203
|
} else {
|
|
186
204
|
scheduleRetry(resolve, reject);
|
|
187
205
|
}
|
|
@@ -201,7 +219,7 @@ var InjectedEthereumStrategy = class {
|
|
|
201
219
|
async connect({ onlyIfTrusted }) {
|
|
202
220
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
203
221
|
if (!provider) {
|
|
204
|
-
throw new Error(
|
|
222
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
205
223
|
}
|
|
206
224
|
if (provider.isConnected && provider.selectedAddress) {
|
|
207
225
|
return this.getAccounts();
|
|
@@ -233,7 +251,7 @@ var InjectedEthereumStrategy = class {
|
|
|
233
251
|
async signMessage(message, address) {
|
|
234
252
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
235
253
|
if (!provider) {
|
|
236
|
-
throw new Error(
|
|
254
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
237
255
|
}
|
|
238
256
|
if (!provider.isConnected) {
|
|
239
257
|
throw new Error("Provider is not connected.");
|
|
@@ -247,7 +265,7 @@ var InjectedEthereumStrategy = class {
|
|
|
247
265
|
async signPersonalMessage(message, address) {
|
|
248
266
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
249
267
|
if (!provider) {
|
|
250
|
-
throw new Error(
|
|
268
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
251
269
|
}
|
|
252
270
|
if (!provider.isConnected) {
|
|
253
271
|
throw new Error("Provider is not connected.");
|
|
@@ -261,7 +279,7 @@ var InjectedEthereumStrategy = class {
|
|
|
261
279
|
async signTypedData(typedData, address) {
|
|
262
280
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
263
281
|
if (!provider) {
|
|
264
|
-
throw new Error(
|
|
282
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
265
283
|
}
|
|
266
284
|
if (!provider.isConnected) {
|
|
267
285
|
throw new Error("Provider is not connected.");
|
|
@@ -275,7 +293,7 @@ var InjectedEthereumStrategy = class {
|
|
|
275
293
|
async signIn(signInData) {
|
|
276
294
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
277
295
|
if (!provider) {
|
|
278
|
-
throw new Error(
|
|
296
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
279
297
|
}
|
|
280
298
|
const message = createSiweMessage(signInData);
|
|
281
299
|
const address = provider.selectedAddress;
|
|
@@ -292,7 +310,7 @@ var InjectedEthereumStrategy = class {
|
|
|
292
310
|
async sendTransaction(transaction) {
|
|
293
311
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
294
312
|
if (!provider) {
|
|
295
|
-
throw new Error(
|
|
313
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
296
314
|
}
|
|
297
315
|
if (!provider.isConnected) {
|
|
298
316
|
throw new Error("Provider is not connected.");
|
|
@@ -306,7 +324,7 @@ var InjectedEthereumStrategy = class {
|
|
|
306
324
|
async signTransaction(transaction) {
|
|
307
325
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
308
326
|
if (!provider) {
|
|
309
|
-
throw new Error(
|
|
327
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
310
328
|
}
|
|
311
329
|
if (!provider.isConnected) {
|
|
312
330
|
throw new Error("Provider is not connected.");
|
|
@@ -320,7 +338,7 @@ var InjectedEthereumStrategy = class {
|
|
|
320
338
|
async getChainId() {
|
|
321
339
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
322
340
|
if (!provider) {
|
|
323
|
-
throw new Error(
|
|
341
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
324
342
|
}
|
|
325
343
|
const chainId = await provider.request({ method: "eth_chainId" });
|
|
326
344
|
return chainId;
|
|
@@ -328,7 +346,7 @@ var InjectedEthereumStrategy = class {
|
|
|
328
346
|
async switchChain(chainId) {
|
|
329
347
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
330
348
|
if (!provider) {
|
|
331
|
-
throw new Error(
|
|
349
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
332
350
|
}
|
|
333
351
|
await provider.request({
|
|
334
352
|
method: "wallet_switchEthereumChain",
|
|
@@ -338,29 +356,25 @@ var InjectedEthereumStrategy = class {
|
|
|
338
356
|
async request(args) {
|
|
339
357
|
const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
|
|
340
358
|
if (!provider) {
|
|
341
|
-
throw new Error(
|
|
359
|
+
throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
|
|
342
360
|
}
|
|
343
361
|
return await provider.request(args);
|
|
344
362
|
}
|
|
345
363
|
};
|
|
346
364
|
_getProvider = new WeakSet();
|
|
347
365
|
getProvider_fn = function() {
|
|
348
|
-
if (
|
|
366
|
+
if (!isInstalled()) {
|
|
349
367
|
return void 0;
|
|
350
368
|
}
|
|
351
|
-
return window
|
|
369
|
+
return window.phantom.ethereum;
|
|
352
370
|
};
|
|
353
371
|
|
|
354
372
|
// src/ethereum/getProvider.ts
|
|
355
373
|
async function getProvider(strategy = "injected" /* INJECTED */) {
|
|
356
374
|
if (strategy === "injected") {
|
|
357
375
|
const provider = new InjectedEthereumStrategy();
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
return provider;
|
|
361
|
-
} catch (error) {
|
|
362
|
-
throw new Error("Provider not found.");
|
|
363
|
-
}
|
|
376
|
+
await provider.load();
|
|
377
|
+
return provider;
|
|
364
378
|
} else {
|
|
365
379
|
throw new Error("Invalid provider type.");
|
|
366
380
|
}
|
|
@@ -398,9 +412,6 @@ function triggerEvent(event, data) {
|
|
|
398
412
|
// src/ethereum/connect.ts
|
|
399
413
|
async function connect({ onlyIfTrusted = false } = {}) {
|
|
400
414
|
const provider = await getProvider();
|
|
401
|
-
if (!provider) {
|
|
402
|
-
throw new Error("Provider not found.");
|
|
403
|
-
}
|
|
404
415
|
if (provider.isConnected) {
|
|
405
416
|
const accounts = await provider.getAccounts();
|
|
406
417
|
return accounts;
|
|
@@ -430,9 +441,6 @@ async function connect({ onlyIfTrusted = false } = {}) {
|
|
|
430
441
|
// src/ethereum/disconnect.ts
|
|
431
442
|
async function disconnect() {
|
|
432
443
|
const provider = await getProvider();
|
|
433
|
-
if (!provider) {
|
|
434
|
-
throw new Error("Provider not found.");
|
|
435
|
-
}
|
|
436
444
|
await provider.disconnect();
|
|
437
445
|
triggerEvent("disconnect", []);
|
|
438
446
|
}
|
|
@@ -440,18 +448,12 @@ async function disconnect() {
|
|
|
440
448
|
// src/ethereum/getAccounts.ts
|
|
441
449
|
async function getAccounts() {
|
|
442
450
|
const provider = await getProvider();
|
|
443
|
-
if (!provider) {
|
|
444
|
-
throw new Error("Provider not found.");
|
|
445
|
-
}
|
|
446
451
|
return provider.getAccounts();
|
|
447
452
|
}
|
|
448
453
|
|
|
449
454
|
// src/ethereum/signMessage.ts
|
|
450
455
|
async function signPersonalMessage(message, address) {
|
|
451
456
|
const provider = await getProvider();
|
|
452
|
-
if (!provider) {
|
|
453
|
-
throw new Error("Provider not found.");
|
|
454
|
-
}
|
|
455
457
|
if (!provider.isConnected) {
|
|
456
458
|
await provider.connect({ onlyIfTrusted: false });
|
|
457
459
|
}
|
|
@@ -459,9 +461,6 @@ async function signPersonalMessage(message, address) {
|
|
|
459
461
|
}
|
|
460
462
|
async function signTypedData(typedData, address) {
|
|
461
463
|
const provider = await getProvider();
|
|
462
|
-
if (!provider) {
|
|
463
|
-
throw new Error("Provider not found.");
|
|
464
|
-
}
|
|
465
464
|
if (!provider.isConnected) {
|
|
466
465
|
await provider.connect({ onlyIfTrusted: false });
|
|
467
466
|
}
|
|
@@ -471,9 +470,6 @@ async function signTypedData(typedData, address) {
|
|
|
471
470
|
// src/ethereum/sendTransaction.ts
|
|
472
471
|
async function sendTransaction(transaction) {
|
|
473
472
|
const provider = await getProvider();
|
|
474
|
-
if (!provider) {
|
|
475
|
-
throw new Error("Provider not found.");
|
|
476
|
-
}
|
|
477
473
|
if (!provider.isConnected) {
|
|
478
474
|
await provider.connect({ onlyIfTrusted: false });
|
|
479
475
|
}
|
|
@@ -481,9 +477,6 @@ async function sendTransaction(transaction) {
|
|
|
481
477
|
}
|
|
482
478
|
async function signTransaction(transaction) {
|
|
483
479
|
const provider = await getProvider();
|
|
484
|
-
if (!provider) {
|
|
485
|
-
throw new Error("Provider not found.");
|
|
486
|
-
}
|
|
487
480
|
if (!provider.isConnected) {
|
|
488
481
|
await provider.connect({ onlyIfTrusted: false });
|
|
489
482
|
}
|
|
@@ -493,16 +486,10 @@ async function signTransaction(transaction) {
|
|
|
493
486
|
// src/ethereum/chainUtils.ts
|
|
494
487
|
async function getChainId() {
|
|
495
488
|
const provider = await getProvider();
|
|
496
|
-
if (!provider) {
|
|
497
|
-
throw new Error("Provider not found.");
|
|
498
|
-
}
|
|
499
489
|
return provider.getChainId();
|
|
500
490
|
}
|
|
501
491
|
async function switchChain(chainId) {
|
|
502
492
|
const provider = await getProvider();
|
|
503
|
-
if (!provider) {
|
|
504
|
-
throw new Error("Provider not found.");
|
|
505
|
-
}
|
|
506
493
|
return provider.switchChain(chainId);
|
|
507
494
|
}
|
|
508
495
|
|
|
@@ -513,9 +500,6 @@ var Ethereum = class {
|
|
|
513
500
|
this._accounts = [];
|
|
514
501
|
this.bindProviderEvents();
|
|
515
502
|
}
|
|
516
|
-
get connected() {
|
|
517
|
-
return this._accounts.length > 0;
|
|
518
|
-
}
|
|
519
503
|
get chainId() {
|
|
520
504
|
return this._chainId;
|
|
521
505
|
}
|
|
@@ -524,9 +508,6 @@ var Ethereum = class {
|
|
|
524
508
|
}
|
|
525
509
|
async request(args) {
|
|
526
510
|
const provider = await getProvider();
|
|
527
|
-
if (!provider) {
|
|
528
|
-
throw new Error("Provider not found.");
|
|
529
|
-
}
|
|
530
511
|
const providerInstance = provider.getProvider();
|
|
531
512
|
if (!providerInstance) {
|
|
532
513
|
throw new Error("Provider instance not found.");
|