@aptos-labs/wallet-adapter-core 3.8.0 → 3.10.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/CHANGELOG.md +12 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +72 -5
- package/dist/index.mjs +72 -5
- package/package.json +6 -3
- package/src/WalletCore.ts +47 -7
- package/src/ga/index.ts +37 -0
- package/src/version.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @aptos-labs/wallet-adapter-core
|
|
2
2
|
|
|
3
|
+
## 3.10.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 41f9485: Implement GA4
|
|
8
|
+
|
|
9
|
+
## 3.9.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 6be2a06: Convert uppercase network name to lowercase in NetworkInfo
|
|
14
|
+
|
|
3
15
|
## 3.8.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -187,6 +187,7 @@ declare class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
187
187
|
private readonly walletStandardCore;
|
|
188
188
|
private _connecting;
|
|
189
189
|
private _connected;
|
|
190
|
+
private readonly ga4;
|
|
190
191
|
/**
|
|
191
192
|
* Core functionality constructor.
|
|
192
193
|
* For legacy wallet adapter v1 support we expect the dapp to pass in wallet plugins,
|
|
@@ -206,6 +207,7 @@ declare class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
206
207
|
* @param standardWallet An AIP-62 standard compatible wallet
|
|
207
208
|
*/
|
|
208
209
|
private standardizeStandardWalletToPluginWalletType;
|
|
210
|
+
private recordEvent;
|
|
209
211
|
/**
|
|
210
212
|
* Helper function to ensure wallet exists
|
|
211
213
|
*
|
package/dist/index.js
CHANGED
|
@@ -514,6 +514,41 @@ var WalletStandardCore = class {
|
|
|
514
514
|
}
|
|
515
515
|
};
|
|
516
516
|
|
|
517
|
+
// src/ga/index.ts
|
|
518
|
+
var GA4 = class {
|
|
519
|
+
constructor() {
|
|
520
|
+
this.aptosGAID = "G-GNVVWBL3J9";
|
|
521
|
+
this.injectGA(this.aptosGAID);
|
|
522
|
+
}
|
|
523
|
+
gtag(a, b, c) {
|
|
524
|
+
let dataLayer = window.dataLayer || [];
|
|
525
|
+
dataLayer.push(arguments);
|
|
526
|
+
}
|
|
527
|
+
injectGA(gaID) {
|
|
528
|
+
if (typeof window === "undefined")
|
|
529
|
+
return;
|
|
530
|
+
if (!gaID)
|
|
531
|
+
return;
|
|
532
|
+
const head = document.getElementsByTagName("head")[0];
|
|
533
|
+
var myScript = document.createElement("script");
|
|
534
|
+
myScript.setAttribute(
|
|
535
|
+
"src",
|
|
536
|
+
`https://www.googletagmanager.com/gtag/js?id=${gaID}`
|
|
537
|
+
);
|
|
538
|
+
const that = this;
|
|
539
|
+
myScript.onload = function() {
|
|
540
|
+
that.gtag("js", new Date());
|
|
541
|
+
that.gtag("config", `${gaID}`, {
|
|
542
|
+
send_page_view: false
|
|
543
|
+
});
|
|
544
|
+
};
|
|
545
|
+
head.insertBefore(myScript, head.children[1]);
|
|
546
|
+
}
|
|
547
|
+
};
|
|
548
|
+
|
|
549
|
+
// src/version.ts
|
|
550
|
+
var WALLET_ADAPTER_CORE_VERSION = "3.10.0";
|
|
551
|
+
|
|
517
552
|
// src/WalletCore.ts
|
|
518
553
|
var WalletCore = class extends import_eventemitter32.default {
|
|
519
554
|
constructor(plugins) {
|
|
@@ -528,6 +563,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
528
563
|
this.walletStandardCore = new WalletStandardCore();
|
|
529
564
|
this._connecting = false;
|
|
530
565
|
this._connected = false;
|
|
566
|
+
this.ga4 = new GA4();
|
|
531
567
|
this.standardizeStandardWalletToPluginWalletType = (standardWallet) => {
|
|
532
568
|
var _a, _b;
|
|
533
569
|
let standardWalletConvertedToWallet = {
|
|
@@ -604,6 +640,16 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
604
640
|
});
|
|
605
641
|
this._standard_wallets = aptosStandardWallets;
|
|
606
642
|
}
|
|
643
|
+
recordEvent(eventName, additionalInfo) {
|
|
644
|
+
var _a, _b;
|
|
645
|
+
this.ga4.gtag("event", `wallet_adapter_${eventName}`, {
|
|
646
|
+
wallet: (_a = this._wallet) == null ? void 0 : _a.name,
|
|
647
|
+
network: (_b = this._network) == null ? void 0 : _b.name,
|
|
648
|
+
adapter_core_version: WALLET_ADAPTER_CORE_VERSION,
|
|
649
|
+
send_to: "G-GNVVWBL3J9",
|
|
650
|
+
...additionalInfo
|
|
651
|
+
});
|
|
652
|
+
}
|
|
607
653
|
ensureWalletExists(wallet) {
|
|
608
654
|
if (!wallet) {
|
|
609
655
|
throw new WalletNotConnectedError().name;
|
|
@@ -683,21 +729,32 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
683
729
|
return;
|
|
684
730
|
}
|
|
685
731
|
setNetwork(network) {
|
|
686
|
-
var _a;
|
|
732
|
+
var _a, _b, _c;
|
|
687
733
|
if (network === null) {
|
|
688
734
|
this._network = null;
|
|
689
735
|
return;
|
|
690
736
|
}
|
|
691
737
|
if ((_a = this._wallet) == null ? void 0 : _a.isAIP62Standard) {
|
|
692
738
|
const standardizeNetwork = network;
|
|
739
|
+
this.recordEvent("network_change", {
|
|
740
|
+
from: (_b = this._network) == null ? void 0 : _b.name,
|
|
741
|
+
to: standardizeNetwork.name
|
|
742
|
+
});
|
|
693
743
|
this._network = {
|
|
694
|
-
name: standardizeNetwork.name,
|
|
744
|
+
name: standardizeNetwork.name.toLowerCase(),
|
|
695
745
|
chainId: standardizeNetwork.chainId.toString(),
|
|
696
746
|
url: standardizeNetwork.url
|
|
697
747
|
};
|
|
698
748
|
return;
|
|
699
749
|
}
|
|
700
|
-
this.
|
|
750
|
+
this.recordEvent("network_change", {
|
|
751
|
+
from: (_c = this._network) == null ? void 0 : _c.name,
|
|
752
|
+
to: network.name
|
|
753
|
+
});
|
|
754
|
+
this._network = {
|
|
755
|
+
...network,
|
|
756
|
+
name: network.name.toLowerCase()
|
|
757
|
+
};
|
|
701
758
|
}
|
|
702
759
|
isConnected() {
|
|
703
760
|
return this._connected;
|
|
@@ -784,6 +841,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
784
841
|
await this.setAnsName();
|
|
785
842
|
setLocalStorage(selectedWallet.name);
|
|
786
843
|
this._connected = true;
|
|
844
|
+
this.recordEvent("wallet_connect");
|
|
787
845
|
this.emit("connect", account);
|
|
788
846
|
} catch (error) {
|
|
789
847
|
this.clearData();
|
|
@@ -798,6 +856,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
798
856
|
this.ensureWalletExists(this._wallet);
|
|
799
857
|
await this._wallet.disconnect();
|
|
800
858
|
this.clearData();
|
|
859
|
+
this.recordEvent("wallet_disconnect");
|
|
801
860
|
this.emit("disconnect");
|
|
802
861
|
} catch (error) {
|
|
803
862
|
const errMsg = generalizedErrorMessage(error);
|
|
@@ -808,6 +867,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
808
867
|
try {
|
|
809
868
|
this.ensureWalletExists(this._wallet);
|
|
810
869
|
this.ensureAccountExists(this._account);
|
|
870
|
+
this.recordEvent("sign_and_submit_transaction");
|
|
811
871
|
const payloadData = transactionInput.data;
|
|
812
872
|
const aptosConfig = new import_ts_sdk5.AptosConfig({
|
|
813
873
|
network: convertNetwork(this._network)
|
|
@@ -852,7 +912,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
852
912
|
var _a, _b;
|
|
853
913
|
try {
|
|
854
914
|
this.ensureWalletExists(this._wallet);
|
|
855
|
-
|
|
915
|
+
this.recordEvent("sign_transaction");
|
|
856
916
|
if (this._wallet.signTransaction) {
|
|
857
917
|
if (this._wallet.isAIP62Standard) {
|
|
858
918
|
if ("rawTransaction" in transactionOrPayload) {
|
|
@@ -909,6 +969,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
909
969
|
async signMessage(message) {
|
|
910
970
|
try {
|
|
911
971
|
this.ensureWalletExists(this._wallet);
|
|
972
|
+
this.recordEvent("sign_message");
|
|
912
973
|
if (this._wallet.isAIP62Standard) {
|
|
913
974
|
return await this.walletStandardCore.signMessage(message, this._wallet);
|
|
914
975
|
}
|
|
@@ -923,11 +984,15 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
923
984
|
async submitTransaction(transaction) {
|
|
924
985
|
try {
|
|
925
986
|
this.ensureWalletExists(this._wallet);
|
|
987
|
+
const { additionalSignersAuthenticators } = transaction;
|
|
988
|
+
const transactionType = additionalSignersAuthenticators !== void 0 ? "multi-agent" : "simple";
|
|
989
|
+
this.recordEvent("submit_transaction", {
|
|
990
|
+
transaction_type: transactionType
|
|
991
|
+
});
|
|
926
992
|
if (this._wallet.submitTransaction) {
|
|
927
993
|
const pendingTransaction = await this._wallet.submitTransaction(transaction);
|
|
928
994
|
return pendingTransaction;
|
|
929
995
|
}
|
|
930
|
-
const { additionalSignersAuthenticators } = transaction;
|
|
931
996
|
const aptosConfig = new import_ts_sdk5.AptosConfig({
|
|
932
997
|
network: convertNetwork(this.network)
|
|
933
998
|
});
|
|
@@ -953,6 +1018,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
953
1018
|
async (data) => {
|
|
954
1019
|
this.setAccount(data);
|
|
955
1020
|
await this.setAnsName();
|
|
1021
|
+
this.recordEvent("account_change");
|
|
956
1022
|
this.emit("accountChange", this._account);
|
|
957
1023
|
}
|
|
958
1024
|
);
|
|
@@ -980,6 +1046,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
980
1046
|
try {
|
|
981
1047
|
this.ensureWalletExists(this._wallet);
|
|
982
1048
|
this.ensureAccountExists(this._account);
|
|
1049
|
+
this.recordEvent("sign_message_and_verify");
|
|
983
1050
|
if (this._wallet.isAIP62Standard) {
|
|
984
1051
|
return this.walletStandardCore.signMessageAndVerify(
|
|
985
1052
|
message,
|
package/dist/index.mjs
CHANGED
|
@@ -489,6 +489,41 @@ var WalletStandardCore = class {
|
|
|
489
489
|
}
|
|
490
490
|
};
|
|
491
491
|
|
|
492
|
+
// src/ga/index.ts
|
|
493
|
+
var GA4 = class {
|
|
494
|
+
constructor() {
|
|
495
|
+
this.aptosGAID = "G-GNVVWBL3J9";
|
|
496
|
+
this.injectGA(this.aptosGAID);
|
|
497
|
+
}
|
|
498
|
+
gtag(a, b, c) {
|
|
499
|
+
let dataLayer = window.dataLayer || [];
|
|
500
|
+
dataLayer.push(arguments);
|
|
501
|
+
}
|
|
502
|
+
injectGA(gaID) {
|
|
503
|
+
if (typeof window === "undefined")
|
|
504
|
+
return;
|
|
505
|
+
if (!gaID)
|
|
506
|
+
return;
|
|
507
|
+
const head = document.getElementsByTagName("head")[0];
|
|
508
|
+
var myScript = document.createElement("script");
|
|
509
|
+
myScript.setAttribute(
|
|
510
|
+
"src",
|
|
511
|
+
`https://www.googletagmanager.com/gtag/js?id=${gaID}`
|
|
512
|
+
);
|
|
513
|
+
const that = this;
|
|
514
|
+
myScript.onload = function() {
|
|
515
|
+
that.gtag("js", new Date());
|
|
516
|
+
that.gtag("config", `${gaID}`, {
|
|
517
|
+
send_page_view: false
|
|
518
|
+
});
|
|
519
|
+
};
|
|
520
|
+
head.insertBefore(myScript, head.children[1]);
|
|
521
|
+
}
|
|
522
|
+
};
|
|
523
|
+
|
|
524
|
+
// src/version.ts
|
|
525
|
+
var WALLET_ADAPTER_CORE_VERSION = "3.10.0";
|
|
526
|
+
|
|
492
527
|
// src/WalletCore.ts
|
|
493
528
|
var WalletCore = class extends EventEmitter2 {
|
|
494
529
|
constructor(plugins) {
|
|
@@ -503,6 +538,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
503
538
|
this.walletStandardCore = new WalletStandardCore();
|
|
504
539
|
this._connecting = false;
|
|
505
540
|
this._connected = false;
|
|
541
|
+
this.ga4 = new GA4();
|
|
506
542
|
this.standardizeStandardWalletToPluginWalletType = (standardWallet) => {
|
|
507
543
|
var _a, _b;
|
|
508
544
|
let standardWalletConvertedToWallet = {
|
|
@@ -579,6 +615,16 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
579
615
|
});
|
|
580
616
|
this._standard_wallets = aptosStandardWallets;
|
|
581
617
|
}
|
|
618
|
+
recordEvent(eventName, additionalInfo) {
|
|
619
|
+
var _a, _b;
|
|
620
|
+
this.ga4.gtag("event", `wallet_adapter_${eventName}`, {
|
|
621
|
+
wallet: (_a = this._wallet) == null ? void 0 : _a.name,
|
|
622
|
+
network: (_b = this._network) == null ? void 0 : _b.name,
|
|
623
|
+
adapter_core_version: WALLET_ADAPTER_CORE_VERSION,
|
|
624
|
+
send_to: "G-GNVVWBL3J9",
|
|
625
|
+
...additionalInfo
|
|
626
|
+
});
|
|
627
|
+
}
|
|
582
628
|
ensureWalletExists(wallet) {
|
|
583
629
|
if (!wallet) {
|
|
584
630
|
throw new WalletNotConnectedError().name;
|
|
@@ -658,21 +704,32 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
658
704
|
return;
|
|
659
705
|
}
|
|
660
706
|
setNetwork(network) {
|
|
661
|
-
var _a;
|
|
707
|
+
var _a, _b, _c;
|
|
662
708
|
if (network === null) {
|
|
663
709
|
this._network = null;
|
|
664
710
|
return;
|
|
665
711
|
}
|
|
666
712
|
if ((_a = this._wallet) == null ? void 0 : _a.isAIP62Standard) {
|
|
667
713
|
const standardizeNetwork = network;
|
|
714
|
+
this.recordEvent("network_change", {
|
|
715
|
+
from: (_b = this._network) == null ? void 0 : _b.name,
|
|
716
|
+
to: standardizeNetwork.name
|
|
717
|
+
});
|
|
668
718
|
this._network = {
|
|
669
|
-
name: standardizeNetwork.name,
|
|
719
|
+
name: standardizeNetwork.name.toLowerCase(),
|
|
670
720
|
chainId: standardizeNetwork.chainId.toString(),
|
|
671
721
|
url: standardizeNetwork.url
|
|
672
722
|
};
|
|
673
723
|
return;
|
|
674
724
|
}
|
|
675
|
-
this.
|
|
725
|
+
this.recordEvent("network_change", {
|
|
726
|
+
from: (_c = this._network) == null ? void 0 : _c.name,
|
|
727
|
+
to: network.name
|
|
728
|
+
});
|
|
729
|
+
this._network = {
|
|
730
|
+
...network,
|
|
731
|
+
name: network.name.toLowerCase()
|
|
732
|
+
};
|
|
676
733
|
}
|
|
677
734
|
isConnected() {
|
|
678
735
|
return this._connected;
|
|
@@ -759,6 +816,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
759
816
|
await this.setAnsName();
|
|
760
817
|
setLocalStorage(selectedWallet.name);
|
|
761
818
|
this._connected = true;
|
|
819
|
+
this.recordEvent("wallet_connect");
|
|
762
820
|
this.emit("connect", account);
|
|
763
821
|
} catch (error) {
|
|
764
822
|
this.clearData();
|
|
@@ -773,6 +831,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
773
831
|
this.ensureWalletExists(this._wallet);
|
|
774
832
|
await this._wallet.disconnect();
|
|
775
833
|
this.clearData();
|
|
834
|
+
this.recordEvent("wallet_disconnect");
|
|
776
835
|
this.emit("disconnect");
|
|
777
836
|
} catch (error) {
|
|
778
837
|
const errMsg = generalizedErrorMessage(error);
|
|
@@ -783,6 +842,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
783
842
|
try {
|
|
784
843
|
this.ensureWalletExists(this._wallet);
|
|
785
844
|
this.ensureAccountExists(this._account);
|
|
845
|
+
this.recordEvent("sign_and_submit_transaction");
|
|
786
846
|
const payloadData = transactionInput.data;
|
|
787
847
|
const aptosConfig = new AptosConfig2({
|
|
788
848
|
network: convertNetwork(this._network)
|
|
@@ -827,7 +887,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
827
887
|
var _a, _b;
|
|
828
888
|
try {
|
|
829
889
|
this.ensureWalletExists(this._wallet);
|
|
830
|
-
|
|
890
|
+
this.recordEvent("sign_transaction");
|
|
831
891
|
if (this._wallet.signTransaction) {
|
|
832
892
|
if (this._wallet.isAIP62Standard) {
|
|
833
893
|
if ("rawTransaction" in transactionOrPayload) {
|
|
@@ -884,6 +944,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
884
944
|
async signMessage(message) {
|
|
885
945
|
try {
|
|
886
946
|
this.ensureWalletExists(this._wallet);
|
|
947
|
+
this.recordEvent("sign_message");
|
|
887
948
|
if (this._wallet.isAIP62Standard) {
|
|
888
949
|
return await this.walletStandardCore.signMessage(message, this._wallet);
|
|
889
950
|
}
|
|
@@ -898,11 +959,15 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
898
959
|
async submitTransaction(transaction) {
|
|
899
960
|
try {
|
|
900
961
|
this.ensureWalletExists(this._wallet);
|
|
962
|
+
const { additionalSignersAuthenticators } = transaction;
|
|
963
|
+
const transactionType = additionalSignersAuthenticators !== void 0 ? "multi-agent" : "simple";
|
|
964
|
+
this.recordEvent("submit_transaction", {
|
|
965
|
+
transaction_type: transactionType
|
|
966
|
+
});
|
|
901
967
|
if (this._wallet.submitTransaction) {
|
|
902
968
|
const pendingTransaction = await this._wallet.submitTransaction(transaction);
|
|
903
969
|
return pendingTransaction;
|
|
904
970
|
}
|
|
905
|
-
const { additionalSignersAuthenticators } = transaction;
|
|
906
971
|
const aptosConfig = new AptosConfig2({
|
|
907
972
|
network: convertNetwork(this.network)
|
|
908
973
|
});
|
|
@@ -928,6 +993,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
928
993
|
async (data) => {
|
|
929
994
|
this.setAccount(data);
|
|
930
995
|
await this.setAnsName();
|
|
996
|
+
this.recordEvent("account_change");
|
|
931
997
|
this.emit("accountChange", this._account);
|
|
932
998
|
}
|
|
933
999
|
);
|
|
@@ -955,6 +1021,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
955
1021
|
try {
|
|
956
1022
|
this.ensureWalletExists(this._wallet);
|
|
957
1023
|
this.ensureAccountExists(this._account);
|
|
1024
|
+
this.recordEvent("sign_message_and_verify");
|
|
958
1025
|
if (this._wallet.isAIP62Standard) {
|
|
959
1026
|
return this.walletStandardCore.signMessageAndVerify(
|
|
960
1027
|
message,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aptos-labs/wallet-adapter-core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.10.0",
|
|
4
4
|
"description": "Aptos Wallet Adapter Core",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
],
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/jest": "^29.2.4",
|
|
32
|
+
"@types/node": "^20.10.4",
|
|
32
33
|
"eslint": "^8.15.0",
|
|
33
34
|
"jest": "^29.3.1",
|
|
34
35
|
"ts-jest": "^29.0.3",
|
|
@@ -48,8 +49,10 @@
|
|
|
48
49
|
"aptos": "^1.21.0"
|
|
49
50
|
},
|
|
50
51
|
"scripts": {
|
|
51
|
-
"
|
|
52
|
-
"
|
|
52
|
+
"update-version": "node -p \"'export const WALLET_ADAPTER_CORE_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/version.ts",
|
|
53
|
+
"build-package": "export $(cat .env | xargs) && tsup src/index.ts --format esm,cjs --dts --env.GAID $GAID",
|
|
54
|
+
"build": "pnpm run update-version && pnpm run build-package",
|
|
55
|
+
"dev": "export $(cat .env | xargs) && tsup src/index.ts --format esm,cjs --watch --dts --env.GAID $GAID",
|
|
53
56
|
"test": "jest",
|
|
54
57
|
"lint": "TIMING=1 eslint \"src/**/*.ts*\"",
|
|
55
58
|
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
|
package/src/WalletCore.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { TxnBuilderTypes, Types, BCS } from "aptos";
|
|
2
2
|
import {
|
|
3
|
+
Network,
|
|
3
4
|
AnyRawTransaction,
|
|
4
5
|
AccountAuthenticator,
|
|
5
6
|
AccountAuthenticatorEd25519,
|
|
@@ -62,6 +63,8 @@ import {
|
|
|
62
63
|
AptosStandardWallet,
|
|
63
64
|
WalletStandardCore,
|
|
64
65
|
} from "./AIP62StandardWallets/WalletStandard";
|
|
66
|
+
import { GA4 } from "./ga";
|
|
67
|
+
import { WALLET_ADAPTER_CORE_VERSION } from "./version";
|
|
65
68
|
|
|
66
69
|
export type IAptosWallet = AptosStandardWallet & Wallet;
|
|
67
70
|
|
|
@@ -98,6 +101,9 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
98
101
|
// Indicates whether the dapp is connected with a wallet
|
|
99
102
|
private _connected: boolean = false;
|
|
100
103
|
|
|
104
|
+
// Google Analytics 4 module
|
|
105
|
+
private readonly ga4: GA4 = new GA4();
|
|
106
|
+
|
|
101
107
|
/**
|
|
102
108
|
* Core functionality constructor.
|
|
103
109
|
* For legacy wallet adapter v1 support we expect the dapp to pass in wallet plugins,
|
|
@@ -215,6 +221,16 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
215
221
|
this.emit("standardWalletsAdded", standardWalletConvertedToWallet);
|
|
216
222
|
};
|
|
217
223
|
|
|
224
|
+
private recordEvent(eventName: string, additionalInfo?: object) {
|
|
225
|
+
this.ga4.gtag("event", `wallet_adapter_${eventName}`, {
|
|
226
|
+
wallet: this._wallet?.name,
|
|
227
|
+
network: this._network?.name,
|
|
228
|
+
adapter_core_version: WALLET_ADAPTER_CORE_VERSION,
|
|
229
|
+
send_to: process.env.GAID,
|
|
230
|
+
...additionalInfo,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
|
|
218
234
|
/**
|
|
219
235
|
* Helper function to ensure wallet exists
|
|
220
236
|
*
|
|
@@ -382,14 +398,27 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
382
398
|
}
|
|
383
399
|
if (this._wallet?.isAIP62Standard) {
|
|
384
400
|
const standardizeNetwork = network as StandardNetworkInfo;
|
|
401
|
+
this.recordEvent("network_change", {
|
|
402
|
+
from: this._network?.name,
|
|
403
|
+
to: standardizeNetwork.name,
|
|
404
|
+
});
|
|
385
405
|
this._network = {
|
|
386
|
-
name: standardizeNetwork.name,
|
|
406
|
+
name: standardizeNetwork.name.toLowerCase() as Network,
|
|
387
407
|
chainId: standardizeNetwork.chainId.toString(),
|
|
388
408
|
url: standardizeNetwork.url,
|
|
389
409
|
};
|
|
410
|
+
|
|
390
411
|
return;
|
|
391
412
|
}
|
|
392
|
-
|
|
413
|
+
|
|
414
|
+
this.recordEvent("network_change", {
|
|
415
|
+
from: this._network?.name,
|
|
416
|
+
to: network.name,
|
|
417
|
+
});
|
|
418
|
+
this._network = {
|
|
419
|
+
...(network as NetworkInfo),
|
|
420
|
+
name: network.name.toLowerCase() as Network,
|
|
421
|
+
};
|
|
393
422
|
}
|
|
394
423
|
|
|
395
424
|
/**
|
|
@@ -542,6 +571,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
542
571
|
await this.setAnsName();
|
|
543
572
|
setLocalStorage(selectedWallet.name);
|
|
544
573
|
this._connected = true;
|
|
574
|
+
this.recordEvent("wallet_connect");
|
|
545
575
|
this.emit("connect", account);
|
|
546
576
|
} catch (error: any) {
|
|
547
577
|
this.clearData();
|
|
@@ -564,6 +594,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
564
594
|
this.ensureWalletExists(this._wallet);
|
|
565
595
|
await this._wallet.disconnect();
|
|
566
596
|
this.clearData();
|
|
597
|
+
this.recordEvent("wallet_disconnect");
|
|
567
598
|
this.emit("disconnect");
|
|
568
599
|
} catch (error: any) {
|
|
569
600
|
const errMsg = generalizedErrorMessage(error);
|
|
@@ -586,7 +617,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
586
617
|
try {
|
|
587
618
|
this.ensureWalletExists(this._wallet);
|
|
588
619
|
this.ensureAccountExists(this._account);
|
|
589
|
-
|
|
620
|
+
this.recordEvent("sign_and_submit_transaction");
|
|
590
621
|
// get the payload piece from the input
|
|
591
622
|
const payloadData = transactionInput.data;
|
|
592
623
|
const aptosConfig = new AptosConfig({
|
|
@@ -658,7 +689,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
658
689
|
): Promise<AccountAuthenticator> {
|
|
659
690
|
try {
|
|
660
691
|
this.ensureWalletExists(this._wallet);
|
|
661
|
-
|
|
692
|
+
this.recordEvent("sign_transaction");
|
|
662
693
|
// Make sure wallet supports signTransaction
|
|
663
694
|
if (this._wallet.signTransaction) {
|
|
664
695
|
// If current connected wallet is AIP-62 standard compatible
|
|
@@ -749,7 +780,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
749
780
|
async signMessage(message: SignMessagePayload): Promise<SignMessageResponse> {
|
|
750
781
|
try {
|
|
751
782
|
this.ensureWalletExists(this._wallet);
|
|
752
|
-
|
|
783
|
+
this.recordEvent("sign_message");
|
|
753
784
|
if (this._wallet.isAIP62Standard) {
|
|
754
785
|
return await this.walletStandardCore.signMessage(message, this._wallet);
|
|
755
786
|
}
|
|
@@ -774,6 +805,14 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
774
805
|
try {
|
|
775
806
|
this.ensureWalletExists(this._wallet);
|
|
776
807
|
|
|
808
|
+
const { additionalSignersAuthenticators } = transaction;
|
|
809
|
+
const transactionType =
|
|
810
|
+
additionalSignersAuthenticators !== undefined
|
|
811
|
+
? "multi-agent"
|
|
812
|
+
: "simple";
|
|
813
|
+
this.recordEvent("submit_transaction", {
|
|
814
|
+
transaction_type: transactionType,
|
|
815
|
+
});
|
|
777
816
|
// If wallet supports submitTransaction transaction function
|
|
778
817
|
if (this._wallet.submitTransaction) {
|
|
779
818
|
const pendingTransaction =
|
|
@@ -782,7 +821,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
782
821
|
}
|
|
783
822
|
|
|
784
823
|
// Else have the adpater submits the transaction
|
|
785
|
-
|
|
824
|
+
|
|
786
825
|
const aptosConfig = new AptosConfig({
|
|
787
826
|
network: convertNetwork(this.network),
|
|
788
827
|
});
|
|
@@ -814,6 +853,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
814
853
|
async (data: AccountInfo | StandardAccountInfo) => {
|
|
815
854
|
this.setAccount(data);
|
|
816
855
|
await this.setAnsName();
|
|
856
|
+
this.recordEvent("account_change");
|
|
817
857
|
this.emit("accountChange", this._account);
|
|
818
858
|
}
|
|
819
859
|
);
|
|
@@ -853,7 +893,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
853
893
|
try {
|
|
854
894
|
this.ensureWalletExists(this._wallet);
|
|
855
895
|
this.ensureAccountExists(this._account);
|
|
856
|
-
|
|
896
|
+
this.recordEvent("sign_message_and_verify");
|
|
857
897
|
// If current connected wallet is AIP-62 standard compatible
|
|
858
898
|
if (this._wallet.isAIP62Standard) {
|
|
859
899
|
return this.walletStandardCore.signMessageAndVerify(
|
package/src/ga/index.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export class GA4 {
|
|
2
|
+
readonly aptosGAID: string | undefined = process.env.GAID;
|
|
3
|
+
|
|
4
|
+
constructor() {
|
|
5
|
+
// Inject Aptos Google Analytics 4 script
|
|
6
|
+
this.injectGA(this.aptosGAID);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
gtag(a: string, b: string | object, c?: object) {
|
|
10
|
+
let dataLayer = (window as any).dataLayer || [];
|
|
11
|
+
dataLayer.push(arguments);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
private injectGA(gaID?: string) {
|
|
15
|
+
if (typeof window === "undefined") return;
|
|
16
|
+
if (!gaID) return;
|
|
17
|
+
|
|
18
|
+
const head = document.getElementsByTagName("head")[0];
|
|
19
|
+
|
|
20
|
+
var myScript = document.createElement("script");
|
|
21
|
+
|
|
22
|
+
myScript.setAttribute(
|
|
23
|
+
"src",
|
|
24
|
+
`https://www.googletagmanager.com/gtag/js?id=${gaID}`
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
const that = this;
|
|
28
|
+
myScript.onload = function () {
|
|
29
|
+
that.gtag("js", new Date());
|
|
30
|
+
that.gtag("config", `${gaID}`, {
|
|
31
|
+
send_page_view: false,
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
head.insertBefore(myScript, head.children[1]);
|
|
36
|
+
}
|
|
37
|
+
}
|
package/src/version.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const WALLET_ADAPTER_CORE_VERSION = "3.10.0";
|