dequanto 0.2.25 → 0.2.29

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 (72) hide show
  1. package/lib/cjs/class/PackedRanges.js +422 -20
  2. package/lib/cjs/class/PackedRanges.js.map +1 -1
  3. package/lib/cjs/clients/Web3Client.js +2 -1
  4. package/lib/cjs/clients/Web3Client.js.map +1 -1
  5. package/lib/cjs/contracts/ContractReader.js +24 -1
  6. package/lib/cjs/contracts/ContractReader.js.map +1 -1
  7. package/lib/cjs/contracts/ContractWriter.js +1 -1
  8. package/lib/cjs/contracts/ContractWriter.js.map +1 -1
  9. package/lib/cjs/hardhat/HardhatProvider.js +7 -0
  10. package/lib/cjs/hardhat/HardhatProvider.js.map +1 -1
  11. package/lib/cjs/indexer/EventsIndexer.js +143 -98
  12. package/lib/cjs/indexer/EventsIndexer.js.map +1 -1
  13. package/lib/cjs/rpc/RpcContract.js +21 -13
  14. package/lib/cjs/rpc/RpcContract.js.map +1 -1
  15. package/lib/cjs/safe/GnosisSafeHandler.js +1 -1
  16. package/lib/cjs/safe/GnosisSafeHandler.js.map +1 -1
  17. package/lib/cjs/safe/transport/SafeServiceTransport.js +13 -3
  18. package/lib/cjs/safe/transport/SafeServiceTransport.js.map +1 -1
  19. package/lib/cjs/txs/TxWriter.js +5 -2
  20. package/lib/cjs/txs/TxWriter.js.map +1 -1
  21. package/lib/cjs/utils/$contract.js +7 -2
  22. package/lib/cjs/utils/$contract.js.map +1 -1
  23. package/lib/cjs/utils/$number.js +24 -0
  24. package/lib/cjs/utils/$number.js.map +1 -1
  25. package/lib/esm/class/PackedRanges.js.map +1 -1
  26. package/lib/esm/class/PackedRanges.mjs +422 -20
  27. package/lib/esm/clients/Web3Client.js.map +1 -1
  28. package/lib/esm/clients/Web3Client.mjs +2 -1
  29. package/lib/esm/contracts/ContractReader.js.map +1 -1
  30. package/lib/esm/contracts/ContractReader.mjs +24 -1
  31. package/lib/esm/contracts/ContractWriter.js.map +1 -1
  32. package/lib/esm/contracts/ContractWriter.mjs +1 -1
  33. package/lib/esm/hardhat/HardhatProvider.js.map +1 -1
  34. package/lib/esm/hardhat/HardhatProvider.mjs +7 -0
  35. package/lib/esm/indexer/EventsIndexer.js.map +1 -1
  36. package/lib/esm/indexer/EventsIndexer.mjs +143 -98
  37. package/lib/esm/rpc/RpcContract.js.map +1 -1
  38. package/lib/esm/rpc/RpcContract.mjs +21 -13
  39. package/lib/esm/safe/GnosisSafeHandler.js.map +1 -1
  40. package/lib/esm/safe/GnosisSafeHandler.mjs +1 -1
  41. package/lib/esm/safe/transport/SafeServiceTransport.js.map +1 -1
  42. package/lib/esm/safe/transport/SafeServiceTransport.mjs +13 -3
  43. package/lib/esm/txs/TxWriter.js.map +1 -1
  44. package/lib/esm/txs/TxWriter.mjs +5 -2
  45. package/lib/esm/utils/$contract.js.map +1 -1
  46. package/lib/esm/utils/$contract.mjs +7 -2
  47. package/lib/esm/utils/$number.js.map +1 -1
  48. package/lib/esm/utils/$number.mjs +24 -0
  49. package/lib/types/class/PackedRanges.d.ts +224 -0
  50. package/lib/types/clients/Web3Client.d.ts +4 -0
  51. package/lib/types/contracts/ContractReader.d.ts +1 -0
  52. package/lib/types/indexer/EventsIndexer.d.ts +5 -1
  53. package/lib/types/indexer/storage/interfaces.d.ts +1 -0
  54. package/lib/types/rpc/RpcContract.d.ts +16 -0
  55. package/lib/types/safe/GnosisSafeHandler.d.ts +1 -0
  56. package/lib/types/safe/transport/ISafeServiceTransport.d.ts +1 -0
  57. package/lib/types/utils/$contract.d.ts +1 -0
  58. package/package.json +1 -1
  59. package/src/class/PackedRanges.ts +447 -27
  60. package/src/clients/Web3Client.ts +6 -1
  61. package/src/contracts/ContractReader.ts +30 -3
  62. package/src/contracts/ContractWriter.ts +1 -1
  63. package/src/hardhat/HardhatProvider.ts +9 -0
  64. package/src/indexer/EventsIndexer.ts +173 -105
  65. package/src/indexer/storage/interfaces.ts +1 -0
  66. package/src/rpc/RpcContract.ts +34 -15
  67. package/src/safe/GnosisSafeHandler.ts +1 -1
  68. package/src/safe/transport/ISafeServiceTransport.ts +5 -1
  69. package/src/safe/transport/SafeServiceTransport.ts +15 -4
  70. package/src/txs/TxWriter.ts +6 -2
  71. package/src/utils/$contract.ts +7 -2
  72. package/src/utils/$number.ts +36 -10
@@ -4,7 +4,7 @@ import { $bigint } from './$bigint';
4
4
 
5
5
  export namespace $number {
6
6
 
7
- export function div (a: number, b: number, digits: number = 5) {
7
+ export function div(a: number, b: number, digits: number = 5) {
8
8
  let r = 10 ** digits;
9
9
  return Math.round(a * r / b) / r;
10
10
  }
@@ -14,7 +14,7 @@ export namespace $number {
14
14
  * @param min: includes
15
15
  * @param max: excludes
16
16
  */
17
- export function random(min: number, max: number) {
17
+ export function random(min: number, max: number) {
18
18
  $require.True(min < max, `Random Int expects max to be greater then min: ${min}..${max}`);
19
19
  return Math.random() * (max - min) + min;
20
20
  }
@@ -40,7 +40,7 @@ export namespace $number {
40
40
  let val = 10 ** Math.max(decimals, decimalsFromNumber);
41
41
  return randomInt(min * val, max * val) / val;
42
42
  }
43
- export function parse (mix: string | number) {
43
+ export function parse(mix: string | number) {
44
44
  if (!mix) return 0;
45
45
  if (typeof mix === 'number') {
46
46
  return mix;
@@ -70,7 +70,7 @@ export namespace $number {
70
70
  }
71
71
  return value;
72
72
  }
73
- export function round (mix: string | number, digits: number = 0, round: 'ceil' | 'round' | 'floor' = 'round') {
73
+ export function round(mix: string | number, digits: number = 0, round: 'ceil' | 'round' | 'floor' = 'round') {
74
74
  let number = typeof mix === 'string' ? Number(mix) : mix;
75
75
  if (isNaN(number)) {
76
76
  return number;
@@ -86,7 +86,7 @@ export namespace $number {
86
86
  }
87
87
  return Math[round](val) / factor;
88
88
  }
89
- export function parseOptional (mix, default_ = null) {
89
+ export function parseOptional(mix, default_ = null) {
90
90
  if (mix == null) {
91
91
  return default_;
92
92
  }
@@ -108,8 +108,11 @@ export namespace $number {
108
108
  * - abbreviation: Format number to *B, *M, *K
109
109
  * - maximumFractionDigits: Parameter for toLocaleString
110
110
  */
111
- export function format (num: number, options?: { abbreviation?: boolean, maximumFractionDigits?: number }) {
111
+ export function format(num: number, options?: { abbreviation?: boolean, maximumFractionDigits?: number }) {
112
112
  if (options?.abbreviation) {
113
+ if (Math.abs(num) < 0.01) {
114
+ return humanizeSmallFloat(num);
115
+ }
113
116
  const K = 10 ** 3;
114
117
  const M = 10 ** 6;
115
118
  const B = 10 ** 9;
@@ -130,16 +133,39 @@ export namespace $number {
130
133
  });
131
134
  }
132
135
 
133
- export function humanize (num: bigint, decimals: number)
134
- export function humanize (num: number)
135
- export function humanize (mix: number | bigint, decimals: number = 18) {
136
+ export function humanize(num: bigint, decimals: number)
137
+ export function humanize(num: number)
138
+ export function humanize(mix: number | bigint, decimals: number = 18) {
136
139
  if (typeof mix === 'bigint') {
137
140
  mix = $bigint.toEther(mix, decimals);
138
141
  }
139
142
  return format(mix, { abbreviation: true });
140
143
  }
141
144
 
142
- export function toHex (num: string | number | TEth.Hex | bigint): TEth.Hex {
145
+ export function toHex(num: string | number | TEth.Hex | bigint): TEth.Hex {
143
146
  return (`0x` + Number(num).toString(16)) as TEth.Hex;
144
147
  }
148
+
149
+ const subscriptDigits = '₀₁₂₃₄₅₆₇₈₉';
150
+ function humanizeSmallFloat(value: number, maxDigits = 4): string {
151
+ if (!Number.isFinite(value)) return String(value);
152
+ if (value === 0) return '0';
153
+
154
+ const sign = value < 0 ? '-' : '';
155
+ const abs = Math.abs(value);
156
+
157
+ const str = abs.toLocaleString('en-US', {
158
+ useGrouping: false,
159
+ maximumSignificantDigits: 20,
160
+ });
161
+
162
+ // Example: 0.0000005 -> zeros = 6, rest = '5'
163
+ const match = str.match(/^0\.(0{4,})(\d+)/);
164
+ if (!match) return format(value, { maximumFractionDigits: 5 });
165
+
166
+ const zeroCount = match[1].length;
167
+ const significant = match[2].slice(0, maxDigits);
168
+ const zeroCountSub = subscriptDigits[zeroCount];
169
+ return `${sign}0.0${zeroCountSub}${significant}`;
170
+ }
145
171
  }