mirror of
https://github.com/luxfi/bridge.git
synced 2026-09-24 00:26:46 +00:00
bridge: connect 0.2.1, and Cardano is one of the seven
The dependency was pinned "^0.1.0", which under semver can never reach 0.2.x. So the bridge — a surface listed as a working consumer of the shared connector — was carrying the bug 0.2.0 fixed. Measured in the installed tree: 0.1.0's dist/connectors.js opens with SEVEN STATIC IMPORTS, so every page load eagerly pulled sats-connect, @tonconnect/sdk, @crossmarkio/sdk and @polkadot/util-crypto whether or not anyone touched those chains. That is the eager-import shape that blanked the exchange SPA. 0.2.1's connectors.js has zero: a chain's wallet library arrives when that chain is asked for. getConnector became async across that boundary, so resolveConnector is async and its one caller awaits. Both call sites were already inside async functions, which is why this is three lines rather than a refactor. Cardano now maps to a connector instead of null. The comment beside it said connect was unavailable — true when written, and 0.2.1 ships ./cardano/connect (CIP-30) with ./cardano/verify (CIP-8 COSE_Sign1). Same day as the ADA custody address, from the other side: the register can now name a Cardano deposit address, and a holder can now sign in with the wallet that holds it. EVM and Lux still return null and go through wagmi deliberately. @luxwallet/connect has no transaction surface at all — no sendTransaction, no chain switching, verified by grep — so it is a connect-and-identity package, not a wagmi replacement. The comments say that now instead of implying a gap.
This commit is contained in:
@@ -97,7 +97,7 @@
|
||||
"@tonconnect/sdk": "^4.0.0",
|
||||
"sats-connect": "^4.2.1",
|
||||
"@luxwallet/chains": "^0.1.0",
|
||||
"@luxwallet/connect": "^0.1.0"
|
||||
"@luxwallet/connect": "^0.2.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@hanzogui/avatar": "^7.0.0",
|
||||
|
||||
@@ -43,7 +43,8 @@ export interface LuxWalletState {
|
||||
connecting: boolean
|
||||
/**
|
||||
* Connect a wallet for the given non-EVM family. Throws if the family has
|
||||
* no @luxwallet/connect connector (EVM/Lux/Cardano) or the user rejects.
|
||||
* no @luxwallet/connect connector (EVM and Lux, which use wagmi) or the
|
||||
* user rejects.
|
||||
*/
|
||||
connect: (family: ChainFamily) => Promise<string>
|
||||
/** Disconnect the active non-EVM wallet. */
|
||||
@@ -75,22 +76,26 @@ export function useLuxWallet(opts: UseLuxWalletOptions = {}): LuxWalletState {
|
||||
const connectorOptions = opts.connectorOptions
|
||||
|
||||
const resolveConnector = useCallback(
|
||||
(fam: ChainFamily): WalletConnector => {
|
||||
async (fam: ChainFamily): Promise<WalletConnector> => {
|
||||
const chain = familyToLuxChain(fam)
|
||||
if (!chain) {
|
||||
throw new Error(
|
||||
`useLuxWallet: no wallet connector for family "${fam}" ` +
|
||||
'(EVM/Lux use wagmi; Cardano connect is unavailable)',
|
||||
'(EVM and Lux go through wagmi)',
|
||||
)
|
||||
}
|
||||
return getConnector(chain, connectorOptions)
|
||||
// Awaited: 0.2.x loads a chain's wallet SDK only when that chain is
|
||||
// asked for. Statically importing all seven pulled sats-connect,
|
||||
// @tonconnect/sdk, @crossmarkio/sdk and @polkadot/util-crypto into
|
||||
// every page load — the eager-import shape that blanked the exchange.
|
||||
return await getConnector(chain, connectorOptions)
|
||||
},
|
||||
[connectorOptions],
|
||||
)
|
||||
|
||||
const connect = useCallback(
|
||||
async (fam: ChainFamily): Promise<string> => {
|
||||
const connector = resolveConnector(fam)
|
||||
const connector = await resolveConnector(fam)
|
||||
setConnecting(true)
|
||||
try {
|
||||
const account = await connector.connect()
|
||||
|
||||
@@ -39,8 +39,8 @@ export function isEvmFamily(family: ChainFamily): boolean {
|
||||
* - `evm` / `lux` → handled by wagmi, NOT routed here (returns null so a
|
||||
* caller that asks "which luxwallet connector?" gets an honest "none").
|
||||
* - `cardano` → no connector in @luxwallet/connect today (the SDK has
|
||||
* no Cardano chain); returns null. The bridge still accepts a pasted
|
||||
* Cardano destination address — connect is simply unavailable.
|
||||
* EVM and Lux return null and go through wagmi, which owns chain
|
||||
* switching and transaction sending — @luxwallet/connect has neither.
|
||||
*
|
||||
* Every other non-EVM family maps to a real, MIT/Apache-licensed connector.
|
||||
*/
|
||||
@@ -56,9 +56,10 @@ export function familyToLuxChain(family: ChainFamily): LuxChain | null {
|
||||
return 'xrp'
|
||||
case 'substrate':
|
||||
return 'polkadot'
|
||||
case 'cardano':
|
||||
return 'cardano'
|
||||
case 'evm':
|
||||
case 'lux':
|
||||
case 'cardano':
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
Generated
+43
-32
@@ -316,9 +316,15 @@ importers:
|
||||
'@noble/ed25519':
|
||||
specifier: ^3.1.0
|
||||
version: 3.1.0
|
||||
'@noble/hashes':
|
||||
specifier: ^2.4.0
|
||||
version: 2.4.0
|
||||
'@prisma/client':
|
||||
specifier: ^6.19.3
|
||||
version: 6.19.3([email protected]([email protected]))([email protected])
|
||||
'@scure/base':
|
||||
specifier: ^2.4.0
|
||||
version: 2.4.0
|
||||
'@solana/addresses':
|
||||
specifier: 6.9.0
|
||||
version: 6.9.0([email protected])([email protected])
|
||||
@@ -421,7 +427,7 @@ importers:
|
||||
version: 6.0.3
|
||||
vitest:
|
||||
specifier: ^4.1.7
|
||||
version: 4.1.7(@types/[email protected])([email protected]([email protected])([email protected]))([email protected](@noble/hashes@2.2.0))([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
version: 4.1.7(@types/[email protected])([email protected]([email protected])([email protected]))([email protected](@noble/hashes@2.4.0))([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
|
||||
e2e:
|
||||
devDependencies:
|
||||
@@ -540,8 +546,8 @@ importers:
|
||||
specifier: ^0.1.0
|
||||
version: 0.1.0
|
||||
'@luxwallet/connect':
|
||||
specifier: ^0.1.0
|
||||
version: 0.1.0(@crossmarkio/[email protected]([email protected])([email protected]))(@polkadot/[email protected](@polkadot/[email protected]))(@polkadot/[email protected])(@tonconnect/[email protected])([email protected]([email protected]))([email protected]([email protected])([email protected])([email protected])([email protected]))
|
||||
specifier: ^0.2.1
|
||||
version: 0.2.1(@crossmarkio/[email protected]([email protected])([email protected]))(@polkadot/[email protected](@polkadot/[email protected]))(@polkadot/[email protected])(@tonconnect/[email protected])([email protected]([email protected]))([email protected]([email protected])([email protected])([email protected])([email protected]))
|
||||
'@polkadot/util':
|
||||
specifier: ^14.0.3
|
||||
version: 14.0.3
|
||||
@@ -584,13 +590,13 @@ importers:
|
||||
version: 20.9.0([email protected])([email protected])
|
||||
jsdom:
|
||||
specifier: ^29.1.1
|
||||
version: 29.1.1(@noble/hashes@2.2.0)
|
||||
version: 29.1.1(@noble/hashes@2.4.0)
|
||||
typescript:
|
||||
specifier: 'catalog:'
|
||||
version: 5.7.2
|
||||
vitest:
|
||||
specifier: ^4.1.7
|
||||
version: 4.1.7(@types/[email protected])([email protected]([email protected])([email protected]))([email protected](@noble/hashes@2.2.0))([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
version: 4.1.7(@types/[email protected])([email protected]([email protected])([email protected]))([email protected](@noble/hashes@2.4.0))([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
|
||||
pkg/core:
|
||||
devDependencies:
|
||||
@@ -618,7 +624,7 @@ importers:
|
||||
version: 6.0.3
|
||||
vitest:
|
||||
specifier: ^4.1.7
|
||||
version: 4.1.7(@types/[email protected])([email protected]([email protected])([email protected]))([email protected](@noble/hashes@2.2.0))([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
version: 4.1.7(@types/[email protected])([email protected]([email protected])([email protected]))([email protected](@noble/hashes@2.4.0))([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
|
||||
pkg/ui:
|
||||
dependencies:
|
||||
@@ -1662,7 +1668,7 @@ packages:
|
||||
|
||||
'@hanzo/[email protected]':
|
||||
resolution: {integrity: sha512-z/P3CUdzkyjKupeSCSUmMpLKj0IBgXSrsjJQLn3O/3SJrZ2MSlSu8jfKO7qO/IVfyUtnqWgLQM8sxEofY2RJlA==}
|
||||
deprecated: → @hanzo/ui-shadcn; @hanzo/ui@8 is the @hanzo/gui unified lib
|
||||
deprecated: moved to @hanzo/ui-shadcn; @hanzo/ui@8+ is the @hanzo/gui-based unified library
|
||||
peerDependencies:
|
||||
'@hookform/resolvers': ^3.3.2
|
||||
embla-carousel: ^8.1.6
|
||||
@@ -3062,8 +3068,8 @@ packages:
|
||||
'@luxwallet/[email protected]':
|
||||
resolution: {integrity: sha512-DoWF6j7f+PuKfWPbHVsnUve8ZECoBNtzpDOLlYu1bVt7w3UA0KpgIJe2MbHJaopQ09H1v1Vu9g3vBJ9cC/UGFg==}
|
||||
|
||||
'@luxwallet/connect@0.1.0':
|
||||
resolution: {integrity: sha512-teLWEOqM7XIUeEo9NPmsPV/1wlzwBmRXT56W5SOxkWk1o+6UqiaTRJZFn5AKAXXEdRMkaGqzCuTNkVVAA997Bg==}
|
||||
'@luxwallet/connect@0.2.1':
|
||||
resolution: {integrity: sha512-glIpsB2KLr1DYTjiHbrHZw22Ag5NKYiEWIK0niCIYiX0pv2Gus0zx013p1vwtEfmrRlTWseBB8VCX2AYT7Oipw==}
|
||||
peerDependencies:
|
||||
'@crossmarkio/sdk': ^0.4.0
|
||||
'@polkadot/util': ^14.0.0
|
||||
@@ -3316,8 +3322,8 @@ packages:
|
||||
resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
|
||||
engines: {node: ^14.21.3 || >=16}
|
||||
|
||||
'@noble/hashes@2.2.0':
|
||||
resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==}
|
||||
'@noble/hashes@2.4.0':
|
||||
resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==}
|
||||
engines: {node: '>= 20.19.0'}
|
||||
|
||||
'@noble/[email protected]':
|
||||
@@ -4719,6 +4725,9 @@ packages:
|
||||
'@scure/[email protected]':
|
||||
resolution: {integrity: sha512-b8XEupJibegiXV+tDUseI8oLQc8ei3d/4Jkb2RpbHh3MfE054ov3uIz2dhFkB3FI8iwYkEh0gGCApkrYggkPNg==}
|
||||
|
||||
'@scure/[email protected]':
|
||||
resolution: {integrity: sha512-thZ1TuJwFwBblOhgsjDKvvGirBxNp+wSvY/DR6tJBJOTDhdAAcHJ8Vbr2eFnqaxeca4+t0i9KBf+uHYGWwZORg==}
|
||||
|
||||
'@scure/[email protected]':
|
||||
resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==}
|
||||
|
||||
@@ -12318,9 +12327,9 @@ snapshots:
|
||||
|
||||
'@ethersproject/[email protected]': {}
|
||||
|
||||
'@exodus/[email protected](@noble/hashes@2.2.0)':
|
||||
'@exodus/[email protected](@noble/hashes@2.4.0)':
|
||||
optionalDependencies:
|
||||
'@noble/hashes': 2.2.0
|
||||
'@noble/hashes': 2.4.0
|
||||
|
||||
'@floating-ui/[email protected]':
|
||||
dependencies:
|
||||
@@ -12512,7 +12521,7 @@ snapshots:
|
||||
markdown-to-jsx: 7.7.17([email protected])
|
||||
mobx: 6.15.3
|
||||
next: 14.2.16(@babel/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected])
|
||||
next-themes: 0.2.1([email protected](@babel/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])
|
||||
next-themes: 0.2.1([email protected](@playwright/[email protected])([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])
|
||||
postcss-selector-parser: 6.1.2
|
||||
react: 18.3.1
|
||||
react-day-picker: 8.10.2([email protected])([email protected])
|
||||
@@ -16342,7 +16351,7 @@ snapshots:
|
||||
lucide-react: 1.16.0([email protected])
|
||||
markdown-to-jsx: 7.7.17([email protected])
|
||||
next: 14.2.16(@babel/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected])
|
||||
next-themes: 0.2.1([email protected](@babel/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])
|
||||
next-themes: 0.2.1([email protected](@playwright/[email protected])([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])
|
||||
postcss-selector-parser: 6.1.2
|
||||
react: 18.3.1
|
||||
react-day-picker: 8.10.2([email protected])([email protected])
|
||||
@@ -16383,7 +16392,7 @@ snapshots:
|
||||
|
||||
'@luxwallet/[email protected]': {}
|
||||
|
||||
'@luxwallet/connect@0.1.0(@crossmarkio/[email protected]([email protected])([email protected]))(@polkadot/[email protected](@polkadot/[email protected]))(@polkadot/[email protected])(@tonconnect/[email protected])([email protected]([email protected]))([email protected]([email protected])([email protected])([email protected])([email protected]))':
|
||||
'@luxwallet/connect@0.2.1(@crossmarkio/[email protected]([email protected])([email protected]))(@polkadot/[email protected](@polkadot/[email protected]))(@polkadot/[email protected])(@tonconnect/[email protected])([email protected]([email protected]))([email protected]([email protected])([email protected])([email protected])([email protected]))':
|
||||
dependencies:
|
||||
'@noble/curves': 1.9.7
|
||||
'@noble/hashes': 1.8.0
|
||||
@@ -16710,7 +16719,7 @@ snapshots:
|
||||
|
||||
'@noble/[email protected]': {}
|
||||
|
||||
'@noble/hashes@2.2.0': {}
|
||||
'@noble/hashes@2.4.0': {}
|
||||
|
||||
'@noble/[email protected]': {}
|
||||
|
||||
@@ -18704,6 +18713,8 @@ snapshots:
|
||||
|
||||
'@scure/[email protected]': {}
|
||||
|
||||
'@scure/[email protected]': {}
|
||||
|
||||
'@scure/[email protected]':
|
||||
dependencies:
|
||||
'@noble/curves': 1.4.2
|
||||
@@ -20217,7 +20228,7 @@ snapshots:
|
||||
|
||||
'@xrplf/[email protected]([email protected])([email protected])':
|
||||
dependencies:
|
||||
'@noble/hashes': 2.2.0
|
||||
'@noble/hashes': 2.4.0
|
||||
eventemitter3: 5.0.1
|
||||
ws: 8.20.1([email protected])([email protected])
|
||||
transitivePeerDependencies:
|
||||
@@ -21039,10 +21050,10 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected](@noble/hashes@2.2.0):
|
||||
[email protected](@noble/hashes@2.4.0):
|
||||
dependencies:
|
||||
whatwg-mimetype: 5.0.0
|
||||
whatwg-url: 16.0.1(@noble/hashes@2.2.0)
|
||||
whatwg-url: 16.0.1(@noble/hashes@2.4.0)
|
||||
transitivePeerDependencies:
|
||||
- '@noble/hashes'
|
||||
|
||||
@@ -22324,9 +22335,9 @@ snapshots:
|
||||
dependencies:
|
||||
lru-cache: 7.18.3
|
||||
|
||||
[email protected](@noble/hashes@2.2.0):
|
||||
[email protected](@noble/hashes@2.4.0):
|
||||
dependencies:
|
||||
'@exodus/bytes': 1.15.1(@noble/hashes@2.2.0)
|
||||
'@exodus/bytes': 1.15.1(@noble/hashes@2.4.0)
|
||||
transitivePeerDependencies:
|
||||
- '@noble/hashes'
|
||||
|
||||
@@ -22965,17 +22976,17 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected](@noble/hashes@2.2.0):
|
||||
[email protected](@noble/hashes@2.4.0):
|
||||
dependencies:
|
||||
'@asamuzakjp/css-color': 5.1.11
|
||||
'@asamuzakjp/dom-selector': 7.1.1
|
||||
'@bramus/specificity': 2.4.2
|
||||
'@csstools/css-syntax-patches-for-csstree': 1.1.4([email protected])
|
||||
'@exodus/bytes': 1.15.1(@noble/hashes@2.2.0)
|
||||
'@exodus/bytes': 1.15.1(@noble/hashes@2.4.0)
|
||||
css-tree: 3.2.1
|
||||
data-urls: 7.0.0(@noble/hashes@2.2.0)
|
||||
data-urls: 7.0.0(@noble/hashes@2.4.0)
|
||||
decimal.js: 10.6.0
|
||||
html-encoding-sniffer: 6.0.0(@noble/hashes@2.2.0)
|
||||
html-encoding-sniffer: 6.0.0(@noble/hashes@2.4.0)
|
||||
is-potential-custom-element-name: 1.0.1
|
||||
lru-cache: 11.5.0
|
||||
parse5: 8.0.1
|
||||
@@ -22986,7 +22997,7 @@ snapshots:
|
||||
w3c-xmlserializer: 5.0.0
|
||||
webidl-conversions: 8.0.1
|
||||
whatwg-mimetype: 5.0.0
|
||||
whatwg-url: 16.0.1(@noble/hashes@2.2.0)
|
||||
whatwg-url: 16.0.1(@noble/hashes@2.4.0)
|
||||
xml-name-validator: 5.0.0
|
||||
transitivePeerDependencies:
|
||||
- '@noble/hashes'
|
||||
@@ -24301,7 +24312,7 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]([email protected](@babel/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected]):
|
||||
[email protected]([email protected](@playwright/[email protected])([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected]):
|
||||
dependencies:
|
||||
next: 14.2.16(@babel/[email protected])(@playwright/[email protected])([email protected]([email protected]))([email protected])
|
||||
react: 18.3.1
|
||||
@@ -26759,7 +26770,7 @@ snapshots:
|
||||
terser: 5.48.0
|
||||
yaml: 2.9.0
|
||||
|
||||
[email protected](@types/[email protected])([email protected]([email protected])([email protected]))([email protected](@noble/hashes@2.2.0))([email protected](@types/[email protected])([email protected])([email protected])([email protected])):
|
||||
[email protected](@types/[email protected])([email protected]([email protected])([email protected]))([email protected](@noble/hashes@2.4.0))([email protected](@types/[email protected])([email protected])([email protected])([email protected])):
|
||||
dependencies:
|
||||
'@vitest/expect': 4.1.7
|
||||
'@vitest/mocker': 4.1.7([email protected](@types/[email protected])([email protected])([email protected])([email protected]))
|
||||
@@ -26784,7 +26795,7 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@types/node': 25.9.1
|
||||
happy-dom: 20.9.0([email protected])([email protected])
|
||||
jsdom: 29.1.1(@noble/hashes@2.2.0)
|
||||
jsdom: 29.1.1(@noble/hashes@2.4.0)
|
||||
transitivePeerDependencies:
|
||||
- msw
|
||||
|
||||
@@ -27109,9 +27120,9 @@ snapshots:
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected](@noble/hashes@2.2.0):
|
||||
[email protected](@noble/hashes@2.4.0):
|
||||
dependencies:
|
||||
'@exodus/bytes': 1.15.1(@noble/hashes@2.2.0)
|
||||
'@exodus/bytes': 1.15.1(@noble/hashes@2.4.0)
|
||||
tr46: 6.0.0
|
||||
webidl-conversions: 8.0.1
|
||||
transitivePeerDependencies:
|
||||
|
||||
Reference in New Issue
Block a user