@exodus/balances 13.16.1 → 13.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/atoms/asset-names-with-balance.d.ts +1 -0
  3. package/atoms/asset-names-with-balance.js +1 -40
  4. package/atoms/asset-total-wallet-amounts.d.ts +1 -0
  5. package/atoms/asset-total-wallet-amounts.js +1 -47
  6. package/atoms/assets-with-balance-count.d.ts +1 -0
  7. package/atoms/assets-with-balance-count.js +1 -8
  8. package/atoms/balances.d.ts +1 -0
  9. package/atoms/balances.js +1 -6
  10. package/atoms/funded-wallet-accounts.d.ts +1 -0
  11. package/atoms/funded-wallet-accounts.js +1 -25
  12. package/atoms/has-balance.d.ts +1 -0
  13. package/atoms/has-balance.js +1 -31
  14. package/atoms/index.d.ts +8 -0
  15. package/atoms/index.js +8 -54
  16. package/default-config.d.ts +1 -0
  17. package/default-config.js +1 -26
  18. package/index.d.ts +2 -35
  19. package/index.js +1 -65
  20. package/lib/atoms/asset-names-with-balance.d.ts +5 -0
  21. package/lib/atoms/asset-names-with-balance.js +31 -0
  22. package/lib/atoms/asset-total-wallet-amounts.d.ts +5 -0
  23. package/lib/atoms/asset-total-wallet-amounts.js +39 -0
  24. package/lib/atoms/assets-with-balance-count.d.ts +5 -0
  25. package/lib/atoms/assets-with-balance-count.js +6 -0
  26. package/lib/atoms/balances.d.ts +3 -0
  27. package/lib/atoms/balances.js +3 -0
  28. package/lib/atoms/funded-wallet-accounts.d.ts +8 -0
  29. package/lib/atoms/funded-wallet-accounts.js +19 -0
  30. package/lib/atoms/has-balance.d.ts +7 -0
  31. package/lib/atoms/has-balance.js +21 -0
  32. package/lib/atoms/index.d.ts +54 -0
  33. package/lib/atoms/index.js +48 -0
  34. package/lib/default-config.d.ts +3 -0
  35. package/lib/default-config.js +24 -0
  36. package/lib/index.d.ts +187 -0
  37. package/lib/index.js +49 -0
  38. package/lib/module/balances-utils.d.ts +13 -0
  39. package/lib/module/balances-utils.js +70 -0
  40. package/lib/module/index.d.ts +11 -0
  41. package/lib/module/index.js +367 -0
  42. package/lib/module/mockable-balances.d.ts +16 -0
  43. package/lib/module/mockable-balances.js +21 -0
  44. package/lib/module/types.d.ts +80 -0
  45. package/lib/module/types.js +1 -0
  46. package/lib/plugins/analytics.d.ts +18 -0
  47. package/lib/plugins/analytics.js +30 -0
  48. package/lib/plugins/index.d.ts +35 -0
  49. package/lib/plugins/index.js +22 -0
  50. package/lib/plugins/lifecycle.d.ts +14 -0
  51. package/lib/plugins/lifecycle.js +32 -0
  52. package/lib/redux/id.d.ts +2 -0
  53. package/lib/redux/id.js +1 -0
  54. package/lib/redux/index.d.ts +588 -0
  55. package/lib/redux/index.js +53 -0
  56. package/lib/redux/initial-state.d.ts +3 -0
  57. package/lib/redux/initial-state.js +6 -0
  58. package/lib/redux/multi-account-helper.d.ts +463 -0
  59. package/lib/redux/multi-account-helper.js +23 -0
  60. package/lib/redux/selectors/by-asset.d.ts +12 -0
  61. package/lib/redux/selectors/by-asset.js +19 -0
  62. package/lib/redux/selectors/create-balance-selectors.d.ts +70 -0
  63. package/lib/redux/selectors/create-balance-selectors.js +32 -0
  64. package/lib/redux/selectors/create-balances.d.ts +11 -0
  65. package/lib/redux/selectors/create-balances.js +13 -0
  66. package/lib/redux/selectors/create-fuel-threshold.d.ts +19 -0
  67. package/lib/redux/selectors/create-fuel-threshold.js +22 -0
  68. package/lib/redux/selectors/create-requires-fuel-threshold.d.ts +19 -0
  69. package/lib/redux/selectors/create-requires-fuel-threshold.js +29 -0
  70. package/lib/redux/selectors/create-unconfirmed-balance.d.ts +15 -0
  71. package/lib/redux/selectors/create-unconfirmed-balance.js +14 -0
  72. package/lib/redux/selectors/get-balance-for-field.d.ts +14 -0
  73. package/lib/redux/selectors/get-balance-for-field.js +19 -0
  74. package/lib/redux/selectors/get-balance-selectors.d.ts +68 -0
  75. package/lib/redux/selectors/get-balance-selectors.js +32 -0
  76. package/lib/redux/selectors/get-balances.d.ts +10 -0
  77. package/lib/redux/selectors/get-balances.js +13 -0
  78. package/lib/redux/selectors/get-unconfirmed-balance.d.ts +19 -0
  79. package/lib/redux/selectors/get-unconfirmed-balance.js +27 -0
  80. package/lib/redux/selectors/index.d.ts +339 -0
  81. package/lib/redux/selectors/index.js +22 -0
  82. package/lib/redux/types.d.ts +45 -0
  83. package/lib/redux/types.js +1 -0
  84. package/lib/report/index.d.ts +34 -0
  85. package/lib/report/index.js +51 -0
  86. package/lib/types.d.ts +24 -0
  87. package/lib/types.js +1 -0
  88. package/module/balances-utils.d.ts +1 -0
  89. package/module/balances-utils.js +1 -86
  90. package/module/index.d.ts +2 -0
  91. package/module/index.js +2 -497
  92. package/module/mockable-balances.d.ts +1 -0
  93. package/module/mockable-balances.js +1 -27
  94. package/package.json +23 -17
  95. package/plugins/analytics.d.ts +1 -0
  96. package/plugins/analytics.js +1 -48
  97. package/plugins/index.d.ts +4 -0
  98. package/plugins/index.js +4 -24
  99. package/plugins/lifecycle.d.ts +1 -0
  100. package/plugins/lifecycle.js +1 -40
  101. package/redux/id.d.ts +1 -0
  102. package/redux/id.js +1 -1
  103. package/redux/index.d.ts +2 -0
  104. package/redux/index.js +1 -61
  105. package/redux/initial-state.d.ts +1 -0
  106. package/redux/initial-state.js +1 -8
  107. package/redux/multi-account-helper.d.ts +1 -0
  108. package/redux/multi-account-helper.js +1 -14
  109. package/redux/selectors/by-asset.d.ts +1 -0
  110. package/redux/selectors/by-asset.js +1 -25
  111. package/redux/selectors/create-balance-selectors.d.ts +1 -0
  112. package/redux/selectors/create-balance-selectors.js +1 -48
  113. package/redux/selectors/create-balances.d.ts +1 -0
  114. package/redux/selectors/create-balances.js +1 -26
  115. package/redux/selectors/create-fuel-threshold.d.ts +1 -0
  116. package/redux/selectors/create-fuel-threshold.js +1 -32
  117. package/redux/selectors/create-requires-fuel-threshold.d.ts +1 -0
  118. package/redux/selectors/create-requires-fuel-threshold.js +1 -59
  119. package/redux/selectors/create-unconfirmed-balance.d.ts +1 -0
  120. package/redux/selectors/create-unconfirmed-balance.js +1 -28
  121. package/redux/selectors/get-balance-for-field.d.ts +1 -0
  122. package/redux/selectors/get-balance-for-field.js +1 -34
  123. package/redux/selectors/get-balance-selectors.d.ts +1 -0
  124. package/redux/selectors/get-balance-selectors.js +1 -42
  125. package/redux/selectors/get-balances.d.ts +1 -0
  126. package/redux/selectors/get-balances.js +1 -24
  127. package/redux/selectors/get-unconfirmed-balance.d.ts +2 -0
  128. package/redux/selectors/get-unconfirmed-balance.js +2 -43
  129. package/redux/selectors/index.d.ts +1 -0
  130. package/redux/selectors/index.js +1 -23
  131. package/report/index.d.ts +1 -0
  132. package/report/index.js +1 -61
  133. package/tsconfig.json +0 -8
package/plugins/index.js CHANGED
@@ -1,24 +1,4 @@
1
- import createBalancesAnalyticsPlugin from './analytics.js'
2
- import createBalancesLifecyclePlugin from './lifecycle.js'
3
-
4
- export const balancesLifecyclePluginDefinition = {
5
- id: 'balancesLifecyclePlugin',
6
- type: 'plugin',
7
- factory: createBalancesLifecyclePlugin,
8
- dependencies: ['balancesAtom', 'port', 'balances', 'hasBalanceAtom'],
9
- public: true,
10
- }
11
-
12
- export const balancesAnalyticsPluginDefinition = {
13
- id: 'balancesAnalyticsPlugin',
14
- type: 'plugin',
15
- factory: createBalancesAnalyticsPlugin,
16
- dependencies: [
17
- 'analytics',
18
- 'hasBalanceAtom',
19
- 'assetsWithBalanceCountAtom',
20
- 'assetsTotalWalletAmountsAtom',
21
- 'config?',
22
- ],
23
- public: true,
24
- }
1
+ export {
2
+ balancesLifecyclePluginDefinition,
3
+ balancesAnalyticsPluginDefinition,
4
+ } from '../lib/plugins/index.js'
@@ -0,0 +1 @@
1
+ export { default } from '../lib/plugins/lifecycle.js'
@@ -1,40 +1 @@
1
- import { createAtomObserver } from '@exodus/atoms'
2
-
3
- const createBalancesLifecyclePlugin = ({ balancesAtom, port, balances, hasBalanceAtom }) => {
4
- const balancesAtomObserver = createAtomObserver({
5
- port,
6
- atom: balancesAtom,
7
- event: 'balances',
8
- })
9
-
10
- const hasBalanceAtomObserver = createAtomObserver({
11
- port,
12
- atom: hasBalanceAtom,
13
- event: 'hasBalance',
14
- })
15
-
16
- const onLoad = () => {
17
- hasBalanceAtomObserver.start()
18
- balancesAtomObserver.start()
19
-
20
- balances.load()
21
- }
22
-
23
- const onStop = () => {
24
- balancesAtomObserver.unregister()
25
- hasBalanceAtomObserver.unregister()
26
- balances.stop()
27
- }
28
-
29
- const onClear = async () => {
30
- await hasBalanceAtom.set(undefined)
31
- }
32
-
33
- return {
34
- onLoad,
35
- onStop,
36
- onClear,
37
- }
38
- }
39
-
40
- export default createBalancesLifecyclePlugin
1
+ export { default } from '../lib/plugins/lifecycle.js'
package/redux/id.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { default } from '../lib/redux/id.js'
package/redux/id.js CHANGED
@@ -1 +1 @@
1
- export default 'balances'
1
+ export { default } from '../lib/redux/id.js'
@@ -0,0 +1,2 @@
1
+ export { default } from '../lib/redux/index.js'
2
+ export type { BalancesSelectors, BalancesState } from '../lib/redux/index.js'
package/redux/index.js CHANGED
@@ -1,61 +1 @@
1
- import id from './id.js'
2
- import initialState from './initial-state.js'
3
- import selectorDefinitions from './selectors/index.js'
4
- import { mapValues } from '@exodus/basic-utils'
5
- // eslint-disable-next-line no-restricted-imports -- TODO: Fix this the next time the file is edited.
6
- import lodash from 'lodash'
7
- import helper from './multi-account-helper.js'
8
- import { setAccounts } from '@exodus/multi-account-redux'
9
-
10
- const { merge } = lodash
11
-
12
- const mergeChanges = (balancesState, changesByWalletAccount) => {
13
- return {
14
- ...balancesState,
15
- ...mapValues(changesByWalletAccount, (changesByAsset, walletAccount) => {
16
- if (!balancesState?.[walletAccount]) {
17
- return {
18
- loaded: true,
19
- error: null,
20
- data: mapValues(changesByAsset, (changesByField) =>
21
- mapValues(changesByField, (balanceField) => balanceField.to)
22
- ),
23
- }
24
- }
25
-
26
- const updatedData = mapValues(changesByAsset, (changesByField) =>
27
- mapValues(changesByField, (balanceField) => balanceField.to)
28
- )
29
-
30
- return {
31
- ...balancesState[walletAccount],
32
- data: merge({}, balancesState[walletAccount].data, updatedData),
33
- }
34
- }),
35
- }
36
- }
37
-
38
- const balancesReduxDefinition = {
39
- id,
40
- type: 'redux-module',
41
- initialState,
42
- eventReducers: {
43
- balances: (state, payload) => {
44
- const { hasBalance, ...walletAccountBalances } = state
45
- const balancesLoaded = Object.values(walletAccountBalances).every((value) => value.loaded)
46
-
47
- if (balancesLoaded && payload.changes && Object.keys(payload.changes).length > 0) {
48
- return mergeChanges(state, payload.changes)
49
- }
50
-
51
- return { hasBalance, ...setAccounts(state, payload.balances) }
52
- },
53
- hasBalance: (state, payload) => ({
54
- ...state,
55
- hasBalance: payload,
56
- }),
57
- },
58
- selectorDefinitions: [...helper.selectorDefinitions, ...selectorDefinitions],
59
- }
60
-
61
- export default balancesReduxDefinition
1
+ export { default } from '../lib/redux/index.js'
@@ -0,0 +1 @@
1
+ export { default } from '../lib/redux/initial-state.js'
@@ -1,8 +1 @@
1
- import helper from './multi-account-helper.js'
2
-
3
- const initialState = {
4
- hasBalance: false,
5
- ...helper.createInitialState(),
6
- }
7
-
8
- export default initialState
1
+ export { default } from '../lib/redux/initial-state.js'
@@ -0,0 +1 @@
1
+ export { default } from '../lib/redux/multi-account-helper.js'
@@ -1,14 +1 @@
1
- import { memoize } from '@exodus/basic-utils'
2
- import { createReduxModuleHelper } from '@exodus/multi-account-redux'
3
- import id from './id.js'
4
-
5
- const helper = createReduxModuleHelper({
6
- slice: id,
7
- createInitialPerAssetData: memoize(
8
- ({ asset }) => ({ balance: asset.currency.ZERO, total: asset.currency.ZERO }),
9
- ({ asset }) => asset.name
10
- ),
11
- assetSourceDataSelectors: [{ name: 'balance', selector: (assetData) => assetData.total }],
12
- })
13
-
14
- export default helper
1
+ export { default } from '../lib/redux/multi-account-helper.js'
@@ -0,0 +1 @@
1
+ export { default } from '../../lib/redux/selectors/by-asset.js'
@@ -1,25 +1 @@
1
- const resultFunction = (walletAccounts, getAssetBalances) =>
2
- walletAccounts.reduce((all, walletAccount) => {
3
- for (const [assetName, balance] of Object.entries(getAssetBalances(walletAccount))) {
4
- if (!all[assetName]) {
5
- all[assetName] = balance
6
- continue
7
- }
8
-
9
- all[assetName] = all[assetName].add(balance)
10
- }
11
-
12
- return all
13
- }, {})
14
-
15
- const byAssetSelector = {
16
- id: 'byAsset',
17
- resultFunction,
18
- dependencies: [
19
- //
20
- { module: 'walletAccounts', selector: 'enabled' },
21
- { selector: 'getAccountAssetsBalanceSelector' },
22
- ],
23
- }
24
-
25
- export default byAssetSelector
1
+ export { default } from '../../lib/redux/selectors/by-asset.js'
@@ -0,0 +1 @@
1
+ export { default } from '../../lib/redux/selectors/create-balance-selectors.js'
@@ -1,48 +1 @@
1
- // eslint-disable-next-line no-restricted-imports -- TODO: Fix this the next time the file is edited.
2
- import lodash from 'lodash'
3
- import { MY_STATE } from '@exodus/redux-dependency-injection'
4
- import { createSelector } from 'reselect'
5
-
6
- const { memoize } = lodash // oxlint-disable-line @exodus/oxlint-plugin-restricted-imports/prefer-basic-utils
7
-
8
- const createBalanceSelectorFactory = ({ field, id }) => {
9
- const selectorFactory = (createAssetSelector, selfSelector) =>
10
- memoize(
11
- ({ assetName, walletAccount }) =>
12
- createSelector(
13
- createAssetSelector(assetName),
14
- selfSelector,
15
- (asset, balances) =>
16
- balances[walletAccount]?.data[assetName]?.[field] ?? asset?.currency.ZERO
17
- ),
18
- ({ assetName, walletAccount, field }) => [assetName, walletAccount, field].join('-')
19
- )
20
-
21
- return {
22
- id,
23
- selectorFactory,
24
- dependencies: [{ module: 'assets', selector: 'createAssetSelector' }, { selector: MY_STATE }],
25
- }
26
- }
27
-
28
- const createBalanceSelectors = [
29
- // regenerate if there is a new balance field!!
30
- { id: 'createTotal', field: 'total' },
31
- { id: 'createBalance', field: 'balance' },
32
- { id: 'createSpendable', field: 'spendable' },
33
- { id: 'createSpendableBalance', field: 'spendableBalance' },
34
- { id: 'createUnconfirmedSent', field: 'unconfirmedSent' },
35
- { id: 'createUnconfirmedReceived', field: 'unconfirmedReceived' },
36
- { id: 'createUnspendable', field: 'unspendable' },
37
- { id: 'createWalletReserve', field: 'walletReserve' },
38
- { id: 'createNetworkReserve', field: 'networkReserve' },
39
- { id: 'createStaking', field: 'staking' },
40
- { id: 'createStaked', field: 'staked' },
41
- { id: 'createStakeable', field: 'stakeable' },
42
- { id: 'createUnstaking', field: 'unstaking' },
43
- { id: 'createUnstaked', field: 'unstaked' },
44
- { id: 'createRewards', field: 'rewards' },
45
- { id: 'createFrozen', field: 'frozen' },
46
- ].map(createBalanceSelectorFactory)
47
-
48
- export default createBalanceSelectors
1
+ export { default } from '../../lib/redux/selectors/create-balance-selectors.js'
@@ -0,0 +1 @@
1
+ export { default } from '../../lib/redux/selectors/create-balances.js'
@@ -1,26 +1 @@
1
- // eslint-disable-next-line no-restricted-imports -- TODO: Fix this the next time the file is edited.
2
- import lodash from 'lodash'
3
- import { createSelector } from 'reselect'
4
- import { MY_STATE } from '@exodus/redux-dependency-injection'
5
-
6
- const { memoize } = lodash // oxlint-disable-line @exodus/oxlint-plugin-restricted-imports/prefer-basic-utils
7
-
8
- const EMPTY_BALANCES = Object.create(null)
9
-
10
- const selectorFactory = (selfSelector) =>
11
- memoize(
12
- ({ assetName, walletAccount }) =>
13
- createSelector(
14
- selfSelector,
15
- (balances) => balances[walletAccount]?.data[assetName] ?? EMPTY_BALANCES
16
- ),
17
- ({ assetName, walletAccount }) => [assetName, walletAccount].join('-')
18
- )
19
-
20
- const createBalancesSelectorDefinition = {
21
- id: 'createBalances',
22
- selectorFactory,
23
- dependencies: [{ selector: MY_STATE }],
24
- }
25
-
26
- export default createBalancesSelectorDefinition
1
+ export { default } from '../../lib/redux/selectors/create-balances.js'
@@ -0,0 +1 @@
1
+ export { default } from '../../lib/redux/selectors/create-fuel-threshold.js'
@@ -1,32 +1 @@
1
- // eslint-disable-next-line no-restricted-imports -- TODO: Fix this the next time the file is edited.
2
- import lodash from 'lodash'
3
- import { createSelector } from 'reselect'
4
- import { isNumberUnit } from '@exodus/currency'
5
-
6
- const { memoize } = lodash // oxlint-disable-line @exodus/oxlint-plugin-restricted-imports/prefer-basic-utils
7
-
8
- const selectorFactory = (getFeeDataSelector, createAssetSelector) =>
9
- memoize((assetName) =>
10
- createSelector(getFeeDataSelector, createAssetSelector(assetName), (getFeeData, asset) => {
11
- if (!asset) {
12
- // not all assets are supported by Exodus.
13
- return null
14
- }
15
-
16
- const feeData = getFeeData(asset.baseAsset.name)
17
- return isNumberUnit(feeData?.fuelThreshold)
18
- ? feeData.fuelThreshold
19
- : asset.feeAsset.currency.ZERO
20
- })
21
- )
22
-
23
- const createFuelThresholdSelectorDefinition = {
24
- id: 'createFuelThreshold',
25
- selectorFactory,
26
- dependencies: [
27
- { module: 'feeData', selector: 'getData' },
28
- { module: 'assets', selector: 'createAssetSelector' },
29
- ],
30
- }
31
-
32
- export default createFuelThresholdSelectorDefinition
1
+ export { default } from '../../lib/redux/selectors/create-fuel-threshold.js'
@@ -0,0 +1 @@
1
+ export { default } from '../../lib/redux/selectors/create-requires-fuel-threshold.js'
@@ -1,59 +1 @@
1
- import { createSelector } from 'reselect'
2
- import { memoizeByAssetSource } from '@exodus/core-selectors/utils/memoize.js'
3
-
4
- /**
5
- * Checks if a wallet account has "relative" tokens of the supplied asset (excluding itself):
6
- *
7
- * If providing a base asset, then it returns if the wallet has any child balance. Examples:
8
- * - eth, returns true if there is usdt(eth)
9
- * - tron, return true if there is usdt(tron)
10
- *
11
- * If providing child asset, then it returns if there is any base/parent or 'sister' assent with balance. Example:
12
- * - tfuel, return true if there is theta.
13
- *
14
- * This selector is useful when testing that the wallet is not drying up all the fuel token (relativeTokenName)
15
- * when holding other assets that require it to operate.
16
- *
17
- */
18
-
19
- const selectorFactory = (isTxLogLoadedSelector, getAssetBalanceSelector, assetsSelector) =>
20
- memoizeByAssetSource(({ assetName, walletAccount }) =>
21
- createSelector(
22
- isTxLogLoadedSelector,
23
- getAssetBalanceSelector,
24
- assetsSelector,
25
- (isTxLogLoaded, getAssetBalance, assets) => {
26
- if (!isTxLogLoaded(walletAccount)) return false
27
- const asset = assets[assetName]
28
- if (!asset) {
29
- // not all assets are supported by Exodus.
30
- return false
31
- }
32
-
33
- const baseAssetName = asset.baseAsset.name
34
- const relatedAssets = Object.values(assets).filter(
35
- (asset) => asset.baseAsset.name === baseAssetName && asset.name !== assetName
36
- )
37
- // check that at least one token has non-zero balance
38
- return relatedAssets.some((token) => {
39
- const balance = getAssetBalance({
40
- assetName: token.name,
41
- walletAccount,
42
- })
43
- return balance && !balance.isZero
44
- })
45
- }
46
- )
47
- )
48
-
49
- const createRequiresFuelThresholdSelectorDefinition = {
50
- id: 'createRequiresFuelThreshold',
51
- selectorFactory,
52
- dependencies: [
53
- { module: 'txLog', selector: 'createIsWalletAccountLoadedSelectorOld' },
54
- { module: 'balances', selector: 'getAssetSourceBalanceSelector' },
55
- { module: 'availableAssets', selector: 'all' },
56
- ],
57
- }
58
-
59
- export default createRequiresFuelThresholdSelectorDefinition
1
+ export { default } from '../../lib/redux/selectors/create-requires-fuel-threshold.js'
@@ -0,0 +1 @@
1
+ export { default } from '../../lib/redux/selectors/create-unconfirmed-balance.js'
@@ -1,28 +1 @@
1
- // eslint-disable-next-line no-restricted-imports -- TODO: Fix this the next time the file is edited.
2
- import lodash from 'lodash'
3
- import { createSelector } from 'reselect'
4
- import { getUnconfirmedBalance } from './get-unconfirmed-balance.js'
5
-
6
- const { memoize } = lodash // oxlint-disable-line @exodus/oxlint-plugin-restricted-imports/prefer-basic-utils
7
-
8
- const selectorFactory = (createAssetSelector, createAssetSourceSelector) =>
9
- memoize(
10
- ({ assetName, walletAccount }) =>
11
- createSelector(
12
- createAssetSelector(assetName),
13
- createAssetSourceSelector({ assetName, walletAccount }),
14
- (asset, txs) => getUnconfirmedBalance({ asset, txs })
15
- ),
16
- ({ assetName, walletAccount }) => [assetName, walletAccount].join('-')
17
- )
18
-
19
- const createUnconfirmedBalanceSelectorDefinition = {
20
- id: 'createUnconfirmedBalance',
21
- selectorFactory,
22
- dependencies: [
23
- { module: 'assets', selector: 'createAssetSelector' },
24
- { module: 'txLog', selector: 'createAssetSourceSelector' },
25
- ],
26
- }
27
-
28
- export default createUnconfirmedBalanceSelectorDefinition
1
+ export { default } from '../../lib/redux/selectors/create-unconfirmed-balance.js'
@@ -0,0 +1 @@
1
+ export { default } from '../../lib/redux/selectors/get-balance-for-field.js'
@@ -1,34 +1 @@
1
- // eslint-disable-next-line no-restricted-imports -- TODO: Fix this the next time the file is edited.
2
- import lodash from 'lodash'
3
- import defaultConfig from '../../default-config.js'
4
-
5
- const { memoize } = lodash // oxlint-disable-line @exodus/oxlint-plugin-restricted-imports/prefer-basic-utils
6
-
7
- const { balanceFields } = defaultConfig
8
-
9
- const resultFunction = (getAsset, getBalances) =>
10
- memoize(
11
- ({ assetName, walletAccount, field }) => {
12
- if (!balanceFields.includes(field)) {
13
- throw new Error(
14
- `Value '${field}' is not one of the valid fields '${balanceFields.join(', ')}'`
15
- )
16
- }
17
-
18
- return (
19
- getBalances({ assetName, walletAccount })?.[field] ?? getAsset(assetName)?.currency.ZERO
20
- )
21
- },
22
- ({ assetName, walletAccount, field }) => [assetName, walletAccount, field].join('-')
23
- )
24
-
25
- const getBalanceForFieldSelectorDefinition = {
26
- id: 'getBalanceForField',
27
- resultFunction,
28
- dependencies: [
29
- { module: 'assets', selector: 'getAsset' },
30
- { module: 'balances', selector: 'getBalances' },
31
- ],
32
- }
33
-
34
- export default getBalanceForFieldSelectorDefinition
1
+ export { default } from '../../lib/redux/selectors/get-balance-for-field.js'
@@ -0,0 +1 @@
1
+ export { default } from '../../lib/redux/selectors/get-balance-selectors.js'
@@ -1,42 +1 @@
1
- // eslint-disable-next-line no-restricted-imports -- TODO: Fix this the next time the file is edited.
2
- import lodash from 'lodash'
3
-
4
- const { memoize } = lodash // oxlint-disable-line @exodus/oxlint-plugin-restricted-imports/prefer-basic-utils
5
-
6
- const createResultFunction = (field) => (getBalanceForField) =>
7
- memoize(
8
- ({ assetName, walletAccount }) => {
9
- return getBalanceForField({ assetName, walletAccount, field })
10
- },
11
- ({ assetName, walletAccount }) => [assetName, walletAccount].join('-')
12
- )
13
-
14
- const getBalanceSelectorFactory = ({ field, id }) => {
15
- return {
16
- id,
17
- resultFunction: createResultFunction(field),
18
- dependencies: [{ module: 'balances', selector: 'getBalanceForField' }],
19
- }
20
- }
21
-
22
- const getBalanceSelectors = [
23
- // regenerate if there is a new balance field!!
24
- { id: 'getTotal', field: 'total' },
25
- { id: 'getBalance', field: 'balance' },
26
- { id: 'getSpendable', field: 'spendable' },
27
- { id: 'getSpendableBalance', field: 'spendableBalance' },
28
- { id: 'getUnconfirmedSent', field: 'unconfirmedSent' },
29
- { id: 'getUnconfirmedReceived', field: 'unconfirmedReceived' },
30
- { id: 'getUnspendable', field: 'unspendable' },
31
- { id: 'getWalletReserve', field: 'walletReserve' },
32
- { id: 'getNetworkReserve', field: 'networkReserve' },
33
- { id: 'getStaking', field: 'staking' },
34
- { id: 'getStaked', field: 'staked' },
35
- { id: 'getStakeable', field: 'stakeable' },
36
- { id: 'getUnstaking', field: 'unstaking' },
37
- { id: 'getUnstaked', field: 'unstaked' },
38
- { id: 'getRewards', field: 'rewards' },
39
- { id: 'getFrozen', field: 'frozen' },
40
- ].map(getBalanceSelectorFactory)
41
-
42
- export default getBalanceSelectors
1
+ export { default } from '../../lib/redux/selectors/get-balance-selectors.js'
@@ -0,0 +1 @@
1
+ export { default } from '../../lib/redux/selectors/get-balances.js'
@@ -1,24 +1 @@
1
- // eslint-disable-next-line no-restricted-imports -- TODO: Fix this the next time the file is edited.
2
- import lodash from 'lodash'
3
- import { createSelector } from 'reselect'
4
- import { MY_STATE } from '@exodus/redux-dependency-injection'
5
-
6
- const { memoize } = lodash // oxlint-disable-line @exodus/oxlint-plugin-restricted-imports/prefer-basic-utils
7
-
8
- const selectorFactory = (selfSelector) =>
9
- createSelector(selfSelector, (balances) =>
10
- memoize(
11
- ({ assetName, walletAccount }) => {
12
- return balances[walletAccount]?.data[assetName]
13
- },
14
- ({ assetName, walletAccount }) => [assetName, walletAccount].join('-')
15
- )
16
- )
17
-
18
- const getBalancesSelectorDefinition = {
19
- id: 'getBalances',
20
- selectorFactory,
21
- dependencies: [{ selector: MY_STATE }],
22
- }
23
-
24
- export default getBalancesSelectorDefinition
1
+ export { default } from '../../lib/redux/selectors/get-balances.js'
@@ -0,0 +1,2 @@
1
+ export { default } from '../../lib/redux/selectors/get-unconfirmed-balance.js'
2
+ export { getUnconfirmedBalance } from '../../lib/redux/selectors/get-unconfirmed-balance.js'
@@ -1,43 +1,2 @@
1
- // eslint-disable-next-line no-restricted-imports -- TODO: Fix this the next time the file is edited.
2
- import lodash from 'lodash'
3
- import { createSelector } from 'reselect'
4
-
5
- const { memoize } = lodash // oxlint-disable-line @exodus/oxlint-plugin-restricted-imports/prefer-basic-utils
6
-
7
- export const getUnconfirmedBalance = ({ asset, txs }) => {
8
- let result = asset.currency.ZERO
9
-
10
- for (const tx of txs) {
11
- const isIncommingTX = !tx.sent
12
- const isUnconfirmed = !tx.failed && tx.pending
13
-
14
- if (isUnconfirmed && isIncommingTX) {
15
- result = result.add(tx.coinAmount)
16
- }
17
- }
18
-
19
- return result
20
- }
21
-
22
- const selectorFactory = (getAssetSelector, createAssetSourceSelector) =>
23
- createSelector(getAssetSelector, createAssetSourceSelector, (getAsset, getTxs) =>
24
- memoize(
25
- ({ assetName, walletAccount }) =>
26
- getUnconfirmedBalance({
27
- asset: getAsset(assetName),
28
- txs: getTxs({ assetName, walletAccount }),
29
- }),
30
- ({ assetName, walletAccount }) => [assetName, walletAccount].join('-')
31
- )
32
- )
33
-
34
- const getUnconfirmedBalanceSelectorDefinition = {
35
- id: 'getUnconfirmedBalance',
36
- selectorFactory,
37
- dependencies: [
38
- { module: 'assets', selector: 'getAsset' },
39
- { module: 'txLog', selector: 'createAssetSourceSelectorOld' },
40
- ],
41
- }
42
-
43
- export default getUnconfirmedBalanceSelectorDefinition
1
+ export { default } from '../../lib/redux/selectors/get-unconfirmed-balance.js'
2
+ export { getUnconfirmedBalance } from '../../lib/redux/selectors/get-unconfirmed-balance.js'
@@ -0,0 +1 @@
1
+ export { default } from '../../lib/redux/selectors/index.js'
@@ -1,23 +1 @@
1
- import byAssetSelectorDefinition from './by-asset.js'
2
- import createUnconfirmedBalanceSelectorDefinition from './create-unconfirmed-balance.js'
3
- import getBalanceForFieldSelectorDefinition from './get-balance-for-field.js'
4
- import getBalanceSelectors from './get-balance-selectors.js'
5
- import createBalancesSelectorDefinition from './create-balances.js'
6
- import getBalancesSelectorDefinition from './get-balances.js'
7
- import createBalancesSelectors from './create-balance-selectors.js'
8
- import getUnconfirmedBalanceSelectorDefinition from './get-unconfirmed-balance.js'
9
- import createFuelThresholdSelectorDefinition from './create-fuel-threshold.js'
10
- import createRequiresFuelThresholdSelectorDefinition from './create-requires-fuel-threshold.js'
11
-
12
- export default [
13
- byAssetSelectorDefinition,
14
- createUnconfirmedBalanceSelectorDefinition,
15
- getBalanceForFieldSelectorDefinition,
16
- ...getBalanceSelectors,
17
- ...createBalancesSelectors,
18
- createBalancesSelectorDefinition,
19
- getBalancesSelectorDefinition,
20
- getUnconfirmedBalanceSelectorDefinition,
21
- createFuelThresholdSelectorDefinition,
22
- createRequiresFuelThresholdSelectorDefinition,
23
- ]
1
+ export { default } from '../../lib/redux/selectors/index.js'
@@ -0,0 +1 @@
1
+ export { default } from '../lib/report/index.js'