@metamask/connect-multichain 0.9.0 → 0.10.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.
Files changed (39) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/README.md +18 -6
  3. package/dist/browser/es/connect-multichain.d.mts +13 -3
  4. package/dist/browser/es/connect-multichain.mjs +33 -22
  5. package/dist/browser/es/connect-multichain.mjs.map +1 -1
  6. package/dist/browser/es/metafile-esm.json +1 -1
  7. package/dist/browser/iife/connect-multichain.d.ts +13 -3
  8. package/dist/browser/iife/connect-multichain.js +41 -22
  9. package/dist/browser/iife/connect-multichain.js.map +1 -1
  10. package/dist/browser/iife/metafile-iife.json +1 -1
  11. package/dist/browser/umd/connect-multichain.d.ts +13 -3
  12. package/dist/browser/umd/connect-multichain.js +33 -22
  13. package/dist/browser/umd/connect-multichain.js.map +1 -1
  14. package/dist/browser/umd/metafile-cjs.json +1 -1
  15. package/dist/node/cjs/connect-multichain.d.ts +13 -3
  16. package/dist/node/cjs/connect-multichain.js +33 -22
  17. package/dist/node/cjs/connect-multichain.js.map +1 -1
  18. package/dist/node/cjs/metafile-cjs.json +1 -1
  19. package/dist/node/es/connect-multichain.d.mts +13 -3
  20. package/dist/node/es/connect-multichain.mjs +33 -22
  21. package/dist/node/es/connect-multichain.mjs.map +1 -1
  22. package/dist/node/es/metafile-esm.json +1 -1
  23. package/dist/react-native/es/connect-multichain.d.mts +13 -3
  24. package/dist/react-native/es/connect-multichain.mjs +33 -22
  25. package/dist/react-native/es/connect-multichain.mjs.map +1 -1
  26. package/dist/react-native/es/metafile-esm.json +1 -1
  27. package/dist/src/domain/multichain/api/infura.d.ts +13 -1
  28. package/dist/src/domain/multichain/api/infura.d.ts.map +1 -1
  29. package/dist/src/domain/multichain/api/infura.js +17 -5
  30. package/dist/src/domain/multichain/api/infura.js.map +1 -1
  31. package/dist/src/multichain/index.d.ts.map +1 -1
  32. package/dist/src/multichain/index.js +19 -6
  33. package/dist/src/multichain/index.js.map +1 -1
  34. package/dist/src/multichain/utils/analytics.d.ts +1 -4
  35. package/dist/src/multichain/utils/analytics.d.ts.map +1 -1
  36. package/dist/src/multichain/utils/analytics.js +5 -9
  37. package/dist/src/multichain/utils/analytics.js.map +1 -1
  38. package/dist/types/connect-multichain.d.ts +13 -3
  39. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  import debug from 'debug';
2
2
  import { SessionData, Transport, SessionProperties, TransportRequest, TransportResponse, MultichainApiClient } from '@metamask/multichain-api-client';
3
3
  export { SessionData } from '@metamask/multichain-api-client';
4
- import { CaipAccountId, Json } from '@metamask/utils';
4
+ import { CaipAccountId, CaipChainId, Json } from '@metamask/utils';
5
5
  import { SessionRequest, Session } from '@metamask/mobile-wallet-protocol-core';
6
6
  import { Components } from '@metamask/multichain-ui';
7
7
 
@@ -485,7 +485,18 @@ declare const infuraRpcUrls: RpcUrlsMap;
485
485
  declare const RPC_HANDLED_METHODS: Set<string>;
486
486
  declare const SDK_HANDLED_METHODS: Set<string>;
487
487
 
488
- declare function getInfuraRpcUrls(infuraAPIKey: string): RpcUrlsMap;
488
+ /**
489
+ * Generates Infura RPC URLs for common networks keyed by CAIP Chain ID.
490
+ *
491
+ * @param options - The options for generating Infura RPC URLs
492
+ * @param options.infuraApiKey - The Infura API key
493
+ * @param options.caipChainIds - Optional CAIP-2 chain IDs to filter the output
494
+ * @returns A map of CAIP-2 chain IDs to Infura RPC URLs
495
+ */
496
+ declare function getInfuraRpcUrls({ infuraApiKey, caipChainIds, }: {
497
+ infuraApiKey: string;
498
+ caipChainIds?: CaipChainId[];
499
+ }): RpcUrlsMap;
489
500
 
490
501
  type ConnectionStatus = 'pending' | 'loaded' | 'disconnected' | 'connected' | 'connecting';
491
502
  declare enum TransportType {
@@ -676,7 +687,6 @@ declare function getWalletActionAnalyticsProperties(options: MultichainOptions,
676
687
  mmconnect_versions: Record<string, string>;
677
688
  dapp_id: string;
678
689
  method: string;
679
- integration_type: string;
680
690
  caip_chain_id: string;
681
691
  anon_id: string;
682
692
  transport_type: TransportType;
@@ -377,10 +377,16 @@ var init_constants = __esm({
377
377
  });
378
378
 
379
379
  // src/domain/multichain/api/infura.ts
380
- function getInfuraRpcUrls(infuraAPIKey) {
381
- return Object.keys(infuraRpcUrls).reduce((acc, key) => {
382
- const typedKey = key;
383
- acc[typedKey] = `${infuraRpcUrls[typedKey]}${infuraAPIKey}`;
380
+ function getInfuraRpcUrls({
381
+ infuraApiKey,
382
+ caipChainIds
383
+ }) {
384
+ const keys = caipChainIds && caipChainIds.length > 0 ? caipChainIds : Object.keys(infuraRpcUrls);
385
+ return keys.reduce((acc, key) => {
386
+ const baseUrl = infuraRpcUrls[key];
387
+ if (baseUrl) {
388
+ acc[key] = `${baseUrl}${infuraApiKey}`;
389
+ }
384
390
  return acc;
385
391
  }, {});
386
392
  }
@@ -648,31 +654,27 @@ function isRejectionError(error) {
648
654
  }
649
655
  function getBaseAnalyticsProperties(options, storage) {
650
656
  return __async(this, null, function* () {
651
- var _a3, _b, _c;
657
+ var _a3;
652
658
  const dappId = getDappId(options.dapp);
653
659
  const platform = getPlatformType();
654
660
  const anonId = yield storage.getAnonId();
655
- const integrationType = (_b = (_a3 = options.analytics) == null ? void 0 : _a3.integrationType) != null ? _b : "unknown" /* UNKNOWN */;
656
661
  return {
657
- mmconnect_versions: (_c = options.versions) != null ? _c : {},
662
+ mmconnect_versions: (_a3 = options.versions) != null ? _a3 : {},
658
663
  dapp_id: dappId,
659
664
  platform,
660
- integration_type: integrationType,
661
665
  anon_id: anonId
662
666
  };
663
667
  });
664
668
  }
665
669
  function getWalletActionAnalyticsProperties(options, storage, invokeOptions, transportType) {
666
670
  return __async(this, null, function* () {
667
- var _a3, _b, _c;
671
+ var _a3;
668
672
  const dappId = getDappId(options.dapp);
669
673
  const anonId = yield storage.getAnonId();
670
- const integrationType = (_b = (_a3 = options.analytics) == null ? void 0 : _a3.integrationType) != null ? _b : "unknown";
671
674
  return {
672
- mmconnect_versions: (_c = options.versions) != null ? _c : {},
675
+ mmconnect_versions: (_a3 = options.versions) != null ? _a3 : {},
673
676
  dapp_id: dappId,
674
677
  method: invokeOptions.request.method,
675
- integration_type: integrationType,
676
678
  caip_chain_id: invokeOptions.scope,
677
679
  anon_id: anonId,
678
680
  transport_type: transportType
@@ -2710,21 +2712,23 @@ var SINGLETON_KEY = "__METAMASK_CONNECT_MULTICHAIN_SINGLETON__";
2710
2712
  var _a2, _provider, _providerTransportWrapper, _transport2, _dappClient, _beforeUnloadListener, _listener, _sdkInfo, _MetaMaskConnectMultichain_instances, setupAnalytics_fn, onTransportNotification_fn, getStoredTransport_fn, setupTransport_fn, init_fn2, createDappClient_fn, setupMWP_fn, onBeforeUnload_fn, createBeforeUnloadListener_fn, renderInstallModalAsync_fn, showInstallModal_fn, headlessConnect_fn, setupDefaultTransport_fn, deeplinkConnect_fn, handleConnection_fn, getCaipSession_fn, openConnectDeeplinkIfNeeded_fn;
2711
2713
  var _MetaMaskConnectMultichain = class _MetaMaskConnectMultichain extends MultichainCore {
2712
2714
  constructor(options) {
2713
- var _a3, _b, _c, _d, _e, _f, _g;
2715
+ var _a3, _b, _c, _d, _e, _f;
2714
2716
  const withDappMetadata = setupDappMetadata(options);
2715
- const integrationType = (_b = (_a3 = options.analytics) == null ? void 0 : _a3.integrationType) != null ? _b : "direct";
2717
+ const integrationType = ((_a3 = options.analytics) == null ? void 0 : _a3.integrationType) || "direct";
2716
2718
  const allOptions = __spreadProps(__spreadValues({}, withDappMetadata), {
2717
2719
  ui: __spreadProps(__spreadValues({}, withDappMetadata.ui), {
2718
- preferExtension: (_c = withDappMetadata.ui.preferExtension) != null ? _c : true,
2719
- showInstallModal: (_d = withDappMetadata.ui.showInstallModal) != null ? _d : false,
2720
- headless: (_e = withDappMetadata.ui.headless) != null ? _e : false
2720
+ preferExtension: (_b = withDappMetadata.ui.preferExtension) != null ? _b : true,
2721
+ showInstallModal: (_c = withDappMetadata.ui.showInstallModal) != null ? _c : false,
2722
+ headless: (_d = withDappMetadata.ui.headless) != null ? _d : false
2721
2723
  }),
2722
- analytics: __spreadProps(__spreadValues({}, (_f = options.analytics) != null ? _f : {}), {
2724
+ analytics: __spreadProps(__spreadValues({}, (_e = options.analytics) != null ? _e : {}), {
2723
2725
  integrationType
2724
2726
  }),
2725
2727
  versions: __spreadValues({
2726
- "connect-multichain": "0.9.0"
2727
- }, (_g = options.versions) != null ? _g : {})
2728
+ // typeof guard needed: Metro (React Native) bundles TS source directly,
2729
+ // bypassing the tsup build that substitutes __PACKAGE_VERSION__.
2730
+ "connect-multichain": false ? "unknown" : "0.10.0"
2731
+ }, (_f = options.versions) != null ? _f : {})
2728
2732
  });
2729
2733
  super(allOptions);
2730
2734
  __privateAdd(this, _MetaMaskConnectMultichain_instances);
@@ -2786,7 +2790,7 @@ var _MetaMaskConnectMultichain = class _MetaMaskConnectMultichain extends Multic
2786
2790
  // subsequent calls to `createMultichainClient` to have a different `dapp` value.
2787
2791
  static create(options) {
2788
2792
  return __async(this, null, function* () {
2789
- var _a3;
2793
+ var _a3, _b;
2790
2794
  const globalObject = getGlobalObject();
2791
2795
  const existing = globalObject[SINGLETON_KEY];
2792
2796
  if (existing) {
@@ -2796,6 +2800,11 @@ var _MetaMaskConnectMultichain = class _MetaMaskConnectMultichain extends Multic
2796
2800
  "mmconnect_versions",
2797
2801
  (_a3 = instance.options.versions) != null ? _a3 : {}
2798
2802
  );
2803
+ if ((_b = options.analytics) == null ? void 0 : _b.integrationType) {
2804
+ import_analytics4.analytics.setGlobalProperty("integration_types", [
2805
+ options.analytics.integrationType
2806
+ ]);
2807
+ }
2799
2808
  if (options.debug) {
2800
2809
  enableDebug("metamask-sdk:*");
2801
2810
  }
@@ -3016,7 +3025,9 @@ setupAnalytics_fn = function() {
3016
3025
  import_analytics4.analytics.setGlobalProperty("dapp_id", dappId);
3017
3026
  import_analytics4.analytics.setGlobalProperty("anon_id", anonId);
3018
3027
  import_analytics4.analytics.setGlobalProperty("platform", platform);
3019
- import_analytics4.analytics.setGlobalProperty("integration_type", integrationType);
3028
+ if (integrationType) {
3029
+ import_analytics4.analytics.setGlobalProperty("integration_types", [integrationType]);
3030
+ }
3020
3031
  import_analytics4.analytics.enable();
3021
3032
  });
3022
3033
  };