Skip to content

Commit 5091541

Browse files
authored
fix: parseEvents should not modify ref event object (#1399)
1 parent 7ba427e commit 5091541

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/utils/events/index.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -202,21 +202,22 @@ export function parseEvents(
202202
const ret = providerReceivedEvents
203203
.flat()
204204
.reduce((acc, recEvent: RPC.EmittedEvent | RPC.Event) => {
205-
let abiEvent: AbiEvent | AbiEvents = abiEvents[recEvent.keys.shift() ?? 0];
205+
const currentEvent: RPC.EmittedEvent | RPC.Event = JSON.parse(JSON.stringify(recEvent));
206+
let abiEvent: AbiEvent | AbiEvents = abiEvents[currentEvent.keys.shift() ?? 0];
206207
if (!abiEvent) {
207208
return acc;
208209
}
209210
while (!abiEvent.name) {
210-
const hashName = recEvent.keys.shift();
211+
const hashName = currentEvent.keys.shift();
211212
assert(!!hashName, 'Not enough data in "keys" property of this event.');
212213
abiEvent = (abiEvent as AbiEvents)[hashName];
213214
}
214215
// Create our final event object
215216
const parsedEvent: ParsedEvent = {};
216217
parsedEvent[abiEvent.name as string] = {};
217218
// Remove the event's name hashed from the keys array
218-
const keysIter = recEvent.keys[Symbol.iterator]();
219-
const dataIter = recEvent.data[Symbol.iterator]();
219+
const keysIter = currentEvent.keys[Symbol.iterator]();
220+
const dataIter = currentEvent.data[Symbol.iterator]();
220221

221222
const abiEventKeys =
222223
(abiEvent as CairoEventDefinition).members?.filter((it) => it.kind === 'key') ||
@@ -244,9 +245,10 @@ export function parseEvents(
244245
parsedEvent[abiEvent.name as string]
245246
);
246247
});
247-
if ('block_hash' in recEvent) parsedEvent.block_hash = recEvent.block_hash;
248-
if ('block_number' in recEvent) parsedEvent.block_number = recEvent.block_number;
249-
if ('transaction_hash' in recEvent) parsedEvent.transaction_hash = recEvent.transaction_hash;
248+
if ('block_hash' in currentEvent) parsedEvent.block_hash = currentEvent.block_hash;
249+
if ('block_number' in currentEvent) parsedEvent.block_number = currentEvent.block_number;
250+
if ('transaction_hash' in currentEvent)
251+
parsedEvent.transaction_hash = currentEvent.transaction_hash;
250252
acc.push(parsedEvent);
251253
return acc;
252254
}, [] as ParsedEvents);

0 commit comments

Comments
 (0)