@rango-dev/widget-embedded 0.63.1-next.1 → 0.63.1-next.10

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 (138) hide show
  1. package/dist/QueueManager.d.ts.map +1 -1
  2. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +1 -1
  3. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts.map +1 -1
  4. package/dist/components/CustomDestination/CustomDestination.styles.d.ts +4 -4
  5. package/dist/components/CustomDestination/CustomDestination.styles.d.ts.map +1 -1
  6. package/dist/components/CustomTokenModal/CustomTokenModal.styles.d.ts +169 -169
  7. package/dist/components/CustomTokenModal/CustomTokenModal.styles.d.ts.map +1 -1
  8. package/dist/components/FilterSelector/FilterSelector.style.d.ts +1 -1
  9. package/dist/components/FilterSelector/FilterSelector.style.d.ts.map +1 -1
  10. package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts +1 -1
  11. package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts.map +1 -1
  12. package/dist/components/NamespaceItem/NamespaceItem.styles.d.ts +1 -1
  13. package/dist/components/NamespaceItem/NamespaceItem.styles.d.ts.map +1 -1
  14. package/dist/components/NamespaceItem/NamespaceItem.types.d.ts +3 -3
  15. package/dist/components/NamespaceItem/NamespaceItem.types.d.ts.map +1 -1
  16. package/dist/components/Quote/Quote.styles.d.ts +171 -171
  17. package/dist/components/Quote/Quote.styles.d.ts.map +1 -1
  18. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts +169 -169
  19. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +1 -1
  20. package/dist/components/RefreshModal/RefreshModal.styles.d.ts +168 -168
  21. package/dist/components/RefreshModal/RefreshModal.styles.d.ts.map +1 -1
  22. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  23. package/dist/components/SwapDetails/SwapDetails.styles.d.ts +1 -1
  24. package/dist/components/SwapDetails/SwapDetails.styles.d.ts.map +1 -1
  25. package/dist/components/SwapDetailsModal/SwapDetailsModal.ConnectWallet.d.ts.map +1 -1
  26. package/dist/components/SwapDetailsModal/SwapDetailsModal.InstallWallet.d.ts.map +1 -1
  27. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts +3 -3
  28. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts.map +1 -1
  29. package/dist/components/SwapMetrics/SwapMetrics.styles.d.ts +1 -1
  30. package/dist/components/SwapMetrics/SwapMetrics.styles.d.ts.map +1 -1
  31. package/dist/components/TokenList/TokenList.styles.d.ts +2 -2
  32. package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
  33. package/dist/components/WalletStatefulConnect/DerivationPath.d.ts.map +1 -1
  34. package/dist/components/WalletStatefulConnect/DerivationPath.helpers.d.ts +7 -3
  35. package/dist/components/WalletStatefulConnect/DerivationPath.helpers.d.ts.map +1 -1
  36. package/dist/components/WalletStatefulConnect/DerivationPath.helpers.test.d.ts +2 -0
  37. package/dist/components/WalletStatefulConnect/DerivationPath.helpers.test.d.ts.map +1 -0
  38. package/dist/components/WalletStatefulConnect/DerivationPath.styles.d.ts +169 -169
  39. package/dist/components/WalletStatefulConnect/DerivationPath.styles.d.ts.map +1 -1
  40. package/dist/components/WalletStatefulConnect/NamespaceDetachedItem.d.ts.map +1 -1
  41. package/dist/components/WalletStatefulConnect/Namespaces.d.ts.map +1 -1
  42. package/dist/components/WalletStatefulConnect/Namespaces.styles.d.ts +168 -168
  43. package/dist/components/WalletStatefulConnect/Namespaces.styles.d.ts.map +1 -1
  44. package/dist/components/WalletStatefulConnect/Namespaces.types.d.ts +3 -3
  45. package/dist/components/WalletStatefulConnect/Namespaces.types.d.ts.map +1 -1
  46. package/dist/constants/errors.d.ts +1 -0
  47. package/dist/constants/errors.d.ts.map +1 -1
  48. package/dist/containers/Wallets/Wallets.d.ts.map +1 -1
  49. package/dist/containers/Wallets/Wallets.helpers.d.ts +2 -2
  50. package/dist/containers/Wallets/Wallets.helpers.d.ts.map +1 -1
  51. package/dist/containers/Wallets/Wallets.types.d.ts +4 -4
  52. package/dist/containers/Wallets/Wallets.types.d.ts.map +1 -1
  53. package/dist/containers/Wallets/useUpdates.d.ts +1 -1
  54. package/dist/containers/Wallets/useUpdates.d.ts.map +1 -1
  55. package/dist/containers/WidgetProvider/WidgetProvider.d.ts.map +1 -1
  56. package/dist/containers/WidgetProvider/WidgetProvider.helpers.d.ts +5 -0
  57. package/dist/containers/WidgetProvider/WidgetProvider.helpers.d.ts.map +1 -0
  58. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts +1 -1
  59. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts.map +1 -1
  60. package/dist/hooks/useStatefulConnect/useStatefulConnect.d.ts.map +1 -1
  61. package/dist/hooks/useStatefulConnect/useStatefulConnect.types.d.ts +5 -4
  62. package/dist/hooks/useStatefulConnect/useStatefulConnect.types.d.ts.map +1 -1
  63. package/dist/hooks/useWalletList.d.ts.map +1 -1
  64. package/dist/hooks/useWalletProviders/useWalletProviders.d.ts +2 -2
  65. package/dist/hooks/useWalletProviders/useWalletProviders.d.ts.map +1 -1
  66. package/dist/hooks/useWalletProviders/useWalletProviders.helpers.d.ts +2 -3
  67. package/dist/hooks/useWalletProviders/useWalletProviders.helpers.d.ts.map +1 -1
  68. package/dist/index.d.ts +10 -7
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +3 -2
  71. package/dist/index.js.map +4 -4
  72. package/dist/store/AppStore.d.ts +2 -2
  73. package/dist/store/AppStore.d.ts.map +1 -1
  74. package/dist/store/app.d.ts +2 -2
  75. package/dist/store/app.d.ts.map +1 -1
  76. package/dist/store/slices/config.d.ts +5 -5
  77. package/dist/store/slices/config.d.ts.map +1 -1
  78. package/dist/test-utils/fixtures.d.ts +2 -2
  79. package/dist/test-utils/fixtures.d.ts.map +1 -1
  80. package/dist/types/config.d.ts +25 -4
  81. package/dist/types/config.d.ts.map +1 -1
  82. package/dist/types/wallets.d.ts +1 -1
  83. package/dist/types/wallets.d.ts.map +1 -1
  84. package/dist/utils/common.d.ts +1 -0
  85. package/dist/utils/common.d.ts.map +1 -1
  86. package/dist/utils/errors.d.ts +14 -0
  87. package/dist/utils/errors.d.ts.map +1 -0
  88. package/dist/utils/errors.test.d.ts +2 -0
  89. package/dist/utils/errors.test.d.ts.map +1 -0
  90. package/dist/utils/providers.d.ts +3 -6
  91. package/dist/utils/providers.d.ts.map +1 -1
  92. package/dist/utils/swap.d.ts +1 -1
  93. package/dist/utils/swap.d.ts.map +1 -1
  94. package/dist/utils/wallets.d.ts +2 -1
  95. package/dist/utils/wallets.d.ts.map +1 -1
  96. package/package.json +8 -9
  97. package/src/QueueManager.tsx +10 -7
  98. package/src/components/NamespaceItem/NamespaceItem.tsx +1 -1
  99. package/src/components/NamespaceItem/NamespaceItem.types.ts +3 -3
  100. package/src/components/SwapDetails/SwapDetails.tsx +4 -1
  101. package/src/components/SwapDetailsModal/SwapDetailsModal.ConnectWallet.tsx +7 -11
  102. package/src/components/SwapDetailsModal/SwapDetailsModal.InstallWallet.tsx +8 -2
  103. package/src/components/SwapDetailsModal/SwapDetailsModal.types.ts +3 -3
  104. package/src/components/TokenList/LoadingTokenList.tsx +2 -2
  105. package/src/components/WalletStatefulConnect/DerivationPath.helpers.test.ts +98 -0
  106. package/src/components/WalletStatefulConnect/DerivationPath.helpers.ts +14 -10
  107. package/src/components/WalletStatefulConnect/DerivationPath.tsx +14 -7
  108. package/src/components/WalletStatefulConnect/Detached.tsx +2 -2
  109. package/src/components/WalletStatefulConnect/NamespaceDetachedItem.tsx +2 -1
  110. package/src/components/WalletStatefulConnect/Namespaces.tsx +3 -8
  111. package/src/components/WalletStatefulConnect/Namespaces.types.tsx +3 -3
  112. package/src/constants/errors.ts +3 -0
  113. package/src/containers/Wallets/Wallets.helpers.ts +4 -4
  114. package/src/containers/Wallets/Wallets.tsx +6 -3
  115. package/src/containers/Wallets/Wallets.types.ts +4 -7
  116. package/src/containers/Wallets/useUpdates.ts +4 -119
  117. package/src/containers/WidgetProvider/WidgetProvider.helpers.ts +10 -0
  118. package/src/containers/WidgetProvider/WidgetProvider.tsx +12 -1
  119. package/src/containers/WidgetProvider/WidgetProvider.types.ts +1 -1
  120. package/src/hooks/useStatefulConnect/useStatefulConnect.ts +28 -26
  121. package/src/hooks/useStatefulConnect/useStatefulConnect.types.ts +6 -3
  122. package/src/hooks/useWalletList.ts +10 -7
  123. package/src/hooks/useWalletProviders/useWalletProviders.helpers.ts +3 -10
  124. package/src/hooks/useWalletProviders/useWalletProviders.ts +2 -2
  125. package/src/index.ts +10 -11
  126. package/src/store/AppStore.tsx +4 -2
  127. package/src/store/app.ts +7 -2
  128. package/src/store/slices/config.ts +39 -12
  129. package/src/store/slices/data.test.ts +2 -2
  130. package/src/test-utils/fixtures.ts +6 -2
  131. package/src/types/config.ts +31 -4
  132. package/src/types/wallets.ts +1 -1
  133. package/src/utils/common.ts +6 -0
  134. package/src/utils/errors.test.ts +78 -0
  135. package/src/utils/errors.ts +69 -0
  136. package/src/utils/providers.ts +16 -50
  137. package/src/utils/swap.ts +8 -1
  138. package/src/utils/wallets.ts +12 -15
@@ -0,0 +1,69 @@
1
+ import { errorMessages } from '../constants/errors';
2
+
3
+ /*
4
+ * A failed `import()` has no standard error, so each engine and bundler words
5
+ * it differently. Lowercase, they are matched against a lowercased message.
6
+ */
7
+ const MODULE_LOAD_ERROR_MESSAGES = [
8
+ // Chromium
9
+ 'failed to fetch dynamically imported module',
10
+ // Firefox
11
+ 'error loading dynamically imported module',
12
+ // Safari
13
+ 'importing a module script failed',
14
+ // A stale chunk answered with the index page instead of a module
15
+ 'failed to load module script',
16
+ // Vite
17
+ 'unable to preload css',
18
+ // Webpack
19
+ 'loading chunk',
20
+ 'loading css chunk',
21
+ 'chunkloaderror',
22
+ ];
23
+
24
+ function toMessage(value: unknown): string {
25
+ if (typeof value === 'string') {
26
+ return value;
27
+ }
28
+
29
+ if (value instanceof Error) {
30
+ // Webpack names its failures rather than wording them.
31
+ return `${value.name} ${value.message}`;
32
+ }
33
+
34
+ return '';
35
+ }
36
+
37
+ export function isModuleLoadError(value: unknown): boolean {
38
+ const message = toMessage(value).toLowerCase();
39
+
40
+ return (
41
+ !!message &&
42
+ MODULE_LOAD_ERROR_MESSAGES.some((candidate) => message.includes(candidate))
43
+ );
44
+ }
45
+
46
+ /**
47
+ * Replace a failure we recognize with one worth showing to a user.
48
+ *
49
+ * Every place the widget calls into another package routes its failures through
50
+ * here, so a new class of failure only has to be taught to the widget once.
51
+ *
52
+ * @param error - a thrown error, or a message already stringified from one.
53
+ * @returns a user facing error keeping the original as `cause`, or `null` when
54
+ * the failure is not one we recognize.
55
+ */
56
+ export function tryRefineError(error: unknown): Error | null {
57
+ if (isModuleLoadError(error)) {
58
+ return new Error(errorMessages().moduleLoadError, { cause: error });
59
+ }
60
+
61
+ return null;
62
+ }
63
+
64
+ export function tryRefineErrorMessage(
65
+ error: unknown,
66
+ fallback: string
67
+ ): string {
68
+ return tryRefineError(error)?.message ?? fallback;
69
+ }
@@ -1,5 +1,4 @@
1
1
  import type { WidgetConfig } from '../types';
2
- import type { LegacyProviderInterface } from '@rango-dev/wallets-core/legacy';
3
2
 
4
3
  import { Provider } from '@hub3js/core';
5
4
  import {
@@ -19,11 +18,10 @@ export interface ProvidersOptions {
19
18
 
20
19
  /**
21
20
  *
22
- * Generate a list of providers by passing a provider name (e.g. metamask) or a custom provider which implemented ProviderInterface.
23
- * @returns BothProvidersInterface[] a list of BothProvidersInterface
21
+ * Generate a list of providers by passing a provider name (e.g. metamask) or a custom hub `Provider`.
22
+ * @returns VersionedProviders[] a list of VersionedProviders
24
23
  *
25
24
  */
26
- type BothProvidersInterface = LegacyProviderInterface | Provider;
27
25
  export function matchAndGenerateProviders({
28
26
  allProviders,
29
27
  configWallets,
@@ -43,30 +41,13 @@ export function matchAndGenerateProviders({
43
41
  /*
44
42
  * There are two types of provider we get, the first one is only passing the wallet name
45
43
  * then we will match the wallet name with our providers (@rango-dev/provider-*).
46
- * The second way is passing a custom provider which implemented ProviderInterface.
44
+ * The second way is passing a custom hub `Provider` instance.
47
45
  */
48
46
  if (typeof requestedWallet === 'string') {
49
- const result = allProviders.find((provider) => {
50
- /*
51
- * To find a provider in allProviders,
52
- * a version of each provider should be picked
53
- * and validated based on that version scheme.
54
- * If the corresponding provider to a wallet was found in allProvider,
55
- * it will be add to selected providers.
56
- */
57
- const versionedProvider =
58
- pickProviderVersionWithFallbackToLegacy(provider);
59
- if (versionedProvider instanceof Provider) {
60
- return versionedProvider.id === requestedWallet;
61
- }
62
- return versionedProvider.config.type === requestedWallet;
63
- });
47
+ const result = allProviders.find(
48
+ (provider) => pickProviderVersion(provider).id === requestedWallet
49
+ );
64
50
 
65
- /*
66
- * A provider may have multiple versions
67
- * (e.g., 0.0, also known as legacy, and 1.0, also known as hub).
68
- * We should ensure that all existing versions of a provider are added to selectedProviders.
69
- */
70
51
  if (result) {
71
52
  selectedProviders.push(result);
72
53
  } else {
@@ -77,15 +58,15 @@ export function matchAndGenerateProviders({
77
58
  }
78
59
  } else {
79
60
  // It's a custom provider so we directly push it to the list.
80
- if (requestedWallet instanceof Provider) {
81
- selectedProviders.push(
82
- defineVersions().version('1.0.0', requestedWallet).build()
83
- );
84
- } else {
85
- selectedProviders.push(
86
- defineVersions().version('0.0.0', requestedWallet).build()
61
+ if (!(requestedWallet instanceof Provider)) {
62
+ throw new Error(
63
+ `Legacy providers aren't supported anymore. Pass a hub 'Provider' instance in 'wallets' instead.`
87
64
  );
88
65
  }
66
+
67
+ selectedProviders.push(
68
+ defineVersions().version('1.0.0', requestedWallet).build()
69
+ );
89
70
  }
90
71
  });
91
72
 
@@ -95,27 +76,12 @@ export function matchAndGenerateProviders({
95
76
  return allProviders;
96
77
  }
97
78
 
98
- export function pickProviderVersionWithFallbackToLegacy(
99
- provider: VersionedProviders
100
- ): BothProvidersInterface {
101
- try {
102
- return pickVersion(provider, '1.0.0')[1];
103
- } catch {
104
- // Fallback to legacy version, if target version doesn't exists.
105
- return pickVersion(provider, '0.0.0')[1];
106
- }
79
+ export function pickProviderVersion(provider: VersionedProviders): Provider {
80
+ return pickVersion(provider, '1.0.0')[1];
107
81
  }
108
82
 
109
83
  export function configWalletsToWalletName(
110
84
  providers: VersionedProviders[]
111
85
  ): string[] {
112
- const names = providers
113
- .map((provider) => pickProviderVersionWithFallbackToLegacy(provider))
114
- .map((provider) => {
115
- if (provider instanceof Provider) {
116
- return provider.id;
117
- }
118
- return provider.config.type;
119
- });
120
- return names;
86
+ return providers.map((provider) => pickProviderVersion(provider).id);
121
87
  }
package/src/utils/swap.ts CHANGED
@@ -9,8 +9,8 @@ import type {
9
9
  SwapButtonState,
10
10
  Wallet,
11
11
  } from '../types';
12
+ import type { WalletType } from '@hub3js/core';
12
13
  import type { ExtendedWalletInfo } from '@rango-dev/wallets-react';
13
- import type { WalletType } from '@rango-dev/wallets-shared';
14
14
  import type {
15
15
  BestRouteRequest,
16
16
  BlockchainMeta,
@@ -49,6 +49,7 @@ import {
49
49
  TOKEN_AMOUNT_MIN_DECIMALS,
50
50
  } from '../constants/routing';
51
51
 
52
+ import { tryRefineError } from './errors';
52
53
  import { getBlockchainShortNameFor, isValidTokenAddress } from './meta';
53
54
  import { numberToString } from './numbers';
54
55
  import { getRequiredBalanceOfWallet } from './quote';
@@ -737,6 +738,12 @@ export function getSwapMessages(
737
738
  }
738
739
  detailedMessage = detailedMessage || '';
739
740
  message = message || '';
741
+ const refined = tryRefineError(message) ?? tryRefineError(detailedMessage);
742
+ if (refined) {
743
+ detailedMessage = [message, detailedMessage].filter(Boolean).join('\n');
744
+ message = refined.message;
745
+ }
746
+
740
747
  const isRpc =
741
748
  message?.indexOf('code') !== -1 && message?.indexOf('reason') !== -1;
742
749
 
@@ -5,30 +5,27 @@ import type {
5
5
  Wallet,
6
6
  WalletInfoWithExtra,
7
7
  } from '../types';
8
+ import type { WalletType } from '@hub3js/core';
9
+ import type { Network } from '@rango-dev/internal-blockchains';
8
10
  import type {
9
11
  ExtendedWalletInfo,
10
12
  ProviderContext,
11
13
  } from '@rango-dev/wallets-react';
12
- import type {
13
- Network,
14
- WalletType,
15
- WalletTypes,
16
- } from '@rango-dev/wallets-shared';
17
14
  import type { BlockchainMeta, Token, TransactionType } from 'rango-sdk';
18
15
 
19
16
  import {
20
- BlockchainCategories,
21
- WalletState as WalletStatus,
22
- } from '@rango-dev/ui';
23
- import { legacyReadAccountAddress as readAccountAddress } from '@rango-dev/wallets-core/legacy';
24
- import {
25
- detectInstallLink,
26
17
  getBlockChainNameFromId,
27
18
  HYPERLIQUID_SIGN_NETWORK,
28
- isEvmAddress,
29
19
  Networks,
30
- } from '@rango-dev/wallets-shared';
20
+ readAccountAddress,
21
+ } from '@rango-dev/internal-blockchains';
22
+ import {
23
+ BlockchainCategories,
24
+ detectInstallLink,
25
+ WalletState as WalletStatus,
26
+ } from '@rango-dev/ui';
31
27
  import BigNumber from 'bignumber.js';
28
+ import { isAddress as isEvmAddress } from 'ethers';
32
29
 
33
30
  import { ZERO } from '../constants/numbers';
34
31
  import {
@@ -86,7 +83,7 @@ export function mapWalletTypesToWalletInfo(
86
83
  chain?: string
87
84
  ): ExtendedModalWalletInfo[] {
88
85
  return list
89
- .filter((wallet) => !EXCLUDED_WALLETS.includes(wallet as WalletTypes))
86
+ .filter((wallet) => !EXCLUDED_WALLETS.includes(wallet))
90
87
  .filter((wallet) => {
91
88
  const { supportedChains, isContractWallet } = getWalletInfo(wallet);
92
89
 
@@ -528,7 +525,7 @@ export function checkIsWalletPartiallyConnected(
528
525
  wallet: ExtendedWalletInfo,
529
526
  walletState: ReturnType<ProviderContext['state']>
530
527
  ) {
531
- if (!wallet.isHub || !wallet.needsNamespace || !walletState.connected) {
528
+ if (!wallet.needsNamespace || !walletState.connected) {
532
529
  return false;
533
530
  }
534
531
  const namespaces = wallet.needsNamespace.data;