capnweb 0.0.0-25baebf → 0.0.0-31adae8

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.
@@ -1494,8 +1494,39 @@ var Devaluator = class _Devaluator {
1494
1494
  if (rewritten) {
1495
1495
  e = rewritten;
1496
1496
  }
1497
+ let anyE = e;
1498
+ let props;
1499
+ let captureProp = (key, val) => {
1500
+ let exportsBefore = this.exports?.length ?? 0;
1501
+ try {
1502
+ let encoded = this.devaluateImpl(val, e, depth + 1);
1503
+ if (!props) props = {};
1504
+ props[key] = encoded;
1505
+ } catch (err) {
1506
+ if (this.exports && this.exports.length > exportsBefore) {
1507
+ let tail = this.exports.splice(exportsBefore);
1508
+ try {
1509
+ this.exporter.unexport(tail);
1510
+ } catch (err2) {
1511
+ }
1512
+ }
1513
+ }
1514
+ };
1515
+ for (let key of Object.keys(e)) {
1516
+ if (key === "name" || key === "message" || key === "stack") continue;
1517
+ captureProp(key, anyE[key]);
1518
+ }
1519
+ if ("cause" in e) {
1520
+ captureProp("cause", anyE.cause);
1521
+ }
1522
+ if (e instanceof AggregateError) {
1523
+ captureProp("errors", e.errors);
1524
+ }
1497
1525
  let result = ["error", e.name, e.message];
1498
- if (rewritten && rewritten.stack) {
1526
+ if (props) {
1527
+ result.push(rewritten && rewritten.stack ? rewritten.stack : null);
1528
+ result.push(props);
1529
+ } else if (rewritten && rewritten.stack) {
1499
1530
  result.push(rewritten.stack);
1500
1531
  }
1501
1532
  return result;
@@ -1664,10 +1695,22 @@ var Evaluator = class _Evaluator {
1664
1695
  case "error":
1665
1696
  if (value.length >= 3 && typeof value[1] === "string" && typeof value[2] === "string") {
1666
1697
  let cls = ERROR_TYPES[value[1]] || Error;
1667
- let result = new cls(value[2]);
1698
+ let result = cls === AggregateError ? new cls([], value[2]) : new cls(value[2]);
1668
1699
  if (typeof value[3] === "string") {
1669
1700
  result.stack = value[3];
1670
1701
  }
1702
+ if (value.length >= 5) {
1703
+ let props = value[4];
1704
+ if (!props || typeof props !== "object" || Array.isArray(props)) {
1705
+ break;
1706
+ }
1707
+ let anyResult = result;
1708
+ let propsObj = props;
1709
+ for (let key of Object.keys(propsObj)) {
1710
+ if (key === "name" || key === "message" || key === "stack") continue;
1711
+ anyResult[key] = this.evaluateImpl(propsObj[key], result, key);
1712
+ }
1713
+ }
1671
1714
  return result;
1672
1715
  }
1673
1716
  break;