@exodus/balances 4.0.0 → 6.0.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.
- package/CHANGELOG.md +21 -0
- package/atoms/balances.js +5 -0
- package/atoms/index.js +8 -0
- package/module/index.js +26 -12
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,27 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.0.0](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/balances@5.0.0...@exodus/balances@6.0.0) (2023-04-25)
|
|
7
|
+
|
|
8
|
+
### ⚠ BREAKING CHANGES
|
|
9
|
+
|
|
10
|
+
- replace emit with atom in balances module (#1349)
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- add balancesAtom definition ([#1362](https://github.com/ExodusMovement/exodus-hydra/issues/1362)) ([4d126ef](https://github.com/ExodusMovement/exodus-hydra/commit/4d126efef79655178ec1e1faf65b347497ad8647))
|
|
15
|
+
- replace emit with atom in balances module ([#1349](https://github.com/ExodusMovement/exodus-hydra/issues/1349)) ([f9110f8](https://github.com/ExodusMovement/exodus-hydra/commit/f9110f8e9e76b8b199bc4d40461cb1bed3a5be1e))
|
|
16
|
+
|
|
17
|
+
## [5.0.0](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/balances@4.0.0...@exodus/balances@5.0.0) (2023-03-14)
|
|
18
|
+
|
|
19
|
+
### ⚠ BREAKING CHANGES
|
|
20
|
+
|
|
21
|
+
- **blockchain-metadata:** export from `module` (#911)
|
|
22
|
+
|
|
23
|
+
### Code Refactoring
|
|
24
|
+
|
|
25
|
+
- **blockchain-metadata:** export from `module` ([#911](https://github.com/ExodusMovement/exodus-hydra/issues/911)) ([4061ee9](https://github.com/ExodusMovement/exodus-hydra/commit/4061ee96c11cabd841e51a96daf302cca1240fbc))
|
|
26
|
+
|
|
6
27
|
## [4.0.0](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/balances@3.0.0...@exodus/balances@4.0.0) (2023-02-02)
|
|
7
28
|
|
|
8
29
|
### ⚠ BREAKING CHANGES
|
package/atoms/index.js
ADDED
package/module/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { isNumberUnit } from '@exodus/currency'
|
|
2
2
|
import { TxSet } from '@exodus/models'
|
|
3
3
|
import ExodusModule from '@exodus/module'
|
|
4
|
-
import { cloneDeepWith,
|
|
4
|
+
import { cloneDeepWith, isEmpty, merge, set, zipObject } from 'lodash'
|
|
5
|
+
import { difference, flattenToPaths } from '@exodus/basic-utils'
|
|
5
6
|
import makeConcurrent from 'make-concurrent'
|
|
6
7
|
import getConfirmedBalance from './confirmed-balance'
|
|
7
|
-
import { assetSourceEntries } from '@exodus/blockchain-metadata'
|
|
8
8
|
|
|
9
9
|
const cloneBalances = (balances) =>
|
|
10
10
|
cloneDeepWith(balances, (val) => {
|
|
@@ -23,11 +23,12 @@ class Balances extends ExodusModule {
|
|
|
23
23
|
#assetsModule
|
|
24
24
|
#blockchainMetadata
|
|
25
25
|
#balanceFields
|
|
26
|
-
#walletAccounts =
|
|
26
|
+
#walletAccounts = [] // string[]
|
|
27
27
|
#ready = false
|
|
28
28
|
|
|
29
29
|
#oldBalances = Object.create(null)
|
|
30
30
|
#balances = Object.create(null)
|
|
31
|
+
#balancesAtom
|
|
31
32
|
|
|
32
33
|
constructor({
|
|
33
34
|
assetsModule,
|
|
@@ -35,12 +36,14 @@ class Balances extends ExodusModule {
|
|
|
35
36
|
walletAccountsAtom,
|
|
36
37
|
config: { balanceFields },
|
|
37
38
|
logger,
|
|
39
|
+
balancesAtom,
|
|
38
40
|
}) {
|
|
39
41
|
super({ name: MODULE_ID, logger })
|
|
40
42
|
|
|
41
43
|
this.#assetsModule = assetsModule
|
|
42
44
|
this.#blockchainMetadata = blockchainMetadata
|
|
43
45
|
this.#balanceFields = balanceFields
|
|
46
|
+
this.#balancesAtom = balancesAtom
|
|
44
47
|
|
|
45
48
|
const shareQueue =
|
|
46
49
|
(fn) =>
|
|
@@ -64,10 +67,14 @@ class Balances extends ExodusModule {
|
|
|
64
67
|
})
|
|
65
68
|
|
|
66
69
|
blockchainMetadata.on('account-states-update', (payload) =>
|
|
67
|
-
|
|
70
|
+
flattenToPaths(payload).forEach(([walletAccount, assetName, accountState]) =>
|
|
71
|
+
this.#handleAccountStateUpdate({ walletAccount, assetName, accountState })
|
|
72
|
+
)
|
|
68
73
|
)
|
|
69
74
|
blockchainMetadata.on('tx-logs-update', (payload) =>
|
|
70
|
-
|
|
75
|
+
flattenToPaths(payload).forEach(([walletAccount, assetName, txLog]) =>
|
|
76
|
+
this.#handleTxLogUpdate({ walletAccount, assetName, txLog })
|
|
77
|
+
)
|
|
71
78
|
)
|
|
72
79
|
})
|
|
73
80
|
|
|
@@ -185,7 +192,7 @@ class Balances extends ExodusModule {
|
|
|
185
192
|
this._logger.log('recomputing after adding walletAccounts', added)
|
|
186
193
|
this.#recompute({ walletAccounts: added })
|
|
187
194
|
} else {
|
|
188
|
-
this
|
|
195
|
+
this.#flush()
|
|
189
196
|
}
|
|
190
197
|
}
|
|
191
198
|
|
|
@@ -264,7 +271,7 @@ class Balances extends ExodusModule {
|
|
|
264
271
|
})
|
|
265
272
|
|
|
266
273
|
const changes = Object.create(null)
|
|
267
|
-
for (
|
|
274
|
+
for (const subAssetName in newBalances) {
|
|
268
275
|
const { currency } = this.#getAsset(subAssetName)
|
|
269
276
|
const newAssetBalances = newBalances?.[subAssetName]
|
|
270
277
|
// e.g. totalBalance or spendableBalance
|
|
@@ -284,23 +291,23 @@ class Balances extends ExodusModule {
|
|
|
284
291
|
}
|
|
285
292
|
}
|
|
286
293
|
|
|
287
|
-
if (!isEmpty(changes)) this
|
|
294
|
+
if (!isEmpty(changes)) this.#flush({ changes })
|
|
288
295
|
}
|
|
289
296
|
|
|
290
297
|
#recompute = async ({ walletAccounts = this.#walletAccounts } = {}) => {
|
|
291
298
|
this.#reset({ walletAccounts })
|
|
292
299
|
await Promise.all(walletAccounts.map((walletAccount) => this.#load({ walletAccount })))
|
|
293
|
-
this
|
|
300
|
+
this.#flush()
|
|
294
301
|
}
|
|
295
302
|
|
|
296
|
-
|
|
303
|
+
#flush = ({ changes } = {}) => {
|
|
297
304
|
const oldBalances = this.#oldBalances
|
|
298
305
|
const balances = cloneBalances(this.#balances)
|
|
299
306
|
|
|
300
307
|
if (Object.keys(balances).length === 0) return // wait till `load` finished
|
|
301
308
|
|
|
302
309
|
this._logger.log('balances updated')
|
|
303
|
-
this.
|
|
310
|
+
this.#balancesAtom.set({
|
|
304
311
|
balances,
|
|
305
312
|
oldBalances,
|
|
306
313
|
changes,
|
|
@@ -316,5 +323,12 @@ export default {
|
|
|
316
323
|
id: MODULE_ID,
|
|
317
324
|
type: 'module',
|
|
318
325
|
factory: createBalances,
|
|
319
|
-
dependencies: [
|
|
326
|
+
dependencies: [
|
|
327
|
+
'assetsModule',
|
|
328
|
+
'blockchainMetadata',
|
|
329
|
+
'walletAccountsAtom',
|
|
330
|
+
'config',
|
|
331
|
+
'logger',
|
|
332
|
+
'balancesAtom',
|
|
333
|
+
],
|
|
320
334
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exodus/balances",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"description": "balances",
|
|
5
5
|
"author": "Exodus Movement Inc",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -25,18 +25,18 @@
|
|
|
25
25
|
"url": "https://github.com/ExodusMovement/exodus-hydra/issues?q=is%3Aissue+is%3Aopen+label%3Abalances"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
+
"@exodus/atoms": "^3.5.0",
|
|
29
|
+
"@exodus/basic-utils": "^2.0.0",
|
|
28
30
|
"@exodus/currency": "^2.1.2",
|
|
29
31
|
"@exodus/module": "^1.1.0",
|
|
30
32
|
"lodash": "^4.17.21",
|
|
31
33
|
"make-concurrent": "^4.0.0"
|
|
32
34
|
},
|
|
33
35
|
"peerDependencies": {
|
|
34
|
-
"@exodus/blockchain-metadata": "
|
|
36
|
+
"@exodus/blockchain-metadata": "^6.0.0"
|
|
35
37
|
},
|
|
36
38
|
"devDependencies": {
|
|
37
|
-
"@exodus/
|
|
38
|
-
"@exodus/basic-utils": "^1.0.0",
|
|
39
|
-
"@exodus/blockchain-metadata": "*",
|
|
39
|
+
"@exodus/blockchain-metadata": "^8.0.0",
|
|
40
40
|
"@exodus/models": "^8.9.0",
|
|
41
41
|
"@exodus/storage-memory": "*",
|
|
42
42
|
"@exodus/wallet-accounts": "*",
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"events": "^3.3.0",
|
|
45
45
|
"jest": "^29.1.2"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "6ecd3fa19c39610e7147b2d060ea64709f6c8c6e"
|
|
48
48
|
}
|