@rango-dev/wallets-react 0.30.2-next.0 → 0.30.2-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.
- package/dist/helpers/index.js +1 -1
- package/dist/helpers/index.js.map +3 -3
- package/dist/hub/helpers.d.ts +8 -0
- package/dist/hub/helpers.d.ts.map +1 -1
- package/dist/hub/lastConnectedWallets.d.ts.map +1 -1
- package/dist/hub/useHubAdapter.d.ts +2 -1
- package/dist/hub/useHubAdapter.d.ts.map +1 -1
- package/dist/hub/useHubRefs.d.ts.map +1 -1
- package/dist/hub/utils.d.ts +8 -3
- package/dist/hub/utils.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/dist/legacy/types.d.ts +6 -2
- package/dist/legacy/types.d.ts.map +1 -1
- package/dist/legacy/useLegacyProviders.d.ts.map +1 -1
- package/dist/wallets-react.build.json +1 -1
- package/package.json +3 -3
- package/src/hub/helpers.ts +56 -0
- package/src/hub/lastConnectedWallets.ts +24 -5
- package/src/hub/useHubAdapter.ts +60 -32
- package/src/hub/useHubRefs.ts +4 -7
- package/src/hub/utils.ts +33 -28
- package/src/legacy/context.ts +10 -10
- package/src/legacy/types.ts +6 -2
- package/src/legacy/useLegacyProviders.ts +5 -2
- package/src/useProviders.ts +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/hub/constants.ts":{"bytes":146,"imports":[],"format":"esm"},"src/hub/lastConnectedWallets.ts":{"bytes":4921,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"src/hub/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/helpers.ts":{"bytes":4652,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"src/hub/constants.ts","kind":"import-statement","original":"../hub/constants.js"},{"path":"src/hub/lastConnectedWallets.ts","kind":"import-statement","original":"../hub/lastConnectedWallets.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/context.ts":{"bytes":905,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/autoConnect.ts":{"bytes":2046,"imports":[{"path":"src/hub/lastConnectedWallets.ts","kind":"import-statement","original":"../hub/lastConnectedWallets.js"},{"path":"src/legacy/mod.ts","kind":"import-statement","original":"./mod.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/hooks.ts":{"bytes":1545,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"src/legacy/context.ts","kind":"import-statement","original":"./context.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/utils.ts":{"bytes":230,"imports":[{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/useAutoConnect.ts":{"bytes":628,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/legacy/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/useLegacyProviders.ts":{"bytes":7308,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/legacy/autoConnect.ts","kind":"import-statement","original":"./autoConnect.js"},{"path":"src/legacy/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"src/legacy/hooks.ts","kind":"import-statement","original":"./hooks.js"},{"path":"src/legacy/useAutoConnect.ts","kind":"import-statement","original":"./useAutoConnect.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/mod.ts":{"bytes":321,"imports":[{"path":"src/hub/constants.ts","kind":"import-statement","original":"../hub/constants.js"},{"path":"src/legacy/context.ts","kind":"import-statement","original":"./context.js"},{"path":"src/legacy/useLegacyProviders.ts","kind":"import-statement","original":"./useLegacyProviders.js"}],"format":"esm"},"src/hub/helpers.ts":{"bytes":2587,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/utxo","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/hub/utils.ts":{"bytes":9403,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/legacy/mod.ts","kind":"import-statement","original":"../legacy/mod.js"},{"path":"src/hub/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"src/hub/lastConnectedWallets.ts","kind":"import-statement","original":"./lastConnectedWallets.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/hub/autoConnect.ts":{"bytes":7725,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"src/legacy/mod.ts","kind":"import-statement","original":"../legacy/mod.js"},{"path":"src/hub/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"src/hub/lastConnectedWallets.ts","kind":"import-statement","original":"./lastConnectedWallets.js"},{"path":"src/hub/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/hub/useHubRefs.ts":{"bytes":1365,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"src/hub/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/hub/useHubAdapter.ts":{"bytes":12200,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"src/legacy/mod.ts","kind":"import-statement","original":"../legacy/mod.js"},{"path":"src/legacy/useAutoConnect.ts","kind":"import-statement","original":"../legacy/useAutoConnect.js"},{"path":"src/hub/autoConnect.ts","kind":"import-statement","original":"./autoConnect.js"},{"path":"src/hub/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"src/hub/lastConnectedWallets.ts","kind":"import-statement","original":"./lastConnectedWallets.js"},{"path":"src/hub/useHubRefs.ts","kind":"import-statement","original":"./useHubRefs.js"},{"path":"src/hub/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/hub/mod.ts":{"bytes":162,"imports":[{"path":"src/hub/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"src/hub/useHubAdapter.ts","kind":"import-statement","original":"./useHubAdapter.js"}],"format":"esm"},"src/useProviders.ts":{"bytes":3425,"imports":[{"path":"src/hub/mod.ts","kind":"import-statement","original":"./hub/mod.js"},{"path":"src/legacy/mod.ts","kind":"import-statement","original":"./legacy/mod.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/provider.tsx":{"bytes":405,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/legacy/context.ts","kind":"import-statement","original":"./legacy/context.js"},{"path":"src/useProviders.ts","kind":"import-statement","original":"./useProviders.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/types.ts":{"bytes":5369,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":173,"imports":[{"path":"src/legacy/helpers.ts","kind":"import-statement","original":"./legacy/helpers.js"},{"path":"src/provider.tsx","kind":"import-statement","original":"./provider.js"},{"path":"src/legacy/hooks.ts","kind":"import-statement","original":"./legacy/hooks.js"},{"path":"src/legacy/types.ts","kind":"import-statement","original":"./legacy/types.js"}],"format":"esm"},"src/helpers/index.ts":{"bytes":55,"imports":[{"path":"src/hub/mod.ts","kind":"import-statement","original":"../hub/mod.js"}],"format":"esm"}},"outputs":{"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":97203},"dist/index.js":{"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/utxo","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true}],"exports":["Events","Provider","availableWallets","checkWalletProviders","choose","clearPersistance","connectedWallets","defaultWalletState","isAsync","makeEventHandler","needsCheckInstallation","stateReducer","tryPersistWallet","tryRemoveWalletFromPersistance","useWallets"],"entryPoint":"src/index.ts","inputs":{"src/legacy/helpers.ts":{"bytesInOutput":1401},"src/hub/constants.ts":{"bytesInOutput":65},"src/hub/lastConnectedWallets.ts":{"bytesInOutput":1224},"src/index.ts":{"bytesInOutput":0},"src/provider.tsx":{"bytesInOutput":133},"src/legacy/context.ts":{"bytesInOutput":431},"src/hub/utils.ts":{"bytesInOutput":3159},"src/legacy/mod.ts":{"bytesInOutput":0},"src/legacy/useLegacyProviders.ts":{"bytesInOutput":2125},"src/legacy/autoConnect.ts":{"bytesInOutput":393},"src/legacy/hooks.ts":{"bytesInOutput":458},"src/legacy/useAutoConnect.ts":{"bytesInOutput":196},"src/legacy/utils.ts":{"bytesInOutput":92},"src/hub/helpers.ts":{"bytesInOutput":1019},"src/hub/mod.ts":{"bytesInOutput":0},"src/hub/useHubAdapter.ts":{"bytesInOutput":3929},"src/hub/autoConnect.ts":{"bytesInOutput":1977},"src/hub/useHubRefs.ts":{"bytesInOutput":510},"src/useProviders.ts":{"bytesInOutput":885},"src/legacy/types.ts":{"bytesInOutput":63}},"bytes":18499},"dist/helpers/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":60440},"dist/helpers/index.js":{"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/utxo","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["getAllLegacyProviders"],"entryPoint":"src/helpers/index.ts","inputs":{"src/hub/utils.ts":{"bytesInOutput":421},"src/hub/constants.ts":{"bytesInOutput":65},"src/legacy/mod.ts":{"bytesInOutput":0},"src/legacy/context.ts":{"bytesInOutput":427},"src/legacy/useLegacyProviders.ts":{"bytesInOutput":52},"src/hub/lastConnectedWallets.ts":{"bytesInOutput":1224},"src/legacy/helpers.ts":{"bytesInOutput":59},"src/legacy/hooks.ts":{"bytesInOutput":109},"src/legacy/useAutoConnect.ts":{"bytesInOutput":47},"src/hub/helpers.ts":{"bytesInOutput":259},"src/hub/mod.ts":{"bytesInOutput":0},"src/hub/useHubAdapter.ts":{"bytesInOutput":143},"src/hub/autoConnect.ts":{"bytesInOutput":124},"src/hub/useHubRefs.ts":{"bytesInOutput":97},"src/helpers/index.ts":{"bytesInOutput":0}},"bytes":3176}}}
|
|
1
|
+
{"inputs":{"src/hub/constants.ts":{"bytes":146,"imports":[],"format":"esm"},"src/hub/lastConnectedWallets.ts":{"bytes":5519,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"src/hub/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/helpers.ts":{"bytes":4652,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"src/hub/constants.ts","kind":"import-statement","original":"../hub/constants.js"},{"path":"src/hub/lastConnectedWallets.ts","kind":"import-statement","original":"../hub/lastConnectedWallets.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/context.ts":{"bytes":895,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/autoConnect.ts":{"bytes":2046,"imports":[{"path":"src/hub/lastConnectedWallets.ts","kind":"import-statement","original":"../hub/lastConnectedWallets.js"},{"path":"src/legacy/mod.ts","kind":"import-statement","original":"./mod.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/hooks.ts":{"bytes":1545,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"src/legacy/context.ts","kind":"import-statement","original":"./context.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/utils.ts":{"bytes":230,"imports":[{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/useAutoConnect.ts":{"bytes":628,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/legacy/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/useLegacyProviders.ts":{"bytes":7407,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/legacy/autoConnect.ts","kind":"import-statement","original":"./autoConnect.js"},{"path":"src/legacy/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"src/legacy/hooks.ts","kind":"import-statement","original":"./hooks.js"},{"path":"src/legacy/useAutoConnect.ts","kind":"import-statement","original":"./useAutoConnect.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/mod.ts":{"bytes":321,"imports":[{"path":"src/hub/constants.ts","kind":"import-statement","original":"../hub/constants.js"},{"path":"src/legacy/context.ts","kind":"import-statement","original":"./context.js"},{"path":"src/legacy/useLegacyProviders.ts","kind":"import-statement","original":"./useLegacyProviders.js"}],"format":"esm"},"src/hub/helpers.ts":{"bytes":4057,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/utxo","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/hub/utils.ts":{"bytes":9782,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/legacy/mod.ts","kind":"import-statement","original":"../legacy/mod.js"},{"path":"src/hub/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"src/hub/lastConnectedWallets.ts","kind":"import-statement","original":"./lastConnectedWallets.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/hub/autoConnect.ts":{"bytes":7725,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"src/legacy/mod.ts","kind":"import-statement","original":"../legacy/mod.js"},{"path":"src/hub/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"src/hub/lastConnectedWallets.ts","kind":"import-statement","original":"./lastConnectedWallets.js"},{"path":"src/hub/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/hub/useHubRefs.ts":{"bytes":1271,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"src/hub/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/hub/useHubAdapter.ts":{"bytes":13328,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"src/legacy/mod.ts","kind":"import-statement","original":"../legacy/mod.js"},{"path":"src/legacy/useAutoConnect.ts","kind":"import-statement","original":"../legacy/useAutoConnect.js"},{"path":"src/hub/autoConnect.ts","kind":"import-statement","original":"./autoConnect.js"},{"path":"src/hub/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"src/hub/lastConnectedWallets.ts","kind":"import-statement","original":"./lastConnectedWallets.js"},{"path":"src/hub/useHubRefs.ts","kind":"import-statement","original":"./useHubRefs.js"},{"path":"src/hub/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/hub/mod.ts":{"bytes":162,"imports":[{"path":"src/hub/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"src/hub/useHubAdapter.ts","kind":"import-statement","original":"./useHubAdapter.js"}],"format":"esm"},"src/useProviders.ts":{"bytes":3458,"imports":[{"path":"src/hub/mod.ts","kind":"import-statement","original":"./hub/mod.js"},{"path":"src/legacy/mod.ts","kind":"import-statement","original":"./legacy/mod.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/provider.tsx":{"bytes":405,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/legacy/context.ts","kind":"import-statement","original":"./legacy/context.js"},{"path":"src/useProviders.ts","kind":"import-statement","original":"./useProviders.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/legacy/types.ts":{"bytes":5596,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":173,"imports":[{"path":"src/legacy/helpers.ts","kind":"import-statement","original":"./legacy/helpers.js"},{"path":"src/provider.tsx","kind":"import-statement","original":"./provider.js"},{"path":"src/legacy/hooks.ts","kind":"import-statement","original":"./legacy/hooks.js"},{"path":"src/legacy/types.ts","kind":"import-statement","original":"./legacy/types.js"}],"format":"esm"},"src/helpers/index.ts":{"bytes":55,"imports":[{"path":"src/hub/mod.ts","kind":"import-statement","original":"../hub/mod.js"}],"format":"esm"}},"outputs":{"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":103040},"dist/index.js":{"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/utxo","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true}],"exports":["Events","Provider","availableWallets","checkWalletProviders","choose","clearPersistance","connectedWallets","defaultWalletState","isAsync","makeEventHandler","needsCheckInstallation","stateReducer","tryPersistWallet","tryRemoveWalletFromPersistance","useWallets"],"entryPoint":"src/index.ts","inputs":{"src/legacy/helpers.ts":{"bytesInOutput":1401},"src/hub/constants.ts":{"bytesInOutput":65},"src/hub/lastConnectedWallets.ts":{"bytesInOutput":1311},"src/index.ts":{"bytesInOutput":0},"src/provider.tsx":{"bytesInOutput":133},"src/legacy/context.ts":{"bytesInOutput":431},"src/hub/utils.ts":{"bytesInOutput":3070},"src/legacy/mod.ts":{"bytesInOutput":0},"src/legacy/useLegacyProviders.ts":{"bytesInOutput":2125},"src/legacy/autoConnect.ts":{"bytesInOutput":393},"src/legacy/hooks.ts":{"bytesInOutput":458},"src/legacy/useAutoConnect.ts":{"bytesInOutput":196},"src/legacy/utils.ts":{"bytesInOutput":92},"src/hub/helpers.ts":{"bytesInOutput":1408},"src/hub/mod.ts":{"bytesInOutput":0},"src/hub/useHubAdapter.ts":{"bytesInOutput":4280},"src/hub/autoConnect.ts":{"bytesInOutput":1977},"src/hub/useHubRefs.ts":{"bytesInOutput":497},"src/useProviders.ts":{"bytesInOutput":889},"src/legacy/types.ts":{"bytesInOutput":63}},"bytes":19228},"dist/helpers/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":64360},"dist/helpers/index.js":{"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/utxo","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"ts-results","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["getAllLegacyProviders"],"entryPoint":"src/helpers/index.ts","inputs":{"src/hub/utils.ts":{"bytesInOutput":421},"src/hub/constants.ts":{"bytesInOutput":65},"src/legacy/mod.ts":{"bytesInOutput":0},"src/legacy/context.ts":{"bytesInOutput":427},"src/legacy/useLegacyProviders.ts":{"bytesInOutput":52},"src/hub/lastConnectedWallets.ts":{"bytesInOutput":1311},"src/legacy/helpers.ts":{"bytesInOutput":59},"src/legacy/hooks.ts":{"bytesInOutput":109},"src/legacy/useAutoConnect.ts":{"bytesInOutput":47},"src/hub/helpers.ts":{"bytesInOutput":259},"src/hub/mod.ts":{"bytesInOutput":0},"src/hub/useHubAdapter.ts":{"bytesInOutput":143},"src/hub/autoConnect.ts":{"bytesInOutput":124},"src/hub/useHubRefs.ts":{"bytesInOutput":97},"src/helpers/index.ts":{"bytesInOutput":0}},"bytes":3263}}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rango-dev/wallets-react",
|
|
3
|
-
"version": "0.30.2-next.
|
|
3
|
+
"version": "0.30.2-next.10",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"source": "./src/index.ts",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"react-dom": "^17.0.0 || ^18.0.0"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@rango-dev/wallets-core": "^0.43.1-next.
|
|
39
|
-
"@rango-dev/wallets-shared": "^0.44.2-next.
|
|
38
|
+
"@rango-dev/wallets-core": "^0.43.1-next.8",
|
|
39
|
+
"@rango-dev/wallets-shared": "^0.44.2-next.9",
|
|
40
40
|
"rango-types": "^0.1.84",
|
|
41
41
|
"ts-results": "^3.3.0"
|
|
42
42
|
},
|
package/src/hub/helpers.ts
CHANGED
|
@@ -77,3 +77,59 @@ export function isConnectResultSolana(
|
|
|
77
77
|
): result is Accounts {
|
|
78
78
|
return Array.isArray(result);
|
|
79
79
|
}
|
|
80
|
+
|
|
81
|
+
type QueueItem<T> = {
|
|
82
|
+
task: () => Promise<T>;
|
|
83
|
+
resolve: (value: Result<T, unknown>) => void;
|
|
84
|
+
key: string;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Creates a queue manager that ensures sequential execution of tasks by key.
|
|
88
|
+
* When multiple tasks with the same key are queued, they are executed one at a time
|
|
89
|
+
* in the order they were added. This prevents race conditions and ensures
|
|
90
|
+
* predictable task execution order.
|
|
91
|
+
*
|
|
92
|
+
*/
|
|
93
|
+
export function createQueue() {
|
|
94
|
+
const processingKeys = new Set<string>();
|
|
95
|
+
const queue: QueueItem<unknown>[] = [];
|
|
96
|
+
|
|
97
|
+
const processQueue = async () => {
|
|
98
|
+
const currentItem = queue.find((item) => !processingKeys.has(item.key));
|
|
99
|
+
if (!currentItem) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const { task, resolve, key } = currentItem;
|
|
104
|
+
processingKeys.add(key);
|
|
105
|
+
|
|
106
|
+
try {
|
|
107
|
+
const result = await task();
|
|
108
|
+
resolve(new Ok(result));
|
|
109
|
+
} catch (error) {
|
|
110
|
+
resolve(new Err(error));
|
|
111
|
+
} finally {
|
|
112
|
+
const indexOfCurrentItem = queue.findIndex((item) => item.key === key);
|
|
113
|
+
if (indexOfCurrentItem >= 0) {
|
|
114
|
+
queue.splice(indexOfCurrentItem, 1);
|
|
115
|
+
}
|
|
116
|
+
processingKeys.delete(key);
|
|
117
|
+
void processQueue();
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
const queueTask = async <T>(
|
|
122
|
+
task: () => Promise<T>,
|
|
123
|
+
key: string
|
|
124
|
+
): Promise<Result<T, unknown>> =>
|
|
125
|
+
new Promise((resolve) => {
|
|
126
|
+
queue.push({
|
|
127
|
+
task,
|
|
128
|
+
resolve: resolve as (value: Result<unknown, unknown>) => void,
|
|
129
|
+
key,
|
|
130
|
+
});
|
|
131
|
+
void processQueue();
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
return queueTask;
|
|
135
|
+
}
|
|
@@ -79,18 +79,37 @@ export class LastConnectedWalletsFromStorage {
|
|
|
79
79
|
}
|
|
80
80
|
#addWalletToHub(providerId: string, namespaces: NamespaceInput[]): void {
|
|
81
81
|
const storage = new Persistor<LastConnectedWalletsStorage>();
|
|
82
|
-
const
|
|
82
|
+
const storageState = storage.getItem(this.#storageKey) || {};
|
|
83
|
+
|
|
84
|
+
let toBeAddedNamespaces = namespaces;
|
|
85
|
+
|
|
86
|
+
// If provider already exits in the storage, we should just add new namespaces to the previously added namespaces.
|
|
87
|
+
if (!!storageState[providerId]) {
|
|
88
|
+
const storedNamespaces = storageState[providerId];
|
|
89
|
+
toBeAddedNamespaces = storedNamespaces.concat(
|
|
90
|
+
namespaces.filter(
|
|
91
|
+
(namespace) =>
|
|
92
|
+
!storedNamespaces.some(
|
|
93
|
+
(storedNamespace) =>
|
|
94
|
+
storedNamespace.namespace === namespace.namespace
|
|
95
|
+
)
|
|
96
|
+
)
|
|
97
|
+
);
|
|
98
|
+
}
|
|
83
99
|
|
|
84
100
|
storage.setItem(this.#storageKey, {
|
|
85
|
-
...
|
|
86
|
-
[providerId]:
|
|
101
|
+
...storageState,
|
|
102
|
+
[providerId]: toBeAddedNamespaces,
|
|
87
103
|
});
|
|
88
104
|
}
|
|
89
105
|
#addWalletToLegacy(providerId: string): void {
|
|
90
106
|
const storage = new Persistor<LegacyLastConnectedWalletsStorage>();
|
|
91
|
-
const
|
|
107
|
+
const storageState = storage.getItem(this.#storageKey) || [];
|
|
92
108
|
|
|
93
|
-
storage.setItem(
|
|
109
|
+
storage.setItem(
|
|
110
|
+
LEGACY_LAST_CONNECTED_WALLETS,
|
|
111
|
+
storageState.concat(providerId)
|
|
112
|
+
);
|
|
94
113
|
}
|
|
95
114
|
#removeWalletsFromHub(providerIds?: string[]): void {
|
|
96
115
|
const persistor = new Persistor<LastConnectedWalletsStorage>();
|
package/src/hub/useHubAdapter.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AllProxiedNamespaces, ExtensionLink } from './types.js';
|
|
2
|
-
import type { Providers } from '../index.js';
|
|
2
|
+
import type { ProviderContext, Providers } from '../index.js';
|
|
3
3
|
import type { Provider } from '@rango-dev/wallets-core';
|
|
4
4
|
import type { LegacyNamespaceInputForConnect } from '@rango-dev/wallets-core/legacy';
|
|
5
5
|
import type { VersionedProviders } from '@rango-dev/wallets-core/utils';
|
|
@@ -11,16 +11,12 @@ import { Ok, Result } from 'ts-results';
|
|
|
11
11
|
import {
|
|
12
12
|
type ConnectResult,
|
|
13
13
|
HUB_LAST_CONNECTED_WALLETS,
|
|
14
|
-
type ProviderContext,
|
|
15
14
|
type ProviderProps,
|
|
16
15
|
} from '../legacy/mod.js';
|
|
17
16
|
import { useAutoConnect } from '../legacy/useAutoConnect.js';
|
|
18
17
|
|
|
19
18
|
import { autoConnect } from './autoConnect.js';
|
|
20
|
-
import {
|
|
21
|
-
fromAccountIdToLegacyAddressFormat,
|
|
22
|
-
runSequentiallyWithoutFailure,
|
|
23
|
-
} from './helpers.js';
|
|
19
|
+
import { createQueue, fromAccountIdToLegacyAddressFormat } from './helpers.js';
|
|
24
20
|
import { LastConnectedWalletsFromStorage } from './lastConnectedWallets.js';
|
|
25
21
|
import { useHubRefs } from './useHubRefs.js';
|
|
26
22
|
import {
|
|
@@ -46,6 +42,8 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
46
42
|
allBlockChains: params.allBlockChains,
|
|
47
43
|
});
|
|
48
44
|
|
|
45
|
+
const queueTask = createQueue();
|
|
46
|
+
|
|
49
47
|
useEffect(() => {
|
|
50
48
|
dataRef.current = {
|
|
51
49
|
onUpdateState: params.onUpdateState,
|
|
@@ -94,8 +92,7 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
94
92
|
getHub(),
|
|
95
93
|
event,
|
|
96
94
|
dataRef.current.onUpdateState,
|
|
97
|
-
|
|
98
|
-
dataRef.current.allBlockChains
|
|
95
|
+
api
|
|
99
96
|
);
|
|
100
97
|
} catch (e) {
|
|
101
98
|
console.error(e);
|
|
@@ -170,7 +167,7 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
170
167
|
|
|
171
168
|
// Try to run `connect` on matched namespaces
|
|
172
169
|
const connectResultFromTargetNamespaces = targetNamespaces.map(
|
|
173
|
-
([namespaceInput, namespace]) => {
|
|
170
|
+
async ([namespaceInput, namespace]) => {
|
|
174
171
|
const network = tryConvertNamespaceNetworkToChainInfo(
|
|
175
172
|
namespaceInput,
|
|
176
173
|
params.allBlockChains || []
|
|
@@ -181,7 +178,7 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
181
178
|
* our assumption here is all the `connect` hasn't chain or if they have, they will accept it in first argument.
|
|
182
179
|
* By this assumption, always passing a chain should be problematic since it will be ignored if the namespace's `connect` hasn't chain.
|
|
183
180
|
*/
|
|
184
|
-
|
|
181
|
+
const connectNamespaceProcess = async () =>
|
|
185
182
|
namespace
|
|
186
183
|
.connect(network)
|
|
187
184
|
.then<ConnectResult>(transformHubResultToLegacyResult)
|
|
@@ -191,10 +188,11 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
191
188
|
input: {
|
|
192
189
|
namespace: namespaceInput.namespace,
|
|
193
190
|
network: namespaceInput.network,
|
|
194
|
-
supportsEagerConnect:
|
|
191
|
+
supportsEagerConnect: 'canEagerConnect' in namespace,
|
|
195
192
|
},
|
|
196
193
|
};
|
|
197
194
|
});
|
|
195
|
+
return queueTask(connectNamespaceProcess, type);
|
|
198
196
|
}
|
|
199
197
|
);
|
|
200
198
|
|
|
@@ -202,7 +200,7 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
202
200
|
* We need to connect to namespace one after another, sending multiple requests at the same time may be failed.
|
|
203
201
|
* e.g. when wallet popup opens and asking for the password from the user, it should be resolved first, then other request will be resolved.
|
|
204
202
|
*/
|
|
205
|
-
const connectResultWithLegacyFormat = await
|
|
203
|
+
const connectResultWithLegacyFormat = await Promise.all(
|
|
206
204
|
connectResultFromTargetNamespaces
|
|
207
205
|
);
|
|
208
206
|
|
|
@@ -235,7 +233,7 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
235
233
|
|
|
236
234
|
return allResult.unwrap();
|
|
237
235
|
},
|
|
238
|
-
async disconnect(type) {
|
|
236
|
+
async disconnect(type, namespaces) {
|
|
239
237
|
const wallet = getHub().get(type);
|
|
240
238
|
if (!wallet) {
|
|
241
239
|
throw new Error(
|
|
@@ -244,13 +242,23 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
244
242
|
}
|
|
245
243
|
|
|
246
244
|
wallet.getAll().forEach((namespace) => {
|
|
247
|
-
|
|
245
|
+
const namespaceShouldBeDisconnected =
|
|
246
|
+
!namespaces || namespaces.includes(namespace.namespaceId);
|
|
247
|
+
const namespaceIsConnected = namespace.state()[0]().connected;
|
|
248
|
+
if (namespaceShouldBeDisconnected && namespaceIsConnected) {
|
|
248
249
|
return namespace.disconnect();
|
|
249
250
|
}
|
|
250
251
|
});
|
|
251
252
|
|
|
252
253
|
if (params.autoConnect) {
|
|
253
|
-
|
|
254
|
+
if (namespaces) {
|
|
255
|
+
lastConnectedWalletsFromStorage.removeNamespacesFromWallet(
|
|
256
|
+
type,
|
|
257
|
+
namespaces
|
|
258
|
+
);
|
|
259
|
+
} else {
|
|
260
|
+
lastConnectedWalletsFromStorage.removeWallets([type]);
|
|
261
|
+
}
|
|
254
262
|
}
|
|
255
263
|
},
|
|
256
264
|
async disconnectAll() {
|
|
@@ -275,8 +283,6 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
275
283
|
throw new Error('Your provider should have required `info`.');
|
|
276
284
|
}
|
|
277
285
|
|
|
278
|
-
const provider = getLegacyProvider(params.allVersionedProviders, type);
|
|
279
|
-
|
|
280
286
|
const installLink: Exclude<WalletInfo['installLink'], string> = {
|
|
281
287
|
DEFAULT: '',
|
|
282
288
|
};
|
|
@@ -304,9 +310,22 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
304
310
|
}
|
|
305
311
|
});
|
|
306
312
|
|
|
307
|
-
const
|
|
308
|
-
|
|
313
|
+
const providerProperties = info.properties;
|
|
314
|
+
|
|
315
|
+
const namespacesProperty = providerProperties?.find(
|
|
316
|
+
(property) => property.name === 'namespaces'
|
|
309
317
|
);
|
|
318
|
+
const derivationPathProperty = providerProperties?.find(
|
|
319
|
+
(property) => property.name === 'derivationPath'
|
|
320
|
+
);
|
|
321
|
+
const detailsProperty = providerProperties?.find(
|
|
322
|
+
(property) => property.name === 'details'
|
|
323
|
+
);
|
|
324
|
+
|
|
325
|
+
const supportedChains =
|
|
326
|
+
namespacesProperty?.value.data.flatMap((namespace) =>
|
|
327
|
+
namespace.getSupportedChains(params.allBlockChains || [])
|
|
328
|
+
) || [];
|
|
310
329
|
|
|
311
330
|
return {
|
|
312
331
|
name: info.name,
|
|
@@ -314,13 +333,13 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
314
333
|
installLink: installLink,
|
|
315
334
|
// We don't have this values anymore, fill them with some values that communicate this.
|
|
316
335
|
color: 'red',
|
|
317
|
-
supportedChains
|
|
318
|
-
isContractWallet:
|
|
319
|
-
mobileWallet:
|
|
336
|
+
supportedChains,
|
|
337
|
+
isContractWallet: detailsProperty?.value?.isContractWallet,
|
|
338
|
+
mobileWallet: detailsProperty?.value?.mobileWallet,
|
|
320
339
|
// if set to false here, it will not show the wallet in mobile in anyways. to be compatible with old behavior, undefined is more appropirate.
|
|
321
|
-
showOnMobile:
|
|
322
|
-
needsNamespace:
|
|
323
|
-
needsDerivationPath:
|
|
340
|
+
showOnMobile: detailsProperty?.value?.showOnMobile,
|
|
341
|
+
needsNamespace: namespacesProperty?.value,
|
|
342
|
+
needsDerivationPath: derivationPathProperty?.value,
|
|
324
343
|
|
|
325
344
|
isHub: true,
|
|
326
345
|
properties: wallet.info()?.properties,
|
|
@@ -341,29 +360,38 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
341
360
|
return output;
|
|
342
361
|
},
|
|
343
362
|
state(type) {
|
|
344
|
-
const
|
|
345
|
-
const
|
|
363
|
+
const hubState = getHub().state();
|
|
364
|
+
const wallet = getHub().get(type);
|
|
365
|
+
const walletState = hubState[type];
|
|
346
366
|
|
|
347
|
-
if (!
|
|
367
|
+
if (!walletState || !wallet) {
|
|
348
368
|
throw new Error(
|
|
349
369
|
`It seems your requested provider doesn't exist in hub. Provider Id: ${type}`
|
|
350
370
|
);
|
|
351
371
|
}
|
|
352
372
|
|
|
353
|
-
const accounts =
|
|
373
|
+
const accounts = walletState.namespaces
|
|
354
374
|
.filter((namespace) => namespace.connected)
|
|
355
375
|
.flatMap((namespace) =>
|
|
356
376
|
namespace.accounts?.map(fromAccountIdToLegacyAddressFormat)
|
|
357
377
|
)
|
|
358
378
|
.filter((account): account is string => !!account);
|
|
359
379
|
|
|
380
|
+
const namespacesState = new Map(
|
|
381
|
+
Array.from(wallet.getAll(), ([_, value]) => [
|
|
382
|
+
value.namespaceId,
|
|
383
|
+
value.state()[0](),
|
|
384
|
+
])
|
|
385
|
+
);
|
|
386
|
+
|
|
360
387
|
const coreState = {
|
|
361
|
-
connected:
|
|
362
|
-
connecting:
|
|
363
|
-
installed:
|
|
388
|
+
connected: walletState.connected,
|
|
389
|
+
connecting: walletState.connecting,
|
|
390
|
+
installed: walletState.installed,
|
|
364
391
|
reachable: true,
|
|
365
392
|
accounts: accounts,
|
|
366
393
|
network: null,
|
|
394
|
+
namespaces: namespacesState,
|
|
367
395
|
};
|
|
368
396
|
return coreState;
|
|
369
397
|
},
|
package/src/hub/useHubRefs.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { Provider, Store } from '@rango-dev/wallets-core';
|
|
|
3
3
|
import { createStore, Hub } from '@rango-dev/wallets-core';
|
|
4
4
|
import { useRef } from 'react';
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { synchronizeHubWithConfigProviders } from './utils.js';
|
|
7
7
|
|
|
8
8
|
export function useHubRefs(providers: Provider[]) {
|
|
9
9
|
const store = useRef<Store | null>(null);
|
|
@@ -38,14 +38,11 @@ export function useHubRefs(providers: Provider[]) {
|
|
|
38
38
|
function getHub(): Hub {
|
|
39
39
|
const hubProviders = hub.current?.getAll();
|
|
40
40
|
|
|
41
|
-
if (
|
|
42
|
-
!hub.current ||
|
|
43
|
-
!hubProviders ||
|
|
44
|
-
// If hub does not contain a provider, it should be added
|
|
45
|
-
!checkProviderListsEquality(Array.from(hubProviders.values()), providers)
|
|
46
|
-
) {
|
|
41
|
+
if (!hub.current || !hubProviders) {
|
|
47
42
|
return createHub();
|
|
48
43
|
}
|
|
44
|
+
|
|
45
|
+
synchronizeHubWithConfigProviders(hub.current, providers);
|
|
49
46
|
return hub.current;
|
|
50
47
|
}
|
|
51
48
|
|
package/src/hub/utils.ts
CHANGED
|
@@ -19,7 +19,7 @@ import { type BlockchainMeta, isEvmBlockchain } from 'rango-types';
|
|
|
19
19
|
import {
|
|
20
20
|
type ConnectResult,
|
|
21
21
|
HUB_LAST_CONNECTED_WALLETS,
|
|
22
|
-
type
|
|
22
|
+
type ProviderContext,
|
|
23
23
|
} from '../legacy/mod.js';
|
|
24
24
|
|
|
25
25
|
import {
|
|
@@ -72,19 +72,8 @@ export function mapHubEventsToLegacy(
|
|
|
72
72
|
hub: Hub,
|
|
73
73
|
event: Event,
|
|
74
74
|
onUpdateState: WalletEventHandler,
|
|
75
|
-
|
|
76
|
-
allBlockChains: ProviderProps['allBlockChains']
|
|
75
|
+
api: ProviderContext
|
|
77
76
|
): void {
|
|
78
|
-
let legacyProvider;
|
|
79
|
-
try {
|
|
80
|
-
legacyProvider = getLegacyProvider(allProviders, event.provider);
|
|
81
|
-
} catch (e) {
|
|
82
|
-
console.warn(
|
|
83
|
-
'Having legacy provider is required for including some information like supported chain. ',
|
|
84
|
-
e
|
|
85
|
-
);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
77
|
const provider = hub.get(event.provider);
|
|
89
78
|
if (!provider) {
|
|
90
79
|
throw new Error(
|
|
@@ -121,8 +110,7 @@ export function mapHubEventsToLegacy(
|
|
|
121
110
|
};
|
|
122
111
|
|
|
123
112
|
const eventInfo = {
|
|
124
|
-
supportedBlockchains:
|
|
125
|
-
legacyProvider?.getWalletInfo(allBlockChains || []).supportedChains || [],
|
|
113
|
+
supportedBlockchains: api.getWalletInfo(provider.id).supportedChains || [],
|
|
126
114
|
isContractWallet: false,
|
|
127
115
|
isHub: true,
|
|
128
116
|
namespace: namespaceId,
|
|
@@ -331,18 +319,35 @@ export function transformHubResultToLegacyResult(
|
|
|
331
319
|
};
|
|
332
320
|
}
|
|
333
321
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
322
|
+
/**
|
|
323
|
+
* Synchronizes providers in the hub with the configuration providers.
|
|
324
|
+
* - Registers and initializes any configuration providers not yet in the hub
|
|
325
|
+
* - Removes providers from the hub that aren't in the configuration
|
|
326
|
+
*/
|
|
327
|
+
export function synchronizeHubWithConfigProviders(
|
|
328
|
+
hub: Hub,
|
|
329
|
+
configurationProviders: Provider[]
|
|
337
330
|
) {
|
|
338
|
-
const
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
331
|
+
const registeredProviders = hub.getAll();
|
|
332
|
+
|
|
333
|
+
// Register and initialize providers that exist in config but not in hub
|
|
334
|
+
const providersToRegister = configurationProviders.filter(
|
|
335
|
+
(configProvider) => !registeredProviders.get(configProvider.id)
|
|
336
|
+
);
|
|
337
|
+
|
|
338
|
+
providersToRegister.forEach((providerToRegister) => {
|
|
339
|
+
hub.add(providerToRegister.id, providerToRegister);
|
|
340
|
+
providerToRegister.init();
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
// Remove providers that exist in hub but not in config
|
|
344
|
+
registeredProviders.forEach((registeredProvider) => {
|
|
345
|
+
const isProviderInConfig = configurationProviders.some(
|
|
346
|
+
(configProvider) => configProvider.id === registeredProvider.id
|
|
347
|
+
);
|
|
348
|
+
|
|
349
|
+
if (!isProviderInConfig) {
|
|
350
|
+
hub.remove(registeredProvider.id);
|
|
351
|
+
}
|
|
352
|
+
});
|
|
348
353
|
}
|
package/src/legacy/context.ts
CHANGED
|
@@ -2,34 +2,34 @@ import type { ProviderContext } from './types.js';
|
|
|
2
2
|
|
|
3
3
|
import { createContext } from 'react';
|
|
4
4
|
|
|
5
|
-
const
|
|
5
|
+
const defaultErrorMessage = "Context hasn't been initialized yet.";
|
|
6
6
|
const defaultContext: ProviderContext = {
|
|
7
7
|
async connect() {
|
|
8
|
-
throw new Error(
|
|
8
|
+
throw new Error(defaultErrorMessage);
|
|
9
9
|
},
|
|
10
10
|
async disconnect() {
|
|
11
|
-
throw new Error(
|
|
11
|
+
throw new Error(defaultErrorMessage);
|
|
12
12
|
},
|
|
13
13
|
async disconnectAll() {
|
|
14
|
-
throw new Error(
|
|
14
|
+
throw new Error(defaultErrorMessage);
|
|
15
15
|
},
|
|
16
16
|
async suggestAndConnect() {
|
|
17
|
-
throw new Error(
|
|
17
|
+
throw new Error(defaultErrorMessage);
|
|
18
18
|
},
|
|
19
19
|
state() {
|
|
20
|
-
throw new Error(
|
|
20
|
+
throw new Error(defaultErrorMessage);
|
|
21
21
|
},
|
|
22
22
|
canSwitchNetworkTo() {
|
|
23
|
-
throw new Error(
|
|
23
|
+
throw new Error(defaultErrorMessage);
|
|
24
24
|
},
|
|
25
25
|
providers() {
|
|
26
|
-
throw new Error(
|
|
26
|
+
throw new Error(defaultErrorMessage);
|
|
27
27
|
},
|
|
28
28
|
getWalletInfo() {
|
|
29
|
-
throw new Error(
|
|
29
|
+
throw new Error(defaultErrorMessage);
|
|
30
30
|
},
|
|
31
31
|
getSigners() {
|
|
32
|
-
throw new Error(
|
|
32
|
+
throw new Error(defaultErrorMessage);
|
|
33
33
|
},
|
|
34
34
|
};
|
|
35
35
|
|
package/src/legacy/types.ts
CHANGED
|
@@ -8,6 +8,8 @@ import type {
|
|
|
8
8
|
LegacyState as WalletState,
|
|
9
9
|
LegacyWalletType as WalletType,
|
|
10
10
|
} from '@rango-dev/wallets-core/legacy';
|
|
11
|
+
import type { Namespace } from '@rango-dev/wallets-core/namespaces/common';
|
|
12
|
+
import type { NamespaceData } from '@rango-dev/wallets-core/store';
|
|
11
13
|
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
12
14
|
import type { PropsWithChildren } from 'react';
|
|
13
15
|
|
|
@@ -38,10 +40,12 @@ export type ProviderContext = {
|
|
|
38
40
|
type: WalletType,
|
|
39
41
|
namespaces?: LegacyNamespaceInputForConnect[]
|
|
40
42
|
): Promise<ConnectResult[]>;
|
|
41
|
-
disconnect(type: WalletType): Promise<void>;
|
|
43
|
+
disconnect(type: WalletType, namespaces?: Namespace[]): Promise<void>;
|
|
42
44
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
45
|
disconnectAll(): Promise<PromiseSettledResult<any>[]>;
|
|
44
|
-
state(
|
|
46
|
+
state(
|
|
47
|
+
type: WalletType
|
|
48
|
+
): WalletState & { namespaces?: Map<Namespace, NamespaceData> };
|
|
45
49
|
canSwitchNetworkTo(type: WalletType, network: Network): boolean;
|
|
46
50
|
/**
|
|
47
51
|
* `Provider` in legacy terms means injected instances by wallets into window (e.g. window.ethereum)
|
|
@@ -19,6 +19,9 @@ import {
|
|
|
19
19
|
import { useInitializers } from './hooks.js';
|
|
20
20
|
import { useAutoConnect } from './useAutoConnect.js';
|
|
21
21
|
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
|
+
type ProviderType = any;
|
|
24
|
+
|
|
22
25
|
export type LegacyProviderProps = Omit<ProviderProps, 'providers'> & {
|
|
23
26
|
providers: LegacyProviderInterface[];
|
|
24
27
|
};
|
|
@@ -86,7 +89,7 @@ export function useLegacyProviders(
|
|
|
86
89
|
}
|
|
87
90
|
},
|
|
88
91
|
async disconnectAll() {
|
|
89
|
-
const disconnect_promises: Promise<
|
|
92
|
+
const disconnect_promises: Promise<void>[] = [];
|
|
90
93
|
|
|
91
94
|
/*
|
|
92
95
|
* When a wallet is initializing, a record will be added to `providersState`
|
|
@@ -134,7 +137,7 @@ export function useLegacyProviders(
|
|
|
134
137
|
: false;
|
|
135
138
|
},
|
|
136
139
|
providers() {
|
|
137
|
-
const providers: { [type in WalletType]?:
|
|
140
|
+
const providers: { [type in WalletType]?: ProviderType } = {};
|
|
138
141
|
availableWallets(providersState).forEach((type) => {
|
|
139
142
|
const wallet = wallets.get(type);
|
|
140
143
|
if (wallet) {
|