@rango-dev/wallets-react 0.30.2-next.1 → 0.30.2-next.11
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 -2
- 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 +4 -4
- package/src/hub/helpers.ts +56 -0
- package/src/hub/lastConnectedWallets.ts +24 -5
- package/src/hub/useHubAdapter.ts +58 -31
- package/src/hub/useHubRefs.ts +4 -7
- package/src/hub/utils.ts +50 -26
- 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":10258,"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":13313,"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":103697},"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":3205},"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":4251},"src/hub/autoConnect.ts":{"bytesInOutput":1977},"src/hub/useHubRefs.ts":{"bytesInOutput":497},"src/useProviders.ts":{"bytesInOutput":889},"src/legacy/types.ts":{"bytesInOutput":63}},"bytes":19334},"dist/helpers/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":64839},"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.11",
|
|
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.10",
|
|
39
|
+
"@rango-dev/wallets-shared": "^0.44.2-next.12",
|
|
40
40
|
"rango-types": "^0.1.84",
|
|
41
41
|
"ts-results": "^3.3.0"
|
|
42
42
|
},
|
|
@@ -47,4 +47,4 @@
|
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|
|
49
49
|
}
|
|
50
|
-
}
|
|
50
|
+
}
|
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,20 +11,17 @@ 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 {
|
|
27
23
|
getLegacyProvider,
|
|
24
|
+
getSupportedChainsFromProvider,
|
|
28
25
|
mapHubEventsToLegacy,
|
|
29
26
|
transformHubResultToLegacyResult,
|
|
30
27
|
tryConvertNamespaceNetworkToChainInfo,
|
|
@@ -46,6 +43,8 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
46
43
|
allBlockChains: params.allBlockChains,
|
|
47
44
|
});
|
|
48
45
|
|
|
46
|
+
const queueTask = createQueue();
|
|
47
|
+
|
|
49
48
|
useEffect(() => {
|
|
50
49
|
dataRef.current = {
|
|
51
50
|
onUpdateState: params.onUpdateState,
|
|
@@ -94,7 +93,6 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
94
93
|
getHub(),
|
|
95
94
|
event,
|
|
96
95
|
dataRef.current.onUpdateState,
|
|
97
|
-
dataRef.current.allVersionedProviders,
|
|
98
96
|
dataRef.current.allBlockChains
|
|
99
97
|
);
|
|
100
98
|
} catch (e) {
|
|
@@ -170,7 +168,7 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
170
168
|
|
|
171
169
|
// Try to run `connect` on matched namespaces
|
|
172
170
|
const connectResultFromTargetNamespaces = targetNamespaces.map(
|
|
173
|
-
([namespaceInput, namespace]) => {
|
|
171
|
+
async ([namespaceInput, namespace]) => {
|
|
174
172
|
const network = tryConvertNamespaceNetworkToChainInfo(
|
|
175
173
|
namespaceInput,
|
|
176
174
|
params.allBlockChains || []
|
|
@@ -181,7 +179,7 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
181
179
|
* our assumption here is all the `connect` hasn't chain or if they have, they will accept it in first argument.
|
|
182
180
|
* By this assumption, always passing a chain should be problematic since it will be ignored if the namespace's `connect` hasn't chain.
|
|
183
181
|
*/
|
|
184
|
-
|
|
182
|
+
const connectNamespaceProcess = async () =>
|
|
185
183
|
namespace
|
|
186
184
|
.connect(network)
|
|
187
185
|
.then<ConnectResult>(transformHubResultToLegacyResult)
|
|
@@ -191,10 +189,11 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
191
189
|
input: {
|
|
192
190
|
namespace: namespaceInput.namespace,
|
|
193
191
|
network: namespaceInput.network,
|
|
194
|
-
supportsEagerConnect:
|
|
192
|
+
supportsEagerConnect: 'canEagerConnect' in namespace,
|
|
195
193
|
},
|
|
196
194
|
};
|
|
197
195
|
});
|
|
196
|
+
return queueTask(connectNamespaceProcess, type);
|
|
198
197
|
}
|
|
199
198
|
);
|
|
200
199
|
|
|
@@ -202,7 +201,7 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
202
201
|
* We need to connect to namespace one after another, sending multiple requests at the same time may be failed.
|
|
203
202
|
* 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
203
|
*/
|
|
205
|
-
const connectResultWithLegacyFormat = await
|
|
204
|
+
const connectResultWithLegacyFormat = await Promise.all(
|
|
206
205
|
connectResultFromTargetNamespaces
|
|
207
206
|
);
|
|
208
207
|
|
|
@@ -235,7 +234,7 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
235
234
|
|
|
236
235
|
return allResult.unwrap();
|
|
237
236
|
},
|
|
238
|
-
async disconnect(type) {
|
|
237
|
+
async disconnect(type, namespaces) {
|
|
239
238
|
const wallet = getHub().get(type);
|
|
240
239
|
if (!wallet) {
|
|
241
240
|
throw new Error(
|
|
@@ -244,13 +243,23 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
244
243
|
}
|
|
245
244
|
|
|
246
245
|
wallet.getAll().forEach((namespace) => {
|
|
247
|
-
|
|
246
|
+
const namespaceShouldBeDisconnected =
|
|
247
|
+
!namespaces || namespaces.includes(namespace.namespaceId);
|
|
248
|
+
const namespaceIsConnected = namespace.state()[0]().connected;
|
|
249
|
+
if (namespaceShouldBeDisconnected && namespaceIsConnected) {
|
|
248
250
|
return namespace.disconnect();
|
|
249
251
|
}
|
|
250
252
|
});
|
|
251
253
|
|
|
252
254
|
if (params.autoConnect) {
|
|
253
|
-
|
|
255
|
+
if (namespaces) {
|
|
256
|
+
lastConnectedWalletsFromStorage.removeNamespacesFromWallet(
|
|
257
|
+
type,
|
|
258
|
+
namespaces
|
|
259
|
+
);
|
|
260
|
+
} else {
|
|
261
|
+
lastConnectedWalletsFromStorage.removeWallets([type]);
|
|
262
|
+
}
|
|
254
263
|
}
|
|
255
264
|
},
|
|
256
265
|
async disconnectAll() {
|
|
@@ -275,8 +284,6 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
275
284
|
throw new Error('Your provider should have required `info`.');
|
|
276
285
|
}
|
|
277
286
|
|
|
278
|
-
const provider = getLegacyProvider(params.allVersionedProviders, type);
|
|
279
|
-
|
|
280
287
|
const installLink: Exclude<WalletInfo['installLink'], string> = {
|
|
281
288
|
DEFAULT: '',
|
|
282
289
|
};
|
|
@@ -304,8 +311,16 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
304
311
|
}
|
|
305
312
|
});
|
|
306
313
|
|
|
307
|
-
const
|
|
308
|
-
|
|
314
|
+
const providerProperties = info.properties;
|
|
315
|
+
|
|
316
|
+
const namespacesProperty = providerProperties?.find(
|
|
317
|
+
(property) => property.name === 'namespaces'
|
|
318
|
+
);
|
|
319
|
+
const derivationPathProperty = providerProperties?.find(
|
|
320
|
+
(property) => property.name === 'derivationPath'
|
|
321
|
+
);
|
|
322
|
+
const detailsProperty = providerProperties?.find(
|
|
323
|
+
(property) => property.name === 'details'
|
|
309
324
|
);
|
|
310
325
|
|
|
311
326
|
return {
|
|
@@ -314,13 +329,16 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
314
329
|
installLink: installLink,
|
|
315
330
|
// We don't have this values anymore, fill them with some values that communicate this.
|
|
316
331
|
color: 'red',
|
|
317
|
-
supportedChains:
|
|
318
|
-
|
|
319
|
-
|
|
332
|
+
supportedChains: getSupportedChainsFromProvider(
|
|
333
|
+
wallet,
|
|
334
|
+
dataRef.current.allBlockChains
|
|
335
|
+
),
|
|
336
|
+
isContractWallet: detailsProperty?.value?.isContractWallet,
|
|
337
|
+
mobileWallet: detailsProperty?.value?.mobileWallet,
|
|
320
338
|
// 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:
|
|
339
|
+
showOnMobile: detailsProperty?.value?.showOnMobile,
|
|
340
|
+
needsNamespace: namespacesProperty?.value,
|
|
341
|
+
needsDerivationPath: derivationPathProperty?.value,
|
|
324
342
|
|
|
325
343
|
isHub: true,
|
|
326
344
|
properties: wallet.info()?.properties,
|
|
@@ -341,29 +359,38 @@ export function useHubAdapter(params: UseAdapterParams): ProviderContext {
|
|
|
341
359
|
return output;
|
|
342
360
|
},
|
|
343
361
|
state(type) {
|
|
344
|
-
const
|
|
345
|
-
const
|
|
362
|
+
const hubState = getHub().state();
|
|
363
|
+
const wallet = getHub().get(type);
|
|
364
|
+
const walletState = hubState[type];
|
|
346
365
|
|
|
347
|
-
if (!
|
|
366
|
+
if (!walletState || !wallet) {
|
|
348
367
|
throw new Error(
|
|
349
368
|
`It seems your requested provider doesn't exist in hub. Provider Id: ${type}`
|
|
350
369
|
);
|
|
351
370
|
}
|
|
352
371
|
|
|
353
|
-
const accounts =
|
|
372
|
+
const accounts = walletState.namespaces
|
|
354
373
|
.filter((namespace) => namespace.connected)
|
|
355
374
|
.flatMap((namespace) =>
|
|
356
375
|
namespace.accounts?.map(fromAccountIdToLegacyAddressFormat)
|
|
357
376
|
)
|
|
358
377
|
.filter((account): account is string => !!account);
|
|
359
378
|
|
|
379
|
+
const namespacesState = new Map(
|
|
380
|
+
Array.from(wallet.getAll(), ([_, value]) => [
|
|
381
|
+
value.namespaceId,
|
|
382
|
+
value.state()[0](),
|
|
383
|
+
])
|
|
384
|
+
);
|
|
385
|
+
|
|
360
386
|
const coreState = {
|
|
361
|
-
connected:
|
|
362
|
-
connecting:
|
|
363
|
-
installed:
|
|
387
|
+
connected: walletState.connected,
|
|
388
|
+
connecting: walletState.connecting,
|
|
389
|
+
installed: walletState.installed,
|
|
364
390
|
reachable: true,
|
|
365
391
|
accounts: accounts,
|
|
366
392
|
network: null,
|
|
393
|
+
namespaces: namespacesState,
|
|
367
394
|
};
|
|
368
395
|
return coreState;
|
|
369
396
|
},
|
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
|
@@ -68,23 +68,28 @@ const lastConnectedWalletsFromStorage = new LastConnectedWalletsFromStorage(
|
|
|
68
68
|
HUB_LAST_CONNECTED_WALLETS
|
|
69
69
|
);
|
|
70
70
|
|
|
71
|
+
export function getSupportedChainsFromProvider(
|
|
72
|
+
provider: Provider,
|
|
73
|
+
allBlockChains: ProviderProps['allBlockChains']
|
|
74
|
+
) {
|
|
75
|
+
const namespacesProperty = provider
|
|
76
|
+
.info()
|
|
77
|
+
?.properties?.find((property) => property.name === 'namespaces');
|
|
78
|
+
|
|
79
|
+
const supportedChains =
|
|
80
|
+
namespacesProperty?.value.data.flatMap((namespace) =>
|
|
81
|
+
namespace.getSupportedChains(allBlockChains || [])
|
|
82
|
+
) || [];
|
|
83
|
+
|
|
84
|
+
return supportedChains;
|
|
85
|
+
}
|
|
86
|
+
|
|
71
87
|
export function mapHubEventsToLegacy(
|
|
72
88
|
hub: Hub,
|
|
73
89
|
event: Event,
|
|
74
90
|
onUpdateState: WalletEventHandler,
|
|
75
|
-
allProviders: VersionedProviders[],
|
|
76
91
|
allBlockChains: ProviderProps['allBlockChains']
|
|
77
92
|
): 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
93
|
const provider = hub.get(event.provider);
|
|
89
94
|
if (!provider) {
|
|
90
95
|
throw new Error(
|
|
@@ -121,8 +126,10 @@ export function mapHubEventsToLegacy(
|
|
|
121
126
|
};
|
|
122
127
|
|
|
123
128
|
const eventInfo = {
|
|
124
|
-
supportedBlockchains:
|
|
125
|
-
|
|
129
|
+
supportedBlockchains: getSupportedChainsFromProvider(
|
|
130
|
+
provider,
|
|
131
|
+
allBlockChains
|
|
132
|
+
),
|
|
126
133
|
isContractWallet: false,
|
|
127
134
|
isHub: true,
|
|
128
135
|
namespace: namespaceId,
|
|
@@ -331,18 +338,35 @@ export function transformHubResultToLegacyResult(
|
|
|
331
338
|
};
|
|
332
339
|
}
|
|
333
340
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
341
|
+
/**
|
|
342
|
+
* Synchronizes providers in the hub with the configuration providers.
|
|
343
|
+
* - Registers and initializes any configuration providers not yet in the hub
|
|
344
|
+
* - Removes providers from the hub that aren't in the configuration
|
|
345
|
+
*/
|
|
346
|
+
export function synchronizeHubWithConfigProviders(
|
|
347
|
+
hub: Hub,
|
|
348
|
+
configurationProviders: Provider[]
|
|
337
349
|
) {
|
|
338
|
-
const
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
350
|
+
const registeredProviders = hub.getAll();
|
|
351
|
+
|
|
352
|
+
// Register and initialize providers that exist in config but not in hub
|
|
353
|
+
const providersToRegister = configurationProviders.filter(
|
|
354
|
+
(configProvider) => !registeredProviders.get(configProvider.id)
|
|
355
|
+
);
|
|
356
|
+
|
|
357
|
+
providersToRegister.forEach((providerToRegister) => {
|
|
358
|
+
hub.add(providerToRegister.id, providerToRegister);
|
|
359
|
+
providerToRegister.init();
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
// Remove providers that exist in hub but not in config
|
|
363
|
+
registeredProviders.forEach((registeredProvider) => {
|
|
364
|
+
const isProviderInConfig = configurationProviders.some(
|
|
365
|
+
(configProvider) => configProvider.id === registeredProvider.id
|
|
366
|
+
);
|
|
367
|
+
|
|
368
|
+
if (!isProviderInConfig) {
|
|
369
|
+
hub.remove(registeredProvider.id);
|
|
370
|
+
}
|
|
371
|
+
});
|
|
348
372
|
}
|
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)
|