@subwallet/extension-base 1.0.7-2 → 1.0.9-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 (57) hide show
  1. package/background/KoniTypes.d.ts +3 -1
  2. package/background/KoniTypes.js +1 -0
  3. package/background/errors/TransactionError.js +5 -1
  4. package/cjs/background/KoniTypes.js +1 -0
  5. package/cjs/background/errors/TransactionError.js +4 -0
  6. package/cjs/constants/index.js +6 -3
  7. package/cjs/koni/api/dotsama/balance.js +5 -2
  8. package/cjs/koni/api/dotsama/crowdloan.js +1 -1
  9. package/cjs/koni/api/dotsama/transfer.js +19 -5
  10. package/cjs/koni/api/tokens/wasm/index.js +7 -0
  11. package/cjs/koni/api/xcm/polkadotXcm.js +18 -37
  12. package/cjs/koni/api/xcm/utils.js +78 -11
  13. package/cjs/koni/api/xcm/xTokens.js +4 -33
  14. package/cjs/koni/api/xcm/xcmPallet.js +4 -36
  15. package/cjs/koni/background/handlers/Extension.js +83 -25
  16. package/cjs/koni/background/handlers/State.js +1 -1
  17. package/cjs/packageInfo.js +1 -1
  18. package/cjs/services/chain-service/constants.js +9 -7
  19. package/cjs/services/chain-service/index.js +19 -15
  20. package/cjs/services/chain-service/utils.js +1 -5
  21. package/cjs/services/history-service/constants/index.js +13 -0
  22. package/cjs/services/history-service/subsquid-multi-chain-history.js +38 -3
  23. package/cjs/services/transaction-service/helpers/index.js +45 -2
  24. package/cjs/services/transaction-service/index.js +58 -24
  25. package/cjs/utils/eth/parseTransaction/index.js +69 -59
  26. package/cjs/utils/number.js +112 -0
  27. package/constants/index.d.ts +1 -0
  28. package/constants/index.js +1 -0
  29. package/koni/api/dotsama/balance.js +4 -2
  30. package/koni/api/dotsama/crowdloan.js +2 -2
  31. package/koni/api/dotsama/transfer.js +19 -5
  32. package/koni/api/tokens/wasm/index.js +7 -0
  33. package/koni/api/xcm/polkadotXcm.js +20 -39
  34. package/koni/api/xcm/utils.d.ts +36 -3
  35. package/koni/api/xcm/utils.js +72 -11
  36. package/koni/api/xcm/xTokens.js +6 -35
  37. package/koni/api/xcm/xcmPallet.js +5 -35
  38. package/koni/background/handlers/Extension.js +82 -24
  39. package/koni/background/handlers/State.js +2 -2
  40. package/package.json +18 -8
  41. package/packageInfo.js +1 -1
  42. package/services/chain-service/constants.d.ts +2 -0
  43. package/services/chain-service/constants.js +9 -7
  44. package/services/chain-service/index.js +13 -8
  45. package/services/chain-service/utils.d.ts +0 -1
  46. package/services/chain-service/utils.js +1 -4
  47. package/services/history-service/constants/index.d.ts +2 -0
  48. package/services/history-service/constants/index.js +5 -0
  49. package/services/history-service/subsquid-multi-chain-history.d.ts +1 -1
  50. package/services/history-service/subsquid-multi-chain-history.js +36 -3
  51. package/services/transaction-service/helpers/index.d.ts +2 -0
  52. package/services/transaction-service/helpers/index.js +42 -0
  53. package/services/transaction-service/index.js +54 -20
  54. package/services/transaction-service/types.d.ts +2 -2
  55. package/utils/eth/parseTransaction/index.js +69 -59
  56. package/utils/number.d.ts +9 -0
  57. package/utils/number.js +100 -0
@@ -0,0 +1,9 @@
1
+ import BigNumber from 'bignumber.js';
2
+ export declare const BN_TEN: BigNumber;
3
+ export interface NumberFormatter {
4
+ (input: string, metadata?: Record<string, number>): string;
5
+ }
6
+ export declare const balanceFormatter: NumberFormatter;
7
+ export declare const PREDEFINED_FORMATTER: Record<string, NumberFormatter>;
8
+ export declare const toBNString: (input: string | number | BigNumber, decimal: number) => string;
9
+ export declare const formatNumber: (input: string | number | BigNumber, decimal: number, formatter: NumberFormatter, metadata?: Record<string, number>) => string;
@@ -0,0 +1,100 @@
1
+ // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import BigNumber from 'bignumber.js';
5
+ export const BN_TEN = new BigNumber(10);
6
+ // Clear zero from end, use with decimal only
7
+ const clearZero = result => {
8
+ let index = result.length - 1;
9
+ while (result[index] === '0') {
10
+ result = result.slice(0, index);
11
+ index--;
12
+ }
13
+ return result;
14
+ };
15
+ const NUM_1T = new BigNumber(1e12);
16
+ const TLIM = new BigNumber(1e17);
17
+ const NUM_1B = new BigNumber(1e9);
18
+ const BLIM = new BigNumber(1e14);
19
+ const NUM_1M = new BigNumber(1e6);
20
+ const NUM_100M = new BigNumber(1e8);
21
+ export const balanceFormatter = (input, metadata) => {
22
+ const absGteOne = new BigNumber(input).abs().gte(1);
23
+ const minNumberFormat = (metadata === null || metadata === void 0 ? void 0 : metadata.minNumberFormat) || 2;
24
+ const maxNumberFormat = (metadata === null || metadata === void 0 ? void 0 : metadata.maxNumberFormat) || 6;
25
+ const [int, decimal = '0'] = input.split('.');
26
+ let _decimal = '';
27
+ if (absGteOne) {
28
+ const intNumber = new BigNumber(int);
29
+ const max = BN_TEN.pow(maxNumberFormat);
30
+
31
+ // If count of number in integer part greater or equal maxNumberFormat, do not show decimal
32
+ if (intNumber.gte(max)) {
33
+ if (intNumber.gte(NUM_100M)) {
34
+ if (intNumber.gte(BLIM)) {
35
+ if (intNumber.gte(TLIM)) {
36
+ return `${intNumber.dividedBy(NUM_1T).toFixed(2)} T`;
37
+ }
38
+ return `${intNumber.dividedBy(NUM_1B).toFixed(2)} B`;
39
+ }
40
+ return `${intNumber.dividedBy(NUM_1M).toFixed(2)} M`;
41
+ }
42
+ return int;
43
+ }
44
+
45
+ // Get only minNumberFormat number at decimal
46
+ if (decimal.length <= minNumberFormat) {
47
+ _decimal = decimal;
48
+ } else {
49
+ _decimal = decimal.slice(0, minNumberFormat);
50
+ }
51
+
52
+ // Clear zero number for decimal
53
+ _decimal = clearZero(_decimal);
54
+ } else {
55
+ // Index of cursor
56
+ let index = 0;
57
+
58
+ // Count of not zero number in decimal
59
+ let current = 0;
60
+
61
+ // Find a not zero number in decimal
62
+ let metNotZero = false;
63
+
64
+ // Get at least minNumberFormat number not 0 from index 0
65
+ // If count of 0 number at prefix greater or equal maxNumberFormat should stop and return 0
66
+
67
+ // current === minNumberFormat: get enough number
68
+ // index === decimal.length: end of decimal
69
+ // index === maxNumberFormat: reach limit of 0 number at prefix
70
+ while (current < minNumberFormat && index < decimal.length && (index < maxNumberFormat || metNotZero)) {
71
+ const _char = decimal[index];
72
+ _decimal += _char;
73
+ index++;
74
+ if (_char !== '0') {
75
+ metNotZero = true;
76
+ }
77
+ if (metNotZero) {
78
+ current++;
79
+ }
80
+ }
81
+
82
+ // Clear zero number for decimal
83
+ _decimal = clearZero(_decimal);
84
+ }
85
+ if (_decimal) {
86
+ return `${int}.${_decimal}`;
87
+ }
88
+ return int;
89
+ };
90
+ export const PREDEFINED_FORMATTER = {
91
+ balance: balanceFormatter
92
+ };
93
+ export const toBNString = (input, decimal) => {
94
+ const raw = new BigNumber(input);
95
+ return raw.multipliedBy(BN_TEN.pow(decimal)).toFixed();
96
+ };
97
+ export const formatNumber = (input, decimal, formatter, metadata) => {
98
+ const raw = new BigNumber(input).dividedBy(BN_TEN.pow(decimal)).toFixed();
99
+ return formatter(raw, metadata);
100
+ };