@metamask/connect-multichain 0.7.0 → 0.8.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 +13 -1
- package/dist/browser/es/connect-multichain.d.mts +1 -0
- package/dist/browser/es/connect-multichain.mjs +96 -51
- package/dist/browser/es/connect-multichain.mjs.map +1 -1
- package/dist/browser/es/metafile-esm.json +1 -1
- package/dist/browser/iife/connect-multichain.d.ts +1 -0
- package/dist/browser/iife/connect-multichain.js +2651 -4959
- package/dist/browser/iife/connect-multichain.js.map +1 -1
- package/dist/browser/iife/metafile-iife.json +1 -1
- package/dist/browser/umd/connect-multichain.d.ts +1 -0
- package/dist/browser/umd/connect-multichain.js +95 -50
- package/dist/browser/umd/connect-multichain.js.map +1 -1
- package/dist/browser/umd/metafile-cjs.json +1 -1
- package/dist/node/cjs/connect-multichain.d.ts +1 -0
- package/dist/node/cjs/connect-multichain.js +95 -50
- package/dist/node/cjs/connect-multichain.js.map +1 -1
- package/dist/node/cjs/metafile-cjs.json +1 -1
- package/dist/node/es/connect-multichain.d.mts +1 -0
- package/dist/node/es/connect-multichain.mjs +96 -51
- package/dist/node/es/connect-multichain.mjs.map +1 -1
- package/dist/node/es/metafile-esm.json +1 -1
- package/dist/react-native/es/connect-multichain.d.mts +1 -0
- package/dist/react-native/es/connect-multichain.mjs +96 -51
- package/dist/react-native/es/connect-multichain.mjs.map +1 -1
- package/dist/react-native/es/metafile-esm.json +1 -1
- package/dist/src/domain/multichain/types.d.ts +1 -0
- package/dist/src/domain/multichain/types.d.ts.map +1 -1
- package/dist/src/multichain/index.d.ts.map +1 -1
- package/dist/src/multichain/index.js +65 -22
- package/dist/src/multichain/index.js.map +1 -1
- package/dist/src/multichain/transports/default/index.d.ts +1 -0
- package/dist/src/multichain/transports/default/index.d.ts.map +1 -1
- package/dist/src/multichain/transports/default/index.js +28 -32
- package/dist/src/multichain/transports/default/index.js.map +1 -1
- package/dist/src/multichain/transports/mwp/KeyManager.d.ts +1 -0
- package/dist/src/multichain/transports/mwp/KeyManager.d.ts.map +1 -1
- package/dist/src/multichain/transports/mwp/KeyManager.js +4 -1
- package/dist/src/multichain/transports/mwp/KeyManager.js.map +1 -1
- package/dist/src/multichain/transports/mwp/index.d.ts +1 -0
- package/dist/src/multichain/transports/mwp/index.d.ts.map +1 -1
- package/dist/src/multichain/transports/mwp/index.js +6 -1
- package/dist/src/multichain/transports/mwp/index.js.map +1 -1
- package/dist/types/connect-multichain.d.ts +1 -0
- package/package.json +3 -3
|
@@ -455,6 +455,7 @@ type MergeableMultichainOptions = Omit<MultichainOptions, 'dapp' | 'analytics' |
|
|
|
455
455
|
*/
|
|
456
456
|
type CreateMultichainFN = (options: MultiChainFNOptions) => Promise<MultichainCore>;
|
|
457
457
|
type ExtendedTransport = Omit<Transport, 'connect'> & {
|
|
458
|
+
init: () => Promise<void>;
|
|
458
459
|
connect: (props?: {
|
|
459
460
|
scopes: Scope[];
|
|
460
461
|
caipAccountIds: CaipAccountId[];
|
|
@@ -1630,7 +1630,7 @@ trackWalletActionRejected_fn = function(options) {
|
|
|
1630
1630
|
var import_multichain_api_client = require("@metamask/multichain-api-client");
|
|
1631
1631
|
init_utils2();
|
|
1632
1632
|
var DEFAULT_REQUEST_TIMEOUT = 60 * 1e3;
|
|
1633
|
-
var _notificationCallbacks, _transport, _defaultRequestOptions, _pendingRequests, _handleResponseListener, _handleNotificationListener, _DefaultTransport_instances, notifyCallbacks_fn, isMetamaskProviderEvent_fn, handleResponse_fn, handleNotification_fn, setupMessageListener_fn;
|
|
1633
|
+
var _notificationCallbacks, _transport, _defaultRequestOptions, _pendingRequests, _handleResponseListener, _handleNotificationListener, _DefaultTransport_instances, notifyCallbacks_fn, isMetamaskProviderEvent_fn, handleResponse_fn, handleNotification_fn, setupMessageListener_fn, init_fn;
|
|
1634
1634
|
var DefaultTransport = class {
|
|
1635
1635
|
constructor() {
|
|
1636
1636
|
__privateAdd(this, _DefaultTransport_instances);
|
|
@@ -1678,11 +1678,31 @@ var DefaultTransport = class {
|
|
|
1678
1678
|
});
|
|
1679
1679
|
});
|
|
1680
1680
|
}
|
|
1681
|
+
init() {
|
|
1682
|
+
return __async(this, null, function* () {
|
|
1683
|
+
yield __privateMethod(this, _DefaultTransport_instances, init_fn).call(this);
|
|
1684
|
+
let walletSession = { sessionScopes: {} };
|
|
1685
|
+
try {
|
|
1686
|
+
const sessionRequest = yield this.request(
|
|
1687
|
+
{ method: "wallet_getSession" },
|
|
1688
|
+
__privateGet(this, _defaultRequestOptions)
|
|
1689
|
+
);
|
|
1690
|
+
walletSession = sessionRequest.result;
|
|
1691
|
+
} catch (e) {
|
|
1692
|
+
console.error(
|
|
1693
|
+
"Failed to get wallet session during DefaultTransport init"
|
|
1694
|
+
);
|
|
1695
|
+
}
|
|
1696
|
+
__privateMethod(this, _DefaultTransport_instances, notifyCallbacks_fn).call(this, {
|
|
1697
|
+
method: "wallet_sessionChanged",
|
|
1698
|
+
params: walletSession
|
|
1699
|
+
});
|
|
1700
|
+
});
|
|
1701
|
+
}
|
|
1681
1702
|
connect(options) {
|
|
1682
1703
|
return __async(this, null, function* () {
|
|
1683
1704
|
var _a3, _b, _c, _d, _e;
|
|
1684
|
-
__privateMethod(this, _DefaultTransport_instances,
|
|
1685
|
-
yield __privateGet(this, _transport).connect();
|
|
1705
|
+
yield __privateMethod(this, _DefaultTransport_instances, init_fn).call(this);
|
|
1686
1706
|
const sessionRequest = yield this.request(
|
|
1687
1707
|
{ method: "wallet_getSession" },
|
|
1688
1708
|
__privateGet(this, _defaultRequestOptions)
|
|
@@ -1739,26 +1759,6 @@ var DefaultTransport = class {
|
|
|
1739
1759
|
disconnect() {
|
|
1740
1760
|
return __async(this, arguments, function* (scopes = []) {
|
|
1741
1761
|
yield this.request({ method: "wallet_revokeSession", params: { scopes } });
|
|
1742
|
-
const response = yield this.request({ method: "wallet_getSession" });
|
|
1743
|
-
const { sessionScopes } = response.result;
|
|
1744
|
-
if (Object.keys(sessionScopes).length > 0) {
|
|
1745
|
-
return;
|
|
1746
|
-
}
|
|
1747
|
-
__privateGet(this, _notificationCallbacks).clear();
|
|
1748
|
-
if (__privateGet(this, _handleResponseListener)) {
|
|
1749
|
-
window.removeEventListener("message", __privateGet(this, _handleResponseListener));
|
|
1750
|
-
__privateSet(this, _handleResponseListener, void 0);
|
|
1751
|
-
}
|
|
1752
|
-
if (__privateGet(this, _handleNotificationListener)) {
|
|
1753
|
-
window.removeEventListener("message", __privateGet(this, _handleNotificationListener));
|
|
1754
|
-
__privateSet(this, _handleNotificationListener, void 0);
|
|
1755
|
-
}
|
|
1756
|
-
for (const [, request] of __privateGet(this, _pendingRequests)) {
|
|
1757
|
-
clearTimeout(request.timeout);
|
|
1758
|
-
request.reject(new Error("Transport disconnected"));
|
|
1759
|
-
}
|
|
1760
|
-
__privateGet(this, _pendingRequests).clear();
|
|
1761
|
-
yield __privateGet(this, _transport).disconnect();
|
|
1762
1762
|
});
|
|
1763
1763
|
}
|
|
1764
1764
|
isConnected() {
|
|
@@ -1847,7 +1847,7 @@ handleNotification_fn = function(event) {
|
|
|
1847
1847
|
return;
|
|
1848
1848
|
}
|
|
1849
1849
|
const responseData = (_b = (_a3 = event == null ? void 0 : event.data) == null ? void 0 : _a3.data) == null ? void 0 : _b.data;
|
|
1850
|
-
if (typeof responseData === "object" && responseData.method === "metamask_chainChanged" || responseData.method === "metamask_accountsChanged") {
|
|
1850
|
+
if (typeof responseData === "object" && responseData !== null && (responseData.method === "metamask_chainChanged" || responseData.method === "metamask_accountsChanged")) {
|
|
1851
1851
|
__privateMethod(this, _DefaultTransport_instances, notifyCallbacks_fn).call(this, responseData);
|
|
1852
1852
|
}
|
|
1853
1853
|
};
|
|
@@ -1860,6 +1860,12 @@ setupMessageListener_fn = function() {
|
|
|
1860
1860
|
window.addEventListener("message", __privateGet(this, _handleResponseListener));
|
|
1861
1861
|
window.addEventListener("message", __privateGet(this, _handleNotificationListener));
|
|
1862
1862
|
};
|
|
1863
|
+
init_fn = function() {
|
|
1864
|
+
return __async(this, null, function* () {
|
|
1865
|
+
__privateMethod(this, _DefaultTransport_instances, setupMessageListener_fn).call(this);
|
|
1866
|
+
yield __privateGet(this, _transport).connect();
|
|
1867
|
+
});
|
|
1868
|
+
};
|
|
1863
1869
|
|
|
1864
1870
|
// src/multichain/transports/multichainApiClientWrapper/index.ts
|
|
1865
1871
|
var import_rpc_errors = require("@metamask/rpc-errors");
|
|
@@ -2257,6 +2263,10 @@ var MWPTransport = class {
|
|
|
2257
2263
|
}
|
|
2258
2264
|
});
|
|
2259
2265
|
}
|
|
2266
|
+
init() {
|
|
2267
|
+
return __async(this, null, function* () {
|
|
2268
|
+
});
|
|
2269
|
+
}
|
|
2260
2270
|
// TODO: Rename this
|
|
2261
2271
|
sendEip1193Message(payload, options) {
|
|
2262
2272
|
return __async(this, null, function* () {
|
|
@@ -2609,7 +2619,7 @@ var MWPTransport = class {
|
|
|
2609
2619
|
getActiveSession() {
|
|
2610
2620
|
return __async(this, null, function* () {
|
|
2611
2621
|
const { kvstore } = this;
|
|
2612
|
-
const sessionStore =
|
|
2622
|
+
const sessionStore = yield import_mobile_wallet_protocol_core.SessionStore.create(kvstore);
|
|
2613
2623
|
try {
|
|
2614
2624
|
const [activeSession] = yield sessionStore.list();
|
|
2615
2625
|
return activeSession;
|
|
@@ -2683,6 +2693,9 @@ var KeyManager = class {
|
|
|
2683
2693
|
return Buffer.from(decryptedBuffer).toString("utf8");
|
|
2684
2694
|
});
|
|
2685
2695
|
}
|
|
2696
|
+
validatePeerKey(key) {
|
|
2697
|
+
import_eciesjs.PublicKey.fromHex(Buffer.from(key).toString("hex"));
|
|
2698
|
+
}
|
|
2686
2699
|
};
|
|
2687
2700
|
var keymanager = new KeyManager();
|
|
2688
2701
|
|
|
@@ -2690,7 +2703,7 @@ var keymanager = new KeyManager();
|
|
|
2690
2703
|
init_utils2();
|
|
2691
2704
|
var logger2 = createLogger("metamask-sdk:core");
|
|
2692
2705
|
var SINGLETON_KEY = "__METAMASK_CONNECT_MULTICHAIN_SINGLETON__";
|
|
2693
|
-
var _a2, _provider, _providerTransportWrapper, _transport2, _dappClient, _beforeUnloadListener, _listener, _sdkInfo, _MetaMaskConnectMultichain_instances, setupAnalytics_fn, onTransportNotification_fn, getStoredTransport_fn, setupTransport_fn,
|
|
2706
|
+
var _a2, _provider, _providerTransportWrapper, _transport2, _dappClient, _beforeUnloadListener, _listener, _sdkInfo, _MetaMaskConnectMultichain_instances, setupAnalytics_fn, onTransportNotification_fn, getStoredTransport_fn, setupTransport_fn, init_fn2, createDappClient_fn, setupMWP_fn, onBeforeUnload_fn, createBeforeUnloadListener_fn, renderInstallModalAsync_fn, showInstallModal_fn, headlessConnect_fn, setupDefaultTransport_fn, deeplinkConnect_fn, handleConnection_fn, getCaipSession_fn, openConnectDeeplinkIfNeeded_fn;
|
|
2694
2707
|
var _MetaMaskConnectMultichain = class _MetaMaskConnectMultichain extends MultichainCore {
|
|
2695
2708
|
constructor(options) {
|
|
2696
2709
|
var _a3, _b, _c, _d, _e, _f;
|
|
@@ -2728,6 +2741,9 @@ var _MetaMaskConnectMultichain = class _MetaMaskConnectMultichain extends Multic
|
|
|
2728
2741
|
}
|
|
2729
2742
|
set status(value) {
|
|
2730
2743
|
var _a3, _b;
|
|
2744
|
+
if (this._status === value) {
|
|
2745
|
+
return;
|
|
2746
|
+
}
|
|
2731
2747
|
this._status = value;
|
|
2732
2748
|
(_b = (_a3 = this.options.transport) == null ? void 0 : _a3.onNotification) == null ? void 0 : _b.call(_a3, {
|
|
2733
2749
|
method: "stateChanged",
|
|
@@ -2783,7 +2799,7 @@ var _MetaMaskConnectMultichain = class _MetaMaskConnectMultichain extends Multic
|
|
|
2783
2799
|
if (isEnabled2) {
|
|
2784
2800
|
enableDebug("metamask-sdk:core");
|
|
2785
2801
|
}
|
|
2786
|
-
yield __privateMethod(_a3 = instance, _MetaMaskConnectMultichain_instances,
|
|
2802
|
+
yield __privateMethod(_a3 = instance, _MetaMaskConnectMultichain_instances, init_fn2).call(_a3);
|
|
2787
2803
|
return instance;
|
|
2788
2804
|
}))();
|
|
2789
2805
|
globalObject[SINGLETON_KEY] = instancePromise;
|
|
@@ -2893,14 +2909,16 @@ var _MetaMaskConnectMultichain = class _MetaMaskConnectMultichain extends Multic
|
|
|
2893
2909
|
);
|
|
2894
2910
|
yield (_a3 = __privateGet(this, _transport2)) == null ? void 0 : _a3.disconnect(scopes);
|
|
2895
2911
|
if (remainingScopes.length === 0) {
|
|
2896
|
-
yield (_b = __privateGet(this, _listener)) == null ? void 0 : _b.call(this);
|
|
2897
|
-
(_c = __privateGet(this, _beforeUnloadListener)) == null ? void 0 : _c.call(this);
|
|
2898
2912
|
yield this.storage.removeTransport();
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2913
|
+
if (this.transportType !== "browser" /* Browser */) {
|
|
2914
|
+
yield (_b = __privateGet(this, _listener)) == null ? void 0 : _b.call(this);
|
|
2915
|
+
(_c = __privateGet(this, _beforeUnloadListener)) == null ? void 0 : _c.call(this);
|
|
2916
|
+
__privateSet(this, _listener, void 0);
|
|
2917
|
+
__privateSet(this, _beforeUnloadListener, void 0);
|
|
2918
|
+
__privateSet(this, _transport2, void 0);
|
|
2919
|
+
__privateGet(this, _providerTransportWrapper).clearTransportNotificationListener();
|
|
2920
|
+
__privateSet(this, _dappClient, void 0);
|
|
2921
|
+
}
|
|
2904
2922
|
this.status = "disconnected";
|
|
2905
2923
|
}
|
|
2906
2924
|
});
|
|
@@ -2939,16 +2957,16 @@ var _MetaMaskConnectMultichain = class _MetaMaskConnectMultichain extends Multic
|
|
|
2939
2957
|
// without having to concern themselves with the current transport connection status.
|
|
2940
2958
|
emitSessionChanged() {
|
|
2941
2959
|
return __async(this, null, function* () {
|
|
2942
|
-
var _a3;
|
|
2960
|
+
var _a3, _b;
|
|
2943
2961
|
const emptySession = { sessionScopes: {} };
|
|
2944
|
-
if (this
|
|
2962
|
+
if (!((_a3 = __privateGet(this, _transport2)) == null ? void 0 : _a3.isConnected())) {
|
|
2945
2963
|
this.emit("wallet_sessionChanged", emptySession);
|
|
2946
2964
|
return;
|
|
2947
2965
|
}
|
|
2948
2966
|
const response = yield this.transport.request({
|
|
2949
2967
|
method: "wallet_getSession"
|
|
2950
2968
|
});
|
|
2951
|
-
this.emit("wallet_sessionChanged", (
|
|
2969
|
+
this.emit("wallet_sessionChanged", (_b = response.result) != null ? _b : emptySession);
|
|
2952
2970
|
});
|
|
2953
2971
|
}
|
|
2954
2972
|
};
|
|
@@ -2985,9 +3003,17 @@ setupAnalytics_fn = function() {
|
|
|
2985
3003
|
};
|
|
2986
3004
|
onTransportNotification_fn = function(payload) {
|
|
2987
3005
|
return __async(this, null, function* () {
|
|
2988
|
-
var _a3;
|
|
3006
|
+
var _a3, _b, _c;
|
|
2989
3007
|
if (typeof payload === "object" && payload !== null && "method" in payload) {
|
|
2990
|
-
|
|
3008
|
+
if (payload.method === "wallet_sessionChanged") {
|
|
3009
|
+
const sessionScopes = (_b = (_a3 = payload.params) == null ? void 0 : _a3.sessionScopes) != null ? _b : {};
|
|
3010
|
+
const hasScopes = Object.keys(sessionScopes).length > 0;
|
|
3011
|
+
if (this.status === "loaded" && !hasScopes) {
|
|
3012
|
+
return;
|
|
3013
|
+
}
|
|
3014
|
+
this.status = hasScopes ? "connected" : "disconnected";
|
|
3015
|
+
}
|
|
3016
|
+
this.emit(payload.method, (_c = payload.params) != null ? _c : payload.result);
|
|
2991
3017
|
}
|
|
2992
3018
|
});
|
|
2993
3019
|
};
|
|
@@ -3025,6 +3051,7 @@ getStoredTransport_fn = function() {
|
|
|
3025
3051
|
};
|
|
3026
3052
|
setupTransport_fn = function() {
|
|
3027
3053
|
return __async(this, null, function* () {
|
|
3054
|
+
var _a3;
|
|
3028
3055
|
const transport = yield __privateMethod(this, _MetaMaskConnectMultichain_instances, getStoredTransport_fn).call(this);
|
|
3029
3056
|
if (transport) {
|
|
3030
3057
|
if (!this.transport.isConnected()) {
|
|
@@ -3039,10 +3066,20 @@ setupTransport_fn = function() {
|
|
|
3039
3066
|
}
|
|
3040
3067
|
} else {
|
|
3041
3068
|
this.status = "loaded";
|
|
3069
|
+
const hasExtensionInstalled = yield hasExtension();
|
|
3070
|
+
const preferExtension = (_a3 = this.options.ui.preferExtension) != null ? _a3 : true;
|
|
3071
|
+
if (hasExtensionInstalled && preferExtension) {
|
|
3072
|
+
yield __privateMethod(this, _MetaMaskConnectMultichain_instances, setupDefaultTransport_fn).call(this, { persist: false });
|
|
3073
|
+
try {
|
|
3074
|
+
yield this.transport.init();
|
|
3075
|
+
} catch (error) {
|
|
3076
|
+
console.error("Passive init failed:", error);
|
|
3077
|
+
}
|
|
3078
|
+
}
|
|
3042
3079
|
}
|
|
3043
3080
|
});
|
|
3044
3081
|
};
|
|
3045
|
-
|
|
3082
|
+
init_fn2 = function() {
|
|
3046
3083
|
return __async(this, null, function* () {
|
|
3047
3084
|
try {
|
|
3048
3085
|
yield __privateMethod(this, _MetaMaskConnectMultichain_instances, setupAnalytics_fn).call(this);
|
|
@@ -3066,7 +3103,7 @@ init_fn = function() {
|
|
|
3066
3103
|
createDappClient_fn = function() {
|
|
3067
3104
|
return __async(this, null, function* () {
|
|
3068
3105
|
const { adapter: kvstore } = this.options.storage;
|
|
3069
|
-
const sessionstore =
|
|
3106
|
+
const sessionstore = yield import_mobile_wallet_protocol_core2.SessionStore.create(kvstore);
|
|
3070
3107
|
const websocket = (
|
|
3071
3108
|
// eslint-disable-next-line no-negated-condition
|
|
3072
3109
|
typeof window !== "undefined" ? WebSocket : (yield import("ws")).WebSocket
|
|
@@ -3243,9 +3280,13 @@ headlessConnect_fn = function(scopes, caipAccountIds, sessionProperties) {
|
|
|
3243
3280
|
});
|
|
3244
3281
|
};
|
|
3245
3282
|
setupDefaultTransport_fn = function() {
|
|
3246
|
-
return __async(this,
|
|
3247
|
-
this
|
|
3248
|
-
|
|
3283
|
+
return __async(this, arguments, function* (options = { persist: true }) {
|
|
3284
|
+
if (__privateGet(this, _transport2) instanceof DefaultTransport) {
|
|
3285
|
+
return __privateGet(this, _transport2);
|
|
3286
|
+
}
|
|
3287
|
+
if (options == null ? void 0 : options.persist) {
|
|
3288
|
+
yield this.storage.setTransport("browser" /* Browser */);
|
|
3289
|
+
}
|
|
3249
3290
|
const transport = new DefaultTransport();
|
|
3250
3291
|
__privateSet(this, _listener, transport.onNotification(
|
|
3251
3292
|
__privateMethod(this, _MetaMaskConnectMultichain_instances, onTransportNotification_fn).bind(this)
|
|
@@ -3363,16 +3404,20 @@ handleConnection_fn = function(promise, scopes, transportType) {
|
|
|
3363
3404
|
};
|
|
3364
3405
|
getCaipSession_fn = function() {
|
|
3365
3406
|
return __async(this, null, function* () {
|
|
3407
|
+
var _a3;
|
|
3366
3408
|
let sessionData = {
|
|
3367
3409
|
sessionScopes: {},
|
|
3368
3410
|
sessionProperties: {}
|
|
3369
3411
|
};
|
|
3370
|
-
if (this
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3412
|
+
if ((_a3 = __privateGet(this, _transport2)) == null ? void 0 : _a3.isConnected()) {
|
|
3413
|
+
try {
|
|
3414
|
+
const response = yield this.transport.request({
|
|
3415
|
+
method: "wallet_getSession"
|
|
3416
|
+
});
|
|
3417
|
+
if (response.result) {
|
|
3418
|
+
sessionData = response.result;
|
|
3419
|
+
}
|
|
3420
|
+
} catch (e) {
|
|
3376
3421
|
}
|
|
3377
3422
|
}
|
|
3378
3423
|
return sessionData;
|