viem 0.4.0-main.20230419T202802 → 0.4.0-main.20230419T213620
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/dist/cjs/actions/public/call.js +97 -10
- package/dist/cjs/actions/public/call.js.map +1 -1
- package/dist/cjs/actions/public/simulateContract.js +1 -0
- package/dist/cjs/actions/public/simulateContract.js.map +1 -1
- package/dist/cjs/chains.js +1 -24
- package/dist/cjs/chains.js.map +1 -1
- package/dist/cjs/clients/createPublicClient.js +2 -1
- package/dist/cjs/clients/createPublicClient.js.map +1 -1
- package/dist/cjs/clients/transports/fallback.js +1 -1
- package/dist/cjs/clients/transports/fallback.js.map +1 -1
- package/dist/cjs/constants/contract.js +5 -0
- package/dist/cjs/constants/contract.js.map +1 -0
- package/dist/cjs/constants/index.js +3 -1
- package/dist/cjs/constants/index.js.map +1 -1
- package/dist/cjs/errors/chain.js +13 -1
- package/dist/cjs/errors/chain.js.map +1 -1
- package/dist/cjs/errors/contract.js +1 -1
- package/dist/cjs/errors/contract.js.map +1 -1
- package/dist/cjs/errors/index.js +4 -2
- package/dist/cjs/errors/index.js.map +1 -1
- package/dist/cjs/errors/version.js +1 -1
- package/dist/cjs/index.js +5 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/errors/getContractError.js +7 -5
- package/dist/cjs/utils/errors/getContractError.js.map +1 -1
- package/dist/cjs/utils/promise/createBatchScheduler.js +47 -0
- package/dist/cjs/utils/promise/createBatchScheduler.js.map +1 -0
- package/dist/cjs/utils/promise/index.js +3 -1
- package/dist/cjs/utils/promise/index.js.map +1 -1
- package/dist/esm/actions/public/call.js +91 -4
- package/dist/esm/actions/public/call.js.map +1 -1
- package/dist/esm/actions/public/simulateContract.js +1 -0
- package/dist/esm/actions/public/simulateContract.js.map +1 -1
- package/dist/esm/clients/createPublicClient.js +2 -1
- package/dist/esm/clients/createPublicClient.js.map +1 -1
- package/dist/esm/clients/transports/fallback.js +1 -1
- package/dist/esm/clients/transports/fallback.js.map +1 -1
- package/dist/esm/constants/contract.js +2 -0
- package/dist/esm/constants/contract.js.map +1 -0
- package/dist/esm/constants/index.js +1 -0
- package/dist/esm/constants/index.js.map +1 -1
- package/dist/esm/errors/chain.js +11 -0
- package/dist/esm/errors/chain.js.map +1 -1
- package/dist/esm/errors/contract.js +1 -1
- package/dist/esm/errors/contract.js.map +1 -1
- package/dist/esm/errors/index.js +1 -1
- package/dist/esm/errors/index.js.map +1 -1
- package/dist/esm/errors/version.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/errors/getContractError.js +7 -5
- package/dist/esm/utils/errors/getContractError.js.map +1 -1
- package/dist/esm/utils/promise/createBatchScheduler.js +43 -0
- package/dist/esm/utils/promise/createBatchScheduler.js.map +1 -0
- package/dist/esm/utils/promise/index.js +1 -0
- package/dist/esm/utils/promise/index.js.map +1 -1
- package/dist/types/actions/public/call.d.ts +1 -0
- package/dist/types/actions/public/call.d.ts.map +1 -1
- package/dist/types/actions/public/simulateContract.d.ts +1 -1
- package/dist/types/actions/public/simulateContract.d.ts.map +1 -1
- package/dist/types/clients/createPublicClient.d.ts +15 -3
- package/dist/types/clients/createPublicClient.d.ts.map +1 -1
- package/dist/types/constants/contract.d.ts +2 -0
- package/dist/types/constants/contract.d.ts.map +1 -0
- package/dist/types/constants/index.d.ts +1 -0
- package/dist/types/constants/index.d.ts.map +1 -1
- package/dist/types/errors/chain.d.ts +4 -0
- package/dist/types/errors/chain.d.ts.map +1 -1
- package/dist/types/errors/index.d.ts +1 -1
- package/dist/types/errors/index.d.ts.map +1 -1
- package/dist/types/errors/version.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/eip1193.d.ts +1 -1
- package/dist/types/types/eip1193.d.ts.map +1 -1
- package/dist/types/utils/errors/getContractError.d.ts.map +1 -1
- package/dist/types/utils/promise/createBatchScheduler.d.ts +15 -0
- package/dist/types/utils/promise/createBatchScheduler.d.ts.map +1 -0
- package/dist/types/utils/promise/index.d.ts +1 -0
- package/dist/types/utils/promise/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actions/public/call.ts +141 -7
- package/src/actions/public/simulateContract.ts +2 -1
- package/src/clients/createPublicClient.ts +17 -1
- package/src/clients/transports/fallback.ts +1 -1
- package/src/constants/contract.ts +1 -0
- package/src/constants/index.ts +2 -0
- package/src/errors/chain.ts +8 -0
- package/src/errors/contract.ts +1 -1
- package/src/errors/index.ts +1 -0
- package/src/errors/version.ts +1 -1
- package/src/index.ts +1 -0
- package/src/types/eip1193.ts +1 -1
- package/src/utils/errors/getContractError.ts +9 -5
- package/src/utils/promise/createBatchScheduler.ts +82 -0
- package/src/utils/promise/index.ts +1 -0
package/src/errors/index.ts
CHANGED
package/src/errors/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = '0.4.0-main.
|
1
|
+
export const version = '0.4.0-main.20230419T213620'
|
package/src/index.ts
CHANGED
package/src/types/eip1193.ts
CHANGED
@@ -33,11 +33,12 @@ export function getContractError(
|
|
33
33
|
sender?: Address
|
34
34
|
},
|
35
35
|
) {
|
36
|
-
const { code, data, message } = (
|
36
|
+
const { code, data, message, shortMessage } = (
|
37
37
|
err instanceof RawContractError
|
38
38
|
? err
|
39
|
-
: err
|
40
|
-
err instanceof
|
39
|
+
: !(err.cause && 'data' in (err.cause as BaseError)) &&
|
40
|
+
(err instanceof CallExecutionError ||
|
41
|
+
err instanceof EstimateGasExecutionError)
|
41
42
|
? ((err.cause as BaseError)?.cause as BaseError)?.cause || {}
|
42
43
|
: err.cause || {}
|
43
44
|
) as RawContractError
|
@@ -45,12 +46,15 @@ export function getContractError(
|
|
45
46
|
let cause = err
|
46
47
|
if (err instanceof AbiDecodingZeroDataError) {
|
47
48
|
cause = new ContractFunctionZeroDataError({ functionName })
|
48
|
-
} else if (
|
49
|
+
} else if (
|
50
|
+
code === EXECUTION_REVERTED_ERROR_CODE &&
|
51
|
+
(data || message || shortMessage)
|
52
|
+
) {
|
49
53
|
cause = new ContractFunctionRevertedError({
|
50
54
|
abi,
|
51
55
|
data,
|
52
56
|
functionName,
|
53
|
-
message,
|
57
|
+
message: shortMessage ?? message,
|
54
58
|
})
|
55
59
|
}
|
56
60
|
|
@@ -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
|
+
}
|