@aptos-labs/wallet-adapter-core 3.9.0 → 3.11.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 +18 -2
- package/dist/index.js +138 -48
- package/dist/index.mjs +133 -43
- package/package.json +6 -3
- package/src/LegacyWalletPlugins/WalletCoreV1.ts +6 -6
- package/src/LegacyWalletPlugins/conversion.ts +2 -2
- package/src/WalletCore.ts +60 -17
- package/src/ga/index.ts +37 -0
- package/src/utils/helpers.ts +44 -0
- package/src/version.ts +1 -0
package/CHANGELOG.md
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Types } from 'aptos';
|
|
2
2
|
export { TxnBuilderTypes, Types } from 'aptos';
|
|
3
|
-
import { Network, Signature, AnyRawTransaction, InputGenerateTransactionOptions, PendingTransactionResponse, InputSubmitTransactionData, AccountAddressInput, InputGenerateTransactionPayloadData, Aptos, AccountAuthenticator, EntryFunctionArgumentTypes, SimpleEntryFunctionArgumentTypes } from '@aptos-labs/ts-sdk';
|
|
3
|
+
import { Network, Signature, AnyRawTransaction, InputGenerateTransactionOptions, PendingTransactionResponse, InputSubmitTransactionData, AccountAddressInput, InputGenerateTransactionPayloadData, Aptos, AccountAuthenticator, EntryFunctionArgumentTypes, SimpleEntryFunctionArgumentTypes, AptosConfig } from '@aptos-labs/ts-sdk';
|
|
4
4
|
export { AccountAuthenticator, AnyRawTransaction, InputGenerateTransactionData, InputGenerateTransactionOptions, InputSubmitTransactionData, PendingTransactionResponse } from '@aptos-labs/ts-sdk';
|
|
5
5
|
import EventEmitter from 'eventemitter3';
|
|
6
6
|
import { NetworkInfo as NetworkInfo$1, AccountInfo as AccountInfo$1, UserResponse, AptosSignAndSubmitTransactionOutput, AptosSignMessageOutput, AptosWallet, AptosSignTransactionOutput, AptosSignMessageInput } from '@aptos-labs/wallet-standard';
|
|
@@ -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
|
*
|
|
@@ -391,5 +393,19 @@ declare function isInAppBrowser(): boolean;
|
|
|
391
393
|
declare function isRedirectable(): boolean;
|
|
392
394
|
declare function generalizedErrorMessage(error: any): string;
|
|
393
395
|
declare const areBCSArguments: (args: Array<EntryFunctionArgumentTypes | SimpleEntryFunctionArgumentTypes>) => boolean;
|
|
396
|
+
/**
|
|
397
|
+
* Helper function to get AptosConfig that supports Aptos and Custom networks
|
|
398
|
+
*
|
|
399
|
+
* @param networkInfo
|
|
400
|
+
* @returns AptosConfig
|
|
401
|
+
*/
|
|
402
|
+
declare const getAptosConfig: (networkInfo: NetworkInfo | NetworkInfo$1 | null) => AptosConfig;
|
|
403
|
+
/**
|
|
404
|
+
* Helper function to resolve if the current connected network is an Aptos network
|
|
405
|
+
*
|
|
406
|
+
* @param networkInfo
|
|
407
|
+
* @returns boolean
|
|
408
|
+
*/
|
|
409
|
+
declare const isAptosNetwork: (networkInfo: NetworkInfo | NetworkInfo$1 | null) => boolean;
|
|
394
410
|
|
|
395
|
-
export { AccountInfo, AdapterPlugin, AdapterPluginEvents, AdapterPluginProps, AptosStandardWallet, AptosWalletErrorResult, ChainIdToAnsSupportedNetworkMap, InputTransactionData, NetworkInfo, NetworkName, OnAccountChange, OnNetworkChange, PluginProvider, SignMessagePayload, SignMessageResponse, TransactionOptions, Wallet, WalletCore, WalletCoreEvents, WalletInfo, WalletName, WalletReadyState, WalletStandardCore, areBCSArguments, generalizedErrorMessage, getLocalStorage, isInAppBrowser, isMobile, isRedirectable, removeLocalStorage, scopePollingDetectionStrategy, setLocalStorage };
|
|
411
|
+
export { AccountInfo, AdapterPlugin, AdapterPluginEvents, AdapterPluginProps, AptosStandardWallet, AptosWalletErrorResult, ChainIdToAnsSupportedNetworkMap, InputTransactionData, NetworkInfo, NetworkName, OnAccountChange, OnNetworkChange, PluginProvider, SignMessagePayload, SignMessageResponse, TransactionOptions, Wallet, WalletCore, WalletCoreEvents, WalletInfo, WalletName, WalletReadyState, WalletStandardCore, areBCSArguments, generalizedErrorMessage, getAptosConfig, getLocalStorage, isAptosNetwork, isInAppBrowser, isMobile, isRedirectable, removeLocalStorage, scopePollingDetectionStrategy, setLocalStorage };
|
package/dist/index.js
CHANGED
|
@@ -35,7 +35,9 @@ __export(src_exports, {
|
|
|
35
35
|
WalletStandardCore: () => WalletStandardCore,
|
|
36
36
|
areBCSArguments: () => areBCSArguments,
|
|
37
37
|
generalizedErrorMessage: () => generalizedErrorMessage,
|
|
38
|
+
getAptosConfig: () => getAptosConfig,
|
|
38
39
|
getLocalStorage: () => getLocalStorage,
|
|
40
|
+
isAptosNetwork: () => isAptosNetwork,
|
|
39
41
|
isInAppBrowser: () => isInAppBrowser,
|
|
40
42
|
isMobile: () => isMobile,
|
|
41
43
|
isRedirectable: () => isRedirectable,
|
|
@@ -204,50 +206,21 @@ function getLocalStorage() {
|
|
|
204
206
|
}
|
|
205
207
|
|
|
206
208
|
// src/utils/helpers.ts
|
|
207
|
-
var
|
|
208
|
-
function isMobile() {
|
|
209
|
-
return /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(
|
|
210
|
-
navigator.userAgent
|
|
211
|
-
);
|
|
212
|
-
}
|
|
213
|
-
function isInAppBrowser() {
|
|
214
|
-
const isIphone = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(
|
|
215
|
-
navigator.userAgent
|
|
216
|
-
);
|
|
217
|
-
const isAndroid = /(Android).*Version\/[\d.]+.*Chrome\/[^\s]+ Mobile/i.test(
|
|
218
|
-
navigator.userAgent
|
|
219
|
-
);
|
|
220
|
-
return isIphone || isAndroid;
|
|
221
|
-
}
|
|
222
|
-
function isRedirectable() {
|
|
223
|
-
if (typeof navigator === "undefined" || !navigator)
|
|
224
|
-
return false;
|
|
225
|
-
return isMobile() && !isInAppBrowser();
|
|
226
|
-
}
|
|
227
|
-
function generalizedErrorMessage(error) {
|
|
228
|
-
return typeof error === "object" && "message" in error ? error.message : error;
|
|
229
|
-
}
|
|
230
|
-
var areBCSArguments = (args) => {
|
|
231
|
-
if (args.length === 0)
|
|
232
|
-
return false;
|
|
233
|
-
return args.every(
|
|
234
|
-
(arg) => arg instanceof import_ts_sdk.Serializable
|
|
235
|
-
);
|
|
236
|
-
};
|
|
209
|
+
var import_ts_sdk2 = require("@aptos-labs/ts-sdk");
|
|
237
210
|
|
|
238
211
|
// src/LegacyWalletPlugins/conversion.ts
|
|
239
|
-
var
|
|
212
|
+
var import_ts_sdk = require("@aptos-labs/ts-sdk");
|
|
240
213
|
var import_aptos = require("aptos");
|
|
241
214
|
function convertNetwork(networkInfo) {
|
|
242
|
-
switch (networkInfo == null ? void 0 : networkInfo.name
|
|
215
|
+
switch (networkInfo == null ? void 0 : networkInfo.name) {
|
|
243
216
|
case "mainnet":
|
|
244
|
-
return
|
|
217
|
+
return import_ts_sdk.Network.MAINNET;
|
|
245
218
|
case "testnet":
|
|
246
|
-
return
|
|
219
|
+
return import_ts_sdk.Network.TESTNET;
|
|
247
220
|
case "devnet":
|
|
248
|
-
return
|
|
221
|
+
return import_ts_sdk.Network.DEVNET;
|
|
249
222
|
default:
|
|
250
|
-
throw new Error("Invalid network name");
|
|
223
|
+
throw new Error("Invalid Aptos network name");
|
|
251
224
|
}
|
|
252
225
|
}
|
|
253
226
|
function convertV2TransactionPayloadToV1BCSPayload(payload) {
|
|
@@ -261,7 +234,7 @@ function convertV2PayloadToV1JSONPayload(payload) {
|
|
|
261
234
|
} else {
|
|
262
235
|
const stringTypeTags = (_a = payload.typeArguments) == null ? void 0 : _a.map(
|
|
263
236
|
(typeTag) => {
|
|
264
|
-
if (typeTag instanceof
|
|
237
|
+
if (typeTag instanceof import_ts_sdk.TypeTag) {
|
|
265
238
|
return typeTag.toString();
|
|
266
239
|
}
|
|
267
240
|
return typeTag;
|
|
@@ -277,6 +250,57 @@ function convertV2PayloadToV1JSONPayload(payload) {
|
|
|
277
250
|
}
|
|
278
251
|
}
|
|
279
252
|
|
|
253
|
+
// src/utils/helpers.ts
|
|
254
|
+
function isMobile() {
|
|
255
|
+
return /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(
|
|
256
|
+
navigator.userAgent
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
function isInAppBrowser() {
|
|
260
|
+
const isIphone = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(
|
|
261
|
+
navigator.userAgent
|
|
262
|
+
);
|
|
263
|
+
const isAndroid = /(Android).*Version\/[\d.]+.*Chrome\/[^\s]+ Mobile/i.test(
|
|
264
|
+
navigator.userAgent
|
|
265
|
+
);
|
|
266
|
+
return isIphone || isAndroid;
|
|
267
|
+
}
|
|
268
|
+
function isRedirectable() {
|
|
269
|
+
if (typeof navigator === "undefined" || !navigator)
|
|
270
|
+
return false;
|
|
271
|
+
return isMobile() && !isInAppBrowser();
|
|
272
|
+
}
|
|
273
|
+
function generalizedErrorMessage(error) {
|
|
274
|
+
return typeof error === "object" && "message" in error ? error.message : error;
|
|
275
|
+
}
|
|
276
|
+
var areBCSArguments = (args) => {
|
|
277
|
+
if (args.length === 0)
|
|
278
|
+
return false;
|
|
279
|
+
return args.every(
|
|
280
|
+
(arg) => arg instanceof import_ts_sdk2.Serializable
|
|
281
|
+
);
|
|
282
|
+
};
|
|
283
|
+
var getAptosConfig = (networkInfo) => {
|
|
284
|
+
if (!networkInfo) {
|
|
285
|
+
throw new Error("Undefined network");
|
|
286
|
+
}
|
|
287
|
+
if (isAptosNetwork(networkInfo)) {
|
|
288
|
+
return new import_ts_sdk2.AptosConfig({
|
|
289
|
+
network: convertNetwork(networkInfo)
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
return new import_ts_sdk2.AptosConfig({
|
|
293
|
+
network: import_ts_sdk2.Network.CUSTOM,
|
|
294
|
+
fullnode: networkInfo.url
|
|
295
|
+
});
|
|
296
|
+
};
|
|
297
|
+
var isAptosNetwork = (networkInfo) => {
|
|
298
|
+
if (!networkInfo) {
|
|
299
|
+
throw new Error("Undefined network");
|
|
300
|
+
}
|
|
301
|
+
return import_ts_sdk2.NetworkToNodeAPI[networkInfo.name] !== void 0;
|
|
302
|
+
};
|
|
303
|
+
|
|
280
304
|
// src/LegacyWalletPlugins/WalletCoreV1.ts
|
|
281
305
|
var import_aptos2 = require("aptos");
|
|
282
306
|
var import_eventemitter3 = __toESM(require("eventemitter3"));
|
|
@@ -291,9 +315,7 @@ var WalletCoreV1 = class extends import_eventemitter3.default {
|
|
|
291
315
|
async resolveSignAndSubmitTransaction(payloadData, network, wallet, transactionInput) {
|
|
292
316
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
293
317
|
if (areBCSArguments(payloadData.functionArguments)) {
|
|
294
|
-
const aptosConfig =
|
|
295
|
-
network: convertNetwork(network)
|
|
296
|
-
});
|
|
318
|
+
const aptosConfig = getAptosConfig(network);
|
|
297
319
|
const newPayload = await (0, import_ts_sdk3.generateTransactionPayload)({
|
|
298
320
|
...payloadData,
|
|
299
321
|
aptosConfig
|
|
@@ -514,6 +536,41 @@ var WalletStandardCore = class {
|
|
|
514
536
|
}
|
|
515
537
|
};
|
|
516
538
|
|
|
539
|
+
// src/ga/index.ts
|
|
540
|
+
var GA4 = class {
|
|
541
|
+
constructor() {
|
|
542
|
+
this.aptosGAID = "G-GNVVWBL3J9";
|
|
543
|
+
this.injectGA(this.aptosGAID);
|
|
544
|
+
}
|
|
545
|
+
gtag(a, b, c) {
|
|
546
|
+
let dataLayer = window.dataLayer || [];
|
|
547
|
+
dataLayer.push(arguments);
|
|
548
|
+
}
|
|
549
|
+
injectGA(gaID) {
|
|
550
|
+
if (typeof window === "undefined")
|
|
551
|
+
return;
|
|
552
|
+
if (!gaID)
|
|
553
|
+
return;
|
|
554
|
+
const head = document.getElementsByTagName("head")[0];
|
|
555
|
+
var myScript = document.createElement("script");
|
|
556
|
+
myScript.setAttribute(
|
|
557
|
+
"src",
|
|
558
|
+
`https://www.googletagmanager.com/gtag/js?id=${gaID}`
|
|
559
|
+
);
|
|
560
|
+
const that = this;
|
|
561
|
+
myScript.onload = function() {
|
|
562
|
+
that.gtag("js", new Date());
|
|
563
|
+
that.gtag("config", `${gaID}`, {
|
|
564
|
+
send_page_view: false
|
|
565
|
+
});
|
|
566
|
+
};
|
|
567
|
+
head.insertBefore(myScript, head.children[1]);
|
|
568
|
+
}
|
|
569
|
+
};
|
|
570
|
+
|
|
571
|
+
// src/version.ts
|
|
572
|
+
var WALLET_ADAPTER_CORE_VERSION = "3.11.0";
|
|
573
|
+
|
|
517
574
|
// src/WalletCore.ts
|
|
518
575
|
var WalletCore = class extends import_eventemitter32.default {
|
|
519
576
|
constructor(plugins) {
|
|
@@ -528,6 +585,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
528
585
|
this.walletStandardCore = new WalletStandardCore();
|
|
529
586
|
this._connecting = false;
|
|
530
587
|
this._connected = false;
|
|
588
|
+
this.ga4 = new GA4();
|
|
531
589
|
this.standardizeStandardWalletToPluginWalletType = (standardWallet) => {
|
|
532
590
|
var _a, _b;
|
|
533
591
|
let standardWalletConvertedToWallet = {
|
|
@@ -604,6 +662,17 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
604
662
|
});
|
|
605
663
|
this._standard_wallets = aptosStandardWallets;
|
|
606
664
|
}
|
|
665
|
+
recordEvent(eventName, additionalInfo) {
|
|
666
|
+
var _a, _b, _c;
|
|
667
|
+
this.ga4.gtag("event", `wallet_adapter_${eventName}`, {
|
|
668
|
+
wallet: (_a = this._wallet) == null ? void 0 : _a.name,
|
|
669
|
+
network: (_b = this._network) == null ? void 0 : _b.name,
|
|
670
|
+
network_url: (_c = this._network) == null ? void 0 : _c.url,
|
|
671
|
+
adapter_core_version: WALLET_ADAPTER_CORE_VERSION,
|
|
672
|
+
send_to: "G-GNVVWBL3J9",
|
|
673
|
+
...additionalInfo
|
|
674
|
+
});
|
|
675
|
+
}
|
|
607
676
|
ensureWalletExists(wallet) {
|
|
608
677
|
if (!wallet) {
|
|
609
678
|
throw new WalletNotConnectedError().name;
|
|
@@ -633,7 +702,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
633
702
|
async setAnsName() {
|
|
634
703
|
var _a;
|
|
635
704
|
if (((_a = this._network) == null ? void 0 : _a.chainId) && this._account) {
|
|
636
|
-
if (!ChainIdToAnsSupportedNetworkMap[this._network.chainId]) {
|
|
705
|
+
if (!ChainIdToAnsSupportedNetworkMap[this._network.chainId] || !isAptosNetwork(this._network)) {
|
|
637
706
|
this._account.ansName = void 0;
|
|
638
707
|
return;
|
|
639
708
|
}
|
|
@@ -683,13 +752,17 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
683
752
|
return;
|
|
684
753
|
}
|
|
685
754
|
setNetwork(network) {
|
|
686
|
-
var _a;
|
|
755
|
+
var _a, _b, _c;
|
|
687
756
|
if (network === null) {
|
|
688
757
|
this._network = null;
|
|
689
758
|
return;
|
|
690
759
|
}
|
|
691
760
|
if ((_a = this._wallet) == null ? void 0 : _a.isAIP62Standard) {
|
|
692
761
|
const standardizeNetwork = network;
|
|
762
|
+
this.recordEvent("network_change", {
|
|
763
|
+
from: (_b = this._network) == null ? void 0 : _b.name,
|
|
764
|
+
to: standardizeNetwork.name
|
|
765
|
+
});
|
|
693
766
|
this._network = {
|
|
694
767
|
name: standardizeNetwork.name.toLowerCase(),
|
|
695
768
|
chainId: standardizeNetwork.chainId.toString(),
|
|
@@ -697,7 +770,14 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
697
770
|
};
|
|
698
771
|
return;
|
|
699
772
|
}
|
|
700
|
-
this.
|
|
773
|
+
this.recordEvent("network_change", {
|
|
774
|
+
from: (_c = this._network) == null ? void 0 : _c.name,
|
|
775
|
+
to: network.name
|
|
776
|
+
});
|
|
777
|
+
this._network = {
|
|
778
|
+
...network,
|
|
779
|
+
name: network.name.toLowerCase()
|
|
780
|
+
};
|
|
701
781
|
}
|
|
702
782
|
isConnected() {
|
|
703
783
|
return this._connected;
|
|
@@ -784,6 +864,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
784
864
|
await this.setAnsName();
|
|
785
865
|
setLocalStorage(selectedWallet.name);
|
|
786
866
|
this._connected = true;
|
|
867
|
+
this.recordEvent("wallet_connect");
|
|
787
868
|
this.emit("connect", account);
|
|
788
869
|
} catch (error) {
|
|
789
870
|
this.clearData();
|
|
@@ -798,6 +879,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
798
879
|
this.ensureWalletExists(this._wallet);
|
|
799
880
|
await this._wallet.disconnect();
|
|
800
881
|
this.clearData();
|
|
882
|
+
this.recordEvent("wallet_disconnect");
|
|
801
883
|
this.emit("disconnect");
|
|
802
884
|
} catch (error) {
|
|
803
885
|
const errMsg = generalizedErrorMessage(error);
|
|
@@ -808,10 +890,9 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
808
890
|
try {
|
|
809
891
|
this.ensureWalletExists(this._wallet);
|
|
810
892
|
this.ensureAccountExists(this._account);
|
|
893
|
+
this.recordEvent("sign_and_submit_transaction");
|
|
811
894
|
const payloadData = transactionInput.data;
|
|
812
|
-
const aptosConfig =
|
|
813
|
-
network: convertNetwork(this._network)
|
|
814
|
-
});
|
|
895
|
+
const aptosConfig = getAptosConfig(this._network);
|
|
815
896
|
const aptos = new import_ts_sdk5.Aptos(aptosConfig);
|
|
816
897
|
if (this._wallet.signAndSubmitTransaction) {
|
|
817
898
|
if (this._wallet.isAIP62Standard) {
|
|
@@ -852,7 +933,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
852
933
|
var _a, _b;
|
|
853
934
|
try {
|
|
854
935
|
this.ensureWalletExists(this._wallet);
|
|
855
|
-
|
|
936
|
+
this.recordEvent("sign_transaction");
|
|
856
937
|
if (this._wallet.signTransaction) {
|
|
857
938
|
if (this._wallet.isAIP62Standard) {
|
|
858
939
|
if ("rawTransaction" in transactionOrPayload) {
|
|
@@ -909,6 +990,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
909
990
|
async signMessage(message) {
|
|
910
991
|
try {
|
|
911
992
|
this.ensureWalletExists(this._wallet);
|
|
993
|
+
this.recordEvent("sign_message");
|
|
912
994
|
if (this._wallet.isAIP62Standard) {
|
|
913
995
|
return await this.walletStandardCore.signMessage(message, this._wallet);
|
|
914
996
|
}
|
|
@@ -923,11 +1005,15 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
923
1005
|
async submitTransaction(transaction) {
|
|
924
1006
|
try {
|
|
925
1007
|
this.ensureWalletExists(this._wallet);
|
|
1008
|
+
const { additionalSignersAuthenticators } = transaction;
|
|
1009
|
+
const transactionType = additionalSignersAuthenticators !== void 0 ? "multi-agent" : "simple";
|
|
1010
|
+
this.recordEvent("submit_transaction", {
|
|
1011
|
+
transaction_type: transactionType
|
|
1012
|
+
});
|
|
926
1013
|
if (this._wallet.submitTransaction) {
|
|
927
1014
|
const pendingTransaction = await this._wallet.submitTransaction(transaction);
|
|
928
1015
|
return pendingTransaction;
|
|
929
1016
|
}
|
|
930
|
-
const { additionalSignersAuthenticators } = transaction;
|
|
931
1017
|
const aptosConfig = new import_ts_sdk5.AptosConfig({
|
|
932
1018
|
network: convertNetwork(this.network)
|
|
933
1019
|
});
|
|
@@ -953,6 +1039,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
953
1039
|
async (data) => {
|
|
954
1040
|
this.setAccount(data);
|
|
955
1041
|
await this.setAnsName();
|
|
1042
|
+
this.recordEvent("account_change");
|
|
956
1043
|
this.emit("accountChange", this._account);
|
|
957
1044
|
}
|
|
958
1045
|
);
|
|
@@ -980,6 +1067,7 @@ var WalletCore = class extends import_eventemitter32.default {
|
|
|
980
1067
|
try {
|
|
981
1068
|
this.ensureWalletExists(this._wallet);
|
|
982
1069
|
this.ensureAccountExists(this._account);
|
|
1070
|
+
this.recordEvent("sign_message_and_verify");
|
|
983
1071
|
if (this._wallet.isAIP62Standard) {
|
|
984
1072
|
return this.walletStandardCore.signMessageAndVerify(
|
|
985
1073
|
message,
|
|
@@ -1011,7 +1099,9 @@ var import_aptos4 = require("aptos");
|
|
|
1011
1099
|
WalletStandardCore,
|
|
1012
1100
|
areBCSArguments,
|
|
1013
1101
|
generalizedErrorMessage,
|
|
1102
|
+
getAptosConfig,
|
|
1014
1103
|
getLocalStorage,
|
|
1104
|
+
isAptosNetwork,
|
|
1015
1105
|
isInAppBrowser,
|
|
1016
1106
|
isMobile,
|
|
1017
1107
|
isRedirectable,
|
package/dist/index.mjs
CHANGED
|
@@ -164,37 +164,11 @@ function getLocalStorage() {
|
|
|
164
164
|
|
|
165
165
|
// src/utils/helpers.ts
|
|
166
166
|
import {
|
|
167
|
+
AptosConfig,
|
|
168
|
+
Network as Network2,
|
|
169
|
+
NetworkToNodeAPI,
|
|
167
170
|
Serializable
|
|
168
171
|
} from "@aptos-labs/ts-sdk";
|
|
169
|
-
function isMobile() {
|
|
170
|
-
return /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(
|
|
171
|
-
navigator.userAgent
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
|
-
function isInAppBrowser() {
|
|
175
|
-
const isIphone = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(
|
|
176
|
-
navigator.userAgent
|
|
177
|
-
);
|
|
178
|
-
const isAndroid = /(Android).*Version\/[\d.]+.*Chrome\/[^\s]+ Mobile/i.test(
|
|
179
|
-
navigator.userAgent
|
|
180
|
-
);
|
|
181
|
-
return isIphone || isAndroid;
|
|
182
|
-
}
|
|
183
|
-
function isRedirectable() {
|
|
184
|
-
if (typeof navigator === "undefined" || !navigator)
|
|
185
|
-
return false;
|
|
186
|
-
return isMobile() && !isInAppBrowser();
|
|
187
|
-
}
|
|
188
|
-
function generalizedErrorMessage(error) {
|
|
189
|
-
return typeof error === "object" && "message" in error ? error.message : error;
|
|
190
|
-
}
|
|
191
|
-
var areBCSArguments = (args) => {
|
|
192
|
-
if (args.length === 0)
|
|
193
|
-
return false;
|
|
194
|
-
return args.every(
|
|
195
|
-
(arg) => arg instanceof Serializable
|
|
196
|
-
);
|
|
197
|
-
};
|
|
198
172
|
|
|
199
173
|
// src/LegacyWalletPlugins/conversion.ts
|
|
200
174
|
import {
|
|
@@ -203,7 +177,7 @@ import {
|
|
|
203
177
|
} from "@aptos-labs/ts-sdk";
|
|
204
178
|
import { BCS, TxnBuilderTypes } from "aptos";
|
|
205
179
|
function convertNetwork(networkInfo) {
|
|
206
|
-
switch (networkInfo == null ? void 0 : networkInfo.name
|
|
180
|
+
switch (networkInfo == null ? void 0 : networkInfo.name) {
|
|
207
181
|
case "mainnet":
|
|
208
182
|
return Network.MAINNET;
|
|
209
183
|
case "testnet":
|
|
@@ -211,7 +185,7 @@ function convertNetwork(networkInfo) {
|
|
|
211
185
|
case "devnet":
|
|
212
186
|
return Network.DEVNET;
|
|
213
187
|
default:
|
|
214
|
-
throw new Error("Invalid network name");
|
|
188
|
+
throw new Error("Invalid Aptos network name");
|
|
215
189
|
}
|
|
216
190
|
}
|
|
217
191
|
function convertV2TransactionPayloadToV1BCSPayload(payload) {
|
|
@@ -241,12 +215,62 @@ function convertV2PayloadToV1JSONPayload(payload) {
|
|
|
241
215
|
}
|
|
242
216
|
}
|
|
243
217
|
|
|
218
|
+
// src/utils/helpers.ts
|
|
219
|
+
function isMobile() {
|
|
220
|
+
return /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(
|
|
221
|
+
navigator.userAgent
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
function isInAppBrowser() {
|
|
225
|
+
const isIphone = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(
|
|
226
|
+
navigator.userAgent
|
|
227
|
+
);
|
|
228
|
+
const isAndroid = /(Android).*Version\/[\d.]+.*Chrome\/[^\s]+ Mobile/i.test(
|
|
229
|
+
navigator.userAgent
|
|
230
|
+
);
|
|
231
|
+
return isIphone || isAndroid;
|
|
232
|
+
}
|
|
233
|
+
function isRedirectable() {
|
|
234
|
+
if (typeof navigator === "undefined" || !navigator)
|
|
235
|
+
return false;
|
|
236
|
+
return isMobile() && !isInAppBrowser();
|
|
237
|
+
}
|
|
238
|
+
function generalizedErrorMessage(error) {
|
|
239
|
+
return typeof error === "object" && "message" in error ? error.message : error;
|
|
240
|
+
}
|
|
241
|
+
var areBCSArguments = (args) => {
|
|
242
|
+
if (args.length === 0)
|
|
243
|
+
return false;
|
|
244
|
+
return args.every(
|
|
245
|
+
(arg) => arg instanceof Serializable
|
|
246
|
+
);
|
|
247
|
+
};
|
|
248
|
+
var getAptosConfig = (networkInfo) => {
|
|
249
|
+
if (!networkInfo) {
|
|
250
|
+
throw new Error("Undefined network");
|
|
251
|
+
}
|
|
252
|
+
if (isAptosNetwork(networkInfo)) {
|
|
253
|
+
return new AptosConfig({
|
|
254
|
+
network: convertNetwork(networkInfo)
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
return new AptosConfig({
|
|
258
|
+
network: Network2.CUSTOM,
|
|
259
|
+
fullnode: networkInfo.url
|
|
260
|
+
});
|
|
261
|
+
};
|
|
262
|
+
var isAptosNetwork = (networkInfo) => {
|
|
263
|
+
if (!networkInfo) {
|
|
264
|
+
throw new Error("Undefined network");
|
|
265
|
+
}
|
|
266
|
+
return NetworkToNodeAPI[networkInfo.name] !== void 0;
|
|
267
|
+
};
|
|
268
|
+
|
|
244
269
|
// src/LegacyWalletPlugins/WalletCoreV1.ts
|
|
245
270
|
import { HexString } from "aptos";
|
|
246
271
|
import EventEmitter from "eventemitter3";
|
|
247
272
|
import { Buffer } from "buffer";
|
|
248
273
|
import {
|
|
249
|
-
AptosConfig,
|
|
250
274
|
generateTransactionPayload
|
|
251
275
|
} from "@aptos-labs/ts-sdk";
|
|
252
276
|
import nacl from "tweetnacl";
|
|
@@ -258,9 +282,7 @@ var WalletCoreV1 = class extends EventEmitter {
|
|
|
258
282
|
async resolveSignAndSubmitTransaction(payloadData, network, wallet, transactionInput) {
|
|
259
283
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
260
284
|
if (areBCSArguments(payloadData.functionArguments)) {
|
|
261
|
-
const aptosConfig =
|
|
262
|
-
network: convertNetwork(network)
|
|
263
|
-
});
|
|
285
|
+
const aptosConfig = getAptosConfig(network);
|
|
264
286
|
const newPayload = await generateTransactionPayload({
|
|
265
287
|
...payloadData,
|
|
266
288
|
aptosConfig
|
|
@@ -489,6 +511,41 @@ var WalletStandardCore = class {
|
|
|
489
511
|
}
|
|
490
512
|
};
|
|
491
513
|
|
|
514
|
+
// src/ga/index.ts
|
|
515
|
+
var GA4 = class {
|
|
516
|
+
constructor() {
|
|
517
|
+
this.aptosGAID = "G-GNVVWBL3J9";
|
|
518
|
+
this.injectGA(this.aptosGAID);
|
|
519
|
+
}
|
|
520
|
+
gtag(a, b, c) {
|
|
521
|
+
let dataLayer = window.dataLayer || [];
|
|
522
|
+
dataLayer.push(arguments);
|
|
523
|
+
}
|
|
524
|
+
injectGA(gaID) {
|
|
525
|
+
if (typeof window === "undefined")
|
|
526
|
+
return;
|
|
527
|
+
if (!gaID)
|
|
528
|
+
return;
|
|
529
|
+
const head = document.getElementsByTagName("head")[0];
|
|
530
|
+
var myScript = document.createElement("script");
|
|
531
|
+
myScript.setAttribute(
|
|
532
|
+
"src",
|
|
533
|
+
`https://www.googletagmanager.com/gtag/js?id=${gaID}`
|
|
534
|
+
);
|
|
535
|
+
const that = this;
|
|
536
|
+
myScript.onload = function() {
|
|
537
|
+
that.gtag("js", new Date());
|
|
538
|
+
that.gtag("config", `${gaID}`, {
|
|
539
|
+
send_page_view: false
|
|
540
|
+
});
|
|
541
|
+
};
|
|
542
|
+
head.insertBefore(myScript, head.children[1]);
|
|
543
|
+
}
|
|
544
|
+
};
|
|
545
|
+
|
|
546
|
+
// src/version.ts
|
|
547
|
+
var WALLET_ADAPTER_CORE_VERSION = "3.11.0";
|
|
548
|
+
|
|
492
549
|
// src/WalletCore.ts
|
|
493
550
|
var WalletCore = class extends EventEmitter2 {
|
|
494
551
|
constructor(plugins) {
|
|
@@ -503,6 +560,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
503
560
|
this.walletStandardCore = new WalletStandardCore();
|
|
504
561
|
this._connecting = false;
|
|
505
562
|
this._connected = false;
|
|
563
|
+
this.ga4 = new GA4();
|
|
506
564
|
this.standardizeStandardWalletToPluginWalletType = (standardWallet) => {
|
|
507
565
|
var _a, _b;
|
|
508
566
|
let standardWalletConvertedToWallet = {
|
|
@@ -579,6 +637,17 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
579
637
|
});
|
|
580
638
|
this._standard_wallets = aptosStandardWallets;
|
|
581
639
|
}
|
|
640
|
+
recordEvent(eventName, additionalInfo) {
|
|
641
|
+
var _a, _b, _c;
|
|
642
|
+
this.ga4.gtag("event", `wallet_adapter_${eventName}`, {
|
|
643
|
+
wallet: (_a = this._wallet) == null ? void 0 : _a.name,
|
|
644
|
+
network: (_b = this._network) == null ? void 0 : _b.name,
|
|
645
|
+
network_url: (_c = this._network) == null ? void 0 : _c.url,
|
|
646
|
+
adapter_core_version: WALLET_ADAPTER_CORE_VERSION,
|
|
647
|
+
send_to: "G-GNVVWBL3J9",
|
|
648
|
+
...additionalInfo
|
|
649
|
+
});
|
|
650
|
+
}
|
|
582
651
|
ensureWalletExists(wallet) {
|
|
583
652
|
if (!wallet) {
|
|
584
653
|
throw new WalletNotConnectedError().name;
|
|
@@ -608,7 +677,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
608
677
|
async setAnsName() {
|
|
609
678
|
var _a;
|
|
610
679
|
if (((_a = this._network) == null ? void 0 : _a.chainId) && this._account) {
|
|
611
|
-
if (!ChainIdToAnsSupportedNetworkMap[this._network.chainId]) {
|
|
680
|
+
if (!ChainIdToAnsSupportedNetworkMap[this._network.chainId] || !isAptosNetwork(this._network)) {
|
|
612
681
|
this._account.ansName = void 0;
|
|
613
682
|
return;
|
|
614
683
|
}
|
|
@@ -658,13 +727,17 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
658
727
|
return;
|
|
659
728
|
}
|
|
660
729
|
setNetwork(network) {
|
|
661
|
-
var _a;
|
|
730
|
+
var _a, _b, _c;
|
|
662
731
|
if (network === null) {
|
|
663
732
|
this._network = null;
|
|
664
733
|
return;
|
|
665
734
|
}
|
|
666
735
|
if ((_a = this._wallet) == null ? void 0 : _a.isAIP62Standard) {
|
|
667
736
|
const standardizeNetwork = network;
|
|
737
|
+
this.recordEvent("network_change", {
|
|
738
|
+
from: (_b = this._network) == null ? void 0 : _b.name,
|
|
739
|
+
to: standardizeNetwork.name
|
|
740
|
+
});
|
|
668
741
|
this._network = {
|
|
669
742
|
name: standardizeNetwork.name.toLowerCase(),
|
|
670
743
|
chainId: standardizeNetwork.chainId.toString(),
|
|
@@ -672,7 +745,14 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
672
745
|
};
|
|
673
746
|
return;
|
|
674
747
|
}
|
|
675
|
-
this.
|
|
748
|
+
this.recordEvent("network_change", {
|
|
749
|
+
from: (_c = this._network) == null ? void 0 : _c.name,
|
|
750
|
+
to: network.name
|
|
751
|
+
});
|
|
752
|
+
this._network = {
|
|
753
|
+
...network,
|
|
754
|
+
name: network.name.toLowerCase()
|
|
755
|
+
};
|
|
676
756
|
}
|
|
677
757
|
isConnected() {
|
|
678
758
|
return this._connected;
|
|
@@ -759,6 +839,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
759
839
|
await this.setAnsName();
|
|
760
840
|
setLocalStorage(selectedWallet.name);
|
|
761
841
|
this._connected = true;
|
|
842
|
+
this.recordEvent("wallet_connect");
|
|
762
843
|
this.emit("connect", account);
|
|
763
844
|
} catch (error) {
|
|
764
845
|
this.clearData();
|
|
@@ -773,6 +854,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
773
854
|
this.ensureWalletExists(this._wallet);
|
|
774
855
|
await this._wallet.disconnect();
|
|
775
856
|
this.clearData();
|
|
857
|
+
this.recordEvent("wallet_disconnect");
|
|
776
858
|
this.emit("disconnect");
|
|
777
859
|
} catch (error) {
|
|
778
860
|
const errMsg = generalizedErrorMessage(error);
|
|
@@ -783,10 +865,9 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
783
865
|
try {
|
|
784
866
|
this.ensureWalletExists(this._wallet);
|
|
785
867
|
this.ensureAccountExists(this._account);
|
|
868
|
+
this.recordEvent("sign_and_submit_transaction");
|
|
786
869
|
const payloadData = transactionInput.data;
|
|
787
|
-
const aptosConfig =
|
|
788
|
-
network: convertNetwork(this._network)
|
|
789
|
-
});
|
|
870
|
+
const aptosConfig = getAptosConfig(this._network);
|
|
790
871
|
const aptos = new Aptos2(aptosConfig);
|
|
791
872
|
if (this._wallet.signAndSubmitTransaction) {
|
|
792
873
|
if (this._wallet.isAIP62Standard) {
|
|
@@ -827,7 +908,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
827
908
|
var _a, _b;
|
|
828
909
|
try {
|
|
829
910
|
this.ensureWalletExists(this._wallet);
|
|
830
|
-
|
|
911
|
+
this.recordEvent("sign_transaction");
|
|
831
912
|
if (this._wallet.signTransaction) {
|
|
832
913
|
if (this._wallet.isAIP62Standard) {
|
|
833
914
|
if ("rawTransaction" in transactionOrPayload) {
|
|
@@ -884,6 +965,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
884
965
|
async signMessage(message) {
|
|
885
966
|
try {
|
|
886
967
|
this.ensureWalletExists(this._wallet);
|
|
968
|
+
this.recordEvent("sign_message");
|
|
887
969
|
if (this._wallet.isAIP62Standard) {
|
|
888
970
|
return await this.walletStandardCore.signMessage(message, this._wallet);
|
|
889
971
|
}
|
|
@@ -898,11 +980,15 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
898
980
|
async submitTransaction(transaction) {
|
|
899
981
|
try {
|
|
900
982
|
this.ensureWalletExists(this._wallet);
|
|
983
|
+
const { additionalSignersAuthenticators } = transaction;
|
|
984
|
+
const transactionType = additionalSignersAuthenticators !== void 0 ? "multi-agent" : "simple";
|
|
985
|
+
this.recordEvent("submit_transaction", {
|
|
986
|
+
transaction_type: transactionType
|
|
987
|
+
});
|
|
901
988
|
if (this._wallet.submitTransaction) {
|
|
902
989
|
const pendingTransaction = await this._wallet.submitTransaction(transaction);
|
|
903
990
|
return pendingTransaction;
|
|
904
991
|
}
|
|
905
|
-
const { additionalSignersAuthenticators } = transaction;
|
|
906
992
|
const aptosConfig = new AptosConfig2({
|
|
907
993
|
network: convertNetwork(this.network)
|
|
908
994
|
});
|
|
@@ -928,6 +1014,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
928
1014
|
async (data) => {
|
|
929
1015
|
this.setAccount(data);
|
|
930
1016
|
await this.setAnsName();
|
|
1017
|
+
this.recordEvent("account_change");
|
|
931
1018
|
this.emit("accountChange", this._account);
|
|
932
1019
|
}
|
|
933
1020
|
);
|
|
@@ -955,6 +1042,7 @@ var WalletCore = class extends EventEmitter2 {
|
|
|
955
1042
|
try {
|
|
956
1043
|
this.ensureWalletExists(this._wallet);
|
|
957
1044
|
this.ensureAccountExists(this._account);
|
|
1045
|
+
this.recordEvent("sign_message_and_verify");
|
|
958
1046
|
if (this._wallet.isAIP62Standard) {
|
|
959
1047
|
return this.walletStandardCore.signMessageAndVerify(
|
|
960
1048
|
message,
|
|
@@ -985,7 +1073,9 @@ export {
|
|
|
985
1073
|
WalletStandardCore,
|
|
986
1074
|
areBCSArguments,
|
|
987
1075
|
generalizedErrorMessage,
|
|
1076
|
+
getAptosConfig,
|
|
988
1077
|
getLocalStorage,
|
|
1078
|
+
isAptosNetwork,
|
|
989
1079
|
isInAppBrowser,
|
|
990
1080
|
isMobile,
|
|
991
1081
|
isRedirectable,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aptos-labs/wallet-adapter-core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.11.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"
|
|
@@ -2,7 +2,6 @@ import { HexString, TxnBuilderTypes, Types } from "aptos";
|
|
|
2
2
|
import EventEmitter from "eventemitter3";
|
|
3
3
|
import { Buffer } from "buffer";
|
|
4
4
|
import {
|
|
5
|
-
AptosConfig,
|
|
6
5
|
InputEntryFunctionDataWithRemoteABI,
|
|
7
6
|
InputGenerateTransactionPayloadData,
|
|
8
7
|
generateTransactionPayload,
|
|
@@ -26,11 +25,14 @@ import {
|
|
|
26
25
|
} from "./types";
|
|
27
26
|
|
|
28
27
|
import {
|
|
29
|
-
convertNetwork,
|
|
30
28
|
convertV2PayloadToV1JSONPayload,
|
|
31
29
|
convertV2TransactionPayloadToV1BCSPayload,
|
|
32
30
|
} from "./conversion";
|
|
33
|
-
import {
|
|
31
|
+
import {
|
|
32
|
+
areBCSArguments,
|
|
33
|
+
generalizedErrorMessage,
|
|
34
|
+
getAptosConfig,
|
|
35
|
+
} from "../utils";
|
|
34
36
|
|
|
35
37
|
export class WalletCoreV1 extends EventEmitter<WalletCoreEvents> {
|
|
36
38
|
async connect(wallet: Wallet) {
|
|
@@ -56,9 +58,7 @@ export class WalletCoreV1 extends EventEmitter<WalletCoreEvents> {
|
|
|
56
58
|
) {
|
|
57
59
|
// first check if each argument is a BCS serialized argument
|
|
58
60
|
if (areBCSArguments(payloadData.functionArguments)) {
|
|
59
|
-
const aptosConfig =
|
|
60
|
-
network: convertNetwork(network),
|
|
61
|
-
});
|
|
61
|
+
const aptosConfig = getAptosConfig(network);
|
|
62
62
|
const newPayload = await generateTransactionPayload({
|
|
63
63
|
...(payloadData as InputEntryFunctionDataWithRemoteABI),
|
|
64
64
|
aptosConfig: aptosConfig,
|
|
@@ -12,7 +12,7 @@ import { NetworkInfo } from "./types";
|
|
|
12
12
|
export function convertNetwork(
|
|
13
13
|
networkInfo: NetworkInfo | StandardNetworkInfo | null
|
|
14
14
|
): Network {
|
|
15
|
-
switch (networkInfo?.name
|
|
15
|
+
switch (networkInfo?.name) {
|
|
16
16
|
case "mainnet" as Network:
|
|
17
17
|
return Network.MAINNET;
|
|
18
18
|
case "testnet" as Network:
|
|
@@ -20,7 +20,7 @@ export function convertNetwork(
|
|
|
20
20
|
case "devnet" as Network:
|
|
21
21
|
return Network.DEVNET;
|
|
22
22
|
default:
|
|
23
|
-
throw new Error("Invalid network name");
|
|
23
|
+
throw new Error("Invalid Aptos network name");
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
|
package/src/WalletCore.ts
CHANGED
|
@@ -33,28 +33,30 @@ import {
|
|
|
33
33
|
} from "./error";
|
|
34
34
|
import {
|
|
35
35
|
AccountInfo,
|
|
36
|
+
InputTransactionData,
|
|
36
37
|
NetworkInfo,
|
|
37
38
|
SignMessagePayload,
|
|
39
|
+
SignMessageResponse,
|
|
38
40
|
Wallet,
|
|
39
|
-
WalletInfo,
|
|
40
41
|
WalletCoreEvents,
|
|
41
|
-
|
|
42
|
-
InputTransactionData,
|
|
42
|
+
WalletInfo,
|
|
43
43
|
WalletName,
|
|
44
44
|
} from "./LegacyWalletPlugins/types";
|
|
45
45
|
import {
|
|
46
|
+
generalizedErrorMessage,
|
|
47
|
+
getAptosConfig,
|
|
48
|
+
isAptosNetwork,
|
|
49
|
+
isRedirectable,
|
|
46
50
|
removeLocalStorage,
|
|
47
|
-
setLocalStorage,
|
|
48
51
|
scopePollingDetectionStrategy,
|
|
49
|
-
|
|
50
|
-
generalizedErrorMessage,
|
|
52
|
+
setLocalStorage,
|
|
51
53
|
} from "./utils";
|
|
52
54
|
import { convertNetwork } from "./LegacyWalletPlugins/conversion";
|
|
53
55
|
import { WalletCoreV1 } from "./LegacyWalletPlugins/WalletCoreV1";
|
|
54
56
|
import {
|
|
57
|
+
AccountInfo as StandardAccountInfo,
|
|
55
58
|
AptosWallet,
|
|
56
59
|
getAptosWallets,
|
|
57
|
-
AccountInfo as StandardAccountInfo,
|
|
58
60
|
NetworkInfo as StandardNetworkInfo,
|
|
59
61
|
UserResponse,
|
|
60
62
|
UserResponseStatus,
|
|
@@ -63,6 +65,8 @@ import {
|
|
|
63
65
|
AptosStandardWallet,
|
|
64
66
|
WalletStandardCore,
|
|
65
67
|
} from "./AIP62StandardWallets/WalletStandard";
|
|
68
|
+
import { GA4 } from "./ga";
|
|
69
|
+
import { WALLET_ADAPTER_CORE_VERSION } from "./version";
|
|
66
70
|
|
|
67
71
|
export type IAptosWallet = AptosStandardWallet & Wallet;
|
|
68
72
|
|
|
@@ -99,6 +103,9 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
99
103
|
// Indicates whether the dapp is connected with a wallet
|
|
100
104
|
private _connected: boolean = false;
|
|
101
105
|
|
|
106
|
+
// Google Analytics 4 module
|
|
107
|
+
private readonly ga4: GA4 = new GA4();
|
|
108
|
+
|
|
102
109
|
/**
|
|
103
110
|
* Core functionality constructor.
|
|
104
111
|
* For legacy wallet adapter v1 support we expect the dapp to pass in wallet plugins,
|
|
@@ -216,6 +223,17 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
216
223
|
this.emit("standardWalletsAdded", standardWalletConvertedToWallet);
|
|
217
224
|
};
|
|
218
225
|
|
|
226
|
+
private recordEvent(eventName: string, additionalInfo?: object) {
|
|
227
|
+
this.ga4.gtag("event", `wallet_adapter_${eventName}`, {
|
|
228
|
+
wallet: this._wallet?.name,
|
|
229
|
+
network: this._network?.name,
|
|
230
|
+
network_url: this._network?.url,
|
|
231
|
+
adapter_core_version: WALLET_ADAPTER_CORE_VERSION,
|
|
232
|
+
send_to: process.env.GAID,
|
|
233
|
+
...additionalInfo,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
|
|
219
237
|
/**
|
|
220
238
|
* Helper function to ensure wallet exists
|
|
221
239
|
*
|
|
@@ -285,7 +303,10 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
285
303
|
private async setAnsName(): Promise<void> {
|
|
286
304
|
if (this._network?.chainId && this._account) {
|
|
287
305
|
// ANS supports only MAINNET or TESTNET
|
|
288
|
-
if (
|
|
306
|
+
if (
|
|
307
|
+
!ChainIdToAnsSupportedNetworkMap[this._network.chainId] ||
|
|
308
|
+
!isAptosNetwork(this._network)
|
|
309
|
+
) {
|
|
289
310
|
this._account.ansName = undefined;
|
|
290
311
|
return;
|
|
291
312
|
}
|
|
@@ -383,14 +404,27 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
383
404
|
}
|
|
384
405
|
if (this._wallet?.isAIP62Standard) {
|
|
385
406
|
const standardizeNetwork = network as StandardNetworkInfo;
|
|
407
|
+
this.recordEvent("network_change", {
|
|
408
|
+
from: this._network?.name,
|
|
409
|
+
to: standardizeNetwork.name,
|
|
410
|
+
});
|
|
386
411
|
this._network = {
|
|
387
412
|
name: standardizeNetwork.name.toLowerCase() as Network,
|
|
388
413
|
chainId: standardizeNetwork.chainId.toString(),
|
|
389
414
|
url: standardizeNetwork.url,
|
|
390
415
|
};
|
|
416
|
+
|
|
391
417
|
return;
|
|
392
418
|
}
|
|
393
|
-
|
|
419
|
+
|
|
420
|
+
this.recordEvent("network_change", {
|
|
421
|
+
from: this._network?.name,
|
|
422
|
+
to: network.name,
|
|
423
|
+
});
|
|
424
|
+
this._network = {
|
|
425
|
+
...(network as NetworkInfo),
|
|
426
|
+
name: network.name.toLowerCase() as Network,
|
|
427
|
+
};
|
|
394
428
|
}
|
|
395
429
|
|
|
396
430
|
/**
|
|
@@ -543,6 +577,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
543
577
|
await this.setAnsName();
|
|
544
578
|
setLocalStorage(selectedWallet.name);
|
|
545
579
|
this._connected = true;
|
|
580
|
+
this.recordEvent("wallet_connect");
|
|
546
581
|
this.emit("connect", account);
|
|
547
582
|
} catch (error: any) {
|
|
548
583
|
this.clearData();
|
|
@@ -565,6 +600,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
565
600
|
this.ensureWalletExists(this._wallet);
|
|
566
601
|
await this._wallet.disconnect();
|
|
567
602
|
this.clearData();
|
|
603
|
+
this.recordEvent("wallet_disconnect");
|
|
568
604
|
this.emit("disconnect");
|
|
569
605
|
} catch (error: any) {
|
|
570
606
|
const errMsg = generalizedErrorMessage(error);
|
|
@@ -587,12 +623,10 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
587
623
|
try {
|
|
588
624
|
this.ensureWalletExists(this._wallet);
|
|
589
625
|
this.ensureAccountExists(this._account);
|
|
590
|
-
|
|
626
|
+
this.recordEvent("sign_and_submit_transaction");
|
|
591
627
|
// get the payload piece from the input
|
|
592
628
|
const payloadData = transactionInput.data;
|
|
593
|
-
const aptosConfig =
|
|
594
|
-
network: convertNetwork(this._network),
|
|
595
|
-
});
|
|
629
|
+
const aptosConfig = getAptosConfig(this._network);
|
|
596
630
|
|
|
597
631
|
const aptos = new Aptos(aptosConfig);
|
|
598
632
|
|
|
@@ -659,7 +693,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
659
693
|
): Promise<AccountAuthenticator> {
|
|
660
694
|
try {
|
|
661
695
|
this.ensureWalletExists(this._wallet);
|
|
662
|
-
|
|
696
|
+
this.recordEvent("sign_transaction");
|
|
663
697
|
// Make sure wallet supports signTransaction
|
|
664
698
|
if (this._wallet.signTransaction) {
|
|
665
699
|
// If current connected wallet is AIP-62 standard compatible
|
|
@@ -750,7 +784,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
750
784
|
async signMessage(message: SignMessagePayload): Promise<SignMessageResponse> {
|
|
751
785
|
try {
|
|
752
786
|
this.ensureWalletExists(this._wallet);
|
|
753
|
-
|
|
787
|
+
this.recordEvent("sign_message");
|
|
754
788
|
if (this._wallet.isAIP62Standard) {
|
|
755
789
|
return await this.walletStandardCore.signMessage(message, this._wallet);
|
|
756
790
|
}
|
|
@@ -775,6 +809,14 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
775
809
|
try {
|
|
776
810
|
this.ensureWalletExists(this._wallet);
|
|
777
811
|
|
|
812
|
+
const { additionalSignersAuthenticators } = transaction;
|
|
813
|
+
const transactionType =
|
|
814
|
+
additionalSignersAuthenticators !== undefined
|
|
815
|
+
? "multi-agent"
|
|
816
|
+
: "simple";
|
|
817
|
+
this.recordEvent("submit_transaction", {
|
|
818
|
+
transaction_type: transactionType,
|
|
819
|
+
});
|
|
778
820
|
// If wallet supports submitTransaction transaction function
|
|
779
821
|
if (this._wallet.submitTransaction) {
|
|
780
822
|
const pendingTransaction =
|
|
@@ -783,7 +825,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
783
825
|
}
|
|
784
826
|
|
|
785
827
|
// Else have the adpater submits the transaction
|
|
786
|
-
|
|
828
|
+
|
|
787
829
|
const aptosConfig = new AptosConfig({
|
|
788
830
|
network: convertNetwork(this.network),
|
|
789
831
|
});
|
|
@@ -815,6 +857,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
815
857
|
async (data: AccountInfo | StandardAccountInfo) => {
|
|
816
858
|
this.setAccount(data);
|
|
817
859
|
await this.setAnsName();
|
|
860
|
+
this.recordEvent("account_change");
|
|
818
861
|
this.emit("accountChange", this._account);
|
|
819
862
|
}
|
|
820
863
|
);
|
|
@@ -854,7 +897,7 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
|
|
|
854
897
|
try {
|
|
855
898
|
this.ensureWalletExists(this._wallet);
|
|
856
899
|
this.ensureAccountExists(this._account);
|
|
857
|
-
|
|
900
|
+
this.recordEvent("sign_message_and_verify");
|
|
858
901
|
// If current connected wallet is AIP-62 standard compatible
|
|
859
902
|
if (this._wallet.isAIP62Standard) {
|
|
860
903
|
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/utils/helpers.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
+
AptosConfig,
|
|
2
3
|
EntryFunctionArgumentTypes,
|
|
4
|
+
Network,
|
|
5
|
+
NetworkToNodeAPI,
|
|
3
6
|
Serializable,
|
|
4
7
|
SimpleEntryFunctionArgumentTypes,
|
|
5
8
|
} from "@aptos-labs/ts-sdk";
|
|
9
|
+
import { NetworkInfo as StandardNetworkInfo } from "@aptos-labs/wallet-standard";
|
|
10
|
+
import { NetworkInfo } from "../LegacyWalletPlugins/types";
|
|
11
|
+
import { convertNetwork } from "../LegacyWalletPlugins/conversion";
|
|
6
12
|
|
|
7
13
|
export function isMobile(): boolean {
|
|
8
14
|
return /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(
|
|
@@ -52,3 +58,41 @@ export const areBCSArguments = (
|
|
|
52
58
|
arg instanceof Serializable
|
|
53
59
|
);
|
|
54
60
|
};
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Helper function to get AptosConfig that supports Aptos and Custom networks
|
|
64
|
+
*
|
|
65
|
+
* @param networkInfo
|
|
66
|
+
* @returns AptosConfig
|
|
67
|
+
*/
|
|
68
|
+
export const getAptosConfig = (
|
|
69
|
+
networkInfo: NetworkInfo | StandardNetworkInfo | null
|
|
70
|
+
): AptosConfig => {
|
|
71
|
+
if (!networkInfo) {
|
|
72
|
+
throw new Error("Undefined network");
|
|
73
|
+
}
|
|
74
|
+
if (isAptosNetwork(networkInfo)) {
|
|
75
|
+
return new AptosConfig({
|
|
76
|
+
network: convertNetwork(networkInfo),
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return new AptosConfig({
|
|
80
|
+
network: Network.CUSTOM,
|
|
81
|
+
fullnode: networkInfo.url,
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Helper function to resolve if the current connected network is an Aptos network
|
|
87
|
+
*
|
|
88
|
+
* @param networkInfo
|
|
89
|
+
* @returns boolean
|
|
90
|
+
*/
|
|
91
|
+
export const isAptosNetwork = (
|
|
92
|
+
networkInfo: NetworkInfo | StandardNetworkInfo | null
|
|
93
|
+
): boolean => {
|
|
94
|
+
if (!networkInfo) {
|
|
95
|
+
throw new Error("Undefined network");
|
|
96
|
+
}
|
|
97
|
+
return NetworkToNodeAPI[networkInfo.name] !== undefined;
|
|
98
|
+
};
|
package/src/version.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const WALLET_ADAPTER_CORE_VERSION = "3.11.0";
|