viem 0.2.10 → 0.2.11

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 (42) hide show
  1. package/dist/abi.js +2 -2
  2. package/dist/abi.mjs +1 -1
  3. package/dist/accounts/index.js +17 -17
  4. package/dist/accounts/index.mjs +2 -2
  5. package/dist/chains.js +89 -89
  6. package/dist/chains.mjs +1 -1
  7. package/dist/{chunk-34RQIVOR.mjs → chunk-HU3K54ST.mjs} +122 -38
  8. package/dist/chunk-HU3K54ST.mjs.map +1 -0
  9. package/dist/{chunk-6PP4CMLN.js → chunk-MOM6LTRA.js} +126 -42
  10. package/dist/chunk-MOM6LTRA.js.map +1 -0
  11. package/dist/{chunk-AQJCWZV6.mjs → chunk-YABBVXPP.mjs} +2 -2
  12. package/dist/{chunk-I2RHOQQS.js → chunk-YAP7NKRV.js} +6 -6
  13. package/dist/contract.d.ts +2 -2
  14. package/dist/contract.js +2 -2
  15. package/dist/contract.mjs +1 -1
  16. package/dist/ens.d.ts +1 -1
  17. package/dist/ens.js +2 -2
  18. package/dist/ens.mjs +1 -1
  19. package/dist/ethers.js +4 -4
  20. package/dist/ethers.mjs +2 -2
  21. package/dist/{formatAbiItem-e5bbcadb.d.ts → formatAbiItem-aaf282fc.d.ts} +5 -1
  22. package/dist/{getEnsResolver-314de6e9.d.ts → getEnsResolver-68329c3e.d.ts} +1 -1
  23. package/dist/index.d.ts +8 -5
  24. package/dist/index.js +94 -94
  25. package/dist/index.mjs +1 -1
  26. package/dist/{parseGwei-4fb29d96.d.ts → parseGwei-e2b004f8.d.ts} +1 -1
  27. package/dist/public.d.ts +1 -1
  28. package/dist/public.js +2 -2
  29. package/dist/public.mjs +1 -1
  30. package/dist/test.js +2 -2
  31. package/dist/test.mjs +1 -1
  32. package/dist/utils/index.d.ts +5 -5
  33. package/dist/utils/index.js +4 -2
  34. package/dist/utils/index.mjs +3 -1
  35. package/dist/wallet.d.ts +1 -1
  36. package/dist/wallet.js +2 -2
  37. package/dist/wallet.mjs +1 -1
  38. package/package.json +1 -1
  39. package/dist/chunk-34RQIVOR.mjs.map +0 -1
  40. package/dist/chunk-6PP4CMLN.js.map +0 -1
  41. /package/dist/{chunk-AQJCWZV6.mjs.map → chunk-YABBVXPP.mjs.map} +0 -0
  42. /package/dist/{chunk-I2RHOQQS.js.map → chunk-YAP7NKRV.js.map} +0 -0
@@ -20,7 +20,7 @@ import "abitype";
20
20
  var package_default = {
21
21
  name: "viem",
22
22
  description: "TypeScript Interface for Ethereum",
23
- version: "0.2.10",
23
+ version: "0.2.11",
24
24
  scripts: {
25
25
  anvil: "dotenv -- sh -c 'anvil --fork-url $VITE_ANVIL_FORK_URL --fork-block-number $VITE_ANVIL_BLOCK_NUMBER --block-time $VITE_ANVIL_BLOCK_TIME'",
26
26
  bench: "vitest bench --no-threads",
@@ -287,16 +287,43 @@ var AbiConstructorParamsNotFoundError = class extends BaseError {
287
287
  }
288
288
  };
289
289
  var AbiDecodingDataSizeInvalidError = class extends BaseError {
290
- constructor(size2) {
290
+ constructor({ data, size: size2 }) {
291
291
  super(
292
292
  [
293
293
  `Data size of ${size2} bytes is invalid.`,
294
294
  "Size must be in increments of 32 bytes (size % 32 === 0)."
295
- ].join("\n")
295
+ ].join("\n"),
296
+ { metaMessages: [`Data: ${data} (${size2} bytes)`] }
296
297
  );
297
298
  __publicField(this, "name", "AbiDecodingDataSizeInvalidError");
298
299
  }
299
300
  };
301
+ var AbiDecodingDataSizeTooSmallError = class extends BaseError {
302
+ constructor({
303
+ data,
304
+ params,
305
+ size: size2
306
+ }) {
307
+ super(
308
+ [`Data size of ${size2} bytes is too small for given parameters.`].join(
309
+ "\n"
310
+ ),
311
+ {
312
+ metaMessages: [
313
+ `Params: (${formatAbiParams(params, { includeName: true })})`,
314
+ `Data: ${data} (${size2} bytes)`
315
+ ]
316
+ }
317
+ );
318
+ __publicField(this, "name", "AbiDecodingDataSizeTooSmallError");
319
+ __publicField(this, "data");
320
+ __publicField(this, "params");
321
+ __publicField(this, "size");
322
+ this.data = data;
323
+ this.params = params;
324
+ this.size = size2;
325
+ }
326
+ };
300
327
  var AbiDecodingZeroDataError = class extends BaseError {
301
328
  constructor() {
302
329
  super('Cannot decode zero data ("0x") with ABI parameters.');
@@ -478,6 +505,34 @@ var BytesSizeMismatchError = class extends BaseError {
478
505
  __publicField(this, "name", "BytesSizeMismatchError");
479
506
  }
480
507
  };
508
+ var DecodeLogDataMismatch = class extends BaseError {
509
+ constructor({
510
+ data,
511
+ params,
512
+ size: size2
513
+ }) {
514
+ super(
515
+ [
516
+ `Data size of ${size2} bytes is too small for non-indexed event parameters.`
517
+ ].join("\n"),
518
+ {
519
+ metaMessages: [
520
+ "This error is usually caused if the ABI event has too many non-indexed event parameters for the emitted log.",
521
+ "",
522
+ `Params: (${formatAbiParams(params, { includeName: true })})`,
523
+ `Data: ${data} (${size2} bytes)`
524
+ ]
525
+ }
526
+ );
527
+ __publicField(this, "name", "DecodeLogDataMismatch");
528
+ __publicField(this, "data");
529
+ __publicField(this, "params");
530
+ __publicField(this, "size");
531
+ this.data = data;
532
+ this.params = params;
533
+ this.size = size2;
534
+ }
535
+ };
481
536
  var DecodeLogTopicsMismatch = class extends BaseError {
482
537
  constructor({
483
538
  abiItem,
@@ -2402,7 +2457,7 @@ function decodeAbiParameters(params, data) {
2402
2457
  if (data === "0x" && params.length > 0)
2403
2458
  throw new AbiDecodingZeroDataError();
2404
2459
  if (size(data) % 32 !== 0)
2405
- throw new AbiDecodingDataSizeInvalidError(size(data));
2460
+ throw new AbiDecodingDataSizeInvalidError({ data, size: size(data) });
2406
2461
  return decodeParams({
2407
2462
  data,
2408
2463
  params
@@ -2415,6 +2470,12 @@ function decodeParams({
2415
2470
  let decodedValues = [];
2416
2471
  let position = 0;
2417
2472
  for (let i = 0; i < params.length; i++) {
2473
+ if (position >= size(data))
2474
+ throw new AbiDecodingDataSizeTooSmallError({
2475
+ data,
2476
+ params,
2477
+ size: size(data)
2478
+ });
2418
2479
  const param = params[i];
2419
2480
  const { consumed, value } = decodeParam({ data, param, position });
2420
2481
  decodedValues.push(value);
@@ -2597,16 +2658,16 @@ function hasDynamicChild(param) {
2597
2658
  function formatAbiItem(abiItem, { includeName = false } = {}) {
2598
2659
  if (abiItem.type !== "function" && abiItem.type !== "event" && abiItem.type !== "error")
2599
2660
  throw new InvalidDefinitionTypeError(abiItem.type);
2600
- return `${abiItem.name}(${getParams(abiItem.inputs, { includeName })})`;
2661
+ return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`;
2601
2662
  }
2602
- function getParams(params, { includeName }) {
2663
+ function formatAbiParams(params, { includeName = false } = {}) {
2603
2664
  if (!params)
2604
2665
  return "";
2605
- return params.map((param) => getParam(param, { includeName })).join(includeName ? ", " : ",");
2666
+ return params.map((param) => formatAbiParam(param, { includeName })).join(includeName ? ", " : ",");
2606
2667
  }
2607
- function getParam(param, { includeName }) {
2668
+ function formatAbiParam(param, { includeName }) {
2608
2669
  if (param.type.startsWith("tuple")) {
2609
- return `(${getParams(
2670
+ return `(${formatAbiParams(
2610
2671
  param.components,
2611
2672
  { includeName }
2612
2673
  )})${param.type.slice("tuple".length)}`;
@@ -2674,15 +2735,25 @@ function decodeEventLog({
2674
2735
  }
2675
2736
  if (data && data !== "0x") {
2676
2737
  const params = inputs.filter((x) => !("indexed" in x && x.indexed));
2677
- const decodedData = decodeAbiParameters(params, data);
2678
- if (decodedData) {
2679
- if (isUnnamed)
2680
- args = [...args, ...decodedData];
2681
- else {
2682
- for (let i = 0; i < params.length; i++) {
2683
- args[params[i].name] = decodedData[i];
2738
+ try {
2739
+ const decodedData = decodeAbiParameters(params, data);
2740
+ if (decodedData) {
2741
+ if (isUnnamed)
2742
+ args = [...args, ...decodedData];
2743
+ else {
2744
+ for (let i = 0; i < params.length; i++) {
2745
+ args[params[i].name] = decodedData[i];
2746
+ }
2684
2747
  }
2685
2748
  }
2749
+ } catch (err) {
2750
+ if (err instanceof AbiDecodingDataSizeTooSmallError)
2751
+ throw new DecodeLogDataMismatch({
2752
+ data: err.data,
2753
+ params: err.params,
2754
+ size: err.size
2755
+ });
2756
+ throw err;
2686
2757
  }
2687
2758
  }
2688
2759
  return {
@@ -4704,13 +4775,17 @@ async function getFilterChanges(client, {
4704
4775
  return logs.map((log) => {
4705
4776
  if (typeof log === "string")
4706
4777
  return log;
4707
- const { eventName, args } = "abi" in filter && filter.abi ? decodeEventLog({
4708
- abi: filter.abi,
4709
- data: log.data,
4710
- topics: log.topics
4711
- }) : { eventName: void 0, args: void 0 };
4712
- return formatLog(log, { args, eventName });
4713
- });
4778
+ try {
4779
+ const { eventName, args } = "abi" in filter && filter.abi ? decodeEventLog({
4780
+ abi: filter.abi,
4781
+ data: log.data,
4782
+ topics: log.topics
4783
+ }) : { eventName: void 0, args: void 0 };
4784
+ return formatLog(log, { args, eventName });
4785
+ } catch {
4786
+ return;
4787
+ }
4788
+ }).filter(Boolean);
4714
4789
  }
4715
4790
 
4716
4791
  // src/actions/public/getFilterLogs.ts
@@ -4720,13 +4795,17 @@ async function getFilterLogs(client, { filter }) {
4720
4795
  params: [filter.id]
4721
4796
  });
4722
4797
  return logs.map((log) => {
4723
- const { eventName, args } = "abi" in filter && filter.abi ? decodeEventLog({
4724
- abi: filter.abi,
4725
- data: log.data,
4726
- topics: log.topics
4727
- }) : { eventName: void 0, args: void 0 };
4728
- return formatLog(log, { args, eventName });
4729
- });
4798
+ try {
4799
+ const { eventName, args } = "abi" in filter && filter.abi ? decodeEventLog({
4800
+ abi: filter.abi,
4801
+ data: log.data,
4802
+ topics: log.topics
4803
+ }) : { eventName: void 0, args: void 0 };
4804
+ return formatLog(log, { args, eventName });
4805
+ } catch {
4806
+ return;
4807
+ }
4808
+ }).filter(Boolean);
4730
4809
  }
4731
4810
 
4732
4811
  // src/actions/public/getGasPrice.ts
@@ -4773,13 +4852,17 @@ async function getLogs(client, {
4773
4852
  });
4774
4853
  }
4775
4854
  return logs.map((log) => {
4776
- const { eventName, args: args2 } = event ? decodeEventLog({
4777
- abi: [event],
4778
- data: log.data,
4779
- topics: log.topics
4780
- }) : { eventName: void 0, args: void 0 };
4781
- return formatLog(log, { args: args2, eventName });
4782
- });
4855
+ try {
4856
+ const { eventName, args: args2 } = event ? decodeEventLog({
4857
+ abi: [event],
4858
+ data: log.data,
4859
+ topics: log.topics
4860
+ }) : { eventName: void 0, args: void 0 };
4861
+ return formatLog(log, { args: args2, eventName });
4862
+ } catch {
4863
+ return;
4864
+ }
4865
+ }).filter(Boolean);
4783
4866
  }
4784
4867
 
4785
4868
  // src/actions/public/getStorageAt.ts
@@ -7070,6 +7153,7 @@ export {
7070
7153
  encodeAbiParameters,
7071
7154
  decodeAbiParameters,
7072
7155
  formatAbiItem,
7156
+ formatAbiParams,
7073
7157
  decodeErrorResult,
7074
7158
  decodeEventLog,
7075
7159
  decodeFunctionData,
@@ -7222,4 +7306,4 @@ export {
7222
7306
  writeContract,
7223
7307
  getContract
7224
7308
  };
7225
- //# sourceMappingURL=chunk-34RQIVOR.mjs.map
7309
+ //# sourceMappingURL=chunk-HU3K54ST.mjs.map