@tronweb3/tronwallet-adapter-trust 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +20 -1
- package/lib/cjs/adapter.js +76 -51
- package/lib/cjs/adapter.js.map +1 -1
- package/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/lib/esm/adapter.js +77 -52
- package/lib/esm/adapter.js.map +1 -1
- package/lib/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/lib/types/adapter.d.ts +10 -18
- package/lib/types/adapter.d.ts.map +1 -1
- package/lib/umd/index.js +777 -361
- package/lib/umd/index.min.js +1 -1
- package/package.json +10 -10
- package/src/adapter.ts +76 -67
package/lib/umd/index.js
CHANGED
|
@@ -363,82 +363,7 @@
|
|
|
363
363
|
return eventemitter3.exports;
|
|
364
364
|
}
|
|
365
365
|
|
|
366
|
-
var
|
|
367
|
-
|
|
368
|
-
function requireAdapter$2 () {
|
|
369
|
-
if (hasRequiredAdapter$2) return adapter$1;
|
|
370
|
-
hasRequiredAdapter$2 = 1;
|
|
371
|
-
var __importDefault = (adapter$1 && adapter$1.__importDefault) || function (mod) {
|
|
372
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
373
|
-
};
|
|
374
|
-
Object.defineProperty(adapter$1, "__esModule", { value: true });
|
|
375
|
-
adapter$1.Adapter = adapter$1.AdapterState = adapter$1.WalletReadyState = adapter$1.EventEmitter = void 0;
|
|
376
|
-
const eventemitter3_1 = __importDefault(requireEventemitter3());
|
|
377
|
-
adapter$1.EventEmitter = eventemitter3_1.default;
|
|
378
|
-
/**
|
|
379
|
-
* Wallet ready state.
|
|
380
|
-
*/
|
|
381
|
-
var WalletReadyState;
|
|
382
|
-
(function (WalletReadyState) {
|
|
383
|
-
/**
|
|
384
|
-
* Adapter will start to check if wallet exists after adapter instance is created.
|
|
385
|
-
*/
|
|
386
|
-
WalletReadyState["Loading"] = "Loading";
|
|
387
|
-
/**
|
|
388
|
-
* When checking ends and wallet is not found, readyState will be NotFound.
|
|
389
|
-
*/
|
|
390
|
-
WalletReadyState["NotFound"] = "NotFound";
|
|
391
|
-
/**
|
|
392
|
-
* When checking ends and wallet is found, readyState will be Found.
|
|
393
|
-
*/
|
|
394
|
-
WalletReadyState["Found"] = "Found";
|
|
395
|
-
})(WalletReadyState || (adapter$1.WalletReadyState = WalletReadyState = {}));
|
|
396
|
-
/**
|
|
397
|
-
* Adapter state
|
|
398
|
-
*/
|
|
399
|
-
var AdapterState;
|
|
400
|
-
(function (AdapterState) {
|
|
401
|
-
/**
|
|
402
|
-
* If adapter is checking the wallet, the state is Loading.
|
|
403
|
-
*/
|
|
404
|
-
AdapterState["Loading"] = "Loading";
|
|
405
|
-
/**
|
|
406
|
-
* If wallet is not installed, the state is NotFound.
|
|
407
|
-
*/
|
|
408
|
-
AdapterState["NotFound"] = "NotFound";
|
|
409
|
-
/**
|
|
410
|
-
* If wallet is installed but is not connected to current Dapp, the state is Disconnected.
|
|
411
|
-
*/
|
|
412
|
-
AdapterState["Disconnect"] = "Disconnected";
|
|
413
|
-
/**
|
|
414
|
-
* Wallet is connected to current Dapp.
|
|
415
|
-
*/
|
|
416
|
-
AdapterState["Connected"] = "Connected";
|
|
417
|
-
})(AdapterState || (adapter$1.AdapterState = AdapterState = {}));
|
|
418
|
-
class Adapter extends eventemitter3_1.default {
|
|
419
|
-
get connected() {
|
|
420
|
-
return this.state === AdapterState.Connected;
|
|
421
|
-
}
|
|
422
|
-
/**
|
|
423
|
-
* Some wallets such as TronLink don't support disconnect() method.
|
|
424
|
-
*/
|
|
425
|
-
disconnect() {
|
|
426
|
-
console.info("The current adapter doesn't support disconnect by DApp.");
|
|
427
|
-
return Promise.resolve();
|
|
428
|
-
}
|
|
429
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
430
|
-
multiSign(...args) {
|
|
431
|
-
return Promise.reject("The current wallet doesn't support multiSign.");
|
|
432
|
-
}
|
|
433
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
434
|
-
switchChain(_chainId) {
|
|
435
|
-
return Promise.reject("The current wallet doesn't support switch chain.");
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
adapter$1.Adapter = Adapter;
|
|
439
|
-
|
|
440
|
-
return adapter$1;
|
|
441
|
-
}
|
|
366
|
+
var typedData = {};
|
|
442
367
|
|
|
443
368
|
var errors = {};
|
|
444
369
|
|
|
@@ -448,7 +373,7 @@
|
|
|
448
373
|
if (hasRequiredErrors) return errors;
|
|
449
374
|
hasRequiredErrors = 1;
|
|
450
375
|
Object.defineProperty(errors, "__esModule", { value: true });
|
|
451
|
-
errors.WalletGetNetworkError = errors.WalletSwitchChainError = errors.WalletWindowClosedError = errors.WalletWalletLoadError = errors.WalletSignTransactionError = errors.WalletSignMessageError = errors.WalletDisconnectionError = errors.WalletConnectionError = errors.WalletDisconnectedError = errors.WalletNotSelectedError = errors.WalletNotFoundError = errors.WalletError = void 0;
|
|
376
|
+
errors.WalletSignTypedDataError = errors.WalletGetNetworkError = errors.WalletSwitchChainError = errors.WalletWindowClosedError = errors.WalletWalletLoadError = errors.WalletSignTransactionError = errors.WalletSignMessageError = errors.WalletDisconnectionError = errors.WalletConnectionError = errors.WalletDisconnectedError = errors.WalletNotSelectedError = errors.WalletNotFoundError = errors.WalletError = void 0;
|
|
452
377
|
class WalletError extends Error {
|
|
453
378
|
constructor(message, error) {
|
|
454
379
|
super(message);
|
|
@@ -460,10 +385,9 @@
|
|
|
460
385
|
* Occurs when wallet is not installed.
|
|
461
386
|
*/
|
|
462
387
|
class WalletNotFoundError extends WalletError {
|
|
463
|
-
constructor() {
|
|
464
|
-
super(
|
|
388
|
+
constructor(message, error) {
|
|
389
|
+
super(message || 'The wallet is not found.', error);
|
|
465
390
|
this.name = 'WalletNotFoundError';
|
|
466
|
-
this.message = 'The wallet is not found.';
|
|
467
391
|
}
|
|
468
392
|
}
|
|
469
393
|
errors.WalletNotFoundError = WalletNotFoundError;
|
|
@@ -544,10 +468,9 @@
|
|
|
544
468
|
* Occurs when walletconnect QR window is closed.
|
|
545
469
|
*/
|
|
546
470
|
class WalletWindowClosedError extends WalletError {
|
|
547
|
-
constructor() {
|
|
548
|
-
super(
|
|
471
|
+
constructor(message, error) {
|
|
472
|
+
super(message || 'The QR window is closed.', error);
|
|
549
473
|
this.name = 'WalletWindowClosedError';
|
|
550
|
-
this.message = 'The QR window is closed.';
|
|
551
474
|
}
|
|
552
475
|
}
|
|
553
476
|
errors.WalletWindowClosedError = WalletWindowClosedError;
|
|
@@ -571,10 +494,66 @@
|
|
|
571
494
|
}
|
|
572
495
|
}
|
|
573
496
|
errors.WalletGetNetworkError = WalletGetNetworkError;
|
|
497
|
+
/**
|
|
498
|
+
* Occurs when call `signTypedData()`.
|
|
499
|
+
*/
|
|
500
|
+
class WalletSignTypedDataError extends WalletError {
|
|
501
|
+
constructor() {
|
|
502
|
+
super(...arguments);
|
|
503
|
+
this.name = 'WalletSignTypedDataError';
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
errors.WalletSignTypedDataError = WalletSignTypedDataError;
|
|
574
507
|
|
|
575
508
|
return errors;
|
|
576
509
|
}
|
|
577
510
|
|
|
511
|
+
var hasRequiredTypedData;
|
|
512
|
+
|
|
513
|
+
function requireTypedData () {
|
|
514
|
+
if (hasRequiredTypedData) return typedData;
|
|
515
|
+
hasRequiredTypedData = 1;
|
|
516
|
+
Object.defineProperty(typedData, "__esModule", { value: true });
|
|
517
|
+
typedData.normalizeAndValidateTypedData = normalizeAndValidateTypedData;
|
|
518
|
+
const errors_js_1 = requireErrors();
|
|
519
|
+
function isPlainObject(value) {
|
|
520
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Validate a TypedData payload and return a normalized copy safe to pass to wallets.
|
|
524
|
+
*
|
|
525
|
+
* Current normalization: convert `domain.chainId` from string to number (some wallets,
|
|
526
|
+
* e.g. TronLink, require a numeric chainId).
|
|
527
|
+
*
|
|
528
|
+
* Throws {@link WalletSignTypedDataError} if the payload is not a valid TypedData object.
|
|
529
|
+
*/
|
|
530
|
+
function normalizeAndValidateTypedData(typedData) {
|
|
531
|
+
if (!isPlainObject(typedData)) {
|
|
532
|
+
throw new errors_js_1.WalletSignTypedDataError('typedData must be an object.');
|
|
533
|
+
}
|
|
534
|
+
if (!isPlainObject(typedData.domain)) {
|
|
535
|
+
throw new errors_js_1.WalletSignTypedDataError('typedData.domain must be an object.');
|
|
536
|
+
}
|
|
537
|
+
if (!isPlainObject(typedData.types)) {
|
|
538
|
+
throw new errors_js_1.WalletSignTypedDataError('typedData.types must be an object.');
|
|
539
|
+
}
|
|
540
|
+
if (!isPlainObject(typedData.message)) {
|
|
541
|
+
throw new errors_js_1.WalletSignTypedDataError('typedData.message must be an object.');
|
|
542
|
+
}
|
|
543
|
+
const { chainId } = typedData.domain;
|
|
544
|
+
if (typeof chainId === 'string') {
|
|
545
|
+
const parsed = Number(chainId);
|
|
546
|
+
if (!Number.isFinite(parsed)) {
|
|
547
|
+
throw new errors_js_1.WalletSignTypedDataError(`Invalid domain.chainId: ${chainId}.`);
|
|
548
|
+
}
|
|
549
|
+
return Object.assign(Object.assign({}, typedData), { domain: Object.assign(Object.assign({}, typedData.domain), { chainId: parsed }) });
|
|
550
|
+
}
|
|
551
|
+
return typedData;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
return typedData;
|
|
555
|
+
}
|
|
556
|
+
|
|
578
557
|
var types$1 = {};
|
|
579
558
|
|
|
580
559
|
var hasRequiredTypes$1;
|
|
@@ -583,7 +562,47 @@
|
|
|
583
562
|
if (hasRequiredTypes$1) return types$1;
|
|
584
563
|
hasRequiredTypes$1 = 1;
|
|
585
564
|
Object.defineProperty(types$1, "__esModule", { value: true });
|
|
586
|
-
types$1.ChainNetwork = types$1.NetworkType = void 0;
|
|
565
|
+
types$1.TIP6963RequestProviderEventName = types$1.TIP6963AnnounceProviderEventName = types$1.ChainNetwork = types$1.NetworkType = types$1.AdapterState = types$1.WalletReadyState = void 0;
|
|
566
|
+
/**
|
|
567
|
+
* Wallet ready state.
|
|
568
|
+
*/
|
|
569
|
+
var WalletReadyState;
|
|
570
|
+
(function (WalletReadyState) {
|
|
571
|
+
/**
|
|
572
|
+
* Adapter will start to check if wallet exists after adapter instance is created.
|
|
573
|
+
*/
|
|
574
|
+
WalletReadyState["Loading"] = "Loading";
|
|
575
|
+
/**
|
|
576
|
+
* When checking ends and wallet is not found, readyState will be NotFound.
|
|
577
|
+
*/
|
|
578
|
+
WalletReadyState["NotFound"] = "NotFound";
|
|
579
|
+
/**
|
|
580
|
+
* When checking ends and wallet is found, readyState will be Found.
|
|
581
|
+
*/
|
|
582
|
+
WalletReadyState["Found"] = "Found";
|
|
583
|
+
})(WalletReadyState || (types$1.WalletReadyState = WalletReadyState = {}));
|
|
584
|
+
/**
|
|
585
|
+
* Adapter state
|
|
586
|
+
*/
|
|
587
|
+
var AdapterState;
|
|
588
|
+
(function (AdapterState) {
|
|
589
|
+
/**
|
|
590
|
+
* If adapter is checking the wallet, the state is Loading.
|
|
591
|
+
*/
|
|
592
|
+
AdapterState["Loading"] = "Loading";
|
|
593
|
+
/**
|
|
594
|
+
* If wallet is not installed, the state is NotFound.
|
|
595
|
+
*/
|
|
596
|
+
AdapterState["NotFound"] = "NotFound";
|
|
597
|
+
/**
|
|
598
|
+
* If wallet is installed but is not connected to current Dapp, the state is Disconnected.
|
|
599
|
+
*/
|
|
600
|
+
AdapterState["Disconnect"] = "Disconnected";
|
|
601
|
+
/**
|
|
602
|
+
* Wallet is connected to current Dapp.
|
|
603
|
+
*/
|
|
604
|
+
AdapterState["Connected"] = "Connected";
|
|
605
|
+
})(AdapterState || (types$1.AdapterState = AdapterState = {}));
|
|
587
606
|
var NetworkType;
|
|
588
607
|
(function (NetworkType) {
|
|
589
608
|
NetworkType["Mainnet"] = "Mainnet";
|
|
@@ -600,10 +619,65 @@
|
|
|
600
619
|
ChainNetwork["Shasta"] = "Shasta";
|
|
601
620
|
ChainNetwork["Nile"] = "Nile";
|
|
602
621
|
})(ChainNetwork || (types$1.ChainNetwork = ChainNetwork = {}));
|
|
622
|
+
types$1.TIP6963AnnounceProviderEventName = 'TIP6963:announceProvider';
|
|
623
|
+
types$1.TIP6963RequestProviderEventName = 'TIP6963:requestProvider';
|
|
603
624
|
|
|
604
625
|
return types$1;
|
|
605
626
|
}
|
|
606
627
|
|
|
628
|
+
var hasRequiredAdapter$2;
|
|
629
|
+
|
|
630
|
+
function requireAdapter$2 () {
|
|
631
|
+
if (hasRequiredAdapter$2) return adapter$1;
|
|
632
|
+
hasRequiredAdapter$2 = 1;
|
|
633
|
+
var __importDefault = (adapter$1 && adapter$1.__importDefault) || function (mod) {
|
|
634
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
635
|
+
};
|
|
636
|
+
Object.defineProperty(adapter$1, "__esModule", { value: true });
|
|
637
|
+
adapter$1.Adapter = adapter$1.EventEmitter = void 0;
|
|
638
|
+
const eventemitter3_1 = __importDefault(requireEventemitter3());
|
|
639
|
+
adapter$1.EventEmitter = eventemitter3_1.default;
|
|
640
|
+
const typedData_js_1 = requireTypedData();
|
|
641
|
+
const types_js_1 = requireTypes$1();
|
|
642
|
+
class Adapter extends eventemitter3_1.default {
|
|
643
|
+
get connected() {
|
|
644
|
+
return this.state === types_js_1.AdapterState.Connected;
|
|
645
|
+
}
|
|
646
|
+
/**
|
|
647
|
+
* Some wallets such as TronLink don't support disconnect() method.
|
|
648
|
+
*/
|
|
649
|
+
disconnect() {
|
|
650
|
+
console.info("The current adapter doesn't support disconnect by DApp.");
|
|
651
|
+
return Promise.resolve();
|
|
652
|
+
}
|
|
653
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
654
|
+
multiSign(transaction, options = {}) {
|
|
655
|
+
return Promise.reject("The current wallet doesn't support multiSign.");
|
|
656
|
+
}
|
|
657
|
+
signTypedData(typedData) {
|
|
658
|
+
let normalized;
|
|
659
|
+
try {
|
|
660
|
+
normalized = (0, typedData_js_1.normalizeAndValidateTypedData)(typedData);
|
|
661
|
+
}
|
|
662
|
+
catch (error) {
|
|
663
|
+
return Promise.reject(error);
|
|
664
|
+
}
|
|
665
|
+
return this._signTypedData(normalized);
|
|
666
|
+
}
|
|
667
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
668
|
+
_signTypedData(_typedData) {
|
|
669
|
+
return Promise.reject("The current wallet doesn't support signTypedData.");
|
|
670
|
+
}
|
|
671
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
672
|
+
switchChain(_chainId) {
|
|
673
|
+
return Promise.reject("The current wallet doesn't support switch chain.");
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
adapter$1.Adapter = Adapter;
|
|
677
|
+
|
|
678
|
+
return adapter$1;
|
|
679
|
+
}
|
|
680
|
+
|
|
607
681
|
var utils$2 = {};
|
|
608
682
|
|
|
609
683
|
var hasRequiredUtils$2;
|
|
@@ -666,12 +740,312 @@
|
|
|
666
740
|
return utils$2;
|
|
667
741
|
}
|
|
668
742
|
|
|
743
|
+
var addonAdapter = {};
|
|
744
|
+
|
|
745
|
+
var security = {};
|
|
746
|
+
|
|
747
|
+
var hasRequiredSecurity;
|
|
748
|
+
|
|
749
|
+
function requireSecurity () {
|
|
750
|
+
if (hasRequiredSecurity) return security;
|
|
751
|
+
hasRequiredSecurity = 1;
|
|
752
|
+
(function (exports$1) {
|
|
753
|
+
var __awaiter = (security && security.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
754
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
755
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
756
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
757
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
758
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
759
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
760
|
+
});
|
|
761
|
+
};
|
|
762
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
763
|
+
exports$1.defaultSecurityOptions = void 0;
|
|
764
|
+
exports$1.clearCache = clearCache;
|
|
765
|
+
exports$1.fetchJsonWithCache = fetchJsonWithCache;
|
|
766
|
+
exports$1.defaultSecurityOptions = {
|
|
767
|
+
onRiskDetected: (result) => __awaiter(void 0, void 0, void 0, function* () {
|
|
768
|
+
console.log(`[WalletAdapter] Risk detected:`, result);
|
|
769
|
+
}),
|
|
770
|
+
configUrls: [],
|
|
771
|
+
enabled: false,
|
|
772
|
+
timeout: 2000,
|
|
773
|
+
retries: 0,
|
|
774
|
+
cacheTTL: 10 * 60 * 1000,
|
|
775
|
+
};
|
|
776
|
+
function isValidRisk(risk) {
|
|
777
|
+
return (!!risk &&
|
|
778
|
+
typeof risk === 'object' &&
|
|
779
|
+
typeof risk.title === 'string' &&
|
|
780
|
+
risk.title.length > 0 &&
|
|
781
|
+
(risk.noticeType === 1 || risk.noticeType === 2 || risk.noticeType === 3));
|
|
782
|
+
}
|
|
783
|
+
function sanitizeRisk(risk) {
|
|
784
|
+
const clean = { title: risk.title, noticeType: risk.noticeType };
|
|
785
|
+
if (typeof risk.ext === 'string')
|
|
786
|
+
clean.ext = risk.ext;
|
|
787
|
+
if (typeof risk.ios === 'string')
|
|
788
|
+
clean.ios = risk.ios;
|
|
789
|
+
if (typeof risk.and === 'string')
|
|
790
|
+
clean.and = risk.and;
|
|
791
|
+
return clean;
|
|
792
|
+
}
|
|
793
|
+
/**
|
|
794
|
+
* Defensively coerce an arbitrary remote payload into a well-formed RiskConfig.
|
|
795
|
+
*
|
|
796
|
+
* The config comes from a remote URL, so a bad release (or a tampered response)
|
|
797
|
+
* must never break the connect flow. Anything malformed is dropped with a
|
|
798
|
+
* warning rather than thrown: `wallets` must be a record whose values are
|
|
799
|
+
* arrays, and each risk must have a non-empty string `title` and a `noticeType`
|
|
800
|
+
* of 1/2/3. Invalid entries are discarded so downstream merging/consumption
|
|
801
|
+
* only ever sees clean `Risk[]`.
|
|
802
|
+
*/
|
|
803
|
+
function normalizeRiskConfig(data) {
|
|
804
|
+
const source = data && typeof data === 'object' ? data : {};
|
|
805
|
+
const wallets = {};
|
|
806
|
+
if (source.wallets && typeof source.wallets === 'object') {
|
|
807
|
+
for (const [walletName, rawRisks] of Object.entries(source.wallets)) {
|
|
808
|
+
if (!Array.isArray(rawRisks)) {
|
|
809
|
+
console.warn(`[WalletAdapter] Ignoring malformed risks for "${walletName}": expected an array, got ${typeof rawRisks}.`);
|
|
810
|
+
continue;
|
|
811
|
+
}
|
|
812
|
+
const validRisks = [];
|
|
813
|
+
for (const risk of rawRisks) {
|
|
814
|
+
if (isValidRisk(risk)) {
|
|
815
|
+
validRisks.push(sanitizeRisk(risk));
|
|
816
|
+
}
|
|
817
|
+
else {
|
|
818
|
+
console.warn(`[WalletAdapter] Dropping malformed risk entry for "${walletName}":`, risk);
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
if (validRisks.length > 0) {
|
|
822
|
+
wallets[walletName] = validRisks;
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
return {
|
|
827
|
+
v: typeof source.v === 'string' ? source.v : '',
|
|
828
|
+
ts: typeof source.ts === 'number' ? source.ts : 0,
|
|
829
|
+
wallets,
|
|
830
|
+
};
|
|
831
|
+
}
|
|
832
|
+
const _jsonCache = {};
|
|
833
|
+
function clearCache() {
|
|
834
|
+
Object.keys(_jsonCache).forEach((key) => {
|
|
835
|
+
Reflect.deleteProperty(_jsonCache, key);
|
|
836
|
+
});
|
|
837
|
+
}
|
|
838
|
+
function fetchJsonWithCache(options) {
|
|
839
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
840
|
+
const { configUrls = exports$1.defaultSecurityOptions.configUrls, timeout = exports$1.defaultSecurityOptions.timeout, retries = exports$1.defaultSecurityOptions.retries, onConfigFallback, cacheTTL = exports$1.defaultSecurityOptions.cacheTTL, } = options;
|
|
841
|
+
const now = Date.now();
|
|
842
|
+
function fetchOneUrl(url) {
|
|
843
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
844
|
+
const cache = _jsonCache[url];
|
|
845
|
+
if (cache && now - cache.timestamp < cacheTTL) {
|
|
846
|
+
return cache.data;
|
|
847
|
+
}
|
|
848
|
+
function fetchWithTimeout() {
|
|
849
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
850
|
+
return new Promise((resolve, reject) => {
|
|
851
|
+
const controller = new AbortController();
|
|
852
|
+
const timer = setTimeout(() => controller.abort(), timeout);
|
|
853
|
+
fetch(url, { signal: controller.signal })
|
|
854
|
+
.then((resp) => {
|
|
855
|
+
clearTimeout(timer);
|
|
856
|
+
if (!resp.ok)
|
|
857
|
+
reject(new Error('Fetch failed with code: ' + resp.status));
|
|
858
|
+
else
|
|
859
|
+
resp.json().then((data) => resolve(normalizeRiskConfig(data)), reject);
|
|
860
|
+
})
|
|
861
|
+
.catch((err) => {
|
|
862
|
+
clearTimeout(timer);
|
|
863
|
+
reject(err);
|
|
864
|
+
});
|
|
865
|
+
});
|
|
866
|
+
});
|
|
867
|
+
}
|
|
868
|
+
for (let i = 0; i <= retries; i++) {
|
|
869
|
+
try {
|
|
870
|
+
const data = yield fetchWithTimeout();
|
|
871
|
+
_jsonCache[url] = { data, timestamp: Date.now() };
|
|
872
|
+
return data;
|
|
873
|
+
}
|
|
874
|
+
catch (e) {
|
|
875
|
+
console.warn(`[WalletAdapter] Fetch attempt ${i + 1} for ${url} failed:`, e);
|
|
876
|
+
// continue to next retry
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
// All retries failed — let the outer caller decide (onConfigFallback or safe empty config)
|
|
880
|
+
return null;
|
|
881
|
+
});
|
|
882
|
+
}
|
|
883
|
+
const results = yield Promise.all(configUrls.map(fetchOneUrl));
|
|
884
|
+
const configs = results.filter((r) => r !== null);
|
|
885
|
+
if (configs.length > 0) {
|
|
886
|
+
return configs.reduce((merged, config) => {
|
|
887
|
+
var _a;
|
|
888
|
+
if (config.ts > merged.ts) {
|
|
889
|
+
merged.v = config.v;
|
|
890
|
+
merged.ts = config.ts;
|
|
891
|
+
}
|
|
892
|
+
// Pass every risk from every source through to the DApp without
|
|
893
|
+
// deduplication. Conflict resolution (highest severity wins, source
|
|
894
|
+
// weighting, etc.) is the DApp's responsibility — the adapter just
|
|
895
|
+
// delivers the union.
|
|
896
|
+
for (const [wallet, risks] of Object.entries(config.wallets)) {
|
|
897
|
+
merged.wallets[wallet] = [...((_a = merged.wallets[wallet]) !== null && _a !== void 0 ? _a : []), ...risks];
|
|
898
|
+
}
|
|
899
|
+
return merged;
|
|
900
|
+
}, { v: '', ts: 0, wallets: {} });
|
|
901
|
+
}
|
|
902
|
+
// All URLs failed with no cache — call custom fallback or default to safe (allow connection)
|
|
903
|
+
if (onConfigFallback) {
|
|
904
|
+
return normalizeRiskConfig(yield onConfigFallback());
|
|
905
|
+
}
|
|
906
|
+
return { v: '', ts: 0, wallets: {} };
|
|
907
|
+
});
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
} (security));
|
|
911
|
+
return security;
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
var hasRequiredAddonAdapter;
|
|
915
|
+
|
|
916
|
+
function requireAddonAdapter () {
|
|
917
|
+
if (hasRequiredAddonAdapter) return addonAdapter;
|
|
918
|
+
hasRequiredAddonAdapter = 1;
|
|
919
|
+
var __awaiter = (addonAdapter && addonAdapter.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
920
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
921
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
922
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
923
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
924
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
925
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
926
|
+
});
|
|
927
|
+
};
|
|
928
|
+
Object.defineProperty(addonAdapter, "__esModule", { value: true });
|
|
929
|
+
addonAdapter.AddonAdapter = void 0;
|
|
930
|
+
const adapter_js_1 = requireAdapter$2();
|
|
931
|
+
const errors_js_1 = requireErrors();
|
|
932
|
+
const security_js_1 = requireSecurity();
|
|
933
|
+
const types_js_1 = requireTypes$1();
|
|
934
|
+
const utils_js_1 = requireUtils$2();
|
|
935
|
+
/**
|
|
936
|
+
* Class to provide security check for wallets.
|
|
937
|
+
*/
|
|
938
|
+
class AddonAdapter extends adapter_js_1.Adapter {
|
|
939
|
+
constructor(params) {
|
|
940
|
+
super();
|
|
941
|
+
this.commonConfig = {
|
|
942
|
+
checkTimeout: 2 * 1000,
|
|
943
|
+
openAppWithDeeplink: true,
|
|
944
|
+
openUrlWhenWalletNotFound: true,
|
|
945
|
+
securityOptions: security_js_1.defaultSecurityOptions,
|
|
946
|
+
};
|
|
947
|
+
this._securityCheckCache = null;
|
|
948
|
+
this.commonConfig = Object.assign(Object.assign({}, this.commonConfig), params);
|
|
949
|
+
if (typeof this.commonConfig.checkTimeout !== 'number') {
|
|
950
|
+
throw new Error(`[WalletAdapter] config.checkTimeout should be a number`);
|
|
951
|
+
}
|
|
952
|
+
AddonAdapter._validateSecurityOptions(this.commonConfig.securityOptions);
|
|
953
|
+
}
|
|
954
|
+
static _validateSecurityOptions(securityOptions) {
|
|
955
|
+
const { enabled, configUrls } = securityOptions;
|
|
956
|
+
if (enabled && (!configUrls || configUrls.length === 0)) {
|
|
957
|
+
throw new Error(`[WalletAdapter] config.securityOptions.configUrls is required when securityOptions.enabled is true`);
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
/**
|
|
961
|
+
* Update the security options at runtime. The given options are merged into
|
|
962
|
+
* the existing config, validated, and the cached security check result is
|
|
963
|
+
* cleared so the next connect runs a fresh check with the new configuration.
|
|
964
|
+
*/
|
|
965
|
+
updateSecurityOptions(securityOptions) {
|
|
966
|
+
const merged = Object.assign(Object.assign({}, this.commonConfig.securityOptions), securityOptions);
|
|
967
|
+
AddonAdapter._validateSecurityOptions(merged);
|
|
968
|
+
this.commonConfig.securityOptions = merged;
|
|
969
|
+
this._securityCheckCache = null;
|
|
970
|
+
}
|
|
971
|
+
/**
|
|
972
|
+
* Run the pre-connect pipeline (wallet discovery, deeplink/url fallback,
|
|
973
|
+
* security check).
|
|
974
|
+
*
|
|
975
|
+
* @returns `true` when the caller should continue with the actual connect
|
|
976
|
+
* flow, `false` when the adapter is already connected/connecting and the
|
|
977
|
+
* caller should bail out. Throws `WalletNotFoundError` when the wallet
|
|
978
|
+
* cannot be found.
|
|
979
|
+
*/
|
|
980
|
+
_beforeConnect() {
|
|
981
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
982
|
+
if (this.connected || this.connecting)
|
|
983
|
+
return false;
|
|
984
|
+
yield this._checkWallet();
|
|
985
|
+
if (this.readyState === types_js_1.WalletReadyState.NotFound) {
|
|
986
|
+
if ((0, utils_js_1.isInBrowser)() &&
|
|
987
|
+
!this._openAppByDeepLinkIfNeed() &&
|
|
988
|
+
this.commonConfig.openUrlWhenWalletNotFound !== false) {
|
|
989
|
+
window.open(this.url, '_blank');
|
|
990
|
+
}
|
|
991
|
+
throw new errors_js_1.WalletNotFoundError();
|
|
992
|
+
}
|
|
993
|
+
yield this.checkSecurity();
|
|
994
|
+
return true;
|
|
995
|
+
});
|
|
996
|
+
}
|
|
997
|
+
/**
|
|
998
|
+
* Fetch remote config and do risk check.
|
|
999
|
+
* In-flight calls share the same promise (so `onRiskDetected` fires at most
|
|
1000
|
+
* once even on a slow network). After the promise settles, the result is
|
|
1001
|
+
* cached for SECURITY_CHECK_CACHE_TTL; the next call after that window
|
|
1002
|
+
* runs a fresh check.
|
|
1003
|
+
*/
|
|
1004
|
+
checkSecurity() {
|
|
1005
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1006
|
+
if (!this.commonConfig.securityOptions.enabled)
|
|
1007
|
+
return;
|
|
1008
|
+
const cache = this._securityCheckCache;
|
|
1009
|
+
if (cache &&
|
|
1010
|
+
(cache.settledAt === null || Date.now() - cache.settledAt < AddonAdapter.SECURITY_CHECK_CACHE_TTL)) {
|
|
1011
|
+
return cache.promise;
|
|
1012
|
+
}
|
|
1013
|
+
const promise = (() => __awaiter(this, void 0, void 0, function* () {
|
|
1014
|
+
const result = yield (0, security_js_1.fetchJsonWithCache)(this.commonConfig.securityOptions);
|
|
1015
|
+
const risks = result.wallets[this.name];
|
|
1016
|
+
if (risks && risks.length > 0) {
|
|
1017
|
+
const callback = this.commonConfig.securityOptions.onRiskDetected || security_js_1.defaultSecurityOptions.onRiskDetected;
|
|
1018
|
+
yield callback({ risks });
|
|
1019
|
+
}
|
|
1020
|
+
}))();
|
|
1021
|
+
const entry = { promise, settledAt: null };
|
|
1022
|
+
this._securityCheckCache = entry;
|
|
1023
|
+
// The `.finally` chain returns a new promise that mirrors `promise`'s rejection.
|
|
1024
|
+
// Attach a noop `.catch` to avoid an unhandled rejection on that chain — the
|
|
1025
|
+
// original `promise` is still surfaced to callers via the return below.
|
|
1026
|
+
promise
|
|
1027
|
+
.finally(() => {
|
|
1028
|
+
if (this._securityCheckCache === entry) {
|
|
1029
|
+
entry.settledAt = Date.now();
|
|
1030
|
+
}
|
|
1031
|
+
})
|
|
1032
|
+
.catch(() => { });
|
|
1033
|
+
return promise;
|
|
1034
|
+
});
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
addonAdapter.AddonAdapter = AddonAdapter;
|
|
1038
|
+
AddonAdapter.SECURITY_CHECK_CACHE_TTL = 5 * 1000;
|
|
1039
|
+
|
|
1040
|
+
return addonAdapter;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
669
1043
|
var hasRequiredCjs$2;
|
|
670
1044
|
|
|
671
1045
|
function requireCjs$2 () {
|
|
672
1046
|
if (hasRequiredCjs$2) return cjs$1;
|
|
673
1047
|
hasRequiredCjs$2 = 1;
|
|
674
|
-
(function (exports) {
|
|
1048
|
+
(function (exports$1) {
|
|
675
1049
|
var __createBinding = (cjs$1 && cjs$1.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
676
1050
|
if (k2 === undefined) k2 = k;
|
|
677
1051
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -683,14 +1057,17 @@
|
|
|
683
1057
|
if (k2 === undefined) k2 = k;
|
|
684
1058
|
o[k2] = m[k];
|
|
685
1059
|
}));
|
|
686
|
-
var __exportStar = (cjs$1 && cjs$1.__exportStar) || function(m, exports) {
|
|
687
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
1060
|
+
var __exportStar = (cjs$1 && cjs$1.__exportStar) || function(m, exports$1) {
|
|
1061
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports$1, p)) __createBinding(exports$1, m, p);
|
|
688
1062
|
};
|
|
689
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
690
|
-
__exportStar(
|
|
691
|
-
__exportStar(
|
|
692
|
-
__exportStar(
|
|
693
|
-
__exportStar(
|
|
1063
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1064
|
+
__exportStar(requireAdapter$2(), exports$1);
|
|
1065
|
+
__exportStar(requireErrors(), exports$1);
|
|
1066
|
+
__exportStar(requireTypes$1(), exports$1);
|
|
1067
|
+
__exportStar(requireTypedData(), exports$1);
|
|
1068
|
+
__exportStar(requireUtils$2(), exports$1);
|
|
1069
|
+
__exportStar(requireAddonAdapter(), exports$1);
|
|
1070
|
+
__exportStar(requireSecurity(), exports$1);
|
|
694
1071
|
|
|
695
1072
|
} (cjs$1));
|
|
696
1073
|
return cjs$1;
|
|
@@ -724,10 +1101,10 @@
|
|
|
724
1101
|
utils$1.waitTronwebReady = waitTronwebReady;
|
|
725
1102
|
const tronwallet_abstract_adapter_1 = /*@__PURE__*/ requireCjs$2();
|
|
726
1103
|
function supportTron() {
|
|
727
|
-
return !!(window.tron && window.tron.isTronLink);
|
|
1104
|
+
return (0, tronwallet_abstract_adapter_1.isInBrowser)() && !!(window.tron && window.tron.isTronLink);
|
|
728
1105
|
}
|
|
729
1106
|
function supportTronLink() {
|
|
730
|
-
return !!(supportTron() || window.tronLink || window.tronWeb);
|
|
1107
|
+
return (0, tronwallet_abstract_adapter_1.isInBrowser)() && !!(supportTron() || window.tronLink || window.tronWeb);
|
|
731
1108
|
}
|
|
732
1109
|
/**
|
|
733
1110
|
* Detect if in TronLinkApp
|
|
@@ -747,7 +1124,7 @@
|
|
|
747
1124
|
defaultDappIcon = new URL(link.getAttribute('href') || '', location.href).toString();
|
|
748
1125
|
}
|
|
749
1126
|
}
|
|
750
|
-
catch (
|
|
1127
|
+
catch (_a) {
|
|
751
1128
|
// console.error(e);
|
|
752
1129
|
}
|
|
753
1130
|
const { origin, pathname, search, hash } = window.location;
|
|
@@ -794,7 +1171,7 @@
|
|
|
794
1171
|
function requireAdapter$1 () {
|
|
795
1172
|
if (hasRequiredAdapter$1) return adapter;
|
|
796
1173
|
hasRequiredAdapter$1 = 1;
|
|
797
|
-
(function (exports) {
|
|
1174
|
+
(function (exports$1) {
|
|
798
1175
|
var __awaiter = (adapter && adapter.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
799
1176
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
800
1177
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -804,12 +1181,12 @@
|
|
|
804
1181
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
805
1182
|
});
|
|
806
1183
|
};
|
|
807
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
808
|
-
exports.TronLinkAdapter = exports.TronLinkAdapterName = exports.chainIdNetworkMap = void 0;
|
|
809
|
-
exports.getNetworkInfoByTronWeb = getNetworkInfoByTronWeb;
|
|
1184
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1185
|
+
exports$1.TronLinkAdapter = exports$1.TronLinkAdapterName = exports$1.chainIdNetworkMap = void 0;
|
|
1186
|
+
exports$1.getNetworkInfoByTronWeb = getNetworkInfoByTronWeb;
|
|
810
1187
|
const tronwallet_abstract_adapter_1 = /*@__PURE__*/ requireCjs$2();
|
|
811
|
-
const utils_js_1 =
|
|
812
|
-
exports.chainIdNetworkMap = {
|
|
1188
|
+
const utils_js_1 = requireUtils$1();
|
|
1189
|
+
exports$1.chainIdNetworkMap = {
|
|
813
1190
|
'0x2b6653dc': tronwallet_abstract_adapter_1.NetworkType.Mainnet,
|
|
814
1191
|
'0x94a9059e': tronwallet_abstract_adapter_1.NetworkType.Shasta,
|
|
815
1192
|
'0xcd8690dc': tronwallet_abstract_adapter_1.NetworkType.Nile,
|
|
@@ -820,7 +1197,7 @@
|
|
|
820
1197
|
const { blockID = '' } = yield tronWeb.trx.getBlockByNumber(0);
|
|
821
1198
|
const chainId = `0x${blockID.slice(-8)}`;
|
|
822
1199
|
return {
|
|
823
|
-
networkType: exports.chainIdNetworkMap[chainId] || tronwallet_abstract_adapter_1.NetworkType.Unknown,
|
|
1200
|
+
networkType: exports$1.chainIdNetworkMap[chainId] || tronwallet_abstract_adapter_1.NetworkType.Unknown,
|
|
824
1201
|
chainId,
|
|
825
1202
|
fullNode: ((_a = tronWeb.fullNode) === null || _a === void 0 ? void 0 : _a.host) || '',
|
|
826
1203
|
solidityNode: ((_b = tronWeb.solidityNode) === null || _b === void 0 ? void 0 : _b.host) || '',
|
|
@@ -828,61 +1205,18 @@
|
|
|
828
1205
|
};
|
|
829
1206
|
});
|
|
830
1207
|
}
|
|
831
|
-
exports.TronLinkAdapterName = 'TronLink';
|
|
832
|
-
class TronLinkAdapter extends tronwallet_abstract_adapter_1.
|
|
1208
|
+
exports$1.TronLinkAdapterName = 'TronLink';
|
|
1209
|
+
class TronLinkAdapter extends tronwallet_abstract_adapter_1.AddonAdapter {
|
|
833
1210
|
// record if first connect event has emitted or not
|
|
834
1211
|
constructor(config = {}) {
|
|
835
|
-
super();
|
|
836
|
-
this.name = exports.TronLinkAdapterName;
|
|
1212
|
+
super(config);
|
|
1213
|
+
this.name = exports$1.TronLinkAdapterName;
|
|
837
1214
|
this.url = 'https://www.tronlink.org/';
|
|
838
1215
|
this.icon = 'data:image/png;base64,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';
|
|
839
1216
|
this._readyState = (0, tronwallet_abstract_adapter_1.isInBrowser)() ? tronwallet_abstract_adapter_1.WalletReadyState.Loading : tronwallet_abstract_adapter_1.WalletReadyState.NotFound;
|
|
840
|
-
this._state = tronwallet_abstract_adapter_1.AdapterState.Loading;
|
|
1217
|
+
this._state = (0, tronwallet_abstract_adapter_1.isInBrowser)() ? tronwallet_abstract_adapter_1.AdapterState.Loading : tronwallet_abstract_adapter_1.AdapterState.NotFound;
|
|
841
1218
|
// https://github.com/tronprotocol/tips/blob/master/tip-1193.md
|
|
842
1219
|
this._supportNewTronProtocol = false;
|
|
843
|
-
this._tronLinkMessageHandler = (e) => {
|
|
844
|
-
var _a, _b, _c, _d, _e;
|
|
845
|
-
const message = (_a = e.data) === null || _a === void 0 ? void 0 : _a.message;
|
|
846
|
-
if (!message) {
|
|
847
|
-
return;
|
|
848
|
-
}
|
|
849
|
-
if (message.action === 'accountsChanged') {
|
|
850
|
-
setTimeout(() => {
|
|
851
|
-
var _a;
|
|
852
|
-
const preAddr = this.address || '';
|
|
853
|
-
if ((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.ready) {
|
|
854
|
-
const address = message.data.address;
|
|
855
|
-
this.setAddress(address);
|
|
856
|
-
this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
|
|
857
|
-
}
|
|
858
|
-
else {
|
|
859
|
-
this.setAddress(null);
|
|
860
|
-
this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
|
|
861
|
-
}
|
|
862
|
-
this.emit('accountsChanged', this.address || '', preAddr);
|
|
863
|
-
if (!preAddr && this.address) {
|
|
864
|
-
this.emit('connect', this.address);
|
|
865
|
-
}
|
|
866
|
-
else if (preAddr && !this.address) {
|
|
867
|
-
this.emit('disconnect');
|
|
868
|
-
}
|
|
869
|
-
}, 200);
|
|
870
|
-
}
|
|
871
|
-
else if (message.action === 'setNode') {
|
|
872
|
-
this.emit('chainChanged', { chainId: ((_c = (_b = message.data) === null || _b === void 0 ? void 0 : _b.node) === null || _c === void 0 ? void 0 : _c.chainId) || '' });
|
|
873
|
-
}
|
|
874
|
-
else if (message.action === 'connect') {
|
|
875
|
-
const address = ((_e = (_d = this._wallet.tronWeb) === null || _d === void 0 ? void 0 : _d.defaultAddress) === null || _e === void 0 ? void 0 : _e.base58) || '';
|
|
876
|
-
this.setAddress(address);
|
|
877
|
-
this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
|
|
878
|
-
this.emit('connect', address);
|
|
879
|
-
}
|
|
880
|
-
else if (message.action === 'disconnect') {
|
|
881
|
-
this.setAddress(null);
|
|
882
|
-
this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
|
|
883
|
-
this.emit('disconnect');
|
|
884
|
-
}
|
|
885
|
-
};
|
|
886
1220
|
this._onChainChanged = (data) => {
|
|
887
1221
|
this.emit('chainChanged', data);
|
|
888
1222
|
};
|
|
@@ -890,17 +1224,8 @@
|
|
|
890
1224
|
var _a, _b, _c;
|
|
891
1225
|
const preAddr = this.address || '';
|
|
892
1226
|
const curAddr = (((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.tronWeb) && ((_c = (_b = this._wallet) === null || _b === void 0 ? void 0 : _b.tronWeb.defaultAddress) === null || _c === void 0 ? void 0 : _c.base58)) || '';
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
// tronlink will emit accountsChanged many times, only process when connected
|
|
896
|
-
this.setAddress(null);
|
|
897
|
-
this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
|
|
898
|
-
}
|
|
899
|
-
else {
|
|
900
|
-
const address = curAddr;
|
|
901
|
-
this.setAddress(address);
|
|
902
|
-
this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
|
|
903
|
-
}
|
|
1227
|
+
this.setAddress(curAddr ? curAddr : null);
|
|
1228
|
+
this.setState(this.address ? tronwallet_abstract_adapter_1.AdapterState.Connected : tronwallet_abstract_adapter_1.AdapterState.Disconnect);
|
|
904
1229
|
this.emit('accountsChanged', this.address || '', preAddr);
|
|
905
1230
|
if (!preAddr && this.address) {
|
|
906
1231
|
this.emit('connect', this.address);
|
|
@@ -910,8 +1235,9 @@
|
|
|
910
1235
|
}
|
|
911
1236
|
};
|
|
912
1237
|
this._checkPromise = null;
|
|
913
|
-
this._updateWallet = () => {
|
|
1238
|
+
this._updateWallet = () => __awaiter(this, void 0, void 0, function* () {
|
|
914
1239
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
1240
|
+
this._supportNewTronProtocol = false;
|
|
915
1241
|
let state = this.state;
|
|
916
1242
|
let address = this.address;
|
|
917
1243
|
if ((0, tronwallet_abstract_adapter_1.isInMobileBrowser)()) {
|
|
@@ -926,29 +1252,42 @@
|
|
|
926
1252
|
};
|
|
927
1253
|
}
|
|
928
1254
|
address = ((_c = (_b = this._wallet.tronWeb) === null || _b === void 0 ? void 0 : _b.defaultAddress) === null || _c === void 0 ? void 0 : _c.base58) || null;
|
|
929
|
-
|
|
1255
|
+
if (address) {
|
|
1256
|
+
// Only run the security check once the wallet is actually connected.
|
|
1257
|
+
try {
|
|
1258
|
+
yield this.checkSecurity();
|
|
1259
|
+
}
|
|
1260
|
+
catch (_j) {
|
|
1261
|
+
this.setAddress(null);
|
|
1262
|
+
this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
|
|
1263
|
+
return;
|
|
1264
|
+
}
|
|
1265
|
+
state = tronwallet_abstract_adapter_1.AdapterState.Connected;
|
|
1266
|
+
}
|
|
1267
|
+
else {
|
|
1268
|
+
state = tronwallet_abstract_adapter_1.AdapterState.Disconnect;
|
|
1269
|
+
}
|
|
930
1270
|
}
|
|
931
|
-
else if (
|
|
1271
|
+
else if (this.isLegacyTronLinkProvider(window.tron)) {
|
|
932
1272
|
this._supportNewTronProtocol = true;
|
|
933
1273
|
this._wallet = window.tron;
|
|
934
1274
|
this._listenTronEvent();
|
|
935
|
-
|
|
936
|
-
|
|
1275
|
+
try {
|
|
1276
|
+
address = (((_d = this._wallet) === null || _d === void 0 ? void 0 : _d.tronWeb) && ((_f = (_e = this._wallet.tronWeb) === null || _e === void 0 ? void 0 : _e.defaultAddress) === null || _f === void 0 ? void 0 : _f.base58)) || null;
|
|
1277
|
+
state = address ? tronwallet_abstract_adapter_1.AdapterState.Connected : tronwallet_abstract_adapter_1.AdapterState.Disconnect;
|
|
1278
|
+
}
|
|
1279
|
+
catch (e) {
|
|
1280
|
+
console.error('Unknown error: ' + e, ' Please install TronLink extension wallet.');
|
|
1281
|
+
address = null;
|
|
1282
|
+
state = tronwallet_abstract_adapter_1.AdapterState.Disconnect;
|
|
1283
|
+
this._readyState = tronwallet_abstract_adapter_1.WalletReadyState.NotFound;
|
|
1284
|
+
this.emit('readyStateChanged', this.readyState);
|
|
1285
|
+
return;
|
|
1286
|
+
}
|
|
937
1287
|
}
|
|
938
1288
|
else if (window.tronLink) {
|
|
939
1289
|
this._wallet = window.tronLink;
|
|
940
|
-
this.
|
|
941
|
-
address = ((_g = (_f = this._wallet.tronWeb) === null || _f === void 0 ? void 0 : _f.defaultAddress) === null || _g === void 0 ? void 0 : _g.base58) || null;
|
|
942
|
-
state = this._wallet.ready ? tronwallet_abstract_adapter_1.AdapterState.Connected : tronwallet_abstract_adapter_1.AdapterState.Disconnect;
|
|
943
|
-
}
|
|
944
|
-
else if (window.tronWeb) {
|
|
945
|
-
// fake tronLink
|
|
946
|
-
this._wallet = {
|
|
947
|
-
ready: window.tronWeb.ready,
|
|
948
|
-
tronWeb: window.tronWeb,
|
|
949
|
-
request: () => Promise.resolve(true),
|
|
950
|
-
};
|
|
951
|
-
address = ((_h = this._wallet.tronWeb.defaultAddress) === null || _h === void 0 ? void 0 : _h.base58) || null;
|
|
1290
|
+
address = ((_h = (_g = this._wallet.tronWeb) === null || _g === void 0 ? void 0 : _g.defaultAddress) === null || _h === void 0 ? void 0 : _h.base58) || null;
|
|
952
1291
|
state = this._wallet.ready ? tronwallet_abstract_adapter_1.AdapterState.Connected : tronwallet_abstract_adapter_1.AdapterState.Disconnect;
|
|
953
1292
|
}
|
|
954
1293
|
else {
|
|
@@ -963,19 +1302,18 @@
|
|
|
963
1302
|
}
|
|
964
1303
|
this.setAddress(address);
|
|
965
1304
|
this.setState(state);
|
|
966
|
-
};
|
|
1305
|
+
});
|
|
967
1306
|
this.checkReadyInterval = null;
|
|
968
|
-
const { checkTimeout =
|
|
1307
|
+
const { checkTimeout = 5 * 1000, dappIcon = '', dappName = '', openUrlWhenWalletNotFound = true, openTronLinkAppOnMobile = true, openAppWithDeeplink = true, } = config;
|
|
969
1308
|
if (typeof checkTimeout !== 'number') {
|
|
970
1309
|
throw new Error('[TronLinkAdapter] config.checkTimeout should be a number');
|
|
971
1310
|
}
|
|
972
|
-
this.config = {
|
|
973
|
-
checkTimeout,
|
|
1311
|
+
this.config = Object.assign(Object.assign({}, this.commonConfig), { checkTimeout,
|
|
974
1312
|
openTronLinkAppOnMobile,
|
|
1313
|
+
openAppWithDeeplink,
|
|
975
1314
|
openUrlWhenWalletNotFound,
|
|
976
1315
|
dappIcon,
|
|
977
|
-
dappName
|
|
978
|
-
};
|
|
1316
|
+
dappName });
|
|
979
1317
|
this._connecting = false;
|
|
980
1318
|
this._wallet = null;
|
|
981
1319
|
this._address = null;
|
|
@@ -984,9 +1322,20 @@
|
|
|
984
1322
|
this.setState(tronwallet_abstract_adapter_1.AdapterState.NotFound);
|
|
985
1323
|
return;
|
|
986
1324
|
}
|
|
987
|
-
if ((0,
|
|
1325
|
+
if (!(0, tronwallet_abstract_adapter_1.isInMobileBrowser)()) {
|
|
1326
|
+
this._checkWallet().then(() => {
|
|
1327
|
+
if (this.connected) {
|
|
1328
|
+
this.emit('connect', this.address || '');
|
|
1329
|
+
}
|
|
1330
|
+
});
|
|
1331
|
+
}
|
|
1332
|
+
else if ((0, utils_js_1.supportTron)() || ((0, tronwallet_abstract_adapter_1.isInMobileBrowser)() && (window.tronLink || window.tronWeb))) {
|
|
988
1333
|
this._readyState = tronwallet_abstract_adapter_1.WalletReadyState.Found;
|
|
989
|
-
this._updateWallet()
|
|
1334
|
+
this._updateWallet().then(() => {
|
|
1335
|
+
if (this.connected) {
|
|
1336
|
+
this.emit('connect', this.address || '');
|
|
1337
|
+
}
|
|
1338
|
+
});
|
|
990
1339
|
}
|
|
991
1340
|
else {
|
|
992
1341
|
this._checkWallet().then(() => {
|
|
@@ -1039,16 +1388,8 @@
|
|
|
1039
1388
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1040
1389
|
var _a, _b;
|
|
1041
1390
|
try {
|
|
1042
|
-
this.
|
|
1043
|
-
if (this.connected || this.connecting)
|
|
1391
|
+
if (!(yield this._beforeConnect()))
|
|
1044
1392
|
return;
|
|
1045
|
-
yield this._checkWallet();
|
|
1046
|
-
if (this.state === tronwallet_abstract_adapter_1.AdapterState.NotFound) {
|
|
1047
|
-
if (this.config.openUrlWhenWalletNotFound !== false && (0, tronwallet_abstract_adapter_1.isInBrowser)()) {
|
|
1048
|
-
window.open(this.url, '_blank');
|
|
1049
|
-
}
|
|
1050
|
-
throw new tronwallet_abstract_adapter_1.WalletNotFoundError();
|
|
1051
|
-
}
|
|
1052
1393
|
// lower version only support window.tronWeb, no window.tronLink
|
|
1053
1394
|
if (!this._wallet)
|
|
1054
1395
|
return;
|
|
@@ -1079,27 +1420,21 @@
|
|
|
1079
1420
|
}
|
|
1080
1421
|
else if (window.tronLink) {
|
|
1081
1422
|
const wallet = this._wallet;
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
throw new tronwallet_abstract_adapter_1.WalletConnectionError('TronLink wallet is locked or no wallet account is avaliable.');
|
|
1088
|
-
}
|
|
1089
|
-
if (res.code === 4000) {
|
|
1090
|
-
throw new tronwallet_abstract_adapter_1.WalletConnectionError('The same DApp has already initiated a request to connect to TronLink wallet, and the pop-up window has not been closed.');
|
|
1091
|
-
}
|
|
1092
|
-
if (res.code === 4001) {
|
|
1093
|
-
throw new tronwallet_abstract_adapter_1.WalletConnectionError('The user rejected connection.');
|
|
1094
|
-
}
|
|
1423
|
+
const res = yield wallet.request({ method: 'tron_requestAccounts' });
|
|
1424
|
+
if (!res) {
|
|
1425
|
+
// 1. wallet is locked
|
|
1426
|
+
// 2. tronlink is first installed and there is no wallet account
|
|
1427
|
+
throw new tronwallet_abstract_adapter_1.WalletConnectionError('TronLink wallet is locked or no wallet account is avaliable.');
|
|
1095
1428
|
}
|
|
1096
|
-
|
|
1097
|
-
throw new tronwallet_abstract_adapter_1.WalletConnectionError(
|
|
1429
|
+
if (res.code === 4000) {
|
|
1430
|
+
throw new tronwallet_abstract_adapter_1.WalletConnectionError('The same DApp has already initiated a request to connect to TronLink wallet, and the pop-up window has not been closed.');
|
|
1431
|
+
}
|
|
1432
|
+
if (res.code === 4001) {
|
|
1433
|
+
throw new tronwallet_abstract_adapter_1.WalletConnectionError('The user rejected connection.');
|
|
1098
1434
|
}
|
|
1099
1435
|
const address = ((_a = wallet.tronWeb.defaultAddress) === null || _a === void 0 ? void 0 : _a.base58) || '';
|
|
1100
1436
|
this.setAddress(address);
|
|
1101
1437
|
this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
|
|
1102
|
-
this._listenTronLinkEvent();
|
|
1103
1438
|
}
|
|
1104
1439
|
else if (window.tronWeb) {
|
|
1105
1440
|
const wallet = this._wallet;
|
|
@@ -1113,8 +1448,9 @@
|
|
|
1113
1448
|
this.connected && this.emit('connect', this.address || '');
|
|
1114
1449
|
}
|
|
1115
1450
|
catch (error) {
|
|
1116
|
-
|
|
1117
|
-
|
|
1451
|
+
const err = error instanceof tronwallet_abstract_adapter_1.WalletError ? error : new tronwallet_abstract_adapter_1.WalletConnectionError(error === null || error === void 0 ? void 0 : error.message, error);
|
|
1452
|
+
this.emit('error', err);
|
|
1453
|
+
throw err;
|
|
1118
1454
|
}
|
|
1119
1455
|
finally {
|
|
1120
1456
|
this._connecting = false;
|
|
@@ -1126,9 +1462,6 @@
|
|
|
1126
1462
|
if (this._supportNewTronProtocol) {
|
|
1127
1463
|
this._stopListenTronEvent();
|
|
1128
1464
|
}
|
|
1129
|
-
else {
|
|
1130
|
-
this._stopListenTronLinkEvent();
|
|
1131
|
-
}
|
|
1132
1465
|
if (this.state !== tronwallet_abstract_adapter_1.AdapterState.Connected) {
|
|
1133
1466
|
return;
|
|
1134
1467
|
}
|
|
@@ -1137,19 +1470,22 @@
|
|
|
1137
1470
|
this.emit('disconnect');
|
|
1138
1471
|
});
|
|
1139
1472
|
}
|
|
1140
|
-
|
|
1473
|
+
_checkAndSign(action, ErrorConstructor) {
|
|
1141
1474
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1142
1475
|
try {
|
|
1143
1476
|
const wallet = yield this.checkAndGetWallet();
|
|
1144
1477
|
try {
|
|
1145
|
-
return yield wallet
|
|
1478
|
+
return yield action(wallet);
|
|
1146
1479
|
}
|
|
1147
1480
|
catch (error) {
|
|
1148
|
-
if (error instanceof Error) {
|
|
1149
|
-
throw new
|
|
1481
|
+
if (error instanceof Error || (typeof error === 'object' && error.message)) {
|
|
1482
|
+
throw new ErrorConstructor(error.message, error);
|
|
1483
|
+
}
|
|
1484
|
+
else if (typeof error === 'string') {
|
|
1485
|
+
throw new ErrorConstructor(error, new Error(error));
|
|
1150
1486
|
}
|
|
1151
1487
|
else {
|
|
1152
|
-
throw new
|
|
1488
|
+
throw new ErrorConstructor('Unknown error', error);
|
|
1153
1489
|
}
|
|
1154
1490
|
}
|
|
1155
1491
|
}
|
|
@@ -1159,48 +1495,32 @@
|
|
|
1159
1495
|
}
|
|
1160
1496
|
});
|
|
1161
1497
|
}
|
|
1162
|
-
|
|
1498
|
+
signTransaction(transaction) {
|
|
1163
1499
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
catch (error) {
|
|
1179
|
-
this.emit('error', error);
|
|
1180
|
-
throw error;
|
|
1181
|
-
}
|
|
1500
|
+
return this._checkAndSign((wallet) => wallet.tronWeb.trx.sign(transaction), tronwallet_abstract_adapter_1.WalletSignTransactionError);
|
|
1501
|
+
});
|
|
1502
|
+
}
|
|
1503
|
+
/**
|
|
1504
|
+
*
|
|
1505
|
+
* @param transaction transaction to be signed
|
|
1506
|
+
* @param _, false to use tronWeb.trx.multiSign
|
|
1507
|
+
* @param permissionId permissionId for multiSign
|
|
1508
|
+
* @returns
|
|
1509
|
+
*/
|
|
1510
|
+
multiSign(transaction_1) {
|
|
1511
|
+
return __awaiter(this, arguments, void 0, function* (transaction, options = {}) {
|
|
1512
|
+
// multiSign is a transaction signing operation, so it uses WalletSignTransactionError
|
|
1513
|
+
return this._checkAndSign((wallet) => wallet.tronWeb.trx.multiSign(transaction, undefined, options.permissionId), tronwallet_abstract_adapter_1.WalletSignTransactionError);
|
|
1182
1514
|
});
|
|
1183
1515
|
}
|
|
1184
|
-
signMessage(message
|
|
1516
|
+
signMessage(message) {
|
|
1185
1517
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
if (error instanceof Error) {
|
|
1193
|
-
throw new tronwallet_abstract_adapter_1.WalletSignMessageError(error.message, error);
|
|
1194
|
-
}
|
|
1195
|
-
else {
|
|
1196
|
-
throw new tronwallet_abstract_adapter_1.WalletSignMessageError(error, new Error(error));
|
|
1197
|
-
}
|
|
1198
|
-
}
|
|
1199
|
-
}
|
|
1200
|
-
catch (error) {
|
|
1201
|
-
this.emit('error', error);
|
|
1202
|
-
throw error;
|
|
1203
|
-
}
|
|
1518
|
+
return this._checkAndSign((wallet) => __awaiter(this, void 0, void 0, function* () { return wallet.tronWeb.trx.signMessageV2(message); }), tronwallet_abstract_adapter_1.WalletSignMessageError);
|
|
1519
|
+
});
|
|
1520
|
+
}
|
|
1521
|
+
_signTypedData(typedData) {
|
|
1522
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1523
|
+
return this._checkAndSign((wallet) => __awaiter(this, void 0, void 0, function* () { return wallet.tronWeb.trx._signTypedData(typedData.domain, typedData.types, typedData.message); }), tronwallet_abstract_adapter_1.WalletSignTypedDataError);
|
|
1204
1524
|
});
|
|
1205
1525
|
}
|
|
1206
1526
|
/**
|
|
@@ -1243,7 +1563,9 @@
|
|
|
1243
1563
|
}
|
|
1244
1564
|
checkAndGetWallet() {
|
|
1245
1565
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1246
|
-
this.
|
|
1566
|
+
if (this._openAppByDeepLinkIfNeed()) {
|
|
1567
|
+
throw new tronwallet_abstract_adapter_1.WalletNotFoundError();
|
|
1568
|
+
}
|
|
1247
1569
|
yield this._checkWallet();
|
|
1248
1570
|
if (this.state !== tronwallet_abstract_adapter_1.AdapterState.Connected)
|
|
1249
1571
|
throw new tronwallet_abstract_adapter_1.WalletDisconnectedError();
|
|
@@ -1253,34 +1575,32 @@
|
|
|
1253
1575
|
return wallet;
|
|
1254
1576
|
});
|
|
1255
1577
|
}
|
|
1256
|
-
|
|
1257
|
-
this.
|
|
1258
|
-
|
|
1259
|
-
}
|
|
1260
|
-
_stopListenTronLinkEvent() {
|
|
1261
|
-
window.removeEventListener('message', this._tronLinkMessageHandler);
|
|
1262
|
-
}
|
|
1263
|
-
checkIfOpenTronLink() {
|
|
1264
|
-
const { dappName = '', dappIcon = '' } = this.config;
|
|
1265
|
-
if (this.config.openTronLinkAppOnMobile === false) {
|
|
1266
|
-
return;
|
|
1267
|
-
}
|
|
1268
|
-
if ((0, utils_js_1.openTronLink)({ dappIcon, dappName })) {
|
|
1269
|
-
throw new tronwallet_abstract_adapter_1.WalletNotFoundError();
|
|
1578
|
+
_openAppByDeepLinkIfNeed() {
|
|
1579
|
+
if (this.config.openAppWithDeeplink === false || this.config.openTronLinkAppOnMobile === false) {
|
|
1580
|
+
return false;
|
|
1270
1581
|
}
|
|
1582
|
+
const { dappName = '', dappIcon = '' } = this.config;
|
|
1583
|
+
return (0, utils_js_1.openTronLink)({ dappIcon, dappName });
|
|
1271
1584
|
}
|
|
1272
1585
|
// following code is for TIP-1193
|
|
1273
1586
|
_listenTronEvent() {
|
|
1587
|
+
var _a, _b;
|
|
1274
1588
|
this._stopListenTronEvent();
|
|
1275
|
-
this._stopListenTronLinkEvent();
|
|
1276
1589
|
const wallet = this._wallet;
|
|
1277
|
-
wallet.on('chainChanged', this._onChainChanged);
|
|
1278
|
-
wallet.on('accountsChanged', this._onAccountsChanged);
|
|
1590
|
+
(_a = wallet.on) === null || _a === void 0 ? void 0 : _a.call(wallet, 'chainChanged', this._onChainChanged);
|
|
1591
|
+
(_b = wallet.on) === null || _b === void 0 ? void 0 : _b.call(wallet, 'accountsChanged', this._onAccountsChanged);
|
|
1279
1592
|
}
|
|
1280
1593
|
_stopListenTronEvent() {
|
|
1594
|
+
var _a, _b;
|
|
1281
1595
|
const wallet = this._wallet;
|
|
1282
|
-
wallet.removeListener('chainChanged', this._onChainChanged);
|
|
1283
|
-
wallet.removeListener('accountsChanged', this._onAccountsChanged);
|
|
1596
|
+
(_a = wallet.removeListener) === null || _a === void 0 ? void 0 : _a.call(wallet, 'chainChanged', this._onChainChanged);
|
|
1597
|
+
(_b = wallet.removeListener) === null || _b === void 0 ? void 0 : _b.call(wallet, 'accountsChanged', this._onAccountsChanged);
|
|
1598
|
+
}
|
|
1599
|
+
isLegacyTronLinkProvider(provider) {
|
|
1600
|
+
return !!(provider === null || provider === void 0 ? void 0 : provider.isTronLink);
|
|
1601
|
+
}
|
|
1602
|
+
hasDesktopLegacyTronLinkProvider() {
|
|
1603
|
+
return this.isLegacyTronLinkProvider(window.tron) || !!window.tronLink;
|
|
1284
1604
|
}
|
|
1285
1605
|
/**
|
|
1286
1606
|
* check if wallet exists by interval, the promise only resolve when wallet detected or timeout
|
|
@@ -1293,18 +1613,89 @@
|
|
|
1293
1613
|
if (this._checkPromise) {
|
|
1294
1614
|
return this._checkPromise;
|
|
1295
1615
|
}
|
|
1616
|
+
if ((0, tronwallet_abstract_adapter_1.isInBrowser)() && !(0, tronwallet_abstract_adapter_1.isInMobileBrowser)()) {
|
|
1617
|
+
// Desktop: use TIP-6963 event-based discovery with fallback
|
|
1618
|
+
this._checkPromise = new Promise((resolve) => {
|
|
1619
|
+
let handled = false;
|
|
1620
|
+
let timer = null;
|
|
1621
|
+
let handler = null;
|
|
1622
|
+
const cleanupDesktopDetection = () => {
|
|
1623
|
+
if (timer) {
|
|
1624
|
+
clearTimeout(timer);
|
|
1625
|
+
timer = null;
|
|
1626
|
+
}
|
|
1627
|
+
if (typeof window !== 'undefined' && handler) {
|
|
1628
|
+
window.removeEventListener(tronwallet_abstract_adapter_1.TIP6963AnnounceProviderEventName, handler);
|
|
1629
|
+
}
|
|
1630
|
+
};
|
|
1631
|
+
const finishWithLegacyDetection = () => {
|
|
1632
|
+
if (handled) {
|
|
1633
|
+
return;
|
|
1634
|
+
}
|
|
1635
|
+
handled = true;
|
|
1636
|
+
cleanupDesktopDetection();
|
|
1637
|
+
if (typeof window === 'undefined') {
|
|
1638
|
+
resolve(false);
|
|
1639
|
+
return;
|
|
1640
|
+
}
|
|
1641
|
+
// Fallback to legacy detection
|
|
1642
|
+
this._updateWallet();
|
|
1643
|
+
const isSupport = this.state !== tronwallet_abstract_adapter_1.AdapterState.NotFound;
|
|
1644
|
+
this._readyState = isSupport ? tronwallet_abstract_adapter_1.WalletReadyState.Found : tronwallet_abstract_adapter_1.WalletReadyState.NotFound;
|
|
1645
|
+
this.emit('readyStateChanged', this._readyState);
|
|
1646
|
+
resolve(isSupport);
|
|
1647
|
+
};
|
|
1648
|
+
timer = setTimeout(finishWithLegacyDetection, this.config.checkTimeout);
|
|
1649
|
+
handler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
1650
|
+
var _a, _b;
|
|
1651
|
+
if (handled) {
|
|
1652
|
+
return;
|
|
1653
|
+
}
|
|
1654
|
+
const { info, provider } = event.detail;
|
|
1655
|
+
const isTronLinkProvider = info.name === 'TronLink';
|
|
1656
|
+
if (isTronLinkProvider) {
|
|
1657
|
+
handled = true;
|
|
1658
|
+
this._supportNewTronProtocol = true;
|
|
1659
|
+
this._wallet = provider;
|
|
1660
|
+
try {
|
|
1661
|
+
yield this.checkSecurity();
|
|
1662
|
+
}
|
|
1663
|
+
catch (_c) {
|
|
1664
|
+
this.setAddress(null);
|
|
1665
|
+
this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
|
|
1666
|
+
this._readyState = tronwallet_abstract_adapter_1.WalletReadyState.Found;
|
|
1667
|
+
this.emit('readyStateChanged', this.readyState);
|
|
1668
|
+
resolve(true);
|
|
1669
|
+
return;
|
|
1670
|
+
}
|
|
1671
|
+
this._listenTronEvent();
|
|
1672
|
+
this._readyState = tronwallet_abstract_adapter_1.WalletReadyState.Found;
|
|
1673
|
+
const address = (((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.tronWeb) && ((_b = this._wallet.tronWeb.defaultAddress) === null || _b === void 0 ? void 0 : _b.base58)) || null;
|
|
1674
|
+
const state = address ? tronwallet_abstract_adapter_1.AdapterState.Connected : tronwallet_abstract_adapter_1.AdapterState.Disconnect;
|
|
1675
|
+
this.setAddress(address);
|
|
1676
|
+
this.setState(state);
|
|
1677
|
+
this.emit('readyStateChanged', this.readyState);
|
|
1678
|
+
cleanupDesktopDetection();
|
|
1679
|
+
resolve(true);
|
|
1680
|
+
}
|
|
1681
|
+
});
|
|
1682
|
+
window.addEventListener(tronwallet_abstract_adapter_1.TIP6963AnnounceProviderEventName, handler);
|
|
1683
|
+
window.dispatchEvent(new Event(tronwallet_abstract_adapter_1.TIP6963RequestProviderEventName));
|
|
1684
|
+
});
|
|
1685
|
+
return this._checkPromise;
|
|
1686
|
+
}
|
|
1687
|
+
// Mobile: use legacy polling detection
|
|
1296
1688
|
const interval = 100;
|
|
1297
|
-
const checkTronTimes = Math.floor(2000 / interval);
|
|
1298
1689
|
const maxTimes = Math.floor(this.config.checkTimeout / interval);
|
|
1299
1690
|
let times = 0, timer;
|
|
1300
1691
|
this._checkPromise = new Promise((resolve) => {
|
|
1301
1692
|
const check = () => {
|
|
1302
1693
|
times++;
|
|
1303
|
-
|
|
1694
|
+
this._updateWallet();
|
|
1695
|
+
const isSupport = !!((0, tronwallet_abstract_adapter_1.isInMobileBrowser)() && (window.tronLink || window.tronWeb));
|
|
1304
1696
|
if (isSupport || times > maxTimes) {
|
|
1305
1697
|
timer && clearInterval(timer);
|
|
1306
1698
|
this._readyState = isSupport ? tronwallet_abstract_adapter_1.WalletReadyState.Found : tronwallet_abstract_adapter_1.WalletReadyState.NotFound;
|
|
1307
|
-
this._updateWallet();
|
|
1308
1699
|
this.emit('readyStateChanged', this.readyState);
|
|
1309
1700
|
resolve(isSupport);
|
|
1310
1701
|
}
|
|
@@ -1349,7 +1740,7 @@
|
|
|
1349
1740
|
}
|
|
1350
1741
|
}
|
|
1351
1742
|
}
|
|
1352
|
-
exports.TronLinkAdapter = TronLinkAdapter;
|
|
1743
|
+
exports$1.TronLinkAdapter = TronLinkAdapter;
|
|
1353
1744
|
|
|
1354
1745
|
} (adapter));
|
|
1355
1746
|
return adapter;
|
|
@@ -1372,7 +1763,7 @@
|
|
|
1372
1763
|
function requireCjs$1 () {
|
|
1373
1764
|
if (hasRequiredCjs$1) return cjs;
|
|
1374
1765
|
hasRequiredCjs$1 = 1;
|
|
1375
|
-
(function (exports) {
|
|
1766
|
+
(function (exports$1) {
|
|
1376
1767
|
var __createBinding = (cjs && cjs.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
1377
1768
|
if (k2 === undefined) k2 = k;
|
|
1378
1769
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -1384,13 +1775,13 @@
|
|
|
1384
1775
|
if (k2 === undefined) k2 = k;
|
|
1385
1776
|
o[k2] = m[k];
|
|
1386
1777
|
}));
|
|
1387
|
-
var __exportStar = (cjs && cjs.__exportStar) || function(m, exports) {
|
|
1388
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
1778
|
+
var __exportStar = (cjs && cjs.__exportStar) || function(m, exports$1) {
|
|
1779
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports$1, p)) __createBinding(exports$1, m, p);
|
|
1389
1780
|
};
|
|
1390
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1391
|
-
__exportStar(
|
|
1392
|
-
__exportStar(
|
|
1393
|
-
__exportStar(
|
|
1781
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1782
|
+
__exportStar(requireAdapter$1(), exports$1);
|
|
1783
|
+
__exportStar(requireTypes(), exports$1);
|
|
1784
|
+
__exportStar(requireUtils$1(), exports$1);
|
|
1394
1785
|
|
|
1395
1786
|
} (cjs));
|
|
1396
1787
|
return cjs;
|
|
@@ -1403,11 +1794,11 @@
|
|
|
1403
1794
|
function requireUtils () {
|
|
1404
1795
|
if (hasRequiredUtils) return utils;
|
|
1405
1796
|
hasRequiredUtils = 1;
|
|
1406
|
-
(function (exports) {
|
|
1407
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1408
|
-
exports.isTrustApp = void 0;
|
|
1409
|
-
exports.supportTrust = supportTrust;
|
|
1410
|
-
exports.openTrustWallet = openTrustWallet;
|
|
1797
|
+
(function (exports$1) {
|
|
1798
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1799
|
+
exports$1.isTrustApp = void 0;
|
|
1800
|
+
exports$1.supportTrust = supportTrust;
|
|
1801
|
+
exports$1.openTrustWallet = openTrustWallet;
|
|
1411
1802
|
const tronwallet_abstract_adapter_1 = /*@__PURE__*/ requireCjs$2();
|
|
1412
1803
|
function supportTrust() {
|
|
1413
1804
|
return typeof window !== 'undefined' && !!(window.trustwallet && window.trustwallet.tronLink);
|
|
@@ -1418,9 +1809,9 @@
|
|
|
1418
1809
|
}
|
|
1419
1810
|
return false;
|
|
1420
1811
|
};
|
|
1421
|
-
exports.isTrustApp = isTrustApp;
|
|
1812
|
+
exports$1.isTrustApp = isTrustApp;
|
|
1422
1813
|
function openTrustWallet() {
|
|
1423
|
-
if (!(0, exports.isTrustApp)() && (0, tronwallet_abstract_adapter_1.isInMobileBrowser)()) {
|
|
1814
|
+
if (!(0, exports$1.isTrustApp)() && (0, tronwallet_abstract_adapter_1.isInMobileBrowser)()) {
|
|
1424
1815
|
window.location.href = 'https://link.trustwallet.com/open_url?url=' + encodeURIComponent(window.location.href);
|
|
1425
1816
|
return true;
|
|
1426
1817
|
}
|
|
@@ -1436,7 +1827,7 @@
|
|
|
1436
1827
|
function requireAdapter () {
|
|
1437
1828
|
if (hasRequiredAdapter) return adapter$2;
|
|
1438
1829
|
hasRequiredAdapter = 1;
|
|
1439
|
-
(function (exports) {
|
|
1830
|
+
(function (exports$1) {
|
|
1440
1831
|
var __awaiter = (adapter$2 && adapter$2.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
1441
1832
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1442
1833
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -1446,31 +1837,40 @@
|
|
|
1446
1837
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1447
1838
|
});
|
|
1448
1839
|
};
|
|
1449
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1450
|
-
exports.TrustAdapter = exports.TrustAdapterName = void 0;
|
|
1840
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1841
|
+
exports$1.TrustAdapter = exports$1.TrustAdapterName = void 0;
|
|
1451
1842
|
const tronwallet_abstract_adapter_1 = /*@__PURE__*/ requireCjs$2();
|
|
1452
1843
|
const tronwallet_adapter_tronlink_1 = /*@__PURE__*/ requireCjs$1();
|
|
1453
|
-
const utils_js_1 =
|
|
1454
|
-
exports.TrustAdapterName = 'Trust';
|
|
1455
|
-
class TrustAdapter extends tronwallet_abstract_adapter_1.
|
|
1844
|
+
const utils_js_1 = requireUtils();
|
|
1845
|
+
exports$1.TrustAdapterName = 'Trust';
|
|
1846
|
+
class TrustAdapter extends tronwallet_abstract_adapter_1.AddonAdapter {
|
|
1456
1847
|
constructor(config = {}) {
|
|
1457
|
-
super();
|
|
1458
|
-
this.name = exports.TrustAdapterName;
|
|
1848
|
+
super(config);
|
|
1849
|
+
this.name = exports$1.TrustAdapterName;
|
|
1459
1850
|
this.url = 'https://trustwallet.com';
|
|
1460
1851
|
this.icon = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTgiIGhlaWdodD0iNjUiIHZpZXdCb3g9IjAgMCA1OCA2NSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgOS4zODk0OUwyOC44OTA3IDBWNjUuMDA0MkM4LjI1NDUgNTYuMzM2OSAwIDM5LjcyNDggMCAzMC4zMzUzVjkuMzg5NDlaIiBmaWxsPSIjMDUwMEZGIi8+CjxwYXRoIGQ9Ik01Ny43ODIyIDkuMzg5NDlMMjguODkxNSAwVjY1LjAwNDJDNDkuNTI3NyA1Ni4zMzY5IDU3Ljc4MjIgMzkuNzI0OCA1Ny43ODIyIDMwLjMzNTNWOS4zODk0OVoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8yMjAxXzY5NDIpIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMjIwMV82OTQyIiB4MT0iNTEuMzYxNSIgeTE9Ii00LjE1MjkzIiB4Mj0iMjkuNTM4NCIgeTI9IjY0LjUxNDciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agb2Zmc2V0PSIwLjAyMTEyIiBzdG9wLWNvbG9yPSIjMDAwMEZGIi8+CjxzdG9wIG9mZnNldD0iMC4wNzYyNDIzIiBzdG9wLWNvbG9yPSIjMDA5NEZGIi8+CjxzdG9wIG9mZnNldD0iMC4xNjMwODkiIHN0b3AtY29sb3I9IiM0OEZGOTEiLz4KPHN0b3Agb2Zmc2V0PSIwLjQyMDA0OSIgc3RvcC1jb2xvcj0iIzAwOTRGRiIvPgo8c3RvcCBvZmZzZXQ9IjAuNjgyODg2IiBzdG9wLWNvbG9yPSIjMDAzOEZGIi8+CjxzdG9wIG9mZnNldD0iMC45MDI0NjUiIHN0b3AtY29sb3I9IiMwNTAwRkYiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K';
|
|
1461
1852
|
this._readyState = (0, tronwallet_abstract_adapter_1.isInBrowser)() ? tronwallet_abstract_adapter_1.WalletReadyState.Loading : tronwallet_abstract_adapter_1.WalletReadyState.NotFound;
|
|
1462
1853
|
this._state = tronwallet_abstract_adapter_1.AdapterState.Loading;
|
|
1463
|
-
this.messageHandler = (e) => {
|
|
1854
|
+
this.messageHandler = (e) => __awaiter(this, void 0, void 0, function* () {
|
|
1464
1855
|
var _a, _b, _c;
|
|
1465
1856
|
const message = (_a = e.data) === null || _a === void 0 ? void 0 : _a.message;
|
|
1466
1857
|
if (!message) {
|
|
1467
1858
|
return;
|
|
1468
1859
|
}
|
|
1469
1860
|
if (message.action === 'accountsChanged') {
|
|
1470
|
-
setTimeout(() => {
|
|
1861
|
+
setTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
1471
1862
|
var _a;
|
|
1472
1863
|
const preAddr = this.address || '';
|
|
1473
1864
|
if ((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.ready) {
|
|
1865
|
+
// Gate the connect transition with the security check.
|
|
1866
|
+
try {
|
|
1867
|
+
yield this.checkSecurity();
|
|
1868
|
+
}
|
|
1869
|
+
catch (_b) {
|
|
1870
|
+
this.setAddress(null);
|
|
1871
|
+
this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
|
|
1872
|
+
return;
|
|
1873
|
+
}
|
|
1474
1874
|
const address = message.data.address;
|
|
1475
1875
|
this.setAddress(address);
|
|
1476
1876
|
this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
|
|
@@ -1489,12 +1889,25 @@
|
|
|
1489
1889
|
else if (preAddr && !this.address) {
|
|
1490
1890
|
this.emit('disconnect');
|
|
1491
1891
|
}
|
|
1492
|
-
}, 200);
|
|
1892
|
+
}), 200);
|
|
1493
1893
|
}
|
|
1494
1894
|
else if (message.action === 'connect') {
|
|
1495
1895
|
const isCurConnected = this.connected;
|
|
1496
1896
|
const preAddress = this.address || '';
|
|
1497
1897
|
const address = ((_c = (_b = this._wallet.tronWeb) === null || _b === void 0 ? void 0 : _b.defaultAddress) === null || _c === void 0 ? void 0 : _c.base58) || '';
|
|
1898
|
+
// Trust may post a `connect` message before the address is available;
|
|
1899
|
+
// ignore it so we don't report a connection (and emit connect) with no address.
|
|
1900
|
+
if (!address) {
|
|
1901
|
+
return;
|
|
1902
|
+
}
|
|
1903
|
+
try {
|
|
1904
|
+
yield this.checkSecurity();
|
|
1905
|
+
}
|
|
1906
|
+
catch (_d) {
|
|
1907
|
+
this.setAddress(null);
|
|
1908
|
+
this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
|
|
1909
|
+
return;
|
|
1910
|
+
}
|
|
1498
1911
|
this.setAddress(address);
|
|
1499
1912
|
this.setState(tronwallet_abstract_adapter_1.AdapterState.Connected);
|
|
1500
1913
|
if (!isCurConnected) {
|
|
@@ -1509,18 +1922,31 @@
|
|
|
1509
1922
|
this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
|
|
1510
1923
|
this.emit('disconnect');
|
|
1511
1924
|
}
|
|
1512
|
-
};
|
|
1925
|
+
});
|
|
1513
1926
|
this._checkPromise = null;
|
|
1514
|
-
this._updateWallet = () => {
|
|
1927
|
+
this._updateWallet = () => __awaiter(this, void 0, void 0, function* () {
|
|
1515
1928
|
var _a, _b;
|
|
1516
1929
|
let state = this.state;
|
|
1517
1930
|
let address = this.address;
|
|
1518
1931
|
if ((0, utils_js_1.supportTrust)()) {
|
|
1519
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
1520
1932
|
this._wallet = window.trustwallet.tronLink;
|
|
1521
1933
|
this._listenEvent();
|
|
1522
1934
|
address = ((_b = (_a = this._wallet.tronWeb) === null || _a === void 0 ? void 0 : _a.defaultAddress) === null || _b === void 0 ? void 0 : _b.base58) || null;
|
|
1523
|
-
|
|
1935
|
+
if (address) {
|
|
1936
|
+
// Only run the security check once the wallet is actually connected.
|
|
1937
|
+
try {
|
|
1938
|
+
yield this.checkSecurity();
|
|
1939
|
+
}
|
|
1940
|
+
catch (_c) {
|
|
1941
|
+
this.setAddress(null);
|
|
1942
|
+
this.setState(tronwallet_abstract_adapter_1.AdapterState.Disconnect);
|
|
1943
|
+
return;
|
|
1944
|
+
}
|
|
1945
|
+
state = tronwallet_abstract_adapter_1.AdapterState.Connected;
|
|
1946
|
+
}
|
|
1947
|
+
else {
|
|
1948
|
+
state = tronwallet_abstract_adapter_1.AdapterState.Disconnect;
|
|
1949
|
+
}
|
|
1524
1950
|
}
|
|
1525
1951
|
else {
|
|
1526
1952
|
this._wallet = null;
|
|
@@ -1529,16 +1955,8 @@
|
|
|
1529
1955
|
}
|
|
1530
1956
|
this.setAddress(address);
|
|
1531
1957
|
this.setState(state);
|
|
1532
|
-
};
|
|
1533
|
-
|
|
1534
|
-
if (typeof checkTimeout !== 'number') {
|
|
1535
|
-
throw new Error('[TrustAdapter] config.checkTimeout should be a number');
|
|
1536
|
-
}
|
|
1537
|
-
this.config = {
|
|
1538
|
-
checkTimeout,
|
|
1539
|
-
openAppWithDeeplink,
|
|
1540
|
-
openUrlWhenWalletNotFound,
|
|
1541
|
-
};
|
|
1958
|
+
});
|
|
1959
|
+
this.config = Object.assign({}, this.commonConfig);
|
|
1542
1960
|
this._connecting = false;
|
|
1543
1961
|
this._wallet = null;
|
|
1544
1962
|
this._address = null;
|
|
@@ -1549,7 +1967,11 @@
|
|
|
1549
1967
|
}
|
|
1550
1968
|
if ((0, utils_js_1.supportTrust)()) {
|
|
1551
1969
|
this._readyState = tronwallet_abstract_adapter_1.WalletReadyState.Found;
|
|
1552
|
-
this._updateWallet()
|
|
1970
|
+
this._updateWallet().then(() => {
|
|
1971
|
+
if (this.connected) {
|
|
1972
|
+
this.emit('connect', this.address || '');
|
|
1973
|
+
}
|
|
1974
|
+
});
|
|
1553
1975
|
}
|
|
1554
1976
|
else {
|
|
1555
1977
|
this._checkWallet().then(() => {
|
|
@@ -1601,34 +2023,21 @@
|
|
|
1601
2023
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1602
2024
|
var _a;
|
|
1603
2025
|
try {
|
|
1604
|
-
this.
|
|
1605
|
-
if (this.connected || this.connecting)
|
|
2026
|
+
if (!(yield this._beforeConnect()))
|
|
1606
2027
|
return;
|
|
1607
|
-
yield this._checkWallet();
|
|
1608
|
-
if (this.state === tronwallet_abstract_adapter_1.AdapterState.NotFound) {
|
|
1609
|
-
if (this.config.openUrlWhenWalletNotFound !== false && (0, tronwallet_abstract_adapter_1.isInBrowser)()) {
|
|
1610
|
-
window.open(this.url, '_blank');
|
|
1611
|
-
}
|
|
1612
|
-
throw new tronwallet_abstract_adapter_1.WalletNotFoundError();
|
|
1613
|
-
}
|
|
1614
2028
|
if (!this._wallet)
|
|
1615
2029
|
return;
|
|
1616
2030
|
this._connecting = true;
|
|
1617
2031
|
const wallet = this._wallet;
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
throw new tronwallet_abstract_adapter_1.WalletConnectionError('Request connect error.');
|
|
1622
|
-
}
|
|
1623
|
-
if (res.code === 4000) {
|
|
1624
|
-
throw new tronwallet_abstract_adapter_1.WalletConnectionError('The same DApp has already initiated a request to connect to trustwallet, and the pop-up window has not been closed.');
|
|
1625
|
-
}
|
|
1626
|
-
if (res.code === 4001) {
|
|
1627
|
-
throw new tronwallet_abstract_adapter_1.WalletConnectionError('The user rejected connection.');
|
|
1628
|
-
}
|
|
2032
|
+
const res = yield wallet.request({ method: 'tron_requestAccounts' });
|
|
2033
|
+
if (!res) {
|
|
2034
|
+
throw new tronwallet_abstract_adapter_1.WalletConnectionError('Request connect error.');
|
|
1629
2035
|
}
|
|
1630
|
-
|
|
1631
|
-
throw new tronwallet_abstract_adapter_1.WalletConnectionError(
|
|
2036
|
+
if (res.code === 4000) {
|
|
2037
|
+
throw new tronwallet_abstract_adapter_1.WalletConnectionError('The same DApp has already initiated a request to connect to trustwallet, and the pop-up window has not been closed.');
|
|
2038
|
+
}
|
|
2039
|
+
if (res.code === 4001) {
|
|
2040
|
+
throw new tronwallet_abstract_adapter_1.WalletConnectionError('The user rejected connection.');
|
|
1632
2041
|
}
|
|
1633
2042
|
const address = ((_a = wallet.tronWeb.defaultAddress) === null || _a === void 0 ? void 0 : _a.base58) || '';
|
|
1634
2043
|
this.setAddress(address);
|
|
@@ -1637,8 +2046,9 @@
|
|
|
1637
2046
|
this.connected && this.emit('connect', this.address || '');
|
|
1638
2047
|
}
|
|
1639
2048
|
catch (error) {
|
|
1640
|
-
|
|
1641
|
-
|
|
2049
|
+
const err = error instanceof tronwallet_abstract_adapter_1.WalletError ? error : new tronwallet_abstract_adapter_1.WalletConnectionError(error === null || error === void 0 ? void 0 : error.message, error);
|
|
2050
|
+
this.emit('error', err);
|
|
2051
|
+
throw err;
|
|
1642
2052
|
}
|
|
1643
2053
|
finally {
|
|
1644
2054
|
this._connecting = false;
|
|
@@ -1656,12 +2066,12 @@
|
|
|
1656
2066
|
this.emit('disconnect');
|
|
1657
2067
|
});
|
|
1658
2068
|
}
|
|
1659
|
-
signTransaction(transaction
|
|
2069
|
+
signTransaction(transaction) {
|
|
1660
2070
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1661
2071
|
try {
|
|
1662
2072
|
const wallet = yield this.checkAndGetWallet();
|
|
1663
2073
|
try {
|
|
1664
|
-
return yield wallet.tronWeb.trx.sign(transaction
|
|
2074
|
+
return yield wallet.tronWeb.trx.sign(transaction);
|
|
1665
2075
|
}
|
|
1666
2076
|
catch (error) {
|
|
1667
2077
|
if (error instanceof Error || (typeof error === 'object' && error.message)) {
|
|
@@ -1681,12 +2091,12 @@
|
|
|
1681
2091
|
}
|
|
1682
2092
|
});
|
|
1683
2093
|
}
|
|
1684
|
-
multiSign(
|
|
1685
|
-
return __awaiter(this,
|
|
2094
|
+
multiSign(transaction_1) {
|
|
2095
|
+
return __awaiter(this, arguments, void 0, function* (transaction, options = {}) {
|
|
1686
2096
|
try {
|
|
1687
2097
|
const wallet = yield this.checkAndGetWallet();
|
|
1688
2098
|
try {
|
|
1689
|
-
return yield wallet.tronWeb.trx.multiSign(transaction,
|
|
2099
|
+
return yield wallet.tronWeb.trx.multiSign(transaction, undefined, options.permissionId);
|
|
1690
2100
|
}
|
|
1691
2101
|
catch (error) {
|
|
1692
2102
|
if (error instanceof Error || (typeof error === 'object' && error.message)) {
|
|
@@ -1706,12 +2116,12 @@
|
|
|
1706
2116
|
}
|
|
1707
2117
|
});
|
|
1708
2118
|
}
|
|
1709
|
-
signMessage(message
|
|
2119
|
+
signMessage(message) {
|
|
1710
2120
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1711
2121
|
try {
|
|
1712
2122
|
const wallet = yield this.checkAndGetWallet();
|
|
1713
2123
|
try {
|
|
1714
|
-
return yield wallet.tronWeb.trx.signMessageV2(message
|
|
2124
|
+
return yield wallet.tronWeb.trx.signMessageV2(message);
|
|
1715
2125
|
}
|
|
1716
2126
|
catch (error) {
|
|
1717
2127
|
if (error instanceof Error || (typeof error === 'object' && error.message)) {
|
|
@@ -1758,6 +2168,12 @@
|
|
|
1758
2168
|
throw new tronwallet_abstract_adapter_1.WalletNotFoundError();
|
|
1759
2169
|
}
|
|
1760
2170
|
}
|
|
2171
|
+
_openAppByDeepLinkIfNeed() {
|
|
2172
|
+
if (this.config.openAppWithDeeplink === false) {
|
|
2173
|
+
return false;
|
|
2174
|
+
}
|
|
2175
|
+
return (0, utils_js_1.openTrustWallet)();
|
|
2176
|
+
}
|
|
1761
2177
|
/**
|
|
1762
2178
|
* check if wallet exists by interval, the promise only resolve when wallet detected or timeout
|
|
1763
2179
|
* @returns if trustwallet exists
|
|
@@ -1800,7 +2216,7 @@
|
|
|
1800
2216
|
}
|
|
1801
2217
|
}
|
|
1802
2218
|
}
|
|
1803
|
-
exports.TrustAdapter = TrustAdapter;
|
|
2219
|
+
exports$1.TrustAdapter = TrustAdapter;
|
|
1804
2220
|
|
|
1805
2221
|
} (adapter$2));
|
|
1806
2222
|
return adapter$2;
|
|
@@ -1811,7 +2227,7 @@
|
|
|
1811
2227
|
function requireCjs () {
|
|
1812
2228
|
if (hasRequiredCjs) return cjs$2;
|
|
1813
2229
|
hasRequiredCjs = 1;
|
|
1814
|
-
(function (exports) {
|
|
2230
|
+
(function (exports$1) {
|
|
1815
2231
|
var __createBinding = (cjs$2 && cjs$2.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
1816
2232
|
if (k2 === undefined) k2 = k;
|
|
1817
2233
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -1823,12 +2239,12 @@
|
|
|
1823
2239
|
if (k2 === undefined) k2 = k;
|
|
1824
2240
|
o[k2] = m[k];
|
|
1825
2241
|
}));
|
|
1826
|
-
var __exportStar = (cjs$2 && cjs$2.__exportStar) || function(m, exports) {
|
|
1827
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
2242
|
+
var __exportStar = (cjs$2 && cjs$2.__exportStar) || function(m, exports$1) {
|
|
2243
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports$1, p)) __createBinding(exports$1, m, p);
|
|
1828
2244
|
};
|
|
1829
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1830
|
-
__exportStar(
|
|
1831
|
-
__exportStar(
|
|
2245
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2246
|
+
__exportStar(requireAdapter(), exports$1);
|
|
2247
|
+
__exportStar(requireUtils(), exports$1);
|
|
1832
2248
|
|
|
1833
2249
|
} (cjs$2));
|
|
1834
2250
|
return cjs$2;
|