@metamask/connect-multichain 0.3.1 → 0.3.2
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 +8 -1
- package/dist/browser/es/connect-multichain.d.mts +4 -3
- package/dist/browser/es/connect-multichain.mjs +45 -25
- 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 +4 -3
- package/dist/browser/iife/connect-multichain.js +45 -25
- 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 +4 -3
- package/dist/browser/umd/connect-multichain.js +45 -25
- 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 +4 -3
- package/dist/node/cjs/connect-multichain.js +45 -25
- 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 +4 -3
- package/dist/node/es/connect-multichain.mjs +45 -25
- 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 +4 -3
- package/dist/react-native/es/connect-multichain.mjs +45 -25
- 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 +2 -1
- 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 +11 -6
- package/dist/src/multichain/index.js.map +1 -1
- package/dist/src/multichain/rpc/requestRouter.d.ts.map +1 -1
- package/dist/src/multichain/rpc/requestRouter.js +9 -4
- package/dist/src/multichain/rpc/requestRouter.js.map +1 -1
- package/dist/src/multichain/transports/default/index.d.ts +2 -0
- package/dist/src/multichain/transports/default/index.d.ts.map +1 -1
- package/dist/src/multichain/transports/default/index.js +6 -0
- package/dist/src/multichain/transports/default/index.js.map +1 -1
- package/dist/src/multichain/transports/mwp/index.d.ts +2 -1
- package/dist/src/multichain/transports/mwp/index.d.ts.map +1 -1
- package/dist/src/multichain/transports/mwp/index.js +19 -12
- package/dist/src/multichain/transports/mwp/index.js.map +1 -1
- package/dist/src/ui/index.d.ts +2 -2
- package/dist/src/ui/index.d.ts.map +1 -1
- package/dist/src/ui/index.js +5 -5
- package/dist/src/ui/index.js.map +1 -1
- package/dist/types/connect-multichain.d.ts +4 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.3.2]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Add connection id to simple deeplinks ([#63](https://github.com/MetaMask/metamask-connect-monorepo/pull/63))
|
|
15
|
+
|
|
10
16
|
## [0.3.1]
|
|
11
17
|
|
|
12
18
|
### Changed
|
|
@@ -66,7 +72,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
66
72
|
|
|
67
73
|
- Initial release
|
|
68
74
|
|
|
69
|
-
[Unreleased]: https://github.com/MetaMask/metamask-connect-monorepo/compare/@metamask/connect-multichain@0.3.
|
|
75
|
+
[Unreleased]: https://github.com/MetaMask/metamask-connect-monorepo/compare/@metamask/connect-multichain@0.3.2...HEAD
|
|
76
|
+
[0.3.2]: https://github.com/MetaMask/metamask-connect-monorepo/compare/@metamask/connect-multichain@0.3.1...@metamask/connect-multichain@0.3.2
|
|
70
77
|
[0.3.1]: https://github.com/MetaMask/metamask-connect-monorepo/compare/@metamask/connect-multichain@0.3.0...@metamask/connect-multichain@0.3.1
|
|
71
78
|
[0.3.0]: https://github.com/MetaMask/metamask-connect-monorepo/compare/@metamask/connect-multichain@0.2.1...@metamask/connect-multichain@0.3.0
|
|
72
79
|
[0.2.1]: https://github.com/MetaMask/metamask-connect-monorepo/compare/@metamask/connect-multichain@0.2.0...@metamask/connect-multichain@0.2.1
|
|
@@ -2,7 +2,7 @@ import debug from 'debug';
|
|
|
2
2
|
import { SessionData, Transport, TransportRequest, TransportResponse, MultichainApiClient } from '@metamask/multichain-api-client';
|
|
3
3
|
export { SessionData } from '@metamask/multichain-api-client';
|
|
4
4
|
import { CaipAccountId, Json } from '@metamask/utils';
|
|
5
|
-
import { SessionRequest } from '@metamask/mobile-wallet-protocol-core';
|
|
5
|
+
import { SessionRequest, Session } from '@metamask/mobile-wallet-protocol-core';
|
|
6
6
|
import { Components } from '@metamask/multichain-ui';
|
|
7
7
|
|
|
8
8
|
type Enumerate<N extends number, Acc extends number[] = []> = Acc['length'] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc['length']]>;
|
|
@@ -326,8 +326,8 @@ declare class ModalFactory<T extends FactoryModals = FactoryModals> {
|
|
|
326
326
|
get isWeb(): boolean;
|
|
327
327
|
private getContainer;
|
|
328
328
|
private getMountedContainer;
|
|
329
|
-
|
|
330
|
-
|
|
329
|
+
createConnectionDeeplink(connectionRequest?: ConnectionRequest): string;
|
|
330
|
+
createConnectionUniversalLink(connectionRequest?: ConnectionRequest): string;
|
|
331
331
|
private onCloseModal;
|
|
332
332
|
private onStartDesktopOnboarding;
|
|
333
333
|
renderInstallModal(showInstallModal: boolean, createConnectionRequest: () => Promise<ConnectionRequest>, successCallback: (error?: Error) => Promise<void>): Promise<void>;
|
|
@@ -444,6 +444,7 @@ type ExtendedTransport = Omit<Transport, 'connect'> & {
|
|
|
444
444
|
sendEip1193Message: <TRequest extends TransportRequest, TResponse extends TransportResponse>(request: TRequest, options?: {
|
|
445
445
|
timeout?: number;
|
|
446
446
|
}) => Promise<TResponse>;
|
|
447
|
+
getActiveSession: () => Promise<Session | undefined>;
|
|
447
448
|
};
|
|
448
449
|
|
|
449
450
|
declare const infuraRpcUrls: RpcUrlsMap;
|
|
@@ -1337,13 +1337,18 @@ var RequestRouter = class {
|
|
|
1337
1337
|
const secure = isSecure();
|
|
1338
1338
|
const shouldOpenDeeplink = secure && !showInstallModal;
|
|
1339
1339
|
if (shouldOpenDeeplink) {
|
|
1340
|
-
setTimeout(() => {
|
|
1340
|
+
setTimeout(() => __async(this, null, function* () {
|
|
1341
|
+
const session = yield this.transport.getActiveSession();
|
|
1342
|
+
if (!session) {
|
|
1343
|
+
throw new Error("No active session found");
|
|
1344
|
+
}
|
|
1345
|
+
const url = `${METAMASK_DEEPLINK_BASE}/mwp?id=${encodeURIComponent(session.id)}`;
|
|
1341
1346
|
if (mobile == null ? void 0 : mobile.preferredOpenLink) {
|
|
1342
|
-
mobile.preferredOpenLink(
|
|
1347
|
+
mobile.preferredOpenLink(url, "_self");
|
|
1343
1348
|
} else {
|
|
1344
|
-
openDeeplink(this.config,
|
|
1349
|
+
openDeeplink(this.config, url, METAMASK_CONNECT_BASE_URL);
|
|
1345
1350
|
}
|
|
1346
|
-
}, 10);
|
|
1351
|
+
}), 10);
|
|
1347
1352
|
}
|
|
1348
1353
|
const response = yield request;
|
|
1349
1354
|
if (response.error) {
|
|
@@ -1592,6 +1597,9 @@ var DefaultTransport = class {
|
|
|
1592
1597
|
__privateGet(this, _notificationCallbacks).delete(callback);
|
|
1593
1598
|
};
|
|
1594
1599
|
}
|
|
1600
|
+
getActiveSession() {
|
|
1601
|
+
throw new Error("getActiveSession is purposely not implemented for the DefaultTransport");
|
|
1602
|
+
}
|
|
1595
1603
|
};
|
|
1596
1604
|
_notificationCallbacks = new WeakMap();
|
|
1597
1605
|
_transport = new WeakMap();
|
|
@@ -1876,16 +1884,10 @@ var MWPTransport = class {
|
|
|
1876
1884
|
}
|
|
1877
1885
|
connect(options) {
|
|
1878
1886
|
return __async(this, null, function* () {
|
|
1879
|
-
const { dappClient
|
|
1880
|
-
const
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
const [activeSession] = yield sessionStore.list();
|
|
1884
|
-
if (activeSession) {
|
|
1885
|
-
logger("active session found", activeSession);
|
|
1886
|
-
session = activeSession;
|
|
1887
|
-
}
|
|
1888
|
-
} catch (e) {
|
|
1887
|
+
const { dappClient } = this;
|
|
1888
|
+
const session = yield this.getActiveSession();
|
|
1889
|
+
if (session) {
|
|
1890
|
+
logger("active session found", session);
|
|
1889
1891
|
}
|
|
1890
1892
|
let timeout;
|
|
1891
1893
|
const connectionPromise = new Promise((resolve, reject) => {
|
|
@@ -2117,6 +2119,19 @@ var MWPTransport = class {
|
|
|
2117
2119
|
this.notificationCallbacks.delete(callback);
|
|
2118
2120
|
};
|
|
2119
2121
|
}
|
|
2122
|
+
getActiveSession() {
|
|
2123
|
+
return __async(this, null, function* () {
|
|
2124
|
+
const { kvstore } = this;
|
|
2125
|
+
const sessionStore = new SessionStore(kvstore);
|
|
2126
|
+
try {
|
|
2127
|
+
const [activeSession] = yield sessionStore.list();
|
|
2128
|
+
return activeSession;
|
|
2129
|
+
} catch (error) {
|
|
2130
|
+
logger("error getting active session", error);
|
|
2131
|
+
return void 0;
|
|
2132
|
+
}
|
|
2133
|
+
});
|
|
2134
|
+
}
|
|
2120
2135
|
};
|
|
2121
2136
|
|
|
2122
2137
|
// src/multichain/transports/mwp/KeyManager.ts
|
|
@@ -2500,8 +2515,8 @@ var MultichainSDK = class _MultichainSDK extends MultichainCore {
|
|
|
2500
2515
|
sdk: { version: getVersion(), platform: getPlatformType() }
|
|
2501
2516
|
}
|
|
2502
2517
|
};
|
|
2503
|
-
const deeplink = this.options.ui.factory.
|
|
2504
|
-
const universalLink = this.options.ui.factory.
|
|
2518
|
+
const deeplink = this.options.ui.factory.createConnectionDeeplink(connectionRequest);
|
|
2519
|
+
const universalLink = this.options.ui.factory.createConnectionUniversalLink(connectionRequest);
|
|
2505
2520
|
if ((_a = this.options.mobile) == null ? void 0 : _a.preferredOpenLink) {
|
|
2506
2521
|
this.options.mobile.preferredOpenLink(deeplink, "_self");
|
|
2507
2522
|
} else {
|
|
@@ -2684,17 +2699,22 @@ var MultichainSDK = class _MultichainSDK extends MultichainCore {
|
|
|
2684
2699
|
const secure = isSecure();
|
|
2685
2700
|
const shouldOpenDeeplink = secure && !showInstallModal;
|
|
2686
2701
|
if (shouldOpenDeeplink) {
|
|
2687
|
-
setTimeout(() => {
|
|
2702
|
+
setTimeout(() => __async(this, null, function* () {
|
|
2703
|
+
const session = yield this.transport.getActiveSession();
|
|
2704
|
+
if (!session) {
|
|
2705
|
+
throw new Error("No active session found");
|
|
2706
|
+
}
|
|
2707
|
+
const url = `${METAMASK_DEEPLINK_BASE}/mwp?id=${encodeURIComponent(session.id)}`;
|
|
2688
2708
|
if (mobile == null ? void 0 : mobile.preferredOpenLink) {
|
|
2689
|
-
mobile.preferredOpenLink(
|
|
2709
|
+
mobile.preferredOpenLink(url, "_self");
|
|
2690
2710
|
} else {
|
|
2691
2711
|
openDeeplink(
|
|
2692
2712
|
this.options,
|
|
2693
|
-
|
|
2713
|
+
url,
|
|
2694
2714
|
METAMASK_CONNECT_BASE_URL
|
|
2695
2715
|
);
|
|
2696
2716
|
}
|
|
2697
|
-
}, 10);
|
|
2717
|
+
}), 10);
|
|
2698
2718
|
}
|
|
2699
2719
|
}
|
|
2700
2720
|
};
|
|
@@ -2986,16 +3006,16 @@ var ModalFactory = class {
|
|
|
2986
3006
|
}
|
|
2987
3007
|
return container;
|
|
2988
3008
|
}
|
|
2989
|
-
|
|
3009
|
+
createConnectionDeeplink(connectionRequest) {
|
|
2990
3010
|
if (!connectionRequest) {
|
|
2991
|
-
throw new Error("
|
|
3011
|
+
throw new Error("createConnectionDeeplink can only be called with a connection request");
|
|
2992
3012
|
}
|
|
2993
3013
|
const json = JSON.stringify(connectionRequest);
|
|
2994
3014
|
const compressed = compressString(json);
|
|
2995
3015
|
const urlEncoded = encodeURIComponent(compressed);
|
|
2996
3016
|
return `${METAMASK_DEEPLINK_BASE}/mwp?p=${urlEncoded}&c=1`;
|
|
2997
3017
|
}
|
|
2998
|
-
|
|
3018
|
+
createConnectionUniversalLink(connectionRequest) {
|
|
2999
3019
|
if (!connectionRequest) {
|
|
3000
3020
|
return `${METAMASK_CONNECT_BASE_URL}`;
|
|
3001
3021
|
}
|
|
@@ -3022,7 +3042,7 @@ var ModalFactory = class {
|
|
|
3022
3042
|
this.successCallback = successCallback;
|
|
3023
3043
|
const parentElement = this.getMountedContainer();
|
|
3024
3044
|
const connectionRequest = yield createConnectionRequest();
|
|
3025
|
-
const qrCodeLink = this.
|
|
3045
|
+
const qrCodeLink = this.createConnectionDeeplink(connectionRequest);
|
|
3026
3046
|
const modal = new this.options.InstallModal({
|
|
3027
3047
|
expiresIn: (connectionRequest.sessionRequest.expiresAt - Date.now()) / 1e3,
|
|
3028
3048
|
connectionRequest,
|
|
@@ -3031,7 +3051,7 @@ var ModalFactory = class {
|
|
|
3031
3051
|
link: qrCodeLink,
|
|
3032
3052
|
sdkVersion: getVersion(),
|
|
3033
3053
|
generateQRCode: (request) => __async(this, null, function* () {
|
|
3034
|
-
return this.
|
|
3054
|
+
return this.createConnectionDeeplink(request);
|
|
3035
3055
|
}),
|
|
3036
3056
|
onClose: this.onCloseModal.bind(this),
|
|
3037
3057
|
startDesktopOnboarding: this.onStartDesktopOnboarding.bind(this),
|