starknet 9.2.0 → 9.2.1

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/index.mjs CHANGED
@@ -78,8 +78,8 @@ import { PAYMASTER_API } from "@starknet-io/starknet-types-010";
78
78
 
79
79
  // src/types/api/rpc.ts
80
80
  var rpc_exports = {};
81
- __reExport(rpc_exports, starknet_types_09_star);
82
- import * as starknet_types_09_star from "@starknet-io/starknet-types-09";
81
+ __reExport(rpc_exports, starknet_types_010_star);
82
+ import * as starknet_types_010_star from "@starknet-io/starknet-types-010";
83
83
 
84
84
  // src/types/api/index.ts
85
85
  __reExport(api_exports, rpc_exports);
@@ -7102,7 +7102,7 @@ var Subscription = class {
7102
7102
  }
7103
7103
  };
7104
7104
 
7105
- // src/channel/ws/ws_0_9.ts
7105
+ // src/channel/ws/ws_0_10.ts
7106
7106
  var WebSocketChannel = class {
7107
7107
  /**
7108
7108
  * The URL of the WebSocket RPC Node.
@@ -12194,7 +12194,10 @@ var WalletAccountV5 = class _WalletAccountV5 extends Account {
12194
12194
  // src/utils/events/index.ts
12195
12195
  var events_exports = {};
12196
12196
  __export(events_exports, {
12197
+ addGetByPathMethod: () => addGetByPathMethod,
12198
+ filterEventsByAddress: () => filterEventsByAddress,
12197
12199
  getAbiEvents: () => getAbiEvents,
12200
+ getEmittedEvents: () => getEmittedEvents,
12198
12201
  isAbiEvent: () => isAbiEvent,
12199
12202
  parseEvents: () => parseEvents
12200
12203
  });
@@ -12268,52 +12271,79 @@ function mergeAbiEvents(target, source) {
12268
12271
  return output;
12269
12272
  }
12270
12273
  function parseEvents(providerReceivedEvents, abiEvents, abiStructs, abiEnums, parser) {
12271
- const ret = providerReceivedEvents.flat().reduce((acc, recEvent) => {
12272
- const currentEvent = JSON.parse(JSON.stringify(recEvent));
12273
- let abiEvent = abiEvents[currentEvent.keys.shift() ?? 0];
12274
+ const ret = providerReceivedEvents.reduce((acc, recEvent) => {
12275
+ const eventKeys = [...recEvent.keys];
12276
+ const eventData = [...recEvent.data];
12277
+ let abiEvent = abiEvents[eventKeys.shift() ?? 0];
12274
12278
  if (!abiEvent) {
12275
12279
  return acc;
12276
12280
  }
12277
12281
  while (!abiEvent.name) {
12278
- const hashName = currentEvent.keys.shift();
12282
+ const hashName = eventKeys.shift();
12279
12283
  assert(!!hashName, 'Not enough data in "keys" property of this event.');
12280
12284
  abiEvent = abiEvent[hashName];
12281
12285
  }
12282
- const parsedEvent = {};
12283
- parsedEvent[abiEvent.name] = {};
12284
- const keysIter = currentEvent.keys[Symbol.iterator]();
12285
- const dataIter = currentEvent.data[Symbol.iterator]();
12286
+ const { from_address: _from, keys: _keys, data: _data, ...eventMetadata } = recEvent;
12287
+ const parsedEvent = eventMetadata;
12288
+ const eventName = abiEvent.name;
12289
+ parsedEvent[eventName] = {};
12290
+ const keysIter = eventKeys[Symbol.iterator]();
12291
+ const dataIter = eventData[Symbol.iterator]();
12286
12292
  const abiEventKeys = abiEvent.members?.filter((it) => it.kind === "key") || abiEvent.keys;
12287
12293
  const abiEventData = abiEvent.members?.filter((it) => it.kind === "data") || abiEvent.data;
12294
+ const parsedEventData = parsedEvent[eventName];
12288
12295
  abiEventKeys.forEach((key) => {
12289
- parsedEvent[abiEvent.name][key.name] = responseParser({
12296
+ parsedEventData[key.name] = responseParser({
12290
12297
  responseIterator: keysIter,
12291
12298
  output: key,
12292
12299
  structs: abiStructs,
12293
12300
  enums: abiEnums,
12294
12301
  parser,
12295
- parsedResult: parsedEvent[abiEvent.name]
12302
+ parsedResult: parsedEventData
12296
12303
  });
12297
12304
  });
12298
12305
  abiEventData.forEach((data) => {
12299
- parsedEvent[abiEvent.name][data.name] = responseParser({
12306
+ parsedEventData[data.name] = responseParser({
12300
12307
  responseIterator: dataIter,
12301
12308
  output: data,
12302
12309
  structs: abiStructs,
12303
12310
  enums: abiEnums,
12304
12311
  parser,
12305
- parsedResult: parsedEvent[abiEvent.name]
12312
+ parsedResult: parsedEventData
12306
12313
  });
12307
12314
  });
12308
- if ("block_hash" in currentEvent) parsedEvent.block_hash = currentEvent.block_hash;
12309
- if ("block_number" in currentEvent) parsedEvent.block_number = currentEvent.block_number;
12310
- if ("transaction_hash" in currentEvent)
12311
- parsedEvent.transaction_hash = currentEvent.transaction_hash;
12312
12315
  acc.push(parsedEvent);
12313
12316
  return acc;
12314
12317
  }, []);
12315
12318
  return ret;
12316
12319
  }
12320
+ function addGetByPathMethod(parsedEvents) {
12321
+ Object.defineProperty(parsedEvents, "getByPath", {
12322
+ value: (path) => {
12323
+ const event = parsedEvents.find((ev) => Object.keys(ev).some((key) => key.includes(path)));
12324
+ const eventKey = Object.keys(event || {}).find((key) => key.includes(path));
12325
+ return eventKey && event ? event[eventKey] : null;
12326
+ },
12327
+ writable: false,
12328
+ enumerable: false,
12329
+ configurable: false
12330
+ });
12331
+ return parsedEvents;
12332
+ }
12333
+ function getEmittedEvents(receipt, contractAddress) {
12334
+ if (!receipt.events) return [];
12335
+ const eventsToEnrich = contractAddress ? filterEventsByAddress(receipt.events, contractAddress) : receipt.events;
12336
+ return eventsToEnrich.map((event) => ({
12337
+ ...event,
12338
+ transaction_hash: receipt.transaction_hash,
12339
+ block_hash: receipt.block_hash,
12340
+ block_number: receipt.block_number
12341
+ }));
12342
+ }
12343
+ function filterEventsByAddress(events, contractAddress) {
12344
+ if (!events) return [];
12345
+ return events.filter((event) => toHex(event.from_address) === toHex(contractAddress));
12346
+ }
12317
12347
 
12318
12348
  // src/contract/default.ts
12319
12349
  function buildCall(contract, functionAbi) {
@@ -12574,45 +12604,19 @@ var Contract = class _Contract {
12574
12604
  calldata
12575
12605
  };
12576
12606
  }
12577
- // TODO: Demistify what is going on here ???
12578
- // TODO: receipt status filtering test and fix this do not look right
12579
12607
  parseEvents(receipt) {
12580
- let parsed = [];
12581
- receipt.match({
12582
- SUCCEEDED: (txR) => {
12583
- const emittedEvents = txR.events?.map((event) => {
12584
- return {
12585
- // TODO: this do not check that block is production and block_hash and block_number actually exists
12586
- // TODO: second issue is that ts do not complains about it
12587
- block_hash: txR.block_hash,
12588
- block_number: txR.block_number,
12589
- transaction_hash: txR.transaction_hash,
12590
- ...event
12591
- };
12592
- }).filter((event) => toHex(event.from_address) === toHex(this.address), []) || [];
12593
- parsed = parseEvents(
12594
- emittedEvents,
12595
- this.events,
12596
- this.structs,
12597
- CallData.getAbiEnum(this.abi),
12598
- this.callData.parser
12599
- );
12600
- },
12601
- _: () => {
12602
- throw Error("This transaction was not successful.");
12603
- }
12604
- });
12605
- Object.defineProperty(parsed, "getByPath", {
12606
- value: (path) => {
12607
- const event = parsed.find((ev) => Object.keys(ev).some((key) => key.includes(path)));
12608
- const eventKey = Object.keys(event || {}).find((key) => key.includes(path));
12609
- return eventKey && event ? event[eventKey] : null;
12610
- },
12611
- writable: false,
12612
- enumerable: false,
12613
- configurable: false
12614
- });
12615
- return parsed;
12608
+ if (!receipt.isSuccess()) {
12609
+ throw Error("This transaction was not successful.");
12610
+ }
12611
+ return addGetByPathMethod(
12612
+ parseEvents(
12613
+ getEmittedEvents(receipt.value, this.address),
12614
+ this.events,
12615
+ this.structs,
12616
+ CallData.getAbiEnum(this.abi),
12617
+ this.callData.parser
12618
+ )
12619
+ );
12616
12620
  }
12617
12621
  isCairo1() {
12618
12622
  return cairo_exports.isCairo1Abi(this.abi);