viem 2.55.2 → 2.55.4

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 (86) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/_cjs/chains/definitions/mainnet.js +1 -1
  3. package/_cjs/chains/definitions/mainnet.js.map +1 -1
  4. package/_cjs/chains/definitions/robinhood.js +1 -0
  5. package/_cjs/chains/definitions/robinhood.js.map +1 -1
  6. package/_cjs/chains/definitions/xLayer.js +1 -0
  7. package/_cjs/chains/definitions/xLayer.js.map +1 -1
  8. package/_cjs/errors/version.js +1 -1
  9. package/_cjs/tempo/chainConfig.js +9 -0
  10. package/_cjs/tempo/chainConfig.js.map +1 -1
  11. package/_cjs/utils/abi/decodeAbiParameters.js +1 -2
  12. package/_cjs/utils/abi/decodeAbiParameters.js.map +1 -1
  13. package/_cjs/utils/unit/Value.js +118 -0
  14. package/_cjs/utils/unit/Value.js.map +1 -0
  15. package/_cjs/utils/unit/formatEther.js +2 -3
  16. package/_cjs/utils/unit/formatEther.js.map +1 -1
  17. package/_cjs/utils/unit/formatGwei.js +2 -3
  18. package/_cjs/utils/unit/formatGwei.js.map +1 -1
  19. package/_cjs/utils/unit/formatUnits.js +2 -11
  20. package/_cjs/utils/unit/formatUnits.js.map +1 -1
  21. package/_cjs/utils/unit/parseEther.js +2 -3
  22. package/_cjs/utils/unit/parseEther.js.map +1 -1
  23. package/_cjs/utils/unit/parseGwei.js +2 -3
  24. package/_cjs/utils/unit/parseGwei.js.map +1 -1
  25. package/_cjs/utils/unit/parseUnits.js +2 -34
  26. package/_cjs/utils/unit/parseUnits.js.map +1 -1
  27. package/_esm/chains/definitions/mainnet.js +1 -1
  28. package/_esm/chains/definitions/mainnet.js.map +1 -1
  29. package/_esm/chains/definitions/robinhood.js +1 -0
  30. package/_esm/chains/definitions/robinhood.js.map +1 -1
  31. package/_esm/chains/definitions/xLayer.js +1 -0
  32. package/_esm/chains/definitions/xLayer.js.map +1 -1
  33. package/_esm/errors/version.js +1 -1
  34. package/_esm/tempo/chainConfig.js +10 -0
  35. package/_esm/tempo/chainConfig.js.map +1 -1
  36. package/_esm/utils/abi/decodeAbiParameters.js +1 -2
  37. package/_esm/utils/abi/decodeAbiParameters.js.map +1 -1
  38. package/_esm/utils/unit/Value.js +240 -0
  39. package/_esm/utils/unit/Value.js.map +1 -0
  40. package/_esm/utils/unit/formatEther.js +2 -3
  41. package/_esm/utils/unit/formatEther.js.map +1 -1
  42. package/_esm/utils/unit/formatGwei.js +2 -3
  43. package/_esm/utils/unit/formatGwei.js.map +1 -1
  44. package/_esm/utils/unit/formatUnits.js +2 -11
  45. package/_esm/utils/unit/formatUnits.js.map +1 -1
  46. package/_esm/utils/unit/parseEther.js +2 -3
  47. package/_esm/utils/unit/parseEther.js.map +1 -1
  48. package/_esm/utils/unit/parseGwei.js +2 -3
  49. package/_esm/utils/unit/parseGwei.js.map +1 -1
  50. package/_esm/utils/unit/parseUnits.js +2 -36
  51. package/_esm/utils/unit/parseUnits.js.map +1 -1
  52. package/_types/chains/definitions/mainnet.d.ts +1 -1
  53. package/_types/chains/definitions/robinhood.d.ts +1 -1
  54. package/_types/chains/definitions/robinhood.d.ts.map +1 -1
  55. package/_types/chains/definitions/xLayer.d.ts +1 -1
  56. package/_types/chains/definitions/xLayer.d.ts.map +1 -1
  57. package/_types/errors/version.d.ts +1 -1
  58. package/_types/tempo/chainConfig.d.ts.map +1 -1
  59. package/_types/utils/abi/decodeAbiParameters.d.ts +1 -2
  60. package/_types/utils/abi/decodeAbiParameters.d.ts.map +1 -1
  61. package/_types/utils/unit/Value.d.ts +115 -0
  62. package/_types/utils/unit/Value.d.ts.map +1 -0
  63. package/_types/utils/unit/formatEther.d.ts +1 -1
  64. package/_types/utils/unit/formatEther.d.ts.map +1 -1
  65. package/_types/utils/unit/formatGwei.d.ts +1 -1
  66. package/_types/utils/unit/formatGwei.d.ts.map +1 -1
  67. package/_types/utils/unit/formatUnits.d.ts.map +1 -1
  68. package/_types/utils/unit/parseEther.d.ts +1 -1
  69. package/_types/utils/unit/parseEther.d.ts.map +1 -1
  70. package/_types/utils/unit/parseGwei.d.ts +1 -1
  71. package/_types/utils/unit/parseGwei.d.ts.map +1 -1
  72. package/_types/utils/unit/parseUnits.d.ts.map +1 -1
  73. package/chains/definitions/mainnet.ts +1 -1
  74. package/chains/definitions/robinhood.ts +1 -0
  75. package/chains/definitions/xLayer.ts +1 -0
  76. package/errors/version.ts +1 -1
  77. package/package.json +1 -1
  78. package/tempo/chainConfig.ts +10 -0
  79. package/utils/abi/decodeAbiParameters.ts +1 -3
  80. package/utils/unit/Value.ts +278 -0
  81. package/utils/unit/formatEther.ts +3 -4
  82. package/utils/unit/formatGwei.ts +3 -4
  83. package/utils/unit/formatUnits.ts +2 -15
  84. package/utils/unit/parseEther.ts +3 -4
  85. package/utils/unit/parseGwei.ts +3 -4
  86. package/utils/unit/parseUnits.ts +2 -40
@@ -1,5 +1,5 @@
1
- import { InvalidDecimalNumberError } from '../../errors/unit.js'
2
1
  import type { ErrorType } from '../../errors/utils.js'
2
+ import * as Value from './Value.js'
3
3
 
4
4
  export type ParseUnitsErrorType = ErrorType
5
5
 
@@ -15,43 +15,5 @@ export type ParseUnitsErrorType = ErrorType
15
15
  * // 420000000000n
16
16
  */
17
17
  export function parseUnits(value: string, decimals: number) {
18
- if (!/^(-?)([0-9]*)\.?([0-9]*)$/.test(value))
19
- throw new InvalidDecimalNumberError({ value })
20
-
21
- let [integer, fraction = '0'] = value.split('.')
22
-
23
- const negative = integer.startsWith('-')
24
- if (negative) integer = integer.slice(1)
25
-
26
- // trim trailing zeros.
27
- fraction = fraction.replace(/(0+)$/, '')
28
-
29
- // round off if the fraction is larger than the number of decimals.
30
- if (decimals === 0) {
31
- if (Math.round(Number(`.${fraction}`)) === 1)
32
- integer = `${BigInt(integer) + 1n}`
33
- fraction = ''
34
- } else if (fraction.length > decimals) {
35
- const [left, unit, right] = [
36
- fraction.slice(0, decimals - 1),
37
- fraction.slice(decimals - 1, decimals),
38
- fraction.slice(decimals),
39
- ]
40
-
41
- const rounded = Math.round(Number(`${unit}.${right}`))
42
- if (rounded > 9)
43
- fraction = `${BigInt(left) + BigInt(1)}0`.padStart(left.length + 1, '0')
44
- else fraction = `${left}${rounded}`
45
-
46
- if (fraction.length > decimals) {
47
- fraction = fraction.slice(1)
48
- integer = `${BigInt(integer) + 1n}`
49
- }
50
-
51
- fraction = fraction.slice(0, decimals)
52
- } else {
53
- fraction = fraction.padEnd(decimals, '0')
54
- }
55
-
56
- return BigInt(`${negative ? '-' : ''}${integer}${fraction}`)
18
+ return Value.from(value, decimals)
57
19
  }