viem 0.0.0-main.20230606T175443 → 0.0.0-main.20230606T201917
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/getFilterChanges.js +5 -1
- package/dist/cjs/actions/public/getFilterChanges.js.map +1 -1
- package/dist/cjs/actions/public/getFilterLogs.js +6 -2
- package/dist/cjs/actions/public/getFilterLogs.js.map +1 -1
- package/dist/cjs/actions/public/getLogs.js +6 -2
- package/dist/cjs/actions/public/getLogs.js.map +1 -1
- package/dist/cjs/actions/public/watchContractEvent.js +3 -1
- package/dist/cjs/actions/public/watchContractEvent.js.map +1 -1
- package/dist/cjs/actions/public/watchEvent.js +3 -1
- package/dist/cjs/actions/public/watchEvent.js.map +1 -1
- package/dist/cjs/clients/decorators/public.js.map +1 -1
- package/dist/cjs/errors/version.js +1 -1
- package/dist/cjs/utils/abi/decodeEventLog.js +29 -23
- package/dist/cjs/utils/abi/decodeEventLog.js.map +1 -1
- package/dist/cjs/utils/abi/encodeEventTopics.js +11 -7
- package/dist/cjs/utils/abi/encodeEventTopics.js.map +1 -1
- package/dist/cjs/utils/abi/getAbiItem.js +2 -0
- package/dist/cjs/utils/abi/getAbiItem.js.map +1 -1
- package/dist/esm/actions/public/getFilterChanges.js +5 -1
- package/dist/esm/actions/public/getFilterChanges.js.map +1 -1
- package/dist/esm/actions/public/getFilterLogs.js +6 -2
- package/dist/esm/actions/public/getFilterLogs.js.map +1 -1
- package/dist/esm/actions/public/getLogs.js +6 -2
- package/dist/esm/actions/public/getLogs.js.map +1 -1
- package/dist/esm/actions/public/watchContractEvent.js +3 -1
- package/dist/esm/actions/public/watchContractEvent.js.map +1 -1
- package/dist/esm/actions/public/watchEvent.js +3 -1
- package/dist/esm/actions/public/watchEvent.js.map +1 -1
- package/dist/esm/clients/decorators/public.js.map +1 -1
- package/dist/esm/errors/version.js +1 -1
- package/dist/esm/utils/abi/decodeEventLog.js +29 -23
- package/dist/esm/utils/abi/decodeEventLog.js.map +1 -1
- package/dist/esm/utils/abi/encodeEventTopics.js +11 -7
- package/dist/esm/utils/abi/encodeEventTopics.js.map +1 -1
- package/dist/esm/utils/abi/getAbiItem.js +2 -0
- package/dist/esm/utils/abi/getAbiItem.js.map +1 -1
- package/dist/types/actions/getContract.d.ts +13 -5
- package/dist/types/actions/getContract.d.ts.map +1 -1
- package/dist/types/actions/public/createContractEventFilter.d.ts +1 -1
- package/dist/types/actions/public/createContractEventFilter.d.ts.map +1 -1
- package/dist/types/actions/public/createEventFilter.d.ts +1 -1
- package/dist/types/actions/public/createEventFilter.d.ts.map +1 -1
- package/dist/types/actions/public/getFilterChanges.d.ts +1 -1
- package/dist/types/actions/public/getFilterChanges.d.ts.map +1 -1
- package/dist/types/actions/public/getFilterLogs.d.ts +2 -2
- package/dist/types/actions/public/getFilterLogs.d.ts.map +1 -1
- package/dist/types/actions/public/getLogs.d.ts +2 -2
- package/dist/types/actions/public/getLogs.d.ts.map +1 -1
- package/dist/types/actions/public/watchContractEvent.d.ts +10 -5
- package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
- package/dist/types/actions/public/watchEvent.d.ts +11 -5
- package/dist/types/actions/public/watchEvent.d.ts.map +1 -1
- package/dist/types/clients/decorators/public.d.ts +8 -8
- package/dist/types/clients/decorators/public.d.ts.map +1 -1
- package/dist/types/errors/version.d.ts +1 -1
- package/dist/types/types/contract.d.ts +3 -3
- package/dist/types/types/contract.d.ts.map +1 -1
- package/dist/types/types/filter.d.ts +3 -3
- package/dist/types/types/filter.d.ts.map +1 -1
- package/dist/types/types/log.d.ts +7 -8
- package/dist/types/types/log.d.ts.map +1 -1
- package/dist/types/utils/abi/decodeEventLog.d.ts +6 -5
- package/dist/types/utils/abi/decodeEventLog.d.ts.map +1 -1
- package/dist/types/utils/abi/encodeEventTopics.d.ts.map +1 -1
- package/dist/types/utils/abi/getAbiItem.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actions/getContract.ts +13 -8
- package/src/actions/public/createContractEventFilter.ts +1 -1
- package/src/actions/public/createEventFilter.ts +1 -1
- package/src/actions/public/getFilterChanges.ts +7 -2
- package/src/actions/public/getFilterLogs.ts +10 -5
- package/src/actions/public/getLogs.ts +10 -5
- package/src/actions/public/watchContractEvent.ts +16 -4
- package/src/actions/public/watchEvent.ts +17 -4
- package/src/clients/decorators/public.ts +18 -11
- package/src/errors/version.ts +1 -1
- package/src/types/contract.ts +3 -4
- package/src/types/filter.ts +3 -3
- package/src/types/log.ts +17 -16
- package/src/utils/abi/decodeEventLog.ts +42 -25
- package/src/utils/abi/encodeEventTopics.ts +16 -11
- package/src/utils/abi/getAbiItem.ts +1 -0
@@ -24,15 +24,18 @@ import { uninstallFilter } from './uninstallFilter.js'
|
|
24
24
|
|
25
25
|
export type OnLogsParameter<
|
26
26
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
27
|
+
TStrict extends boolean | undefined = undefined,
|
27
28
|
TEventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
28
|
-
> = Log<bigint, number, TAbiEvent, [TAbiEvent], TEventName>[]
|
29
|
+
> = Log<bigint, number, TAbiEvent, TStrict, [TAbiEvent], TEventName>[]
|
29
30
|
export type OnLogsFn<
|
30
31
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
32
|
+
TStrict extends boolean | undefined = undefined,
|
31
33
|
TEventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
32
|
-
> = (logs: OnLogsParameter<TAbiEvent, TEventName>) => void
|
34
|
+
> = (logs: OnLogsParameter<TAbiEvent, TStrict, TEventName>) => void
|
33
35
|
|
34
36
|
export type WatchEventParameters<
|
35
37
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
38
|
+
TStrict extends boolean | undefined = undefined,
|
36
39
|
TEventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
37
40
|
> = {
|
38
41
|
/** The address of the contract. */
|
@@ -45,17 +48,23 @@ export type WatchEventParameters<
|
|
45
48
|
/** The callback to call when an error occurred when trying to get for a new block. */
|
46
49
|
onError?: (error: Error) => void
|
47
50
|
/** The callback to call when new event logs are received. */
|
48
|
-
onLogs: OnLogsFn<TAbiEvent, TEventName>
|
51
|
+
onLogs: OnLogsFn<TAbiEvent, TStrict, TEventName>
|
49
52
|
/** Polling frequency (in ms). Defaults to Client's pollingInterval config. */
|
50
53
|
pollingInterval?: number
|
51
54
|
} & (
|
52
55
|
| {
|
53
56
|
event: TAbiEvent
|
54
57
|
args?: MaybeExtractEventArgsFromAbi<[TAbiEvent], TEventName>
|
58
|
+
/**
|
59
|
+
* Whether or not the logs must match the indexed/non-indexed arguments on `event`.
|
60
|
+
* @default false
|
61
|
+
*/
|
62
|
+
strict?: TStrict
|
55
63
|
}
|
56
64
|
| {
|
57
65
|
event?: never
|
58
66
|
args?: never
|
67
|
+
strict?: never
|
59
68
|
}
|
60
69
|
)
|
61
70
|
|
@@ -97,6 +106,7 @@ export function watchEvent<
|
|
97
106
|
TChain extends Chain | undefined,
|
98
107
|
TAbiEvent extends AbiEvent | undefined,
|
99
108
|
TEventName extends string | undefined,
|
109
|
+
TStrict extends boolean | undefined = undefined,
|
100
110
|
>(
|
101
111
|
client: PublicClient<Transport, TChain>,
|
102
112
|
{
|
@@ -107,7 +117,8 @@ export function watchEvent<
|
|
107
117
|
onError,
|
108
118
|
onLogs,
|
109
119
|
pollingInterval = client.pollingInterval,
|
110
|
-
|
120
|
+
strict: strict_,
|
121
|
+
}: WatchEventParameters<TAbiEvent, TStrict>,
|
111
122
|
): WatchEventReturnType {
|
112
123
|
const observerId = stringify([
|
113
124
|
'watchEvent',
|
@@ -118,6 +129,7 @@ export function watchEvent<
|
|
118
129
|
event,
|
119
130
|
pollingInterval,
|
120
131
|
])
|
132
|
+
const strict = strict_ ?? false
|
121
133
|
|
122
134
|
return observe(observerId, { onLogs, onError }, (emit) => {
|
123
135
|
let previousBlockNumber: bigint
|
@@ -132,6 +144,7 @@ export function watchEvent<
|
|
132
144
|
address,
|
133
145
|
args,
|
134
146
|
event: event!,
|
147
|
+
strict,
|
135
148
|
} as unknown as CreateEventFilterParameters)) as unknown as Filter<
|
136
149
|
'event',
|
137
150
|
[TAbiEvent],
|
@@ -199,6 +199,7 @@ import {
|
|
199
199
|
import type { Chain } from '../../types/chain.js'
|
200
200
|
import type {
|
201
201
|
ContractFunctionConfig,
|
202
|
+
MaybeAbiEventName,
|
202
203
|
MaybeExtractEventArgsFromAbi,
|
203
204
|
} from '../../types/contract.js'
|
204
205
|
import type { FilterType } from '../../types/filter.js'
|
@@ -277,7 +278,7 @@ export type PublicActions<
|
|
277
278
|
TAbi extends Abi | readonly unknown[],
|
278
279
|
TEventName extends string | undefined,
|
279
280
|
TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,
|
280
|
-
TStrict extends boolean | undefined,
|
281
|
+
TStrict extends boolean | undefined = undefined,
|
281
282
|
>(
|
282
283
|
args: CreateContractEventFilterParameters<TAbi, TEventName, TArgs, TStrict>,
|
283
284
|
) => Promise<
|
@@ -306,10 +307,12 @@ export type PublicActions<
|
|
306
307
|
*/
|
307
308
|
createEventFilter: <
|
308
309
|
TAbiEvent extends AbiEvent | undefined,
|
309
|
-
TStrict extends boolean | undefined,
|
310
|
-
_Abi extends Abi | readonly unknown[],
|
311
|
-
_EventName extends string | undefined
|
312
|
-
_Args extends
|
310
|
+
TStrict extends boolean | undefined = undefined,
|
311
|
+
_Abi extends Abi | readonly unknown[] = [TAbiEvent],
|
312
|
+
_EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
|
313
|
+
_Args extends
|
314
|
+
| MaybeExtractEventArgsFromAbi<_Abi, _EventName>
|
315
|
+
| undefined = undefined,
|
313
316
|
>(
|
314
317
|
args?: CreateEventFilterParameters<
|
315
318
|
TAbiEvent,
|
@@ -804,7 +807,7 @@ export type PublicActions<
|
|
804
807
|
TFilterType extends FilterType,
|
805
808
|
TAbi extends Abi | readonly unknown[],
|
806
809
|
TEventName extends string | undefined,
|
807
|
-
TStrict extends boolean | undefined,
|
810
|
+
TStrict extends boolean | undefined = undefined,
|
808
811
|
>(
|
809
812
|
args: GetFilterChangesParameters<TFilterType, TAbi, TEventName, TStrict>,
|
810
813
|
) => Promise<
|
@@ -839,7 +842,7 @@ export type PublicActions<
|
|
839
842
|
getFilterLogs: <
|
840
843
|
TAbi extends Abi | readonly unknown[],
|
841
844
|
TEventName extends string | undefined,
|
842
|
-
TStrict extends boolean | undefined,
|
845
|
+
TStrict extends boolean | undefined = undefined,
|
843
846
|
>(
|
844
847
|
args: GetFilterLogsParameters<TAbi, TEventName, TStrict>,
|
845
848
|
) => Promise<GetFilterLogsReturnType<TAbi, TEventName, TStrict>>
|
@@ -884,7 +887,7 @@ export type PublicActions<
|
|
884
887
|
*/
|
885
888
|
getLogs: <
|
886
889
|
TAbiEvent extends AbiEvent | undefined,
|
887
|
-
TStrict extends boolean | undefined,
|
890
|
+
TStrict extends boolean | undefined = undefined,
|
888
891
|
>(
|
889
892
|
args?: GetLogsParameters<TAbiEvent, TStrict>,
|
890
893
|
) => Promise<GetLogsReturnType<TAbiEvent, TStrict>>
|
@@ -1295,8 +1298,9 @@ export type PublicActions<
|
|
1295
1298
|
watchContractEvent: <
|
1296
1299
|
TAbi extends Abi | readonly unknown[],
|
1297
1300
|
TEventName extends string,
|
1301
|
+
TStrict extends boolean | undefined = undefined,
|
1298
1302
|
>(
|
1299
|
-
args: WatchContractEventParameters<TAbi, TEventName>,
|
1303
|
+
args: WatchContractEventParameters<TAbi, TEventName, TStrict>,
|
1300
1304
|
) => WatchContractEventReturnType
|
1301
1305
|
/**
|
1302
1306
|
* Watches and returns emitted [Event Logs](https://viem.sh/docs/glossary/terms.html#event-log).
|
@@ -1329,8 +1333,11 @@ export type PublicActions<
|
|
1329
1333
|
* onLogs: (logs) => console.log(logs),
|
1330
1334
|
* })
|
1331
1335
|
*/
|
1332
|
-
watchEvent: <
|
1333
|
-
|
1336
|
+
watchEvent: <
|
1337
|
+
TAbiEvent extends AbiEvent | undefined,
|
1338
|
+
TStrict extends boolean | undefined = undefined,
|
1339
|
+
>(
|
1340
|
+
args: WatchEventParameters<TAbiEvent, TStrict>,
|
1334
1341
|
) => WatchEventReturnType
|
1335
1342
|
/**
|
1336
1343
|
* Watches and returns pending transaction hashes.
|
package/src/errors/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = '0.0.0-main.
|
1
|
+
export const version = '0.0.0-main.20230606T201917'
|
package/src/types/contract.ts
CHANGED
@@ -223,9 +223,7 @@ export type GetEventArgs<
|
|
223
223
|
| ([TArgs] extends [never] ? true : false)
|
224
224
|
| (readonly unknown[] extends TArgs ? true : false),
|
225
225
|
> = true extends FailedToParseArgs
|
226
|
-
? readonly unknown[]
|
227
|
-
: TArgs extends readonly []
|
228
|
-
? never
|
226
|
+
? readonly unknown[] | Record<string, unknown>
|
229
227
|
: TArgs
|
230
228
|
|
231
229
|
export type GetEventArgsFromTopics<
|
@@ -233,12 +231,13 @@ export type GetEventArgsFromTopics<
|
|
233
231
|
TEventName extends string,
|
234
232
|
TTopics extends LogTopic[],
|
235
233
|
TData extends Hex | undefined,
|
234
|
+
TStrict extends boolean = true,
|
236
235
|
TAbiEvent extends AbiEvent & { type: 'event' } = TAbi extends Abi
|
237
236
|
? ExtractAbiEvent<TAbi, TEventName>
|
238
237
|
: AbiEvent & { type: 'event' },
|
239
238
|
TArgs = AbiEventParametersToPrimitiveTypes<
|
240
239
|
TAbiEvent['inputs'],
|
241
|
-
{ EnableUnion: false; IndexedOnly: false; Required:
|
240
|
+
{ EnableUnion: false; IndexedOnly: false; Required: TStrict }
|
242
241
|
>,
|
243
242
|
> = TTopics extends readonly []
|
244
243
|
? TData extends undefined
|
package/src/types/filter.ts
CHANGED
@@ -33,20 +33,20 @@ export type Filter<
|
|
33
33
|
abi: TAbi
|
34
34
|
args?: never
|
35
35
|
eventName?: never
|
36
|
-
strict
|
36
|
+
strict: TStrict
|
37
37
|
}
|
38
38
|
: TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName>
|
39
39
|
? {
|
40
40
|
abi: TAbi
|
41
41
|
args: TArgs
|
42
42
|
eventName: TEventName
|
43
|
-
strict
|
43
|
+
strict: TStrict
|
44
44
|
}
|
45
45
|
: {
|
46
46
|
abi: TAbi
|
47
47
|
args?: never
|
48
48
|
eventName: TEventName
|
49
|
-
strict
|
49
|
+
strict: TStrict
|
50
50
|
}
|
51
51
|
: {
|
52
52
|
abi?: never
|
package/src/types/log.ts
CHANGED
@@ -11,17 +11,16 @@ import type {
|
|
11
11
|
GetEventArgs,
|
12
12
|
} from './contract.js'
|
13
13
|
import type { Hash, Hex } from './misc.js'
|
14
|
-
import type { MaybeUndefined } from './utils.js'
|
15
14
|
|
16
15
|
export type Log<
|
17
16
|
TQuantity = bigint,
|
18
17
|
TIndex = number,
|
19
18
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
19
|
+
TStrict extends boolean | undefined = undefined,
|
20
20
|
TAbi extends Abi | readonly unknown[] = [TAbiEvent],
|
21
21
|
TEventName extends string | undefined = TAbiEvent extends AbiEvent
|
22
22
|
? TAbiEvent['name']
|
23
23
|
: undefined,
|
24
|
-
TStrict extends boolean | undefined = undefined,
|
25
24
|
> = {
|
26
25
|
/** The address from which this log originated */
|
27
26
|
address: Address
|
@@ -93,13 +92,14 @@ type GetInferredLogValues<
|
|
93
92
|
> = TAbi extends Abi
|
94
93
|
? TEventName extends string
|
95
94
|
? {
|
96
|
-
args:
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
95
|
+
args: GetEventArgs<
|
96
|
+
TAbi,
|
97
|
+
TEventName,
|
98
|
+
{
|
99
|
+
EnableUnion: false
|
100
|
+
IndexedOnly: false
|
101
|
+
Required: TStrict extends boolean ? TStrict : false
|
102
|
+
}
|
103
103
|
>
|
104
104
|
/** The event name decoded from `topics`. */
|
105
105
|
eventName: TEventName
|
@@ -108,13 +108,14 @@ type GetInferredLogValues<
|
|
108
108
|
}
|
109
109
|
: {
|
110
110
|
[TName in _EventNames]: {
|
111
|
-
args:
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
111
|
+
args: GetEventArgs<
|
112
|
+
TAbi,
|
113
|
+
string,
|
114
|
+
{
|
115
|
+
EnableUnion: false
|
116
|
+
IndexedOnly: false
|
117
|
+
Required: TStrict extends boolean ? TStrict : false
|
118
|
+
}
|
118
119
|
>
|
119
120
|
/** The event name decoded from `topics`. */
|
120
121
|
eventName: TName
|
@@ -24,10 +24,12 @@ export type DecodeEventLogParameters<
|
|
24
24
|
TEventName extends string | undefined = string,
|
25
25
|
TTopics extends Hex[] = Hex[],
|
26
26
|
TData extends Hex | undefined = undefined,
|
27
|
+
TStrict extends boolean = true,
|
27
28
|
> = {
|
28
29
|
abi: Narrow<TAbi>
|
29
30
|
data?: TData
|
30
31
|
eventName?: InferEventName<TAbi, TEventName>
|
32
|
+
strict?: TStrict
|
31
33
|
topics: [signature: Hex, ...args: TTopics] | []
|
32
34
|
}
|
33
35
|
|
@@ -36,6 +38,7 @@ export type DecodeEventLogReturnType<
|
|
36
38
|
TEventName extends string | undefined = string,
|
37
39
|
TTopics extends Hex[] = Hex[],
|
38
40
|
TData extends Hex | undefined = undefined,
|
41
|
+
TStrict extends boolean = true,
|
39
42
|
_EventNames extends string = TAbi extends Abi
|
40
43
|
? Abi extends TAbi
|
41
44
|
? string
|
@@ -45,13 +48,13 @@ export type DecodeEventLogReturnType<
|
|
45
48
|
? Prettify<
|
46
49
|
{
|
47
50
|
eventName: TEventName
|
48
|
-
} & GetEventArgsFromTopics<TAbi, TEventName, TTopics, TData>
|
51
|
+
} & GetEventArgsFromTopics<TAbi, TEventName, TTopics, TData, TStrict>
|
49
52
|
>
|
50
53
|
: {
|
51
54
|
[TName in _EventNames]: Prettify<
|
52
55
|
{
|
53
56
|
eventName: TName
|
54
|
-
} & GetEventArgsFromTopics<TAbi, TName, TTopics, TData>
|
57
|
+
} & GetEventArgsFromTopics<TAbi, TName, TTopics, TData, TStrict>
|
55
58
|
>
|
56
59
|
}[_EventNames]
|
57
60
|
|
@@ -62,16 +65,20 @@ export function decodeEventLog<
|
|
62
65
|
TEventName extends string | undefined = undefined,
|
63
66
|
TTopics extends Hex[] = Hex[],
|
64
67
|
TData extends Hex | undefined = undefined,
|
68
|
+
TStrict extends boolean = true,
|
65
69
|
>({
|
66
70
|
abi,
|
67
71
|
data,
|
72
|
+
strict: strict_,
|
68
73
|
topics,
|
69
74
|
}: DecodeEventLogParameters<
|
70
75
|
TAbi,
|
71
76
|
TEventName,
|
72
77
|
TTopics,
|
73
|
-
TData
|
74
|
-
|
78
|
+
TData,
|
79
|
+
TStrict
|
80
|
+
>): DecodeEventLogReturnType<TAbi, TEventName, TTopics, TData, TStrict> {
|
81
|
+
const strict = strict_ ?? true
|
75
82
|
const [signature, ...argTopics] = topics
|
76
83
|
if (!signature)
|
77
84
|
throw new AbiEventSignatureEmptyTopicsError({
|
@@ -110,39 +117,49 @@ export function decodeEventLog<
|
|
110
117
|
// Decode data (non-indexed args).
|
111
118
|
const nonIndexedInputs = inputs.filter((x) => !('indexed' in x && x.indexed))
|
112
119
|
if (nonIndexedInputs.length > 0) {
|
113
|
-
if (
|
120
|
+
if (data && data !== '0x') {
|
121
|
+
try {
|
122
|
+
const decodedData = decodeAbiParameters(nonIndexedInputs, data)
|
123
|
+
if (decodedData) {
|
124
|
+
if (isUnnamed) args = [...args, ...decodedData]
|
125
|
+
else {
|
126
|
+
for (let i = 0; i < nonIndexedInputs.length; i++) {
|
127
|
+
args[nonIndexedInputs[i].name!] = decodedData[i]
|
128
|
+
}
|
129
|
+
}
|
130
|
+
}
|
131
|
+
} catch (err) {
|
132
|
+
if (strict) {
|
133
|
+
if (err instanceof AbiDecodingDataSizeTooSmallError)
|
134
|
+
throw new DecodeLogDataMismatch({
|
135
|
+
abiItem,
|
136
|
+
data: err.data,
|
137
|
+
params: err.params,
|
138
|
+
size: err.size,
|
139
|
+
})
|
140
|
+
throw err
|
141
|
+
}
|
142
|
+
}
|
143
|
+
} else if (strict) {
|
114
144
|
throw new DecodeLogDataMismatch({
|
115
145
|
abiItem,
|
116
146
|
data: '0x',
|
117
147
|
params: nonIndexedInputs,
|
118
148
|
size: 0,
|
119
149
|
})
|
120
|
-
try {
|
121
|
-
const decodedData = decodeAbiParameters(nonIndexedInputs, data)
|
122
|
-
if (decodedData) {
|
123
|
-
if (isUnnamed) args = [...args, ...decodedData]
|
124
|
-
else {
|
125
|
-
for (let i = 0; i < nonIndexedInputs.length; i++) {
|
126
|
-
args[nonIndexedInputs[i].name!] = decodedData[i]
|
127
|
-
}
|
128
|
-
}
|
129
|
-
}
|
130
|
-
} catch (err) {
|
131
|
-
if (err instanceof AbiDecodingDataSizeTooSmallError)
|
132
|
-
throw new DecodeLogDataMismatch({
|
133
|
-
abiItem,
|
134
|
-
data: err.data,
|
135
|
-
params: err.params,
|
136
|
-
size: err.size,
|
137
|
-
})
|
138
|
-
throw err
|
139
150
|
}
|
140
151
|
}
|
141
152
|
|
142
153
|
return {
|
143
154
|
eventName: name,
|
144
155
|
args: Object.values(args).length > 0 ? args : undefined,
|
145
|
-
} as unknown as DecodeEventLogReturnType<
|
156
|
+
} as unknown as DecodeEventLogReturnType<
|
157
|
+
TAbi,
|
158
|
+
TEventName,
|
159
|
+
TTopics,
|
160
|
+
TData,
|
161
|
+
TStrict
|
162
|
+
>
|
146
163
|
}
|
147
164
|
|
148
165
|
function decodeTopic({ param, value }: { param: AbiParameter; value: Hex }) {
|
@@ -66,17 +66,22 @@ export function encodeEventTopics<
|
|
66
66
|
)
|
67
67
|
const args_ = Array.isArray(args)
|
68
68
|
? args
|
69
|
-
:
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
69
|
+
: Object.values(args).length > 0
|
70
|
+
? indexedInputs?.map((x: any) => (args as any)[x.name]) ?? []
|
71
|
+
: []
|
72
|
+
|
73
|
+
if (args_.length > 0) {
|
74
|
+
topics =
|
75
|
+
indexedInputs?.map((param, i) =>
|
76
|
+
Array.isArray(args_[i])
|
77
|
+
? args_[i].map((_: any, j: number) =>
|
78
|
+
encodeArg({ param, value: args_[i][j] }),
|
79
|
+
)
|
80
|
+
: args_[i]
|
81
|
+
? encodeArg({ param, value: args_[i] })
|
82
|
+
: null,
|
83
|
+
) ?? []
|
84
|
+
}
|
80
85
|
}
|
81
86
|
return [signature, ...topics]
|
82
87
|
}
|
@@ -45,6 +45,7 @@ export function getAbiItem<
|
|
45
45
|
}
|
46
46
|
if (!abiItem.inputs) continue
|
47
47
|
if (abiItem.inputs.length === 0) continue
|
48
|
+
if (abiItem.inputs.length !== args.length) continue
|
48
49
|
const matched = (args as readonly unknown[]).every((arg, index) => {
|
49
50
|
const abiParameter = 'inputs' in abiItem && abiItem.inputs![index]
|
50
51
|
if (!abiParameter) return false
|