@metamask/connect-multichain 0.4.0 → 0.5.1
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 +33 -1
- package/dist/browser/es/connect-multichain.d.mts +26 -9
- package/dist/browser/es/connect-multichain.mjs +370 -100
- 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 +26 -9
- package/dist/browser/iife/connect-multichain.js +2829 -224
- 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 +26 -9
- package/dist/browser/umd/connect-multichain.js +370 -100
- 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 +26 -9
- package/dist/node/cjs/connect-multichain.js +364 -101
- 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 +26 -9
- package/dist/node/es/connect-multichain.mjs +363 -100
- 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 +26 -9
- package/dist/react-native/es/connect-multichain.mjs +357 -91
- 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/index.d.ts +4 -4
- package/dist/src/domain/multichain/index.d.ts.map +1 -1
- package/dist/src/domain/multichain/index.js.map +1 -1
- package/dist/src/domain/multichain/types.d.ts +4 -3
- package/dist/src/domain/multichain/types.d.ts.map +1 -1
- package/dist/src/domain/ui/types.d.ts +7 -0
- package/dist/src/domain/ui/types.d.ts.map +1 -1
- package/dist/src/domain/ui/types.js.map +1 -1
- package/dist/src/index.browser.d.ts +2 -1
- package/dist/src/index.browser.d.ts.map +1 -1
- package/dist/src/index.browser.js +5 -3
- package/dist/src/index.browser.js.map +1 -1
- package/dist/src/index.native.d.ts +2 -1
- package/dist/src/index.native.d.ts.map +1 -1
- package/dist/src/index.native.js +6 -4
- package/dist/src/index.native.js.map +1 -1
- package/dist/src/index.node.d.ts +1 -1
- package/dist/src/index.node.d.ts.map +1 -1
- package/dist/src/index.node.js +3 -3
- package/dist/src/index.node.js.map +1 -1
- package/dist/src/multichain/index.d.ts +8 -8
- package/dist/src/multichain/index.d.ts.map +1 -1
- package/dist/src/multichain/index.js +161 -101
- package/dist/src/multichain/index.js.map +1 -1
- package/dist/src/multichain/transports/default/index.d.ts +2 -1
- package/dist/src/multichain/transports/default/index.d.ts.map +1 -1
- package/dist/src/multichain/transports/default/index.js +1 -0
- package/dist/src/multichain/transports/default/index.js.map +1 -1
- package/dist/src/multichain/transports/multichainApiClientWrapper/index.d.ts +21 -0
- package/dist/src/multichain/transports/multichainApiClientWrapper/index.d.ts.map +1 -0
- package/dist/src/multichain/transports/multichainApiClientWrapper/index.js +159 -0
- package/dist/src/multichain/transports/multichainApiClientWrapper/index.js.map +1 -0
- package/dist/src/multichain/transports/mwp/index.d.ts +4 -1
- package/dist/src/multichain/transports/mwp/index.d.ts.map +1 -1
- package/dist/src/multichain/transports/mwp/index.js +54 -2
- package/dist/src/multichain/transports/mwp/index.js.map +1 -1
- package/dist/src/polyfills/buffer-shim.d.ts +2 -0
- package/dist/src/polyfills/buffer-shim.d.ts.map +1 -0
- package/dist/src/polyfills/buffer-shim.js +22 -0
- package/dist/src/polyfills/buffer-shim.js.map +1 -0
- package/dist/src/ui/ModalFactory.d.ts +54 -0
- package/dist/src/ui/ModalFactory.d.ts.map +1 -0
- package/dist/src/ui/ModalFactory.js +171 -0
- package/dist/src/ui/ModalFactory.js.map +1 -0
- package/dist/src/ui/index.d.ts +14 -38
- package/dist/src/ui/index.d.ts.map +1 -1
- package/dist/src/ui/index.js +24 -142
- package/dist/src/ui/index.js.map +1 -1
- package/dist/src/ui/index.native.d.ts +13 -0
- package/dist/src/ui/index.native.d.ts.map +1 -0
- package/dist/src/ui/{preload.native.js → index.native.js} +12 -6
- package/dist/src/ui/index.native.js.map +1 -0
- package/dist/src/ui/modals/base/AbstractInstallModal.d.ts.map +1 -1
- package/dist/src/ui/modals/base/AbstractInstallModal.js +0 -4
- package/dist/src/ui/modals/base/AbstractInstallModal.js.map +1 -1
- package/dist/types/connect-multichain.d.ts +26 -9
- package/package.json +9 -3
- package/dist/src/ui/preload.native.d.ts +0 -5
- package/dist/src/ui/preload.native.d.ts.map +0 -1
- package/dist/src/ui/preload.native.js.map +0 -1
- package/dist/src/ui/preload.web.d.ts +0 -5
- package/dist/src/ui/preload.web.d.ts.map +0 -1
- package/dist/src/ui/preload.web.js +0 -27
- package/dist/src/ui/preload.web.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.5.1]
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- fix: Resolve Buffer polyfill requirement for browser/React Native consumers ([#121](https://github.com/MetaMask/connect-monorepo/pull/121))
|
|
15
|
+
|
|
16
|
+
## [0.5.0]
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- Add `display_uri` event emission for QR code links to support custom UI implementations ([#130](https://github.com/MetaMask/connect-monorepo/pull/130))
|
|
21
|
+
- Emitted when QR code link is generated during connection
|
|
22
|
+
- Emitted when QR code is regenerated on expiration
|
|
23
|
+
- Emitted for deeplink connections on mobile web
|
|
24
|
+
- Add `onDisplayUri` callback to `InstallWidgetProps` for notifying when QR codes are generated/regenerated ([#130](https://github.com/MetaMask/connect-monorepo/pull/130))
|
|
25
|
+
- Add headless mode support that emits `display_uri` without rendering modal UI ([#130](https://github.com/MetaMask/connect-monorepo/pull/130))
|
|
26
|
+
- Add `sessionProperties` parameter to `connect()` method for passing custom session configuration to wallets([#80](https://github.com/MetaMask/connect-monorepo/pull/80))
|
|
27
|
+
- Introduce `MultichainApiClientWrapperTransport` to provide the provider interface before connection is established([#80](https://github.com/MetaMask/connect-monorepo/pull/80))
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
|
|
31
|
+
- **BREAKING** Rename `state` property to `status` on `MultichainCore` for improved clarity ([#125](https://github.com/MetaMask/connect-monorepo/pull/125))
|
|
32
|
+
- **BREAKING** Rename `createMetamaskConnect` to `createMultichainClient` for a cleaner naming convention ([#114](https://github.com/MetaMask/connect-monorepo/pull/114))
|
|
33
|
+
- Provider is now always available via `sdk.provider` regardless of connection state (wrapper handles disconnected state internally)([#80](https://github.com/MetaMask/connect-monorepo/pull/80))
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- Fix `wallet_sessionChanged` events subsequent to the initial connection not being persisted ([#100](https://github.com/MetaMask/connect-monorepo/pull/100))
|
|
38
|
+
- Fix hanging when attempting to resume a previous connection initialization in which the wallet does not send any response at all ([#103](https://github.com/MetaMask/connect-monorepo/pull/103))
|
|
39
|
+
|
|
10
40
|
## [0.4.0]
|
|
11
41
|
|
|
12
42
|
### Changed
|
|
@@ -86,7 +116,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
86
116
|
|
|
87
117
|
- Initial release
|
|
88
118
|
|
|
89
|
-
[Unreleased]: https://github.com/MetaMask/connect-monorepo/compare/@metamask/connect-multichain@0.
|
|
119
|
+
[Unreleased]: https://github.com/MetaMask/connect-monorepo/compare/@metamask/connect-multichain@0.5.1...HEAD
|
|
120
|
+
[0.5.1]: https://github.com/MetaMask/connect-monorepo/compare/@metamask/connect-multichain@0.5.0...@metamask/connect-multichain@0.5.1
|
|
121
|
+
[0.5.0]: https://github.com/MetaMask/connect-monorepo/compare/@metamask/connect-multichain@0.4.0...@metamask/connect-multichain@0.5.0
|
|
90
122
|
[0.4.0]: https://github.com/MetaMask/connect-monorepo/compare/@metamask/connect-multichain@0.3.2...@metamask/connect-multichain@0.4.0
|
|
91
123
|
[0.3.2]: https://github.com/MetaMask/connect-monorepo/compare/@metamask/connect-multichain@0.3.1...@metamask/connect-multichain@0.3.2
|
|
92
124
|
[0.3.1]: https://github.com/MetaMask/connect-monorepo/compare/@metamask/connect-multichain@0.3.0...@metamask/connect-multichain@0.3.1
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import debug from 'debug';
|
|
2
|
-
import { SessionData, Transport, TransportRequest, TransportResponse, MultichainApiClient } from '@metamask/multichain-api-client';
|
|
2
|
+
import { SessionData, Transport, SessionProperties, 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
5
|
import { SessionRequest, Session } from '@metamask/mobile-wallet-protocol-core';
|
|
@@ -296,17 +296,26 @@ type FactoryModals = {
|
|
|
296
296
|
OTPCodeModal: new (options: OTPCodeWidgetProps) => AbstractOTPCodeModal;
|
|
297
297
|
};
|
|
298
298
|
|
|
299
|
-
|
|
299
|
+
/**
|
|
300
|
+
* Base ModalFactory class that accepts a preload function.
|
|
301
|
+
* Platform-specific implementations should extend this class.
|
|
302
|
+
*/
|
|
303
|
+
declare abstract class BaseModalFactory<T extends FactoryModals = FactoryModals> {
|
|
300
304
|
protected readonly options: T;
|
|
301
305
|
modal: Modal<any>;
|
|
302
306
|
private readonly platform;
|
|
303
307
|
private successCallback;
|
|
308
|
+
private displayUriCallback?;
|
|
304
309
|
/**
|
|
305
310
|
* Creates a new modal factory instance.
|
|
306
311
|
*
|
|
307
312
|
* @param options - The modals configuration object
|
|
308
313
|
*/
|
|
309
314
|
constructor(options: T);
|
|
315
|
+
/**
|
|
316
|
+
* Platform-specific preload function to be implemented by subclasses.
|
|
317
|
+
*/
|
|
318
|
+
protected abstract preload(): Promise<void>;
|
|
310
319
|
private validateModals;
|
|
311
320
|
unload(error?: Error): Promise<void>;
|
|
312
321
|
/**
|
|
@@ -330,7 +339,7 @@ declare class ModalFactory<T extends FactoryModals = FactoryModals> {
|
|
|
330
339
|
createConnectionUniversalLink(connectionRequest?: ConnectionRequest): string;
|
|
331
340
|
private onCloseModal;
|
|
332
341
|
private onStartDesktopOnboarding;
|
|
333
|
-
renderInstallModal(showInstallModal: boolean, createConnectionRequest: () => Promise<ConnectionRequest>, successCallback: (error?: Error) => Promise<void
|
|
342
|
+
renderInstallModal(showInstallModal: boolean, createConnectionRequest: () => Promise<ConnectionRequest>, successCallback: (error?: Error) => Promise<void>, onDisplayUri?: (uri: string) => void): Promise<void>;
|
|
334
343
|
renderOTPCodeModal(createOTPCode: () => Promise<OTPCode>, successCallback: (error?: Error) => Promise<void>, updateOTPCode: (otpCode: OTPCode, modal: AbstractOTPCodeModal) => void): Promise<void>;
|
|
335
344
|
}
|
|
336
345
|
|
|
@@ -399,7 +408,7 @@ type MultichainOptions = {
|
|
|
399
408
|
storage: StoreClient;
|
|
400
409
|
/** UI configuration options */
|
|
401
410
|
ui: {
|
|
402
|
-
factory:
|
|
411
|
+
factory: BaseModalFactory;
|
|
403
412
|
headless?: boolean;
|
|
404
413
|
preferExtension?: boolean;
|
|
405
414
|
showInstallModal?: boolean;
|
|
@@ -436,6 +445,7 @@ type ExtendedTransport = Omit<Transport, 'connect'> & {
|
|
|
436
445
|
connect: (props?: {
|
|
437
446
|
scopes: Scope[];
|
|
438
447
|
caipAccountIds: CaipAccountId[];
|
|
448
|
+
sessionProperties?: SessionProperties;
|
|
439
449
|
forceRequest?: boolean;
|
|
440
450
|
}) => Promise<void>;
|
|
441
451
|
sendEip1193Message: <TRequest extends TransportRequest, TResponse extends TransportResponse>(request: TRequest, options?: {
|
|
@@ -450,7 +460,7 @@ declare const SDK_HANDLED_METHODS: Set<string>;
|
|
|
450
460
|
|
|
451
461
|
declare function getInfuraRpcUrls(infuraAPIKey: string): RpcUrlsMap;
|
|
452
462
|
|
|
453
|
-
type
|
|
463
|
+
type ConnectionStatus = 'pending' | 'loaded' | 'disconnected' | 'connected' | 'connecting';
|
|
454
464
|
declare enum TransportType {
|
|
455
465
|
Browser = "browser",
|
|
456
466
|
MWP = "mwp",
|
|
@@ -465,7 +475,7 @@ declare enum TransportType {
|
|
|
465
475
|
declare abstract class MultichainCore extends EventEmitter<SDKEvents> {
|
|
466
476
|
protected readonly options: MultichainOptions;
|
|
467
477
|
abstract storage: StoreClient;
|
|
468
|
-
abstract
|
|
478
|
+
abstract status: ConnectionStatus;
|
|
469
479
|
abstract provider: MultichainApiClient<RPCAPI>;
|
|
470
480
|
abstract transport: ExtendedTransport;
|
|
471
481
|
abstract transportType: TransportType;
|
|
@@ -474,7 +484,7 @@ declare abstract class MultichainCore extends EventEmitter<SDKEvents> {
|
|
|
474
484
|
*
|
|
475
485
|
* @returns Promise that resolves to the session data
|
|
476
486
|
*/
|
|
477
|
-
abstract connect(scopes: Scope[], caipAccountIds: CaipAccountId[], forceRequest?: boolean): Promise<void>;
|
|
487
|
+
abstract connect(scopes: Scope[], caipAccountIds: CaipAccountId[], sessionProperties?: SessionProperties, forceRequest?: boolean): Promise<void>;
|
|
478
488
|
/**
|
|
479
489
|
* Disconnects from the multichain provider.
|
|
480
490
|
*
|
|
@@ -578,6 +588,13 @@ type InstallWidgetProps = Components.MmInstallModal & {
|
|
|
578
588
|
startDesktopOnboarding: () => void;
|
|
579
589
|
createConnectionRequest: () => Promise<ConnectionRequest>;
|
|
580
590
|
generateQRCode: (connectionRequest: ConnectionRequest) => Promise<QRLink>;
|
|
591
|
+
/**
|
|
592
|
+
* Callback invoked when a QR code link is generated or regenerated.
|
|
593
|
+
* This allows consumers to display their own custom QR code UI.
|
|
594
|
+
*
|
|
595
|
+
* @param uri - The deeplink URI to be displayed as a QR code
|
|
596
|
+
*/
|
|
597
|
+
onDisplayUri?: (uri: QRLink) => void;
|
|
581
598
|
};
|
|
582
599
|
type OTPCodeWidgetProps = Components.MmOtpModal & {
|
|
583
600
|
parentElement?: Element;
|
|
@@ -632,6 +649,6 @@ declare function getWalletActionAnalyticsProperties(options: MultichainOptions,
|
|
|
632
649
|
*/
|
|
633
650
|
declare function getVersion(): string;
|
|
634
651
|
|
|
635
|
-
declare const
|
|
652
|
+
declare const createMultichainClient: CreateMultichainFN;
|
|
636
653
|
|
|
637
|
-
export { type ConnectionRequest, type CreateMultichainFN, type DappSettings, type DataType, type DomainErrorCodes, type Enumerate, type ErrorCodeRange, type ErrorCodes, EventEmitter, type EventTypes, type ExtendedTransport, type InstallWidgetProps, type InvokeMethodOptions, type LoggerNameSpaces, Modal, type ModalFactoryConnectOptions, type ModalFactoryOptions, MultichainCore, type MultichainOptions, type NotificationCallback, type OTPCode, type OTPCodeWidgetProps, PlatformType, type QRLink, type RPCAPI, type RPCErrorCodes, RPCHttpErr, RPCInvokeMethodErr, RPCReadonlyRequestErr, RPCReadonlyResponseErr, type RPCResponse, RPC_HANDLED_METHODS, type RpcMethod, type RpcUrlsMap, type SDKEvents,
|
|
654
|
+
export { type ConnectionRequest, type ConnectionStatus, type CreateMultichainFN, type DappSettings, type DataType, type DomainErrorCodes, type Enumerate, type ErrorCodeRange, type ErrorCodes, EventEmitter, type EventTypes, type ExtendedTransport, type InstallWidgetProps, type InvokeMethodOptions, type LoggerNameSpaces, Modal, type ModalFactoryConnectOptions, type ModalFactoryOptions, MultichainCore, type MultichainOptions, type NotificationCallback, type OTPCode, type OTPCodeWidgetProps, PlatformType, type QRLink, type RPCAPI, type RPCErrorCodes, RPCHttpErr, RPCInvokeMethodErr, RPCReadonlyRequestErr, RPCReadonlyResponseErr, type RPCResponse, RPC_HANDLED_METHODS, type RpcMethod, type RpcUrlsMap, type SDKEvents, SDK_HANDLED_METHODS, type Scope, type StorageErrorCodes, StoreAdapter, StoreClient, type StoreOptions, TransportType, createLogger, createMultichainClient, enableDebug, getInfuraRpcUrls, getPlatformType, getTransportType, getVersion, getWalletActionAnalyticsProperties, hasExtension, infuraRpcUrls, isEnabled, isMetamaskExtensionInstalled, isRejectionError, isSecure };
|