@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,29 @@
|
|
|
1
|
+
import type { Json } from '@metamask/utils';
|
|
2
|
+
import { type ExtendedTransport, type InvokeMethodOptions, type MultichainOptions } from '../../domain';
|
|
3
|
+
import { RpcClient } from './handlers/rpcClient';
|
|
4
|
+
export declare function getNextRpcId(): number;
|
|
5
|
+
export declare class RequestRouter {
|
|
6
|
+
private readonly transport;
|
|
7
|
+
private readonly rpcClient;
|
|
8
|
+
private readonly config;
|
|
9
|
+
constructor(transport: ExtendedTransport, rpcClient: RpcClient, config: MultichainOptions);
|
|
10
|
+
/**
|
|
11
|
+
* The main entry point for invoking an RPC method.
|
|
12
|
+
* This method acts as a router, determining the correct handling strategy
|
|
13
|
+
* for the request and delegating to the appropriate private handler.
|
|
14
|
+
*/
|
|
15
|
+
invokeMethod(options: InvokeMethodOptions): Promise<Json>;
|
|
16
|
+
/**
|
|
17
|
+
* Forwards the request directly to the wallet via the transport.
|
|
18
|
+
*/
|
|
19
|
+
private handleWithWallet;
|
|
20
|
+
/**
|
|
21
|
+
* Routes the request to a configured RPC node.
|
|
22
|
+
*/
|
|
23
|
+
private handleWithRpcNode;
|
|
24
|
+
/**
|
|
25
|
+
* Responds directly from the SDK's session state.
|
|
26
|
+
*/
|
|
27
|
+
private handleWithSdkState;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=requestRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestRouter.d.ts","sourceRoot":"","sources":["../../../../src/multichain/rpc/requestRouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAY,KAAK,iBAAiB,EAAgE,MAAM,cAAc,CAAC;AAGhL,OAAO,EAAyB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIxE,wBAAgB,YAAY,WAG3B;AAED,qBAAa,aAAa;IAExB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,SAAS,EAAE,iBAAiB,EAC5B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,iBAAiB;IAG3C;;;;OAIG;IACG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D;;OAEG;YACW,gBAAgB;IAgC9B;;OAEG;YACW,iBAAiB;IAW/B;;OAEG;YACW,kBAAkB;CAKhC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
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 { METAMASK_CONNECT_BASE_URL, METAMASK_DEEPLINK_BASE } from '../../config';
|
|
11
|
+
import { isSecure, RPC_HANDLED_METHODS, RPCInvokeMethodErr, SDK_HANDLED_METHODS } from '../../domain';
|
|
12
|
+
import { openDeeplink } from '../utils';
|
|
13
|
+
import { MissingRpcEndpointErr } from './handlers/rpcClient';
|
|
14
|
+
let rpcId = 1;
|
|
15
|
+
export function getNextRpcId() {
|
|
16
|
+
rpcId += 1;
|
|
17
|
+
return rpcId;
|
|
18
|
+
}
|
|
19
|
+
export class RequestRouter {
|
|
20
|
+
constructor(transport, rpcClient, config) {
|
|
21
|
+
this.transport = transport;
|
|
22
|
+
this.rpcClient = rpcClient;
|
|
23
|
+
this.config = config;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The main entry point for invoking an RPC method.
|
|
27
|
+
* This method acts as a router, determining the correct handling strategy
|
|
28
|
+
* for the request and delegating to the appropriate private handler.
|
|
29
|
+
*/
|
|
30
|
+
invokeMethod(options) {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
const method = options.request.method;
|
|
33
|
+
if (RPC_HANDLED_METHODS.has(method)) {
|
|
34
|
+
return this.handleWithRpcNode(options);
|
|
35
|
+
}
|
|
36
|
+
if (SDK_HANDLED_METHODS.has(method)) {
|
|
37
|
+
return this.handleWithSdkState(options);
|
|
38
|
+
}
|
|
39
|
+
return this.handleWithWallet(options);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Forwards the request directly to the wallet via the transport.
|
|
44
|
+
*/
|
|
45
|
+
handleWithWallet(options) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
try {
|
|
48
|
+
const request = this.transport.request({
|
|
49
|
+
method: 'wallet_invokeMethod',
|
|
50
|
+
params: options,
|
|
51
|
+
});
|
|
52
|
+
const { ui, mobile } = this.config;
|
|
53
|
+
const { preferDesktop = false } = ui !== null && ui !== void 0 ? ui : {};
|
|
54
|
+
const secure = isSecure();
|
|
55
|
+
const shouldOpenDeeplink = secure && !preferDesktop;
|
|
56
|
+
if (shouldOpenDeeplink) {
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
if (mobile === null || mobile === void 0 ? void 0 : mobile.preferredOpenLink) {
|
|
59
|
+
mobile.preferredOpenLink(METAMASK_DEEPLINK_BASE, '_self');
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
openDeeplink(this.config, METAMASK_DEEPLINK_BASE, METAMASK_CONNECT_BASE_URL);
|
|
63
|
+
}
|
|
64
|
+
}, 10); // small delay to ensure the message encryption and dispatch completes
|
|
65
|
+
}
|
|
66
|
+
const response = yield request;
|
|
67
|
+
if (response.error) {
|
|
68
|
+
throw new RPCInvokeMethodErr(`RPC Request failed with code ${response.error.code}: ${response.error.message}`);
|
|
69
|
+
}
|
|
70
|
+
return response.result;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
throw new RPCInvokeMethodErr(error.message);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Routes the request to a configured RPC node.
|
|
79
|
+
*/
|
|
80
|
+
handleWithRpcNode(options) {
|
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
try {
|
|
83
|
+
return yield this.rpcClient.request(options);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
if (error instanceof MissingRpcEndpointErr) {
|
|
87
|
+
return this.handleWithWallet(options);
|
|
88
|
+
}
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Responds directly from the SDK's session state.
|
|
95
|
+
*/
|
|
96
|
+
handleWithSdkState(options) {
|
|
97
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
// TODO: to be implemented
|
|
99
|
+
console.warn(`Method "${options.request.method}" is configured for SDK state handling, but this is not yet implemented. Falling back to wallet passthrough.`);
|
|
100
|
+
return this.handleWithWallet(options);
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=requestRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestRouter.js","sourceRoot":"","sources":["../../../../src/multichain/rpc/requestRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type TransportRequest, type TransportResponse } from '@metamask/multichain-api-client';
|
|
2
|
+
import type { CaipAccountId } from '@metamask/utils';
|
|
3
|
+
import type { ExtendedTransport, Scope } from 'src/domain';
|
|
4
|
+
export declare class DefaultTransport implements ExtendedTransport {
|
|
5
|
+
#private;
|
|
6
|
+
connect(options?: {
|
|
7
|
+
scopes: Scope[];
|
|
8
|
+
caipAccountIds: CaipAccountId[];
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
disconnect(): Promise<void>;
|
|
11
|
+
isConnected(): boolean;
|
|
12
|
+
request<TRequest extends TransportRequest, TResponse extends TransportResponse>(request: TRequest, options?: {
|
|
13
|
+
timeout?: number;
|
|
14
|
+
}): Promise<TResponse>;
|
|
15
|
+
onNotification(callback: (data: unknown) => void): () => void;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/multichain/transports/default/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAU,KAAK,EAAe,MAAM,YAAY,CAAC;AAWhF,qBAAa,gBAAiB,YAAW,iBAAiB;;IAiBlD,OAAO,CAAC,OAAO,CAAC,EAAE;QACtB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,cAAc,EAAE,aAAa,EAAE,CAAC;KACjC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgEX,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,WAAW;IAIL,OAAO,CACX,QAAQ,SAAS,gBAAgB,EACjC,SAAS,SAAS,iBAAiB,EAEnC,OAAO,EAAE,QAAQ,EACjB,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAgC;IAK7D,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI;CAOjD"}
|
|
@@ -0,0 +1,101 @@
|
|
|
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
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
11
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
12
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
13
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
14
|
+
};
|
|
15
|
+
var _DefaultTransport_instances, _DefaultTransport_notificationCallbacks, _DefaultTransport_transport, _DefaultTransport_defaultRequestOptions, _DefaultTransport_notifyCallbacks;
|
|
16
|
+
import { getDefaultTransport, } from '@metamask/multichain-api-client';
|
|
17
|
+
import { addValidAccounts, getOptionalScopes, getValidAccounts, isSameScopesAndAccounts, } from '../../utils';
|
|
18
|
+
const DEFAULT_REQUEST_TIMEOUT = 60 * 1000;
|
|
19
|
+
export class DefaultTransport {
|
|
20
|
+
constructor() {
|
|
21
|
+
_DefaultTransport_instances.add(this);
|
|
22
|
+
_DefaultTransport_notificationCallbacks.set(this, new Set());
|
|
23
|
+
_DefaultTransport_transport.set(this, getDefaultTransport());
|
|
24
|
+
_DefaultTransport_defaultRequestOptions.set(this, {
|
|
25
|
+
timeout: DEFAULT_REQUEST_TIMEOUT,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
connect(options) {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
31
|
+
yield __classPrivateFieldGet(this, _DefaultTransport_transport, "f").connect();
|
|
32
|
+
//Get wallet session
|
|
33
|
+
const sessionRequest = yield this.request({ method: 'wallet_getSession' }, __classPrivateFieldGet(this, _DefaultTransport_defaultRequestOptions, "f"));
|
|
34
|
+
if (sessionRequest.error) {
|
|
35
|
+
throw new Error(sessionRequest.error.message);
|
|
36
|
+
}
|
|
37
|
+
let walletSession = sessionRequest.result;
|
|
38
|
+
if (walletSession && options) {
|
|
39
|
+
const currentScopes = Object.keys((_a = walletSession === null || walletSession === void 0 ? void 0 : walletSession.sessionScopes) !== null && _a !== void 0 ? _a : {});
|
|
40
|
+
const proposedScopes = (_b = options === null || options === void 0 ? void 0 : options.scopes) !== null && _b !== void 0 ? _b : [];
|
|
41
|
+
const proposedCaipAccountIds = (_c = options === null || options === void 0 ? void 0 : options.caipAccountIds) !== null && _c !== void 0 ? _c : [];
|
|
42
|
+
const hasSameScopesAndAccounts = isSameScopesAndAccounts(currentScopes, proposedScopes, walletSession, proposedCaipAccountIds);
|
|
43
|
+
if (!hasSameScopesAndAccounts) {
|
|
44
|
+
yield this.request({ method: 'wallet_revokeSession', params: walletSession }, __classPrivateFieldGet(this, _DefaultTransport_defaultRequestOptions, "f"));
|
|
45
|
+
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 : []));
|
|
46
|
+
const sessionRequest = { optionalScopes };
|
|
47
|
+
const response = yield this.request({ method: 'wallet_createSession', params: sessionRequest }, __classPrivateFieldGet(this, _DefaultTransport_defaultRequestOptions, "f"));
|
|
48
|
+
if (response.error) {
|
|
49
|
+
throw new Error(response.error.message);
|
|
50
|
+
}
|
|
51
|
+
walletSession = response.result;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else if (!walletSession) {
|
|
55
|
+
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 : []));
|
|
56
|
+
const sessionRequest = { optionalScopes };
|
|
57
|
+
const response = yield this.request({ method: 'wallet_createSession', params: sessionRequest }, __classPrivateFieldGet(this, _DefaultTransport_defaultRequestOptions, "f"));
|
|
58
|
+
if (response.error) {
|
|
59
|
+
throw new Error(response.error.message);
|
|
60
|
+
}
|
|
61
|
+
walletSession = response.result;
|
|
62
|
+
}
|
|
63
|
+
__classPrivateFieldGet(this, _DefaultTransport_instances, "m", _DefaultTransport_notifyCallbacks).call(this, {
|
|
64
|
+
method: 'wallet_sessionChanged',
|
|
65
|
+
params: walletSession,
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
disconnect() {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
__classPrivateFieldGet(this, _DefaultTransport_notificationCallbacks, "f").clear();
|
|
72
|
+
return __classPrivateFieldGet(this, _DefaultTransport_transport, "f").disconnect();
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
isConnected() {
|
|
76
|
+
return __classPrivateFieldGet(this, _DefaultTransport_transport, "f").isConnected();
|
|
77
|
+
}
|
|
78
|
+
request(request_1) {
|
|
79
|
+
return __awaiter(this, arguments, void 0, function* (request, options = __classPrivateFieldGet(this, _DefaultTransport_defaultRequestOptions, "f")) {
|
|
80
|
+
return __classPrivateFieldGet(this, _DefaultTransport_transport, "f").request(request, options);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
onNotification(callback) {
|
|
84
|
+
__classPrivateFieldGet(this, _DefaultTransport_transport, "f").onNotification(callback);
|
|
85
|
+
__classPrivateFieldGet(this, _DefaultTransport_notificationCallbacks, "f").add(callback);
|
|
86
|
+
return () => {
|
|
87
|
+
__classPrivateFieldGet(this, _DefaultTransport_notificationCallbacks, "f").delete(callback);
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
_DefaultTransport_notificationCallbacks = new WeakMap(), _DefaultTransport_transport = new WeakMap(), _DefaultTransport_defaultRequestOptions = new WeakMap(), _DefaultTransport_instances = new WeakSet(), _DefaultTransport_notifyCallbacks = function _DefaultTransport_notifyCallbacks(data) {
|
|
92
|
+
for (const cb of __classPrivateFieldGet(this, _DefaultTransport_notificationCallbacks, "f")) {
|
|
93
|
+
try {
|
|
94
|
+
cb(data);
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
console.log('[WindowPostMessageTransport] notifyCallbacks error:', err);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/multichain/transports/default/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IKeyManager, KeyPair } from '@metamask/mobile-wallet-protocol-core';
|
|
2
|
+
declare class KeyManager implements IKeyManager {
|
|
3
|
+
generateKeyPair(): KeyPair;
|
|
4
|
+
encrypt(plaintext: string, theirPublicKey: Uint8Array): Promise<string>;
|
|
5
|
+
decrypt(encryptedB64: string, myPrivateKey: Uint8Array): Promise<string>;
|
|
6
|
+
}
|
|
7
|
+
export declare const keymanager: KeyManager;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=KeyManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyManager.d.ts","sourceRoot":"","sources":["../../../../../src/multichain/transports/mwp/KeyManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,OAAO,EACR,MAAM,uCAAuC,CAAC;AAG/C,cAAM,UAAW,YAAW,WAAW;IACrC,eAAe,IAAI,OAAO;IAQpB,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,UAAU,GACzB,OAAO,CAAC,MAAM,CAAC;IAMZ,OAAO,CACX,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,UAAU,GACvB,OAAO,CAAC,MAAM,CAAC;CAKnB;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
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 { decrypt, encrypt, PrivateKey } from 'eciesjs';
|
|
11
|
+
class KeyManager {
|
|
12
|
+
generateKeyPair() {
|
|
13
|
+
const privateKey = new PrivateKey();
|
|
14
|
+
return {
|
|
15
|
+
privateKey: new Uint8Array(privateKey.secret),
|
|
16
|
+
publicKey: privateKey.publicKey.toBytes(true),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
encrypt(plaintext, theirPublicKey) {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
const plaintextBuffer = Buffer.from(plaintext, 'utf8');
|
|
22
|
+
const encryptedBuffer = encrypt(theirPublicKey, plaintextBuffer);
|
|
23
|
+
return encryptedBuffer.toString('base64');
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
decrypt(encryptedB64, myPrivateKey) {
|
|
27
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
const encryptedBuffer = Buffer.from(encryptedB64, 'base64');
|
|
29
|
+
const decryptedBuffer = yield decrypt(myPrivateKey, encryptedBuffer);
|
|
30
|
+
return Buffer.from(decryptedBuffer).toString('utf8');
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export const keymanager = new KeyManager();
|
|
35
|
+
//# sourceMappingURL=KeyManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyManager.js","sourceRoot":"","sources":["../../../../../src/multichain/transports/mwp/KeyManager.ts"],"names":[],"mappings":";;;;;;;;;AAIA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,UAAU;IACd,eAAe;QACb,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACpC,OAAO;YACL,UAAU,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;YAC7C,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;SAC9C,CAAC;IACJ,CAAC;IAEK,OAAO,CACX,SAAiB,EACjB,cAA0B;;YAE1B,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACvD,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;YACjE,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEK,OAAO,CACX,YAAoB,EACpB,YAAwB;;YAExB,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC5D,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;YACrE,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;KAAA;CACF;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { SessionRequest } from '@metamask/mobile-wallet-protocol-core';
|
|
2
|
+
import type { DappClient } from '@metamask/mobile-wallet-protocol-dapp-client';
|
|
3
|
+
import { type TransportRequest, type TransportResponse } from '@metamask/multichain-api-client';
|
|
4
|
+
import type { CaipAccountId } from '@metamask/utils';
|
|
5
|
+
import { type ExtendedTransport, type Scope, type StoreAdapter } from '../../../domain';
|
|
6
|
+
type PendingRequests = {
|
|
7
|
+
request: {
|
|
8
|
+
jsonrpc: string;
|
|
9
|
+
id: string;
|
|
10
|
+
} & TransportRequest;
|
|
11
|
+
method: string;
|
|
12
|
+
resolve: (value: TransportResponse) => void;
|
|
13
|
+
reject: (error: Error) => void;
|
|
14
|
+
timeout: NodeJS.Timeout;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Mobile Wallet Protocol transport implementation
|
|
18
|
+
* Bridges the MWP DappClient with the multichain API client Transport interface
|
|
19
|
+
*/
|
|
20
|
+
export declare class MWPTransport implements ExtendedTransport {
|
|
21
|
+
private dappClient;
|
|
22
|
+
private kvstore;
|
|
23
|
+
private options;
|
|
24
|
+
private __reqId;
|
|
25
|
+
private __pendingRequests;
|
|
26
|
+
private notificationCallbacks;
|
|
27
|
+
private currentSessionRequest;
|
|
28
|
+
private windowFocusHandler;
|
|
29
|
+
get pendingRequests(): Map<string, PendingRequests>;
|
|
30
|
+
set pendingRequests(pendingRequests: Map<string, PendingRequests>);
|
|
31
|
+
get sessionRequest(): SessionRequest | undefined;
|
|
32
|
+
constructor(dappClient: DappClient, kvstore: StoreAdapter, options?: {
|
|
33
|
+
requestTimeout: number;
|
|
34
|
+
connectionTimeout: number;
|
|
35
|
+
});
|
|
36
|
+
private onWindowFocus;
|
|
37
|
+
private notifyCallbacks;
|
|
38
|
+
private rejectRequest;
|
|
39
|
+
private handleMessage;
|
|
40
|
+
private onResumeSuccess;
|
|
41
|
+
connect(options?: {
|
|
42
|
+
scopes: Scope[];
|
|
43
|
+
caipAccountIds: CaipAccountId[];
|
|
44
|
+
}): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Disconnects from the Mobile Wallet Protocol
|
|
47
|
+
*
|
|
48
|
+
* @returns Nothing
|
|
49
|
+
*/
|
|
50
|
+
disconnect(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Checks if the transport is connected
|
|
53
|
+
*
|
|
54
|
+
* @returns True if transport is connected, false otherwise
|
|
55
|
+
*/
|
|
56
|
+
isConnected(): boolean;
|
|
57
|
+
private fetchCachedWalletSession;
|
|
58
|
+
private storeWalletSession;
|
|
59
|
+
request<TRequest extends TransportRequest, TResponse extends TransportResponse>(payload: TRequest, options?: {
|
|
60
|
+
timeout?: number;
|
|
61
|
+
}): Promise<TResponse>;
|
|
62
|
+
onNotification(callback: (data: unknown) => void): () => void;
|
|
63
|
+
}
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/multichain/transports/mwp/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAEV,cAAc,EACf,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAEvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAEL,KAAK,iBAAiB,EAEtB,KAAK,KAAK,EAEV,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAqBzB,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,CAAC;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;CACzB,CAAC;AAIF;;;GAGG;AACH,qBAAa,YAAa,YAAW,iBAAiB;IAwBlD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IAzBjB,OAAO,CAAC,OAAO,CAAK;IAEpB,OAAO,CAAC,iBAAiB,CAAsC;IAE/D,OAAO,CAAC,qBAAqB,CAAsC;IAEnE,OAAO,CAAC,qBAAqB,CAA6B;IAE1D,OAAO,CAAC,kBAAkB,CAA2B;IAErD,IAAI,eAAe,IAIkB,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAFhE;IAED,IAAI,eAAe,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAEhE;IAED,IAAI,cAAc,+BAEjB;gBAGS,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAGnE;IAYH,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,aAAa;YAyCP,eAAe;IAsEvB,OAAO,CAAC,OAAO,CAAC,EAAE;QACtB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,cAAc,EAAE,aAAa,EAAE,CAAC;KACjC,GAAG,OAAO,CAAC,IAAI,CAAC;IA4FjB;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC;;;;OAIG;IACH,WAAW,IAAI,OAAO;YAKR,wBAAwB;YAiBxB,kBAAkB;IAW1B,OAAO,CACX,QAAQ,SAAS,gBAAgB,EACjC,SAAS,SAAS,iBAAiB,EACnC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAmCxE,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;CAM9D"}
|