@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.
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  createEthereumPlugin,
3
3
  createSiweMessage
4
- } from "../chunk-CS23VDDD.mjs";
4
+ } from "../chunk-YVP5ANEI.mjs";
5
5
  import "../chunk-WUKYLWAZ.mjs";
6
- import "../chunk-GV6AIHPN.mjs";
6
+ import "../chunk-RGKAWEP4.mjs";
7
7
  export {
8
8
  createEthereumPlugin,
9
9
  createSiweMessage
package/dist/index.js CHANGED
@@ -185,8 +185,12 @@ function splitUri(value) {
185
185
  return value.match(/(?:([^:/?#]+):)?(?:\/\/([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/);
186
186
  }
187
187
 
188
+ // src/errors.ts
189
+ var PHANTOM_NOT_DETECTED = "Phantom wallet not detected.";
190
+ var ETHEREUM_PROVIDER_NOT_FOUND = "Ethereum provider not found on window.phantom.";
191
+
188
192
  // src/ethereum/strategies/injected.ts
189
- var MAX_RETRIES = 4;
193
+ var MAX_RETRIES = 6;
190
194
  var BASE_DELAY = 100;
191
195
  var _getProvider, getProvider_fn;
192
196
  var InjectedEthereumStrategy = class {
@@ -205,7 +209,11 @@ var InjectedEthereumStrategy = class {
205
209
  }
206
210
  retryCount++;
207
211
  if (retryCount >= MAX_RETRIES) {
208
- reject();
212
+ if (!isInstalled()) {
213
+ reject(new Error(PHANTOM_NOT_DETECTED));
214
+ } else {
215
+ reject(new Error(ETHEREUM_PROVIDER_NOT_FOUND));
216
+ }
209
217
  } else {
210
218
  scheduleRetry(resolve, reject);
211
219
  }
@@ -225,7 +233,7 @@ var InjectedEthereumStrategy = class {
225
233
  async connect({ onlyIfTrusted }) {
226
234
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
227
235
  if (!provider) {
228
- throw new Error("Provider not found.");
236
+ throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
229
237
  }
230
238
  if (provider.isConnected && provider.selectedAddress) {
231
239
  return this.getAccounts();
@@ -257,7 +265,7 @@ var InjectedEthereumStrategy = class {
257
265
  async signMessage(message, address) {
258
266
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
259
267
  if (!provider) {
260
- throw new Error("Provider not found.");
268
+ throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
261
269
  }
262
270
  if (!provider.isConnected) {
263
271
  throw new Error("Provider is not connected.");
@@ -271,7 +279,7 @@ var InjectedEthereumStrategy = class {
271
279
  async signPersonalMessage(message, address) {
272
280
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
273
281
  if (!provider) {
274
- throw new Error("Provider not found.");
282
+ throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
275
283
  }
276
284
  if (!provider.isConnected) {
277
285
  throw new Error("Provider is not connected.");
@@ -285,7 +293,7 @@ var InjectedEthereumStrategy = class {
285
293
  async signTypedData(typedData, address) {
286
294
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
287
295
  if (!provider) {
288
- throw new Error("Provider not found.");
296
+ throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
289
297
  }
290
298
  if (!provider.isConnected) {
291
299
  throw new Error("Provider is not connected.");
@@ -299,7 +307,7 @@ var InjectedEthereumStrategy = class {
299
307
  async signIn(signInData) {
300
308
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
301
309
  if (!provider) {
302
- throw new Error("Provider not found.");
310
+ throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
303
311
  }
304
312
  const message = createSiweMessage(signInData);
305
313
  const address = provider.selectedAddress;
@@ -316,7 +324,7 @@ var InjectedEthereumStrategy = class {
316
324
  async sendTransaction(transaction) {
317
325
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
318
326
  if (!provider) {
319
- throw new Error("Provider not found.");
327
+ throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
320
328
  }
321
329
  if (!provider.isConnected) {
322
330
  throw new Error("Provider is not connected.");
@@ -330,7 +338,7 @@ var InjectedEthereumStrategy = class {
330
338
  async signTransaction(transaction) {
331
339
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
332
340
  if (!provider) {
333
- throw new Error("Provider not found.");
341
+ throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
334
342
  }
335
343
  if (!provider.isConnected) {
336
344
  throw new Error("Provider is not connected.");
@@ -344,7 +352,7 @@ var InjectedEthereumStrategy = class {
344
352
  async getChainId() {
345
353
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
346
354
  if (!provider) {
347
- throw new Error("Provider not found.");
355
+ throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
348
356
  }
349
357
  const chainId = await provider.request({ method: "eth_chainId" });
350
358
  return chainId;
@@ -352,7 +360,7 @@ var InjectedEthereumStrategy = class {
352
360
  async switchChain(chainId) {
353
361
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
354
362
  if (!provider) {
355
- throw new Error("Provider not found.");
363
+ throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
356
364
  }
357
365
  await provider.request({
358
366
  method: "wallet_switchEthereumChain",
@@ -362,29 +370,25 @@ var InjectedEthereumStrategy = class {
362
370
  async request(args) {
363
371
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
364
372
  if (!provider) {
365
- throw new Error("Provider not found.");
373
+ throw new Error(ETHEREUM_PROVIDER_NOT_FOUND);
366
374
  }
367
375
  return await provider.request(args);
368
376
  }
369
377
  };
370
378
  _getProvider = new WeakSet();
371
379
  getProvider_fn = function() {
372
- if (typeof window === "undefined") {
380
+ if (!isInstalled()) {
373
381
  return void 0;
374
382
  }
375
- return window?.phantom?.ethereum;
383
+ return window.phantom.ethereum;
376
384
  };
377
385
 
378
386
  // src/ethereum/getProvider.ts
379
387
  async function getProvider(strategy = "injected" /* INJECTED */) {
380
388
  if (strategy === "injected") {
381
389
  const provider = new InjectedEthereumStrategy();
382
- try {
383
- await provider.load();
384
- return provider;
385
- } catch (error) {
386
- throw new Error("Provider not found.");
387
- }
390
+ await provider.load();
391
+ return provider;
388
392
  } else {
389
393
  throw new Error("Invalid provider type.");
390
394
  }
@@ -422,9 +426,6 @@ function triggerEvent(event, data) {
422
426
  // src/ethereum/connect.ts
423
427
  async function connect({ onlyIfTrusted = false } = {}) {
424
428
  const provider = await getProvider();
425
- if (!provider) {
426
- throw new Error("Provider not found.");
427
- }
428
429
  if (provider.isConnected) {
429
430
  const accounts = await provider.getAccounts();
430
431
  return accounts;
@@ -454,9 +455,6 @@ async function connect({ onlyIfTrusted = false } = {}) {
454
455
  // src/ethereum/disconnect.ts
455
456
  async function disconnect() {
456
457
  const provider = await getProvider();
457
- if (!provider) {
458
- throw new Error("Provider not found.");
459
- }
460
458
  await provider.disconnect();
461
459
  triggerEvent("disconnect", []);
462
460
  }
@@ -464,18 +462,12 @@ async function disconnect() {
464
462
  // src/ethereum/getAccounts.ts
465
463
  async function getAccounts() {
466
464
  const provider = await getProvider();
467
- if (!provider) {
468
- throw new Error("Provider not found.");
469
- }
470
465
  return provider.getAccounts();
471
466
  }
472
467
 
473
468
  // src/ethereum/signMessage.ts
474
469
  async function signPersonalMessage(message, address) {
475
470
  const provider = await getProvider();
476
- if (!provider) {
477
- throw new Error("Provider not found.");
478
- }
479
471
  if (!provider.isConnected) {
480
472
  await provider.connect({ onlyIfTrusted: false });
481
473
  }
@@ -483,9 +475,6 @@ async function signPersonalMessage(message, address) {
483
475
  }
484
476
  async function signTypedData(typedData, address) {
485
477
  const provider = await getProvider();
486
- if (!provider) {
487
- throw new Error("Provider not found.");
488
- }
489
478
  if (!provider.isConnected) {
490
479
  await provider.connect({ onlyIfTrusted: false });
491
480
  }
@@ -495,9 +484,6 @@ async function signTypedData(typedData, address) {
495
484
  // src/ethereum/sendTransaction.ts
496
485
  async function sendTransaction(transaction) {
497
486
  const provider = await getProvider();
498
- if (!provider) {
499
- throw new Error("Provider not found.");
500
- }
501
487
  if (!provider.isConnected) {
502
488
  await provider.connect({ onlyIfTrusted: false });
503
489
  }
@@ -505,9 +491,6 @@ async function sendTransaction(transaction) {
505
491
  }
506
492
  async function signTransaction(transaction) {
507
493
  const provider = await getProvider();
508
- if (!provider) {
509
- throw new Error("Provider not found.");
510
- }
511
494
  if (!provider.isConnected) {
512
495
  await provider.connect({ onlyIfTrusted: false });
513
496
  }
@@ -517,16 +500,10 @@ async function signTransaction(transaction) {
517
500
  // src/ethereum/chainUtils.ts
518
501
  async function getChainId() {
519
502
  const provider = await getProvider();
520
- if (!provider) {
521
- throw new Error("Provider not found.");
522
- }
523
503
  return provider.getChainId();
524
504
  }
525
505
  async function switchChain(chainId) {
526
506
  const provider = await getProvider();
527
- if (!provider) {
528
- throw new Error("Provider not found.");
529
- }
530
507
  return provider.switchChain(chainId);
531
508
  }
532
509
 
@@ -537,9 +514,6 @@ var Ethereum = class {
537
514
  this._accounts = [];
538
515
  this.bindProviderEvents();
539
516
  }
540
- get connected() {
541
- return this._accounts.length > 0;
542
- }
543
517
  get chainId() {
544
518
  return this._chainId;
545
519
  }
@@ -548,9 +522,6 @@ var Ethereum = class {
548
522
  }
549
523
  async request(args) {
550
524
  const provider = await getProvider();
551
- if (!provider) {
552
- throw new Error("Provider not found.");
553
- }
554
525
  const providerInstance = provider.getProvider();
555
526
  if (!providerInstance) {
556
527
  throw new Error("Provider instance not found.");
package/dist/index.mjs CHANGED
@@ -1,19 +1,11 @@
1
1
  import {
2
2
  createEthereumPlugin,
3
3
  createSiweMessage
4
- } from "./chunk-CS23VDDD.mjs";
4
+ } from "./chunk-YVP5ANEI.mjs";
5
5
  import "./chunk-WUKYLWAZ.mjs";
6
- import "./chunk-GV6AIHPN.mjs";
7
-
8
- // src/extension/isInstalled.ts
9
- function isInstalled() {
10
- try {
11
- const phantom = window?.phantom;
12
- return !!phantom;
13
- } catch (error) {
14
- return false;
15
- }
16
- }
6
+ import {
7
+ isInstalled
8
+ } from "./chunk-RGKAWEP4.mjs";
17
9
 
18
10
  // src/extension/plugin.ts
19
11
  var extension = {
@@ -37,8 +37,22 @@ __export(solana_exports, {
37
37
  });
38
38
  module.exports = __toCommonJS(solana_exports);
39
39
 
40
+ // src/errors.ts
41
+ var PHANTOM_NOT_DETECTED = "Phantom wallet not detected.";
42
+ var SOLANA_PROVIDER_NOT_FOUND = "Solana provider not found on window.phantom.";
43
+
44
+ // src/extension/isInstalled.ts
45
+ function isInstalled() {
46
+ try {
47
+ const phantom = window?.phantom;
48
+ return !!phantom;
49
+ } catch (error) {
50
+ return false;
51
+ }
52
+ }
53
+
40
54
  // src/solana/strategies/injected.ts
41
- var MAX_RETRIES = 4;
55
+ var MAX_RETRIES = 6;
42
56
  var BASE_DELAY = 100;
43
57
  var _getProvider, getProvider_fn;
44
58
  var InjectedSolanaStrategy = class {
@@ -57,7 +71,11 @@ var InjectedSolanaStrategy = class {
57
71
  }
58
72
  retryCount++;
59
73
  if (retryCount >= MAX_RETRIES) {
60
- reject();
74
+ if (!isInstalled()) {
75
+ reject(new Error(PHANTOM_NOT_DETECTED));
76
+ } else {
77
+ reject(new Error(SOLANA_PROVIDER_NOT_FOUND));
78
+ }
61
79
  } else {
62
80
  scheduleRetry(resolve, reject);
63
81
  }
@@ -77,7 +95,7 @@ var InjectedSolanaStrategy = class {
77
95
  async connect({ onlyIfTrusted }) {
78
96
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
79
97
  if (!provider) {
80
- throw new Error("Provider not found.");
98
+ throw new Error(SOLANA_PROVIDER_NOT_FOUND);
81
99
  }
82
100
  if (provider.isConnected && provider.publicKey) {
83
101
  return this.getAccount() ?? void 0;
@@ -92,7 +110,7 @@ var InjectedSolanaStrategy = class {
92
110
  async disconnect() {
93
111
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
94
112
  if (!provider) {
95
- throw new Error("Provider not found.");
113
+ throw new Error(SOLANA_PROVIDER_NOT_FOUND);
96
114
  }
97
115
  await provider.disconnect();
98
116
  }
@@ -106,7 +124,7 @@ var InjectedSolanaStrategy = class {
106
124
  async signMessage(message, display) {
107
125
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
108
126
  if (!provider) {
109
- throw new Error("Provider not found.");
127
+ throw new Error(SOLANA_PROVIDER_NOT_FOUND);
110
128
  }
111
129
  if (!provider.isConnected) {
112
130
  throw new Error("Provider is not connected.");
@@ -120,7 +138,7 @@ var InjectedSolanaStrategy = class {
120
138
  async signIn(signInData) {
121
139
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
122
140
  if (!provider) {
123
- throw new Error("Provider not found.");
141
+ throw new Error(SOLANA_PROVIDER_NOT_FOUND);
124
142
  }
125
143
  const result = await provider.signIn(signInData);
126
144
  return {
@@ -132,7 +150,7 @@ var InjectedSolanaStrategy = class {
132
150
  async signAndSendTransaction(transaction) {
133
151
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
134
152
  if (!provider) {
135
- throw new Error("Provider not found.");
153
+ throw new Error(SOLANA_PROVIDER_NOT_FOUND);
136
154
  }
137
155
  if (!provider.isConnected) {
138
156
  throw new Error("Provider is not connected.");
@@ -146,7 +164,7 @@ var InjectedSolanaStrategy = class {
146
164
  async signAndSendAllTransactions(transactions) {
147
165
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
148
166
  if (!provider) {
149
- throw new Error("Provider not found.");
167
+ throw new Error(SOLANA_PROVIDER_NOT_FOUND);
150
168
  }
151
169
  if (!provider.isConnected) {
152
170
  throw new Error("Provider is not connected.");
@@ -163,7 +181,7 @@ var InjectedSolanaStrategy = class {
163
181
  async signTransaction(transaction) {
164
182
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
165
183
  if (!provider) {
166
- throw new Error("Provider not found.");
184
+ throw new Error(SOLANA_PROVIDER_NOT_FOUND);
167
185
  }
168
186
  if (!provider.isConnected) {
169
187
  throw new Error("Provider is not connected.");
@@ -174,7 +192,7 @@ var InjectedSolanaStrategy = class {
174
192
  async signAllTransactions(transactions) {
175
193
  const provider = __privateMethod(this, _getProvider, getProvider_fn).call(this);
176
194
  if (!provider) {
177
- throw new Error("Provider not found.");
195
+ throw new Error(SOLANA_PROVIDER_NOT_FOUND);
178
196
  }
179
197
  if (!provider.isConnected) {
180
198
  throw new Error("Provider is not connected.");
@@ -185,22 +203,18 @@ var InjectedSolanaStrategy = class {
185
203
  };
186
204
  _getProvider = new WeakSet();
187
205
  getProvider_fn = function() {
188
- if (typeof window === "undefined") {
206
+ if (!isInstalled()) {
189
207
  return void 0;
190
208
  }
191
- return window?.phantom?.solana;
209
+ return window.phantom.solana;
192
210
  };
193
211
 
194
212
  // src/solana/getProvider.ts
195
213
  async function getProvider(strategy = "injected" /* INJECTED */) {
196
214
  if (strategy === "injected") {
197
215
  const provider = new InjectedSolanaStrategy();
198
- try {
199
- await provider.load();
200
- return provider;
201
- } catch (error) {
202
- throw new Error("Provider not found.");
203
- }
216
+ await provider.load();
217
+ return provider;
204
218
  } else {
205
219
  throw new Error("Invalid provider type.");
206
220
  }
@@ -240,9 +254,6 @@ function triggerEvent(event, ...args) {
240
254
  // src/solana/connect.ts
241
255
  async function connect({ onlyIfTrusted = false } = {}) {
242
256
  const provider = await getProvider();
243
- if (!provider) {
244
- throw new Error("Provider not found.");
245
- }
246
257
  if (provider.isConnected) {
247
258
  return provider.getAccount();
248
259
  }
@@ -271,25 +282,13 @@ async function connect({ onlyIfTrusted = false } = {}) {
271
282
  // src/solana/disconnect.ts
272
283
  async function disconnect() {
273
284
  const provider = await getProvider();
274
- if (!provider) {
275
- throw new Error("Provider not found.");
276
- }
277
285
  await provider.disconnect();
278
286
  triggerEvent("disconnect");
279
287
  }
280
288
 
281
- // src/solana/getAccount.ts
282
- async function getAccount() {
283
- const provider = await getProvider();
284
- return provider.getAccount();
285
- }
286
-
287
289
  // src/solana/signAndSendTransaction.ts
288
290
  async function signAndSendTransaction(transaction) {
289
291
  const provider = await getProvider();
290
- if (!provider) {
291
- throw new Error("Provider not found.");
292
- }
293
292
  if (!provider.isConnected) {
294
293
  await provider.connect({ onlyIfTrusted: false });
295
294
  }
@@ -299,9 +298,6 @@ async function signAndSendTransaction(transaction) {
299
298
  // src/solana/signAndSendAllTransactions.ts
300
299
  async function signAndSendAllTransactions(transactions) {
301
300
  const provider = await getProvider();
302
- if (!provider) {
303
- throw new Error("Provider not found.");
304
- }
305
301
  if (!provider.isConnected) {
306
302
  await provider.connect({ onlyIfTrusted: false });
307
303
  }
@@ -311,9 +307,6 @@ async function signAndSendAllTransactions(transactions) {
311
307
  // src/solana/signTransaction.ts
312
308
  async function signTransaction(transaction) {
313
309
  const provider = await getProvider();
314
- if (!provider) {
315
- throw new Error("Provider not found.");
316
- }
317
310
  if (!provider.isConnected) {
318
311
  await provider.connect({ onlyIfTrusted: false });
319
312
  }
@@ -323,9 +316,6 @@ async function signTransaction(transaction) {
323
316
  // src/solana/signAllTransactions.ts
324
317
  async function signAllTransactions(transactions) {
325
318
  const provider = await getProvider();
326
- if (!provider) {
327
- throw new Error("Provider not found.");
328
- }
329
319
  if (!provider.isConnected) {
330
320
  await provider.connect({ onlyIfTrusted: false });
331
321
  }
@@ -335,9 +325,6 @@ async function signAllTransactions(transactions) {
335
325
  // src/solana/signMessage.ts
336
326
  async function signMessage(message, display) {
337
327
  const provider = await getProvider();
338
- if (!provider) {
339
- throw new Error("Provider not found.");
340
- }
341
328
  if (!provider.isConnected) {
342
329
  await provider.connect({ onlyIfTrusted: false });
343
330
  }
@@ -353,7 +340,7 @@ var Solana = class {
353
340
  get publicKey() {
354
341
  return this._publicKey;
355
342
  }
356
- get connected() {
343
+ get isConnected() {
357
344
  return this._publicKey !== null;
358
345
  }
359
346
  async connect(options) {
@@ -393,21 +380,6 @@ var Solana = class {
393
380
  async switchNetwork(_network) {
394
381
  return Promise.resolve();
395
382
  }
396
- async getPublicKey() {
397
- if (this._publicKey) {
398
- return this._publicKey;
399
- }
400
- try {
401
- const account = await getAccount();
402
- this._publicKey = account || null;
403
- return this._publicKey;
404
- } catch {
405
- return null;
406
- }
407
- }
408
- isConnected() {
409
- return this._publicKey !== null;
410
- }
411
383
  on(event, listener) {
412
384
  addEventListener(event, listener);
413
385
  }