@metamask/connect-multichain 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/LICENSE +20 -0
- package/README.md +15 -0
- package/dist/browser/es/connect-multichain.d.mts +585 -0
- package/dist/browser/es/connect-multichain.mjs +2609 -0
- package/dist/browser/es/connect-multichain.mjs.map +1 -0
- package/dist/browser/es/metafile-esm.json +1 -0
- package/dist/browser/iife/connect-multichain.d.ts +585 -0
- package/dist/browser/iife/connect-multichain.js +30057 -0
- package/dist/browser/iife/connect-multichain.js.map +1 -0
- package/dist/browser/iife/metafile-iife.json +1 -0
- package/dist/browser/umd/connect-multichain.d.ts +585 -0
- package/dist/browser/umd/connect-multichain.js +2622 -0
- package/dist/browser/umd/connect-multichain.js.map +1 -0
- package/dist/browser/umd/metafile-cjs.json +1 -0
- package/dist/node/cjs/connect-multichain.d.ts +585 -0
- package/dist/node/cjs/connect-multichain.js +2603 -0
- package/dist/node/cjs/connect-multichain.js.map +1 -0
- package/dist/node/cjs/metafile-cjs.json +1 -0
- package/dist/node/es/connect-multichain.d.mts +585 -0
- package/dist/node/es/connect-multichain.mjs +2564 -0
- package/dist/node/es/connect-multichain.mjs.map +1 -0
- package/dist/node/es/metafile-esm.json +1 -0
- package/dist/react-native/es/connect-multichain.d.mts +585 -0
- package/dist/react-native/es/connect-multichain.mjs +2517 -0
- package/dist/react-native/es/connect-multichain.mjs.map +1 -0
- package/dist/react-native/es/metafile-esm.json +1 -0
- package/dist/src/config/index.d.ts +4 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +4 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/domain/errors/base.d.ts +7 -0
- package/dist/src/domain/errors/base.d.ts.map +1 -0
- package/dist/src/domain/errors/base.js +8 -0
- package/dist/src/domain/errors/base.js.map +1 -0
- package/dist/src/domain/errors/index.d.ts +3 -0
- package/dist/src/domain/errors/index.d.ts.map +1 -0
- package/dist/src/domain/errors/index.js +2 -0
- package/dist/src/domain/errors/index.js.map +1 -0
- package/dist/src/domain/errors/rpc.d.ts +25 -0
- package/dist/src/domain/errors/rpc.d.ts.map +1 -0
- package/dist/src/domain/errors/rpc.js +33 -0
- package/dist/src/domain/errors/rpc.js.map +1 -0
- package/dist/src/domain/errors/storage.d.ts +24 -0
- package/dist/src/domain/errors/storage.d.ts.map +1 -0
- package/dist/src/domain/errors/storage.js +30 -0
- package/dist/src/domain/errors/storage.js.map +1 -0
- package/dist/src/domain/errors/types.d.ts +7 -0
- package/dist/src/domain/errors/types.d.ts.map +1 -0
- package/dist/src/domain/errors/types.js +2 -0
- package/dist/src/domain/errors/types.js.map +1 -0
- package/dist/src/domain/events/index.d.ts +39 -0
- package/dist/src/domain/events/index.d.ts.map +1 -0
- package/dist/src/domain/events/index.js +58 -0
- package/dist/src/domain/events/index.js.map +1 -0
- package/dist/src/domain/events/types/index.d.ts +8 -0
- package/dist/src/domain/events/types/index.d.ts.map +1 -0
- package/dist/src/domain/events/types/index.js +2 -0
- package/dist/src/domain/events/types/index.js.map +1 -0
- package/dist/src/domain/index.d.ts +9 -0
- package/dist/src/domain/index.d.ts.map +1 -0
- package/dist/src/domain/index.js +9 -0
- package/dist/src/domain/index.js.map +1 -0
- package/dist/src/domain/logger/index.d.ts +41 -0
- package/dist/src/domain/logger/index.d.ts.map +1 -0
- package/dist/src/domain/logger/index.js +79 -0
- package/dist/src/domain/logger/index.js.map +1 -0
- package/dist/src/domain/multichain/api/constants.d.ts +5 -0
- package/dist/src/domain/multichain/api/constants.d.ts.map +1 -0
- package/dist/src/domain/multichain/api/constants.js +101 -0
- package/dist/src/domain/multichain/api/constants.js.map +1 -0
- package/dist/src/domain/multichain/api/eip155.d.ts +58 -0
- package/dist/src/domain/multichain/api/eip155.d.ts.map +1 -0
- package/dist/src/domain/multichain/api/eip155.js +2 -0
- package/dist/src/domain/multichain/api/eip155.js.map +1 -0
- package/dist/src/domain/multichain/api/infura.d.ts +3 -0
- package/dist/src/domain/multichain/api/infura.d.ts.map +1 -0
- package/dist/src/domain/multichain/api/infura.js +10 -0
- package/dist/src/domain/multichain/api/infura.js.map +1 -0
- package/dist/src/domain/multichain/api/types.d.ts +89 -0
- package/dist/src/domain/multichain/api/types.d.ts.map +1 -0
- package/dist/src/domain/multichain/api/types.js +2 -0
- package/dist/src/domain/multichain/api/types.js.map +1 -0
- package/dist/src/domain/multichain/index.d.ts +51 -0
- package/dist/src/domain/multichain/index.d.ts.map +1 -0
- package/dist/src/domain/multichain/index.js +33 -0
- package/dist/src/domain/multichain/index.js.map +1 -0
- package/dist/src/domain/multichain/types.d.ts +102 -0
- package/dist/src/domain/multichain/types.d.ts.map +1 -0
- package/dist/src/domain/multichain/types.js +2 -0
- package/dist/src/domain/multichain/types.js.map +1 -0
- package/dist/src/domain/platform/index.d.ts +17 -0
- package/dist/src/domain/platform/index.d.ts.map +1 -0
- package/dist/src/domain/platform/index.js +122 -0
- package/dist/src/domain/platform/index.js.map +1 -0
- package/dist/src/domain/store/adapter.d.ts +10 -0
- package/dist/src/domain/store/adapter.d.ts.map +1 -0
- package/dist/src/domain/store/adapter.js +6 -0
- package/dist/src/domain/store/adapter.js.map +1 -0
- package/dist/src/domain/store/client.d.ts +16 -0
- package/dist/src/domain/store/client.d.ts.map +1 -0
- package/dist/src/domain/store/client.js +3 -0
- package/dist/src/domain/store/client.js.map +1 -0
- package/dist/src/domain/store/index.d.ts +3 -0
- package/dist/src/domain/store/index.d.ts.map +1 -0
- package/dist/src/domain/store/index.js +3 -0
- package/dist/src/domain/store/index.js.map +1 -0
- package/dist/src/domain/ui/factory.d.ts +26 -0
- package/dist/src/domain/ui/factory.d.ts.map +1 -0
- package/dist/src/domain/ui/factory.js +2 -0
- package/dist/src/domain/ui/factory.js.map +1 -0
- package/dist/src/domain/ui/index.d.ts +3 -0
- package/dist/src/domain/ui/index.d.ts.map +1 -0
- package/dist/src/domain/ui/index.js +2 -0
- package/dist/src/domain/ui/index.js.map +1 -0
- package/dist/src/domain/ui/types.d.ts +34 -0
- package/dist/src/domain/ui/types.d.ts.map +1 -0
- package/dist/src/domain/ui/types.js +38 -0
- package/dist/src/domain/ui/types.js.map +1 -0
- package/dist/src/domain/utils/index.d.ts +7 -0
- package/dist/src/domain/utils/index.d.ts.map +1 -0
- package/dist/src/domain/utils/index.js +9 -0
- package/dist/src/domain/utils/index.js.map +1 -0
- package/dist/src/index.browser.d.ts +4 -0
- package/dist/src/index.browser.d.ts.map +1 -0
- package/dist/src/index.browser.js +28 -0
- package/dist/src/index.browser.js.map +1 -0
- package/dist/src/index.native.d.ts +4 -0
- package/dist/src/index.native.d.ts.map +1 -0
- package/dist/src/index.native.js +28 -0
- package/dist/src/index.native.js.map +1 -0
- package/dist/src/index.node.d.ts +4 -0
- package/dist/src/index.node.d.ts.map +1 -0
- package/dist/src/index.node.js +28 -0
- package/dist/src/index.node.js.map +1 -0
- package/dist/src/multichain/index.d.ts +41 -0
- package/dist/src/multichain/index.d.ts.map +1 -0
- package/dist/src/multichain/index.js +499 -0
- package/dist/src/multichain/index.js.map +1 -0
- package/dist/src/multichain/rpc/handlers/rpcClient.d.ts +19 -0
- package/dist/src/multichain/rpc/handlers/rpcClient.d.ts.map +1 -0
- package/dist/src/multichain/rpc/handlers/rpcClient.js +105 -0
- package/dist/src/multichain/rpc/handlers/rpcClient.js.map +1 -0
- package/dist/src/multichain/rpc/requestRouter.d.ts +29 -0
- package/dist/src/multichain/rpc/requestRouter.d.ts.map +1 -0
- package/dist/src/multichain/rpc/requestRouter.js +104 -0
- package/dist/src/multichain/rpc/requestRouter.js.map +1 -0
- package/dist/src/multichain/transports/default/index.d.ts +17 -0
- package/dist/src/multichain/transports/default/index.d.ts.map +1 -0
- package/dist/src/multichain/transports/default/index.js +101 -0
- package/dist/src/multichain/transports/default/index.js.map +1 -0
- package/dist/src/multichain/transports/mwp/KeyManager.d.ts +9 -0
- package/dist/src/multichain/transports/mwp/KeyManager.d.ts.map +1 -0
- package/dist/src/multichain/transports/mwp/KeyManager.js +35 -0
- package/dist/src/multichain/transports/mwp/KeyManager.js.map +1 -0
- package/dist/src/multichain/transports/mwp/index.d.ts +65 -0
- package/dist/src/multichain/transports/mwp/index.d.ts.map +1 -0
- package/dist/src/multichain/transports/mwp/index.js +323 -0
- package/dist/src/multichain/transports/mwp/index.js.map +1 -0
- package/dist/src/multichain/utils/index.d.ts +41 -0
- package/dist/src/multichain/utils/index.d.ts.map +1 -0
- package/dist/src/multichain/utils/index.js +239 -0
- package/dist/src/multichain/utils/index.js.map +1 -0
- package/dist/src/store/adapters/node.d.ts +9 -0
- package/dist/src/store/adapters/node.d.ts.map +1 -0
- package/dist/src/store/adapters/node.js +34 -0
- package/dist/src/store/adapters/node.js.map +1 -0
- package/dist/src/store/adapters/rn.d.ts +8 -0
- package/dist/src/store/adapters/rn.d.ts.map +1 -0
- package/dist/src/store/adapters/rn.js +33 -0
- package/dist/src/store/adapters/rn.js.map +1 -0
- package/dist/src/store/adapters/web.d.ts +16 -0
- package/dist/src/store/adapters/web.d.ts.map +1 -0
- package/dist/src/store/adapters/web.js +99 -0
- package/dist/src/store/adapters/web.js.map +1 -0
- package/dist/src/store/index.d.ts +17 -0
- package/dist/src/store/index.d.ts.map +1 -0
- package/dist/src/store/index.js +130 -0
- package/dist/src/store/index.js.map +1 -0
- package/dist/src/ui/index.d.ts +45 -0
- package/dist/src/ui/index.d.ts.map +1 -0
- package/dist/src/ui/index.js +185 -0
- package/dist/src/ui/index.js.map +1 -0
- package/dist/src/ui/modals/base/AbstractInstallModal.d.ts +16 -0
- package/dist/src/ui/modals/base/AbstractInstallModal.d.ts.map +1 -0
- package/dist/src/ui/modals/base/AbstractInstallModal.js +90 -0
- package/dist/src/ui/modals/base/AbstractInstallModal.js.map +1 -0
- package/dist/src/ui/modals/base/AbstractOTPModal.d.ts +8 -0
- package/dist/src/ui/modals/base/AbstractOTPModal.d.ts.map +1 -0
- package/dist/src/ui/modals/base/AbstractOTPModal.js +16 -0
- package/dist/src/ui/modals/base/AbstractOTPModal.js.map +1 -0
- package/dist/src/ui/modals/base/utils.d.ts +3 -0
- package/dist/src/ui/modals/base/utils.d.ts.map +1 -0
- package/dist/src/ui/modals/base/utils.js +30 -0
- package/dist/src/ui/modals/base/utils.js.map +1 -0
- package/dist/src/ui/modals/node/index.d.ts +3 -0
- package/dist/src/ui/modals/node/index.d.ts.map +1 -0
- package/dist/src/ui/modals/node/index.js +3 -0
- package/dist/src/ui/modals/node/index.js.map +1 -0
- package/dist/src/ui/modals/node/install.d.ts +9 -0
- package/dist/src/ui/modals/node/install.d.ts.map +1 -0
- package/dist/src/ui/modals/node/install.js +47 -0
- package/dist/src/ui/modals/node/install.js.map +1 -0
- package/dist/src/ui/modals/node/otp.d.ts +10 -0
- package/dist/src/ui/modals/node/otp.d.ts.map +1 -0
- package/dist/src/ui/modals/node/otp.js +10 -0
- package/dist/src/ui/modals/node/otp.js.map +1 -0
- package/dist/src/ui/modals/rn/index.d.ts +3 -0
- package/dist/src/ui/modals/rn/index.d.ts.map +1 -0
- package/dist/src/ui/modals/rn/index.js +3 -0
- package/dist/src/ui/modals/rn/index.js.map +1 -0
- package/dist/src/ui/modals/rn/install.d.ts +7 -0
- package/dist/src/ui/modals/rn/install.d.ts.map +1 -0
- package/dist/src/ui/modals/rn/install.js +9 -0
- package/dist/src/ui/modals/rn/install.js.map +1 -0
- package/dist/src/ui/modals/rn/otp.d.ts +10 -0
- package/dist/src/ui/modals/rn/otp.d.ts.map +1 -0
- package/dist/src/ui/modals/rn/otp.js +10 -0
- package/dist/src/ui/modals/rn/otp.js.map +1 -0
- package/dist/src/ui/modals/types.d.ts +13 -0
- package/dist/src/ui/modals/types.d.ts.map +1 -0
- package/dist/src/ui/modals/types.js +2 -0
- package/dist/src/ui/modals/types.js.map +1 -0
- package/dist/src/ui/modals/web/index.d.ts +3 -0
- package/dist/src/ui/modals/web/index.d.ts.map +1 -0
- package/dist/src/ui/modals/web/index.js +3 -0
- package/dist/src/ui/modals/web/index.js.map +1 -0
- package/dist/src/ui/modals/web/install.d.ts +7 -0
- package/dist/src/ui/modals/web/install.d.ts.map +1 -0
- package/dist/src/ui/modals/web/install.js +32 -0
- package/dist/src/ui/modals/web/install.js.map +1 -0
- package/dist/src/ui/modals/web/otp.d.ts +10 -0
- package/dist/src/ui/modals/web/otp.d.ts.map +1 -0
- package/dist/src/ui/modals/web/otp.js +10 -0
- package/dist/src/ui/modals/web/otp.js.map +1 -0
- package/dist/src/ui/qr.d.ts +3 -0
- package/dist/src/ui/qr.d.ts.map +1 -0
- package/dist/src/ui/qr.js +32 -0
- package/dist/src/ui/qr.js.map +1 -0
- package/dist/types/connect-multichain.d.ts +585 -0
- package/package.json +111 -0
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { SessionStore } from '@metamask/mobile-wallet-protocol-core';
|
|
11
|
+
import { TransportTimeoutError, } from '@metamask/multichain-api-client';
|
|
12
|
+
import { createLogger, } from '../../../domain';
|
|
13
|
+
import { addValidAccounts, getOptionalScopes, getValidAccounts, isSameScopesAndAccounts, } from '../../utils';
|
|
14
|
+
const DEFAULT_REQUEST_TIMEOUT = 60 * 1000;
|
|
15
|
+
const CONNECTION_GRACE_PERIOD = 60 * 1000;
|
|
16
|
+
const DEFAULT_CONNECTION_TIMEOUT = DEFAULT_REQUEST_TIMEOUT + CONNECTION_GRACE_PERIOD;
|
|
17
|
+
const SESSION_STORE_KEY = 'cache_wallet_getSession';
|
|
18
|
+
const CACHED_METHOD_LIST = [
|
|
19
|
+
'wallet_getSession',
|
|
20
|
+
'wallet_createSession',
|
|
21
|
+
'wallet_sessionChanged',
|
|
22
|
+
];
|
|
23
|
+
const CACHED_RESET_METHOD_LIST = ['wallet_revokeSession'];
|
|
24
|
+
const logger = createLogger('metamask-sdk:transport');
|
|
25
|
+
/**
|
|
26
|
+
* Mobile Wallet Protocol transport implementation
|
|
27
|
+
* Bridges the MWP DappClient with the multichain API client Transport interface
|
|
28
|
+
*/
|
|
29
|
+
export class MWPTransport {
|
|
30
|
+
get pendingRequests() {
|
|
31
|
+
return this.__pendingRequests;
|
|
32
|
+
}
|
|
33
|
+
set pendingRequests(pendingRequests) {
|
|
34
|
+
this.__pendingRequests = pendingRequests;
|
|
35
|
+
}
|
|
36
|
+
get sessionRequest() {
|
|
37
|
+
return this.currentSessionRequest;
|
|
38
|
+
}
|
|
39
|
+
constructor(dappClient, kvstore, options = {
|
|
40
|
+
requestTimeout: DEFAULT_REQUEST_TIMEOUT,
|
|
41
|
+
connectionTimeout: DEFAULT_CONNECTION_TIMEOUT,
|
|
42
|
+
}) {
|
|
43
|
+
this.dappClient = dappClient;
|
|
44
|
+
this.kvstore = kvstore;
|
|
45
|
+
this.options = options;
|
|
46
|
+
this.__reqId = 0;
|
|
47
|
+
this.__pendingRequests = new Map();
|
|
48
|
+
this.notificationCallbacks = new Set();
|
|
49
|
+
this.dappClient.on('message', this.handleMessage.bind(this));
|
|
50
|
+
if (typeof window !== 'undefined' &&
|
|
51
|
+
typeof window.addEventListener !== 'undefined') {
|
|
52
|
+
this.windowFocusHandler = this.onWindowFocus.bind(this);
|
|
53
|
+
window.addEventListener('focus', this.windowFocusHandler);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
onWindowFocus() {
|
|
57
|
+
if (!this.isConnected()) {
|
|
58
|
+
this.dappClient.reconnect();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
notifyCallbacks(data) {
|
|
62
|
+
this.notificationCallbacks.forEach((callback) => callback(data));
|
|
63
|
+
}
|
|
64
|
+
rejectRequest(id, error = new Error('Request rejected')) {
|
|
65
|
+
const request = this.pendingRequests.get(id);
|
|
66
|
+
if (request) {
|
|
67
|
+
this.pendingRequests.delete(id);
|
|
68
|
+
clearTimeout(request.timeout);
|
|
69
|
+
request.reject(error);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
handleMessage(message) {
|
|
73
|
+
if (typeof message === 'object' && message !== null) {
|
|
74
|
+
if ('data' in message) {
|
|
75
|
+
const messagePayload = message.data;
|
|
76
|
+
if ('id' in messagePayload && typeof messagePayload.id === 'string') {
|
|
77
|
+
const request = this.pendingRequests.get(messagePayload.id);
|
|
78
|
+
if (request) {
|
|
79
|
+
const requestWithName = Object.assign(Object.assign({}, messagePayload), { method: request.method === 'wallet_getSession' ||
|
|
80
|
+
request.method === 'wallet_createSession'
|
|
81
|
+
? 'wallet_sessionChanged'
|
|
82
|
+
: request.method });
|
|
83
|
+
const notification = Object.assign(Object.assign({}, messagePayload), { method: request.method === 'wallet_getSession' ||
|
|
84
|
+
request.method === 'wallet_createSession'
|
|
85
|
+
? 'wallet_sessionChanged'
|
|
86
|
+
: request.method, params: requestWithName.result });
|
|
87
|
+
clearTimeout(request.timeout);
|
|
88
|
+
this.notifyCallbacks(notification);
|
|
89
|
+
request.resolve(requestWithName);
|
|
90
|
+
this.pendingRequests.delete(messagePayload.id);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.notifyCallbacks(message.data);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
onResumeSuccess(resumeResolve, resumeReject, options) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
102
|
+
try {
|
|
103
|
+
const sessionRequest = yield this.request({
|
|
104
|
+
method: 'wallet_getSession',
|
|
105
|
+
});
|
|
106
|
+
if (sessionRequest.error) {
|
|
107
|
+
return resumeReject(new Error(sessionRequest.error.message));
|
|
108
|
+
}
|
|
109
|
+
let walletSession = sessionRequest.result;
|
|
110
|
+
if (walletSession && options) {
|
|
111
|
+
const currentScopes = Object.keys((_a = walletSession === null || walletSession === void 0 ? void 0 : walletSession.sessionScopes) !== null && _a !== void 0 ? _a : {});
|
|
112
|
+
const proposedScopes = (_b = options === null || options === void 0 ? void 0 : options.scopes) !== null && _b !== void 0 ? _b : [];
|
|
113
|
+
const proposedCaipAccountIds = (_c = options === null || options === void 0 ? void 0 : options.caipAccountIds) !== null && _c !== void 0 ? _c : [];
|
|
114
|
+
const hasSameScopesAndAccounts = isSameScopesAndAccounts(currentScopes, proposedScopes, walletSession, proposedCaipAccountIds);
|
|
115
|
+
if (!hasSameScopesAndAccounts) {
|
|
116
|
+
const optionalScopes = addValidAccounts(getOptionalScopes((_d = options === null || options === void 0 ? void 0 : options.scopes) !== null && _d !== void 0 ? _d : []), getValidAccounts((_e = options === null || options === void 0 ? void 0 : options.caipAccountIds) !== null && _e !== void 0 ? _e : []));
|
|
117
|
+
const sessionRequest = {
|
|
118
|
+
optionalScopes,
|
|
119
|
+
};
|
|
120
|
+
const response = yield this.request({
|
|
121
|
+
method: 'wallet_createSession',
|
|
122
|
+
params: sessionRequest,
|
|
123
|
+
});
|
|
124
|
+
if (response.error) {
|
|
125
|
+
return resumeReject(new Error(response.error.message));
|
|
126
|
+
}
|
|
127
|
+
// TODO: Maybe find a better way to revoke sessions on wallet without triggering an empty notification
|
|
128
|
+
// Issue of this is it will send a session update event with an empty session and right after we may get the session recovered
|
|
129
|
+
// await this.request({ method: 'wallet_revokeSession', params: walletSession });
|
|
130
|
+
walletSession = response.result;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else if (!walletSession) {
|
|
134
|
+
const optionalScopes = addValidAccounts(getOptionalScopes((_f = options === null || options === void 0 ? void 0 : options.scopes) !== null && _f !== void 0 ? _f : []), getValidAccounts((_g = options === null || options === void 0 ? void 0 : options.caipAccountIds) !== null && _g !== void 0 ? _g : []));
|
|
135
|
+
const sessionRequest = { optionalScopes };
|
|
136
|
+
const response = yield this.request({
|
|
137
|
+
method: 'wallet_createSession',
|
|
138
|
+
params: sessionRequest,
|
|
139
|
+
});
|
|
140
|
+
if (response.error) {
|
|
141
|
+
return resumeReject(new Error(response.error.message));
|
|
142
|
+
}
|
|
143
|
+
walletSession = response.result;
|
|
144
|
+
}
|
|
145
|
+
this.notifyCallbacks({
|
|
146
|
+
method: 'wallet_sessionChanged',
|
|
147
|
+
params: walletSession,
|
|
148
|
+
});
|
|
149
|
+
return resumeResolve();
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
return resumeReject(err);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
connect(options) {
|
|
157
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
158
|
+
const { dappClient, kvstore } = this;
|
|
159
|
+
const sessionStore = new SessionStore(kvstore);
|
|
160
|
+
let session;
|
|
161
|
+
try {
|
|
162
|
+
const [activeSession] = yield sessionStore.list();
|
|
163
|
+
if (activeSession) {
|
|
164
|
+
logger('active session found', activeSession);
|
|
165
|
+
session = activeSession;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch (_a) {
|
|
169
|
+
/* empty */
|
|
170
|
+
}
|
|
171
|
+
let timeout;
|
|
172
|
+
const connectionPromise = new Promise((resolve, reject) => {
|
|
173
|
+
let connection;
|
|
174
|
+
if (session) {
|
|
175
|
+
connection = new Promise((resumeResolve, resumeReject) => {
|
|
176
|
+
var _a;
|
|
177
|
+
if (this.dappClient.state === 'CONNECTED') {
|
|
178
|
+
this.onResumeSuccess(resumeResolve, resumeReject, options);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
this.dappClient.once('connected', () => __awaiter(this, void 0, void 0, function* () {
|
|
182
|
+
this.onResumeSuccess(resumeResolve, resumeReject, options);
|
|
183
|
+
}));
|
|
184
|
+
dappClient.resume((_a = session === null || session === void 0 ? void 0 : session.id) !== null && _a !== void 0 ? _a : '');
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
connection = new Promise((resolveConnection, rejectConnection) => {
|
|
190
|
+
var _a, _b;
|
|
191
|
+
const optionalScopes = addValidAccounts(getOptionalScopes((_a = options === null || options === void 0 ? void 0 : options.scopes) !== null && _a !== void 0 ? _a : []), getValidAccounts((_b = options === null || options === void 0 ? void 0 : options.caipAccountIds) !== null && _b !== void 0 ? _b : []));
|
|
192
|
+
const sessionRequest = {
|
|
193
|
+
optionalScopes,
|
|
194
|
+
};
|
|
195
|
+
const request = {
|
|
196
|
+
jsonrpc: '2.0',
|
|
197
|
+
id: `${this.__reqId++}`,
|
|
198
|
+
method: 'wallet_createSession',
|
|
199
|
+
params: sessionRequest,
|
|
200
|
+
};
|
|
201
|
+
this.dappClient.on('message', (message) => __awaiter(this, void 0, void 0, function* () {
|
|
202
|
+
if (typeof message === 'object' && message !== null) {
|
|
203
|
+
if ('data' in message) {
|
|
204
|
+
const messagePayload = message.data;
|
|
205
|
+
if (messagePayload.method === 'wallet_createSession' ||
|
|
206
|
+
messagePayload.method === 'wallet_sessionChanged') {
|
|
207
|
+
if (messagePayload.error) {
|
|
208
|
+
return rejectConnection(messagePayload.error);
|
|
209
|
+
}
|
|
210
|
+
this.notifyCallbacks(message.data);
|
|
211
|
+
yield this.storeWalletSession(request, messagePayload);
|
|
212
|
+
return resolveConnection();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}));
|
|
217
|
+
dappClient
|
|
218
|
+
.connect({ mode: 'trusted', initialPayload: request })
|
|
219
|
+
.catch(rejectConnection);
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
timeout = setTimeout(() => {
|
|
223
|
+
reject(new TransportTimeoutError());
|
|
224
|
+
}, this.options.connectionTimeout);
|
|
225
|
+
connection.then(resolve).catch(reject);
|
|
226
|
+
});
|
|
227
|
+
return connectionPromise.finally(() => {
|
|
228
|
+
if (timeout) {
|
|
229
|
+
clearTimeout(timeout);
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Disconnects from the Mobile Wallet Protocol
|
|
236
|
+
*
|
|
237
|
+
* @returns Nothing
|
|
238
|
+
*/
|
|
239
|
+
disconnect() {
|
|
240
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
241
|
+
// Clean up window focus event listener
|
|
242
|
+
if (typeof window !== 'undefined' &&
|
|
243
|
+
typeof window.removeEventListener !== 'undefined' &&
|
|
244
|
+
this.windowFocusHandler) {
|
|
245
|
+
window.removeEventListener('focus', this.windowFocusHandler);
|
|
246
|
+
this.windowFocusHandler = undefined;
|
|
247
|
+
}
|
|
248
|
+
return this.dappClient.disconnect();
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Checks if the transport is connected
|
|
253
|
+
*
|
|
254
|
+
* @returns True if transport is connected, false otherwise
|
|
255
|
+
*/
|
|
256
|
+
isConnected() {
|
|
257
|
+
// biome-ignore lint/suspicious/noExplicitAny: required if state is not made public in dappClient
|
|
258
|
+
return this.dappClient.state === 'CONNECTED';
|
|
259
|
+
}
|
|
260
|
+
fetchCachedWalletSession(request) {
|
|
261
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
262
|
+
var _a;
|
|
263
|
+
if (request.method === 'wallet_getSession') {
|
|
264
|
+
const walletGetSession = yield this.kvstore.get(SESSION_STORE_KEY);
|
|
265
|
+
if (walletGetSession) {
|
|
266
|
+
const walletSession = JSON.parse(walletGetSession);
|
|
267
|
+
return {
|
|
268
|
+
id: request.id,
|
|
269
|
+
jsonrpc: '2.0',
|
|
270
|
+
result: (_a = walletSession.params) !== null && _a !== void 0 ? _a : walletSession.result,
|
|
271
|
+
method: request.method,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
storeWalletSession(request, response) {
|
|
278
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
279
|
+
if (CACHED_METHOD_LIST.includes(request.method)) {
|
|
280
|
+
yield this.kvstore.set(SESSION_STORE_KEY, JSON.stringify(response));
|
|
281
|
+
}
|
|
282
|
+
else if (CACHED_RESET_METHOD_LIST.includes(request.method)) {
|
|
283
|
+
yield this.kvstore.delete(SESSION_STORE_KEY);
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
request(payload, options) {
|
|
288
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
289
|
+
const request = Object.assign({ jsonrpc: '2.0', id: `${this.__reqId++}` }, payload);
|
|
290
|
+
const cachedWalletSession = yield this.fetchCachedWalletSession(request);
|
|
291
|
+
if (cachedWalletSession) {
|
|
292
|
+
this.notifyCallbacks(cachedWalletSession);
|
|
293
|
+
return cachedWalletSession;
|
|
294
|
+
}
|
|
295
|
+
return new Promise((resolve, reject) => {
|
|
296
|
+
var _a;
|
|
297
|
+
const timeout = setTimeout(() => {
|
|
298
|
+
this.rejectRequest(request.id, new TransportTimeoutError());
|
|
299
|
+
}, (_a = options === null || options === void 0 ? void 0 : options.timeout) !== null && _a !== void 0 ? _a : this.options.requestTimeout);
|
|
300
|
+
this.pendingRequests.set(request.id, {
|
|
301
|
+
request,
|
|
302
|
+
method: request.method,
|
|
303
|
+
resolve: (response) => __awaiter(this, void 0, void 0, function* () {
|
|
304
|
+
if (CACHED_METHOD_LIST.includes(request.method)) {
|
|
305
|
+
yield this.storeWalletSession(request, response);
|
|
306
|
+
}
|
|
307
|
+
return resolve(response);
|
|
308
|
+
}),
|
|
309
|
+
reject,
|
|
310
|
+
timeout,
|
|
311
|
+
});
|
|
312
|
+
this.dappClient.sendRequest(request).catch(reject);
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
onNotification(callback) {
|
|
317
|
+
this.notificationCallbacks.add(callback);
|
|
318
|
+
return () => {
|
|
319
|
+
this.notificationCallbacks.delete(callback);
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/multichain/transports/mwp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type CaipAccountId, type CaipChainId } from '@metamask/utils';
|
|
2
|
+
import { type DappSettings, type MultichainOptions, type Scope, type SessionData } from '../../domain';
|
|
3
|
+
export type OptionalScopes = Record<Scope, SessionData['sessionScopes'][Scope]>;
|
|
4
|
+
/**
|
|
5
|
+
* Compress a string using pako (deflateRaw)
|
|
6
|
+
* Returns a base64-encoded compressed string
|
|
7
|
+
*/
|
|
8
|
+
export declare function compressString(str: string): string;
|
|
9
|
+
export declare function getDappId(dapp?: DappSettings): string;
|
|
10
|
+
export declare function openDeeplink(options: MultichainOptions, deeplink: string, universalLink: string): void;
|
|
11
|
+
export declare function getOptionalScopes(scopes: Scope[]): OptionalScopes;
|
|
12
|
+
export declare const extractFavicon: () => string | undefined;
|
|
13
|
+
export declare function setupInfuraProvider(options: MultichainOptions): MultichainOptions;
|
|
14
|
+
export declare function setupDappMetadata(options: MultichainOptions): MultichainOptions;
|
|
15
|
+
/**
|
|
16
|
+
* Enhanced scope checking function that validates both scopes and accounts
|
|
17
|
+
* @param currentScopes - Current scopes from the existing session
|
|
18
|
+
* @param proposedScopes - Proposed scopes from the connect options
|
|
19
|
+
* @param walletSession - The existing wallet session data
|
|
20
|
+
* @param proposedCaipAccountIds - Proposed account IDs from the connect options
|
|
21
|
+
* @returns true if scopes and accounts match, false otherwise
|
|
22
|
+
*/
|
|
23
|
+
export declare function isSameScopesAndAccounts(currentScopes: Scope[], proposedScopes: Scope[], walletSession: SessionData, proposedCaipAccountIds: CaipAccountId[]): boolean;
|
|
24
|
+
export declare function getValidAccounts(caipAccountIds: CaipAccountId[]): {
|
|
25
|
+
address: import("@metamask/utils").CaipAccountAddress;
|
|
26
|
+
chainId: CaipChainId;
|
|
27
|
+
chain: {
|
|
28
|
+
namespace: import("@metamask/utils").CaipNamespace;
|
|
29
|
+
reference: import("@metamask/utils").CaipReference;
|
|
30
|
+
};
|
|
31
|
+
}[];
|
|
32
|
+
/**
|
|
33
|
+
* Adds valid accounts to their corresponding scopes based on chain namespace and reference.
|
|
34
|
+
* Returns a new OptionalScopes object without modifying the input.
|
|
35
|
+
*
|
|
36
|
+
* @param optionalScopes - The scopes to add accounts to
|
|
37
|
+
* @param validAccounts - Array of parsed valid accounts
|
|
38
|
+
* @returns A new OptionalScopes object with accounts added to matching scopes
|
|
39
|
+
*/
|
|
40
|
+
export declare function addValidAccounts(optionalScopes: OptionalScopes, validAccounts: ReturnType<typeof getValidAccounts>): OptionalScopes;
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/multichain/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAGjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,YAAY,EAGjB,KAAK,iBAAiB,EAEtB,KAAK,KAAK,EACV,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAiBhF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,YAAY,UAM5C;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,QA2BtB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,kBAahD;AAED,eAAO,MAAM,cAAc,0BAiB1B,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,GACzB,iBAAiB,CAenB;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,GACzB,iBAAiB,CA8DnB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,KAAK,EAAE,EACtB,cAAc,EAAE,KAAK,EAAE,EACvB,aAAa,EAAE,WAAW,EAC1B,sBAAsB,EAAE,aAAa,EAAE,GACtC,OAAO,CAoBT;AAED,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,aAAa,EAAE;;;;;;;IAc/D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,GACjD,cAAc,CAqDhB"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { deflate } from 'pako';
|
|
2
|
+
import { parseCaipAccountId, parseCaipChainId, } from '@metamask/utils';
|
|
3
|
+
import { getInfuraRpcUrls, getPlatformType, PlatformType, } from '../../domain';
|
|
4
|
+
/**
|
|
5
|
+
* Cross-platform base64 encoding
|
|
6
|
+
* Works in browser, Node.js, and React Native environments
|
|
7
|
+
*/
|
|
8
|
+
function base64Encode(str) {
|
|
9
|
+
if (typeof btoa !== 'undefined') {
|
|
10
|
+
// Browser and React Native with polyfills
|
|
11
|
+
return btoa(str);
|
|
12
|
+
}
|
|
13
|
+
else if (typeof Buffer !== 'undefined') {
|
|
14
|
+
// Node.js
|
|
15
|
+
return Buffer.from(str).toString('base64');
|
|
16
|
+
}
|
|
17
|
+
throw new Error('No base64 encoding method available');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Compress a string using pako (deflateRaw)
|
|
21
|
+
* Returns a base64-encoded compressed string
|
|
22
|
+
*/
|
|
23
|
+
export function compressString(str) {
|
|
24
|
+
const compressed = deflate(str);
|
|
25
|
+
// Convert Uint8Array to string for base64 encoding
|
|
26
|
+
const binaryString = String.fromCharCode.apply(null, Array.from(compressed));
|
|
27
|
+
return base64Encode(binaryString);
|
|
28
|
+
}
|
|
29
|
+
export function getDappId(dapp) {
|
|
30
|
+
var _a, _b;
|
|
31
|
+
if (typeof window === 'undefined' || typeof window.location === 'undefined') {
|
|
32
|
+
return (_b = (_a = dapp === null || dapp === void 0 ? void 0 : dapp.name) !== null && _a !== void 0 ? _a : dapp === null || dapp === void 0 ? void 0 : dapp.url) !== null && _b !== void 0 ? _b : 'N/A';
|
|
33
|
+
}
|
|
34
|
+
return window.location.hostname;
|
|
35
|
+
}
|
|
36
|
+
export function openDeeplink(options, deeplink, universalLink) {
|
|
37
|
+
const { mobile } = options;
|
|
38
|
+
const useDeeplink = mobile && mobile.useDeeplink !== undefined ? mobile.useDeeplink : true;
|
|
39
|
+
if (useDeeplink) {
|
|
40
|
+
if (typeof window !== 'undefined') {
|
|
41
|
+
// We don't need to open a deeplink in a new tab
|
|
42
|
+
// It avoid the browser to display a blank page
|
|
43
|
+
window.location.href = deeplink;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (typeof document !== 'undefined') {
|
|
47
|
+
// Workaround for https://github.com/rainbow-me/rainbowkit/issues/524.
|
|
48
|
+
// Using 'window.open' causes issues on iOS in non-Safari browsers and
|
|
49
|
+
// WebViews where a blank tab is left behind after connecting.
|
|
50
|
+
// This is especially bad in some WebView scenarios (e.g. following a
|
|
51
|
+
// link from Twitter) where the user doesn't have any mechanism for
|
|
52
|
+
// closing the blank tab.
|
|
53
|
+
// For whatever reason, links with a target of "_blank" don't suffer
|
|
54
|
+
// from this problem, and programmatically clicking a detached link
|
|
55
|
+
// element with the same attributes also avoids the issue.
|
|
56
|
+
const link = document.createElement('a');
|
|
57
|
+
link.href = universalLink;
|
|
58
|
+
link.target = '_self';
|
|
59
|
+
link.rel = 'noreferrer noopener';
|
|
60
|
+
link.click();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function getOptionalScopes(scopes) {
|
|
64
|
+
return scopes.reduce((prev, scope) => (Object.assign(Object.assign({}, prev), { [scope]: {
|
|
65
|
+
methods: [],
|
|
66
|
+
notifications: [],
|
|
67
|
+
accounts: [],
|
|
68
|
+
} })), {});
|
|
69
|
+
}
|
|
70
|
+
export const extractFavicon = () => {
|
|
71
|
+
var _a;
|
|
72
|
+
if (typeof document === 'undefined') {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
let favicon;
|
|
76
|
+
const nodeList = document.getElementsByTagName('link');
|
|
77
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
78
|
+
for (let i = 0; i < nodeList.length; i++) {
|
|
79
|
+
if (nodeList[i].getAttribute('rel') === 'icon' ||
|
|
80
|
+
nodeList[i].getAttribute('rel') === 'shortcut icon') {
|
|
81
|
+
favicon = (_a = nodeList[i].getAttribute('href')) !== null && _a !== void 0 ? _a : undefined;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return favicon;
|
|
85
|
+
};
|
|
86
|
+
export function setupInfuraProvider(options) {
|
|
87
|
+
var _a, _b;
|
|
88
|
+
const infuraAPIKey = (_a = options.api) === null || _a === void 0 ? void 0 : _a.infuraAPIKey;
|
|
89
|
+
if (!infuraAPIKey) {
|
|
90
|
+
return options;
|
|
91
|
+
}
|
|
92
|
+
const urlsWithToken = getInfuraRpcUrls(infuraAPIKey);
|
|
93
|
+
if ((_b = options.api) === null || _b === void 0 ? void 0 : _b.readonlyRPCMap) {
|
|
94
|
+
options.api.readonlyRPCMap = Object.assign(Object.assign({}, options.api.readonlyRPCMap), urlsWithToken);
|
|
95
|
+
}
|
|
96
|
+
else if (options.api) {
|
|
97
|
+
options.api.readonlyRPCMap = urlsWithToken;
|
|
98
|
+
}
|
|
99
|
+
return options;
|
|
100
|
+
}
|
|
101
|
+
export function setupDappMetadata(options) {
|
|
102
|
+
var _a;
|
|
103
|
+
const platform = getPlatformType();
|
|
104
|
+
const isBrowser = platform === PlatformType.DesktopWeb ||
|
|
105
|
+
platform === PlatformType.MobileWeb ||
|
|
106
|
+
platform === PlatformType.MetaMaskMobileWebview;
|
|
107
|
+
if (!((_a = options.dapp) === null || _a === void 0 ? void 0 : _a.url)) {
|
|
108
|
+
// Automatically set dappMetadata on web env if not defined
|
|
109
|
+
if (isBrowser) {
|
|
110
|
+
options.dapp = Object.assign(Object.assign({}, options.dapp), { url: `${window.location.protocol}//${window.location.host}` });
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
throw new Error('You must provide dapp url');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const BASE_64_ICON_MAX_LENGTH = 163400;
|
|
117
|
+
// Check if iconUrl and url are valid
|
|
118
|
+
const urlPattern = /^(http|https):\/\/[^\s]*$/; // Regular expression for URLs starting with http:// or https://
|
|
119
|
+
if (options.dapp) {
|
|
120
|
+
if ('iconUrl' in options.dapp) {
|
|
121
|
+
if (options.dapp.iconUrl && !urlPattern.test(options.dapp.iconUrl)) {
|
|
122
|
+
console.warn('Invalid dappMetadata.iconUrl: URL must start with http:// or https://');
|
|
123
|
+
options.dapp.iconUrl = undefined;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// This check ensures that the base64Icon string in the dappMetadata does not exceed 163,400 characters.
|
|
127
|
+
// The character limit is important because a longer base64-encoded string causes the connection to the mobile app to fail.
|
|
128
|
+
// Keeping the base64Icon string length below this threshold ensures reliable communication and functionality.
|
|
129
|
+
if ('base64Icon' in options.dapp) {
|
|
130
|
+
if (options.dapp.base64Icon &&
|
|
131
|
+
options.dapp.base64Icon.length > BASE_64_ICON_MAX_LENGTH) {
|
|
132
|
+
console.warn('Invalid dappMetadata.base64Icon: Base64-encoded icon string length must be less than 163400 characters');
|
|
133
|
+
options.dapp.base64Icon = undefined;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (options.dapp.url && !urlPattern.test(options.dapp.url)) {
|
|
137
|
+
console.warn('Invalid dappMetadata.url: URL must start with http:// or https://');
|
|
138
|
+
}
|
|
139
|
+
const favicon = extractFavicon();
|
|
140
|
+
if (favicon &&
|
|
141
|
+
!('iconUrl' in options.dapp) &&
|
|
142
|
+
!('base64Icon' in options.dapp)) {
|
|
143
|
+
const faviconUrl = `${window.location.protocol}//${window.location.host}${favicon}`;
|
|
144
|
+
// @ts-ignore
|
|
145
|
+
options.dapp.iconUrl = faviconUrl;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return options;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Enhanced scope checking function that validates both scopes and accounts
|
|
152
|
+
* @param currentScopes - Current scopes from the existing session
|
|
153
|
+
* @param proposedScopes - Proposed scopes from the connect options
|
|
154
|
+
* @param walletSession - The existing wallet session data
|
|
155
|
+
* @param proposedCaipAccountIds - Proposed account IDs from the connect options
|
|
156
|
+
* @returns true if scopes and accounts match, false otherwise
|
|
157
|
+
*/
|
|
158
|
+
export function isSameScopesAndAccounts(currentScopes, proposedScopes, walletSession, proposedCaipAccountIds) {
|
|
159
|
+
const isSameScopes = currentScopes.every((scope) => proposedScopes.includes(scope)) &&
|
|
160
|
+
proposedScopes.every((scope) => currentScopes.includes(scope));
|
|
161
|
+
if (!isSameScopes) {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
const existingAccountIds = Object.values(walletSession.sessionScopes)
|
|
165
|
+
.filter(({ accounts }) => Boolean(accounts))
|
|
166
|
+
.flatMap(({ accounts }) => accounts !== null && accounts !== void 0 ? accounts : []);
|
|
167
|
+
const allProposedAccountsIncluded = proposedCaipAccountIds.every((proposedAccountId) => existingAccountIds.includes(proposedAccountId));
|
|
168
|
+
return allProposedAccountsIncluded;
|
|
169
|
+
}
|
|
170
|
+
export function getValidAccounts(caipAccountIds) {
|
|
171
|
+
return caipAccountIds.reduce((caipAccounts, caipAccountId) => {
|
|
172
|
+
try {
|
|
173
|
+
// biome-ignore lint/performance/noAccumulatingSpread: Needed
|
|
174
|
+
return [...caipAccounts, parseCaipAccountId(caipAccountId)];
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
const stringifiedAccountId = JSON.stringify(caipAccountId);
|
|
178
|
+
console.error(`Invalid CAIP account ID: ${stringifiedAccountId}`, err);
|
|
179
|
+
return caipAccounts;
|
|
180
|
+
}
|
|
181
|
+
}, []);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Adds valid accounts to their corresponding scopes based on chain namespace and reference.
|
|
185
|
+
* Returns a new OptionalScopes object without modifying the input.
|
|
186
|
+
*
|
|
187
|
+
* @param optionalScopes - The scopes to add accounts to
|
|
188
|
+
* @param validAccounts - Array of parsed valid accounts
|
|
189
|
+
* @returns A new OptionalScopes object with accounts added to matching scopes
|
|
190
|
+
*/
|
|
191
|
+
export function addValidAccounts(optionalScopes, validAccounts) {
|
|
192
|
+
var _a;
|
|
193
|
+
if (!optionalScopes || !(validAccounts === null || validAccounts === void 0 ? void 0 : validAccounts.length)) {
|
|
194
|
+
return optionalScopes;
|
|
195
|
+
}
|
|
196
|
+
const result = Object.fromEntries(Object.entries(optionalScopes).map(([scope, scopeData]) => {
|
|
197
|
+
var _a, _b, _c;
|
|
198
|
+
return [
|
|
199
|
+
scope,
|
|
200
|
+
{
|
|
201
|
+
methods: [...((_a = scopeData === null || scopeData === void 0 ? void 0 : scopeData.methods) !== null && _a !== void 0 ? _a : [])],
|
|
202
|
+
notifications: [...((_b = scopeData === null || scopeData === void 0 ? void 0 : scopeData.notifications) !== null && _b !== void 0 ? _b : [])],
|
|
203
|
+
accounts: [...((_c = scopeData === null || scopeData === void 0 ? void 0 : scopeData.accounts) !== null && _c !== void 0 ? _c : [])],
|
|
204
|
+
},
|
|
205
|
+
];
|
|
206
|
+
}));
|
|
207
|
+
// Group accounts by their chain identifier for efficient lookup
|
|
208
|
+
const accountsByChain = new Map();
|
|
209
|
+
for (const account of validAccounts) {
|
|
210
|
+
const chainKey = `${account.chain.namespace}:${account.chain.reference}`;
|
|
211
|
+
const accountId = `${account.chainId}:${account.address}`;
|
|
212
|
+
if (!accountsByChain.has(chainKey)) {
|
|
213
|
+
accountsByChain.set(chainKey, []);
|
|
214
|
+
}
|
|
215
|
+
(_a = accountsByChain.get(chainKey)) === null || _a === void 0 ? void 0 : _a.push(accountId);
|
|
216
|
+
}
|
|
217
|
+
// Add accounts to matching scopes
|
|
218
|
+
for (const [scopeKey, scopeData] of Object.entries(result)) {
|
|
219
|
+
if (!(scopeData === null || scopeData === void 0 ? void 0 : scopeData.accounts)) {
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
try {
|
|
223
|
+
const scope = scopeKey;
|
|
224
|
+
const scopeDetails = parseCaipChainId(scope);
|
|
225
|
+
const chainKey = `${scopeDetails.namespace}:${scopeDetails.reference}`;
|
|
226
|
+
const matchingAccounts = accountsByChain.get(chainKey);
|
|
227
|
+
if (matchingAccounts) {
|
|
228
|
+
const existingAccounts = new Set(scopeData.accounts);
|
|
229
|
+
const newAccounts = matchingAccounts.filter((account) => !existingAccounts.has(account));
|
|
230
|
+
scopeData.accounts.push(...newAccounts);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
console.error(`Invalid scope format: ${scopeKey}`, error);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return result;
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/multichain/utils/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { StoreAdapter } from '../../domain';
|
|
2
|
+
export declare class StoreAdapterNode extends StoreAdapter {
|
|
3
|
+
readonly platform = "node";
|
|
4
|
+
private storage;
|
|
5
|
+
get(key: string): Promise<string | null>;
|
|
6
|
+
set(key: string, value: string): Promise<void>;
|
|
7
|
+
delete(key: string): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=node.d.ts.map
|