viem 0.3.3 → 0.3.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 (132) hide show
  1. package/README.md +6 -0
  2. package/dist/cjs/actions/public/call.js +97 -10
  3. package/dist/cjs/actions/public/call.js.map +1 -1
  4. package/dist/cjs/actions/public/simulateContract.js +1 -0
  5. package/dist/cjs/actions/public/simulateContract.js.map +1 -1
  6. package/dist/cjs/chains.js +1 -24
  7. package/dist/cjs/chains.js.map +1 -1
  8. package/dist/cjs/clients/createPublicClient.js +2 -1
  9. package/dist/cjs/clients/createPublicClient.js.map +1 -1
  10. package/dist/cjs/clients/transports/fallback.js +1 -1
  11. package/dist/cjs/clients/transports/fallback.js.map +1 -1
  12. package/dist/cjs/constants/contract.js +5 -0
  13. package/dist/cjs/constants/contract.js.map +1 -0
  14. package/dist/cjs/constants/index.js +3 -1
  15. package/dist/cjs/constants/index.js.map +1 -1
  16. package/dist/cjs/errors/chain.js +13 -1
  17. package/dist/cjs/errors/chain.js.map +1 -1
  18. package/dist/cjs/errors/contract.js +1 -1
  19. package/dist/cjs/errors/contract.js.map +1 -1
  20. package/dist/cjs/errors/encoding.js +13 -1
  21. package/dist/cjs/errors/encoding.js.map +1 -1
  22. package/dist/cjs/errors/index.js +5 -2
  23. package/dist/cjs/errors/index.js.map +1 -1
  24. package/dist/cjs/errors/version.js +1 -1
  25. package/dist/cjs/index.js +5 -4
  26. package/dist/cjs/index.js.map +1 -1
  27. package/dist/cjs/utils/encoding/fromBytes.js +29 -12
  28. package/dist/cjs/utils/encoding/fromBytes.js.map +1 -1
  29. package/dist/cjs/utils/encoding/fromHex.js +32 -10
  30. package/dist/cjs/utils/encoding/fromHex.js.map +1 -1
  31. package/dist/cjs/utils/encoding/toBytes.js +31 -15
  32. package/dist/cjs/utils/encoding/toBytes.js.map +1 -1
  33. package/dist/cjs/utils/encoding/toHex.js +31 -20
  34. package/dist/cjs/utils/encoding/toHex.js.map +1 -1
  35. package/dist/cjs/utils/errors/getContractError.js +7 -5
  36. package/dist/cjs/utils/errors/getContractError.js.map +1 -1
  37. package/dist/cjs/utils/promise/createBatchScheduler.js +47 -0
  38. package/dist/cjs/utils/promise/createBatchScheduler.js.map +1 -0
  39. package/dist/cjs/utils/promise/index.js +3 -1
  40. package/dist/cjs/utils/promise/index.js.map +1 -1
  41. package/dist/esm/actions/public/call.js +91 -4
  42. package/dist/esm/actions/public/call.js.map +1 -1
  43. package/dist/esm/actions/public/simulateContract.js +1 -0
  44. package/dist/esm/actions/public/simulateContract.js.map +1 -1
  45. package/dist/esm/clients/createPublicClient.js +2 -1
  46. package/dist/esm/clients/createPublicClient.js.map +1 -1
  47. package/dist/esm/clients/transports/fallback.js +1 -1
  48. package/dist/esm/clients/transports/fallback.js.map +1 -1
  49. package/dist/esm/constants/contract.js +2 -0
  50. package/dist/esm/constants/contract.js.map +1 -0
  51. package/dist/esm/constants/index.js +1 -0
  52. package/dist/esm/constants/index.js.map +1 -1
  53. package/dist/esm/errors/chain.js +11 -0
  54. package/dist/esm/errors/chain.js.map +1 -1
  55. package/dist/esm/errors/contract.js +1 -1
  56. package/dist/esm/errors/contract.js.map +1 -1
  57. package/dist/esm/errors/encoding.js +11 -0
  58. package/dist/esm/errors/encoding.js.map +1 -1
  59. package/dist/esm/errors/index.js +2 -2
  60. package/dist/esm/errors/index.js.map +1 -1
  61. package/dist/esm/errors/version.js +1 -1
  62. package/dist/esm/index.js +1 -1
  63. package/dist/esm/index.js.map +1 -1
  64. package/dist/esm/utils/encoding/fromBytes.js +30 -13
  65. package/dist/esm/utils/encoding/fromBytes.js.map +1 -1
  66. package/dist/esm/utils/encoding/fromHex.js +31 -10
  67. package/dist/esm/utils/encoding/fromHex.js.map +1 -1
  68. package/dist/esm/utils/encoding/toBytes.js +31 -15
  69. package/dist/esm/utils/encoding/toBytes.js.map +1 -1
  70. package/dist/esm/utils/encoding/toHex.js +28 -17
  71. package/dist/esm/utils/encoding/toHex.js.map +1 -1
  72. package/dist/esm/utils/errors/getContractError.js +7 -5
  73. package/dist/esm/utils/errors/getContractError.js.map +1 -1
  74. package/dist/esm/utils/promise/createBatchScheduler.js +43 -0
  75. package/dist/esm/utils/promise/createBatchScheduler.js.map +1 -0
  76. package/dist/esm/utils/promise/index.js +1 -0
  77. package/dist/esm/utils/promise/index.js.map +1 -1
  78. package/dist/types/actions/public/call.d.ts +1 -0
  79. package/dist/types/actions/public/call.d.ts.map +1 -1
  80. package/dist/types/actions/public/simulateContract.d.ts +1 -1
  81. package/dist/types/actions/public/simulateContract.d.ts.map +1 -1
  82. package/dist/types/clients/createPublicClient.d.ts +15 -3
  83. package/dist/types/clients/createPublicClient.d.ts.map +1 -1
  84. package/dist/types/constants/contract.d.ts +2 -0
  85. package/dist/types/constants/contract.d.ts.map +1 -0
  86. package/dist/types/constants/index.d.ts +1 -0
  87. package/dist/types/constants/index.d.ts.map +1 -1
  88. package/dist/types/errors/chain.d.ts +4 -0
  89. package/dist/types/errors/chain.d.ts.map +1 -1
  90. package/dist/types/errors/encoding.d.ts +7 -0
  91. package/dist/types/errors/encoding.d.ts.map +1 -1
  92. package/dist/types/errors/index.d.ts +2 -2
  93. package/dist/types/errors/index.d.ts.map +1 -1
  94. package/dist/types/errors/version.d.ts +1 -1
  95. package/dist/types/index.d.ts +1 -1
  96. package/dist/types/index.d.ts.map +1 -1
  97. package/dist/types/types/eip1193.d.ts +1 -1
  98. package/dist/types/types/eip1193.d.ts.map +1 -1
  99. package/dist/types/utils/encoding/fromBytes.d.ts +95 -10
  100. package/dist/types/utils/encoding/fromBytes.d.ts.map +1 -1
  101. package/dist/types/utils/encoding/fromHex.d.ts +122 -12
  102. package/dist/types/utils/encoding/fromHex.d.ts.map +1 -1
  103. package/dist/types/utils/encoding/toBytes.d.ts +113 -9
  104. package/dist/types/utils/encoding/toBytes.d.ts.map +1 -1
  105. package/dist/types/utils/encoding/toHex.d.ts +120 -10
  106. package/dist/types/utils/encoding/toHex.d.ts.map +1 -1
  107. package/dist/types/utils/errors/getContractError.d.ts.map +1 -1
  108. package/dist/types/utils/promise/createBatchScheduler.d.ts +15 -0
  109. package/dist/types/utils/promise/createBatchScheduler.d.ts.map +1 -0
  110. package/dist/types/utils/promise/index.d.ts +1 -0
  111. package/dist/types/utils/promise/index.d.ts.map +1 -1
  112. package/package.json +1 -1
  113. package/src/actions/public/call.ts +141 -7
  114. package/src/actions/public/simulateContract.ts +2 -1
  115. package/src/clients/createPublicClient.ts +17 -1
  116. package/src/clients/transports/fallback.ts +1 -1
  117. package/src/constants/contract.ts +1 -0
  118. package/src/constants/index.ts +2 -0
  119. package/src/errors/chain.ts +8 -0
  120. package/src/errors/contract.ts +1 -1
  121. package/src/errors/encoding.ts +9 -0
  122. package/src/errors/index.ts +2 -0
  123. package/src/errors/version.ts +1 -1
  124. package/src/index.ts +1 -0
  125. package/src/types/eip1193.ts +1 -1
  126. package/src/utils/encoding/fromBytes.ts +147 -18
  127. package/src/utils/encoding/fromHex.ts +162 -19
  128. package/src/utils/encoding/toBytes.ts +148 -18
  129. package/src/utils/encoding/toHex.ts +151 -26
  130. package/src/utils/errors/getContractError.ts +9 -5
  131. package/src/utils/promise/createBatchScheduler.ts +82 -0
  132. package/src/utils/promise/index.ts +1 -0
@@ -0,0 +1,82 @@
1
+ type Resolved<TReturnType extends readonly unknown[] = any> = [
2
+ result: TReturnType[number],
3
+ results: TReturnType,
4
+ ]
5
+
6
+ type PendingPromise<TReturnType extends readonly unknown[] = any> = {
7
+ resolve?: (data: Resolved<TReturnType>) => void
8
+ reject?: (reason?: unknown) => void
9
+ }
10
+
11
+ type SchedulerItem = { args: unknown; pendingPromise: PendingPromise }
12
+
13
+ const schedulerCache = new Map<number | string, SchedulerItem[]>()
14
+
15
+ export function createBatchScheduler<
16
+ TParameters,
17
+ TReturnType extends readonly unknown[],
18
+ >({
19
+ fn,
20
+ id,
21
+ shouldSplitBatch,
22
+ wait = 0,
23
+ }: {
24
+ fn: (args: TParameters[]) => Promise<TReturnType>
25
+ id: number | string
26
+ shouldSplitBatch?: (args: TParameters[]) => boolean
27
+ wait?: number
28
+ }) {
29
+ const exec = async () => {
30
+ const scheduler = getScheduler()
31
+ flush()
32
+
33
+ const args = scheduler.map(({ args }) => args)
34
+
35
+ if (args.length === 0) return
36
+
37
+ fn(args as TParameters[])
38
+ .then((data) => {
39
+ scheduler.forEach(({ pendingPromise }, i) =>
40
+ pendingPromise.resolve?.([data[i], data]),
41
+ )
42
+ })
43
+ .catch((err) => {
44
+ scheduler.forEach(({ pendingPromise }) => pendingPromise.reject?.(err))
45
+ })
46
+ }
47
+
48
+ const flush = () => schedulerCache.delete(id)
49
+
50
+ const getBatchedArgs = () =>
51
+ getScheduler().map(({ args }) => args) as TParameters[]
52
+
53
+ const getScheduler = () => schedulerCache.get(id) || []
54
+
55
+ const setScheduler = (item: SchedulerItem) =>
56
+ schedulerCache.set(id, [...getScheduler(), item])
57
+
58
+ return {
59
+ flush,
60
+ async schedule(args: TParameters) {
61
+ const pendingPromise: PendingPromise<TReturnType> = {}
62
+ const promise = new Promise<Resolved<TReturnType>>((resolve, reject) => {
63
+ pendingPromise.resolve = resolve
64
+ pendingPromise.reject = reject
65
+ })
66
+
67
+ const split = shouldSplitBatch?.([...getBatchedArgs(), args])
68
+
69
+ if (split) exec()
70
+
71
+ const hasActiveScheduler = getScheduler().length > 0
72
+ if (hasActiveScheduler) {
73
+ setScheduler({ args, pendingPromise })
74
+ return promise
75
+ }
76
+
77
+ setScheduler({ args, pendingPromise })
78
+ setTimeout(exec, wait)
79
+ return promise
80
+ },
81
+ }
82
+ }
@@ -1,3 +1,4 @@
1
+ export { createBatchScheduler } from './createBatchScheduler.js'
1
2
  export { getCache, withCache } from './withCache.js'
2
3
  export { withRetry } from './withRetry.js'
3
4
  export { withTimeout } from './withTimeout.js'