@mirascript/mirascript 0.1.63 → 0.1.65

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 (84) hide show
  1. package/README.md +7 -8
  2. package/dist/{chunk-5BBTXV5A.js → chunk-MRA5WJ72.js} +386 -402
  3. package/dist/chunk-MRA5WJ72.js.map +6 -0
  4. package/dist/{chunk-HZYARHEQ.js → chunk-X4FUFXO6.js} +17 -1
  5. package/dist/chunk-X4FUFXO6.js.map +6 -0
  6. package/dist/compiler/worker.js +1 -1
  7. package/dist/helpers/constants.d.ts +1 -0
  8. package/dist/helpers/constants.d.ts.map +1 -1
  9. package/dist/helpers/utils.d.ts +2 -0
  10. package/dist/helpers/utils.d.ts.map +1 -1
  11. package/dist/index.js +2 -2
  12. package/dist/subtle.js +2 -2
  13. package/dist/vm/lib/global/bit.d.ts.map +1 -1
  14. package/dist/vm/lib/global/debug.d.ts.map +1 -1
  15. package/dist/vm/lib/global/json.d.ts.map +1 -1
  16. package/dist/vm/lib/global/math/arr.d.ts.map +1 -1
  17. package/dist/vm/lib/global/math/const.d.ts.map +1 -1
  18. package/dist/vm/lib/global/math/gamma.d.ts.map +1 -1
  19. package/dist/vm/lib/global/math/index.d.ts.map +1 -1
  20. package/dist/vm/lib/global/math/round.d.ts.map +1 -1
  21. package/dist/vm/lib/global/math/unary.d.ts.map +1 -1
  22. package/dist/vm/lib/global/sequence/all-any.d.ts.map +1 -1
  23. package/dist/vm/lib/global/sequence/entries.d.ts.map +1 -1
  24. package/dist/vm/lib/global/sequence/find.d.ts.map +1 -1
  25. package/dist/vm/lib/global/sequence/flatten.d.ts.map +1 -1
  26. package/dist/vm/lib/global/sequence/len.d.ts.map +1 -1
  27. package/dist/vm/lib/global/sequence/map-filter.d.ts.map +1 -1
  28. package/dist/vm/lib/global/sequence/new.d.ts.map +1 -1
  29. package/dist/vm/lib/global/sequence/repeat.d.ts.map +1 -1
  30. package/dist/vm/lib/global/sequence/reverse.d.ts.map +1 -1
  31. package/dist/vm/lib/global/sequence/sort.d.ts.map +1 -1
  32. package/dist/vm/lib/global/sequence/unique.d.ts.map +1 -1
  33. package/dist/vm/lib/global/sequence/with.d.ts.map +1 -1
  34. package/dist/vm/lib/global/sequence/zip.d.ts.map +1 -1
  35. package/dist/vm/lib/global/string/case.d.ts.map +1 -1
  36. package/dist/vm/lib/global/string/index.d.ts.map +1 -1
  37. package/dist/vm/lib/global/string/search.d.ts.map +1 -1
  38. package/dist/vm/lib/global/string/trim.d.ts.map +1 -1
  39. package/dist/vm/lib/global/time.d.ts.map +1 -1
  40. package/dist/vm/lib/global/to-primitive.d.ts.map +1 -1
  41. package/dist/vm/lib/helpers.d.ts +1 -1
  42. package/dist/vm/lib/helpers.d.ts.map +1 -1
  43. package/dist/vm/lib/mod/matrix.d.ts.map +1 -1
  44. package/dist/vm/types/context.d.ts.map +1 -1
  45. package/dist/vm/types/function.d.ts +8 -7
  46. package/dist/vm/types/function.d.ts.map +1 -1
  47. package/package.json +5 -5
  48. package/src/helpers/constants.ts +2 -0
  49. package/src/helpers/utils.ts +7 -0
  50. package/src/vm/lib/global/bit.ts +23 -21
  51. package/src/vm/lib/global/debug.ts +6 -6
  52. package/src/vm/lib/global/json.ts +7 -6
  53. package/src/vm/lib/global/math/arr.ts +10 -15
  54. package/src/vm/lib/global/math/const.ts +0 -10
  55. package/src/vm/lib/global/math/gamma.ts +4 -6
  56. package/src/vm/lib/global/math/index.ts +11 -8
  57. package/src/vm/lib/global/math/round.ts +20 -12
  58. package/src/vm/lib/global/math/unary.ts +44 -66
  59. package/src/vm/lib/global/sequence/all-any.ts +14 -10
  60. package/src/vm/lib/global/sequence/entries.ts +8 -9
  61. package/src/vm/lib/global/sequence/find.ts +6 -7
  62. package/src/vm/lib/global/sequence/flatten.ts +5 -3
  63. package/src/vm/lib/global/sequence/len.ts +2 -3
  64. package/src/vm/lib/global/sequence/map-filter.ts +18 -21
  65. package/src/vm/lib/global/sequence/new.ts +13 -6
  66. package/src/vm/lib/global/sequence/repeat.ts +3 -7
  67. package/src/vm/lib/global/sequence/reverse.ts +2 -3
  68. package/src/vm/lib/global/sequence/sort.ts +16 -16
  69. package/src/vm/lib/global/sequence/unique.ts +16 -16
  70. package/src/vm/lib/global/sequence/with.ts +6 -7
  71. package/src/vm/lib/global/sequence/zip.ts +2 -3
  72. package/src/vm/lib/global/string/case.ts +4 -6
  73. package/src/vm/lib/global/string/index.ts +18 -12
  74. package/src/vm/lib/global/string/search.ts +15 -9
  75. package/src/vm/lib/global/string/trim.ts +6 -9
  76. package/src/vm/lib/global/time.ts +10 -13
  77. package/src/vm/lib/global/to-primitive.ts +15 -15
  78. package/src/vm/lib/helpers.ts +1 -6
  79. package/src/vm/lib/mod/matrix.ts +48 -39
  80. package/src/vm/operations/compound.ts +2 -2
  81. package/src/vm/types/context.ts +17 -20
  82. package/src/vm/types/function.ts +9 -10
  83. package/dist/chunk-5BBTXV5A.js.map +0 -6
  84. package/dist/chunk-HZYARHEQ.js.map +0 -6
@@ -9,6 +9,7 @@ import {
9
9
  VmError,
10
10
  __export,
11
11
  apply,
12
+ constants_exports,
12
13
  create,
13
14
  defineProperty,
14
15
  display,
@@ -45,10 +46,11 @@ import {
45
46
  kVmScript,
46
47
  kVmWrapper,
47
48
  keys,
49
+ keysLength,
48
50
  parseDiagnostics,
49
51
  toString,
50
52
  values
51
- } from "./chunk-HZYARHEQ.js";
53
+ } from "./chunk-X4FUFXO6.js";
52
54
 
53
55
  // src/compiler/load-module.ts
54
56
  import { loadModule } from "@mirascript/bindings";
@@ -493,9 +495,7 @@ function VmFunction(fn, option = {}) {
493
495
  isLib: opt.isLib ?? false,
494
496
  summary: opt.summary || void 0,
495
497
  params: opt.params,
496
- paramsType: opt.paramsType,
497
- returns: opt.returns || void 0,
498
- returnsType: opt.returnsType || void 0,
498
+ returns: opt.returns ?? void 0,
499
499
  examples: opt.examples?.length ? opt.examples : void 0,
500
500
  deprecated: opt.deprecated ?? void 0
501
501
  };
@@ -562,21 +562,19 @@ var ValueVmContext = class {
562
562
  }
563
563
  /** @inheritdoc */
564
564
  get(key) {
565
- if (hasOwn(this.env, key)) return this.env[key] ?? null;
566
- {
567
- const val = VM_SHARED_CONTEXT[key];
568
- if (val !== void 0) return val;
569
- return globalVarNotFound(key);
565
+ if (hasOwn(this.env, key)) {
566
+ return this.env[key] ?? null;
570
567
  }
568
+ return DefaultVmContext.get(key);
571
569
  }
572
570
  /** @inheritdoc */
573
571
  has(key) {
574
- return hasOwn(this.env, key) || key in VM_SHARED_CONTEXT;
572
+ return hasOwn(this.env, key) || DefaultVmContext.has(key);
575
573
  }
576
574
  /** @inheritdoc */
577
575
  describe(key) {
578
576
  if (hasOwn(this.env, key)) return this.describer?.(key);
579
- return VM_SHARED_CONTEXT_DESCRIPTIONS[key];
577
+ return DefaultVmContext.describe(key);
580
578
  }
581
579
  };
582
580
  defineProperty(ValueVmContext.prototype, kVmContext, { value: true });
@@ -594,32 +592,34 @@ var Value2VmContext = class {
594
592
  }
595
593
  /** @inheritdoc */
596
594
  get(key) {
597
- if (this.env != null && hasOwn(this.env, key)) return this.env[key] ?? null;
595
+ if (this.env != null && hasOwn(this.env, key)) {
596
+ return this.env[key] ?? null;
597
+ }
598
598
  if (hasOwn(this.extern, key)) {
599
- const val2 = this.extern[key];
600
- if (val2 == null) return null;
601
- if (typeof val2 != "object" && typeof val2 != "function") {
602
- return wrapToVmValue(val2, null, null);
599
+ const val = this.extern[key];
600
+ if (val == null) return null;
601
+ if (typeof val != "object" && typeof val != "function") {
602
+ return wrapToVmValue(val, null, null);
603
603
  }
604
- let cached = this.externCache.get(val2);
604
+ let cached = this.externCache.get(val);
605
605
  if (cached == null) {
606
- cached = wrapToVmValue(val2, null, null);
607
- this.externCache.set(val2, cached);
606
+ cached = wrapToVmValue(val, null, null);
607
+ this.externCache.set(val, cached);
608
608
  }
609
609
  return cached;
610
610
  }
611
- const val = VM_SHARED_CONTEXT[key];
612
- if (val !== void 0) return val;
613
- return globalVarNotFound(key);
611
+ return DefaultVmContext.get(key);
614
612
  }
615
613
  /** @inheritdoc */
616
614
  has(key) {
617
- return this.env != null && hasOwn(this.env, key) || hasOwn(this.extern, key) || key in VM_SHARED_CONTEXT;
615
+ return this.env != null && hasOwn(this.env, key) || hasOwn(this.extern, key) || DefaultVmContext.has(key);
618
616
  }
619
617
  /** @inheritdoc */
620
618
  describe(key) {
621
- if (this.env != null && hasOwn(this.env, key) || hasOwn(this.extern, key)) return this.describer?.(key);
622
- return VM_SHARED_CONTEXT_DESCRIPTIONS[key];
619
+ if (this.env != null && hasOwn(this.env, key) || hasOwn(this.extern, key)) {
620
+ return this.describer?.(key);
621
+ }
622
+ return DefaultVmContext.describe(key);
623
623
  }
624
624
  };
625
625
  defineProperty(Value2VmContext.prototype, kVmContext, { value: true });
@@ -639,18 +639,16 @@ var FactoryVmContext = class {
639
639
  get(key) {
640
640
  const value = this.getter(key);
641
641
  if (value !== void 0) return value;
642
- const val = VM_SHARED_CONTEXT[key];
643
- if (val !== void 0) return val;
644
- return globalVarNotFound(key);
642
+ return DefaultVmContext.get(key);
645
643
  }
646
644
  /** @inheritdoc */
647
645
  has(key) {
648
- return this.getter(key) !== void 0 || key in VM_SHARED_CONTEXT;
646
+ return this.getter(key) !== void 0 || DefaultVmContext.has(key);
649
647
  }
650
648
  /** @inheritdoc */
651
649
  describe(key) {
652
650
  if (this.getter(key) !== void 0) return this.describer?.(key);
653
- return VM_SHARED_CONTEXT_DESCRIPTIONS[key];
651
+ return DefaultVmContext.describe(key);
654
652
  }
655
653
  };
656
654
  defineProperty(FactoryVmContext.prototype, kVmContext, { value: true });
@@ -1134,7 +1132,7 @@ var $In = (value, iterable) => {
1134
1132
  var $Length = (value) => {
1135
1133
  $AssertInit(value);
1136
1134
  if (isVmArray(value)) return value.length;
1137
- if (isVmRecord(value)) return keys(value).length;
1135
+ if (isVmRecord(value)) return keysLength(value);
1138
1136
  if (isVmWrapper(value)) return value.keys().length;
1139
1137
  throw new VmError(`Value has no length: ${display(value)}`, 0);
1140
1138
  };
@@ -1607,9 +1605,7 @@ function VmLib(value, option, properties) {
1607
1605
  Object.defineProperties(ret, {
1608
1606
  summary: { enumerable: true, value: option.summary },
1609
1607
  params: { enumerable: true, value: option.params },
1610
- paramsType: { enumerable: true, value: option.paramsType },
1611
1608
  returns: { enumerable: true, value: option.returns },
1612
- returnsType: { enumerable: true, value: option.returnsType },
1613
1609
  examples: { enumerable: true, value: option.examples },
1614
1610
  deprecated: { enumerable: true, value: option.deprecated ?? void 0 }
1615
1611
  });
@@ -1626,23 +1622,20 @@ function build(f) {
1626
1622
  }
1627
1623
  var max = VmLib(build(Math.max), {
1628
1624
  summary: "返回一组数中的最大值",
1629
- params: { "..values": "要比较的数值" },
1630
- paramsType: { "..values": "number[]" },
1631
- returnsType: "number",
1625
+ params: { "..values": { type: "number", description: "要比较的数值" } },
1626
+ returns: { type: "number" },
1632
1627
  examples: ["max(3, 7, 2) // 7"]
1633
1628
  });
1634
1629
  var min2 = VmLib(build(Math.min), {
1635
1630
  summary: "返回一组数中的最小值",
1636
- params: { "..values": "要比较的数值" },
1637
- paramsType: { "..values": "number[]" },
1638
- returnsType: "number",
1631
+ params: { "..values": { type: "number", description: "要比较的数值" } },
1632
+ returns: { type: "number" },
1639
1633
  examples: ["min(3, 7, 2) // 2"]
1640
1634
  });
1641
1635
  var hypot = VmLib(build(Math.hypot), {
1642
1636
  summary: "返回所有参数平方和的平方根",
1643
- params: { "..values": "要计算的数值" },
1644
- paramsType: { "..values": "number[]" },
1645
- returnsType: "number",
1637
+ params: { "..values": { type: "number", description: "要计算的数值" } },
1638
+ returns: { type: "number" },
1646
1639
  examples: ["hypot(3, 4) // 5"]
1647
1640
  });
1648
1641
  var sum = VmLib(
@@ -1652,9 +1645,8 @@ var sum = VmLib(
1652
1645
  },
1653
1646
  {
1654
1647
  summary: "返回一组数的总和",
1655
- params: { "..values": "要计算的数值" },
1656
- paramsType: { "..values": "number[]" },
1657
- returnsType: "number",
1648
+ params: { "..values": { type: "number", description: "要计算的数值" } },
1649
+ returns: { type: "number" },
1658
1650
  examples: ["sum(1, 2, 3, 4) // 10"]
1659
1651
  }
1660
1652
  );
@@ -1665,9 +1657,8 @@ var product = VmLib(
1665
1657
  },
1666
1658
  {
1667
1659
  summary: "返回一组数的乘积",
1668
- params: { "..values": "要计算的数值" },
1669
- paramsType: { "..values": "number[]" },
1670
- returnsType: "number",
1660
+ params: { "..values": { type: "number", description: "要计算的数值" } },
1661
+ returns: { type: "number" },
1671
1662
  examples: ["product(2, 3, 4) // 24"]
1672
1663
  }
1673
1664
  );
@@ -1675,16 +1666,13 @@ var product = VmLib(
1675
1666
  // src/vm/lib/global/math/const.ts
1676
1667
  import { DiagnosticCode as DiagnosticCode2 } from "@mirascript/constants";
1677
1668
  var PI = VmLib(Math.PI, {
1678
- summary: "圆周率",
1679
- returnsType: "number"
1669
+ summary: "圆周率"
1680
1670
  });
1681
1671
  var E = VmLib(Math.E, {
1682
- summary: "自然对数的底数",
1683
- returnsType: "number"
1672
+ summary: "自然对数的底数"
1684
1673
  });
1685
1674
  var pi = VmLib(Math.PI, {
1686
1675
  summary: "圆周率",
1687
- returnsType: "number",
1688
1676
  deprecated: {
1689
1677
  use: "PI",
1690
1678
  message: DiagnosticCode2.PreferUppercaseConstant
@@ -1692,35 +1680,28 @@ var pi = VmLib(Math.PI, {
1692
1680
  });
1693
1681
  var e = VmLib(Math.E, {
1694
1682
  summary: "自然对数的底数",
1695
- returnsType: "number",
1696
1683
  deprecated: {
1697
1684
  use: "E",
1698
1685
  message: DiagnosticCode2.PreferUppercaseConstant
1699
1686
  }
1700
1687
  });
1701
1688
  var SQRT1_2 = VmLib(Math.SQRT1_2, {
1702
- summary: "½ 的平方根",
1703
- returnsType: "number"
1689
+ summary: "½ 的平方根"
1704
1690
  });
1705
1691
  var SQRT2 = VmLib(Math.SQRT2, {
1706
- summary: "2 的平方根",
1707
- returnsType: "number"
1692
+ summary: "2 的平方根"
1708
1693
  });
1709
1694
  var LN2 = VmLib(Math.LN2, {
1710
- summary: "2 的自然对数",
1711
- returnsType: "number"
1695
+ summary: "2 的自然对数"
1712
1696
  });
1713
1697
  var LN10 = VmLib(Math.LN10, {
1714
- summary: "10 的自然对数",
1715
- returnsType: "number"
1698
+ summary: "10 的自然对数"
1716
1699
  });
1717
1700
  var LOG2E = VmLib(Math.LOG2E, {
1718
- summary: "e 以 2 为底的对数",
1719
- returnsType: "number"
1701
+ summary: "e 以 2 为底的对数"
1720
1702
  });
1721
1703
  var LOG10E = VmLib(Math.LOG10E, {
1722
- summary: "e 以 10 为底的对数",
1723
- returnsType: "number"
1704
+ summary: "e 以 10 为底的对数"
1724
1705
  });
1725
1706
 
1726
1707
  // src/vm/lib/global/math/unary.ts
@@ -1731,135 +1712,113 @@ function build2(f) {
1731
1712
  }
1732
1713
  var sign = VmLib(build2(Math.sign), {
1733
1714
  summary: "返回数值的符号(正数为 1,负数为 -1,零为 0)",
1734
- params: { x: "要判断符号的数" },
1735
- paramsType: { x: "number" },
1736
- returnsType: "number"
1715
+ params: { x: { type: "number", description: "要判断符号的数" } },
1716
+ returns: { type: "number" }
1737
1717
  });
1738
1718
  var abs2 = VmLib(build2(Math.abs), {
1739
1719
  summary: "返回数值的绝对值",
1740
- params: { x: "要取绝对值的数" },
1741
- paramsType: { x: "number" },
1742
- returnsType: "number"
1720
+ params: { x: { type: "number", description: "要取绝对值的数" } },
1721
+ returns: { type: "number" }
1743
1722
  });
1744
1723
  var acos = VmLib(build2(Math.acos), {
1745
1724
  summary: "返回数值的反余弦值(弧度)",
1746
- params: { x: "要计算反余弦的数" },
1747
- paramsType: { x: "number" },
1748
- returnsType: "number"
1725
+ params: { x: { type: "number", description: "要计算反余弦的数" } },
1726
+ returns: { type: "number" }
1749
1727
  });
1750
1728
  var acosh = VmLib(build2(Math.acosh), {
1751
1729
  summary: "返回数值的反双曲余弦值",
1752
- params: { x: "要计算反双曲余弦的数" },
1753
- paramsType: { x: "number" },
1754
- returnsType: "number"
1730
+ params: { x: { type: "number", description: "要计算反双曲余弦的数" } },
1731
+ returns: { type: "number" }
1755
1732
  });
1756
1733
  var asin = VmLib(build2(Math.asin), {
1757
1734
  summary: "返回数值的反正弦值(弧度)",
1758
- params: { x: "要计算反正弦的数" },
1759
- paramsType: { x: "number" },
1760
- returnsType: "number"
1735
+ params: { x: { type: "number", description: "要计算反正弦的数" } },
1736
+ returns: { type: "number" }
1761
1737
  });
1762
1738
  var asinh = VmLib(build2(Math.asinh), {
1763
1739
  summary: "返回数值的反双曲正弦值",
1764
- params: { x: "要计算反双曲正弦的数" },
1765
- paramsType: { x: "number" },
1766
- returnsType: "number"
1740
+ params: { x: { type: "number", description: "要计算反双曲正弦的数" } },
1741
+ returns: { type: "number" }
1767
1742
  });
1768
1743
  var atan = VmLib(build2(Math.atan), {
1769
1744
  summary: "返回数值的反正切值(弧度)",
1770
- params: { x: "要计算反正切的数" },
1771
- paramsType: { x: "number" },
1772
- returnsType: "number"
1745
+ params: { x: { type: "number", description: "要计算反正切的数" } },
1746
+ returns: { type: "number" }
1773
1747
  });
1774
1748
  var atanh = VmLib(build2(Math.atanh), {
1775
1749
  summary: "返回数值的反双曲正切值",
1776
- params: { x: "要计算反双曲正切的数" },
1777
- paramsType: { x: "number" },
1778
- returnsType: "number"
1750
+ params: { x: { type: "number", description: "要计算反双曲正切的数" } },
1751
+ returns: { type: "number" }
1779
1752
  });
1780
1753
  var cos = VmLib(build2(Math.cos), {
1781
1754
  summary: "返回数值的余弦值",
1782
- params: { x: "要计算余弦的数(弧度)" },
1783
- paramsType: { x: "number" },
1784
- returnsType: "number"
1755
+ params: { x: { type: "number", description: "要计算余弦的数(弧度)" } },
1756
+ returns: { type: "number" }
1785
1757
  });
1786
1758
  var cosh = VmLib(build2(Math.cosh), {
1787
1759
  summary: "返回数值的双曲余弦值",
1788
- params: { x: "要计算双曲余弦的数" },
1789
- paramsType: { x: "number" },
1790
- returnsType: "number"
1760
+ params: { x: { type: "number", description: "要计算双曲余弦的数" } },
1761
+ returns: { type: "number" }
1791
1762
  });
1792
1763
  var sin = VmLib(build2(Math.sin), {
1793
1764
  summary: "返回数值的正弦值",
1794
- params: { x: "要计算正弦的数(弧度)" },
1795
- paramsType: { x: "number" },
1796
- returnsType: "number"
1765
+ params: { x: { type: "number", description: "要计算正弦的数(弧度)" } },
1766
+ returns: { type: "number" }
1797
1767
  });
1798
1768
  var sinh = VmLib(build2(Math.sinh), {
1799
1769
  summary: "返回数值的双曲正弦值",
1800
- params: { x: "要计算双曲正弦的数" },
1801
- paramsType: { x: "number" },
1802
- returnsType: "number"
1770
+ params: { x: { type: "number", description: "要计算双曲正弦的数" } },
1771
+ returns: { type: "number" }
1803
1772
  });
1804
1773
  var tan = VmLib(build2(Math.tan), {
1805
1774
  summary: "返回数值的正切值",
1806
- params: { x: "要计算正切的数(弧度)" },
1807
- paramsType: { x: "number" },
1808
- returnsType: "number"
1775
+ params: { x: { type: "number", description: "要计算正切的数(弧度)" } },
1776
+ returns: { type: "number" }
1809
1777
  });
1810
1778
  var tanh = VmLib(build2(Math.tanh), {
1811
1779
  summary: "返回数值的双曲正切值",
1812
- params: { x: "要计算双曲正切的数" },
1813
- paramsType: { x: "number" },
1814
- returnsType: "number"
1780
+ params: { x: { type: "number", description: "要计算双曲正切的数" } },
1781
+ returns: { type: "number" }
1815
1782
  });
1816
1783
  var exp = VmLib(build2(Math.exp), {
1817
1784
  summary: "返回 e 的指定次幂",
1818
- params: { x: "指数" },
1819
- paramsType: { x: "number" },
1820
- returnsType: "number"
1785
+ params: { x: { type: "number", description: "指数" } },
1786
+ returns: { type: "number" }
1821
1787
  });
1822
1788
  var expm1 = VmLib(build2(Math.expm1), {
1823
1789
  summary: "返回 e 的 x 次幂减 1",
1824
- params: { x: "指数" },
1825
- paramsType: { x: "number" },
1826
- returnsType: "number"
1790
+ params: { x: { type: "number", description: "指数" } },
1791
+ returns: { type: "number" }
1827
1792
  });
1828
1793
  var log = VmLib(build2(Math.log), {
1829
1794
  summary: "返回数值的自然对数(以 e 为底)",
1830
- params: { x: "要取对数的数" },
1831
- paramsType: { x: "number" },
1832
- returnsType: "number"
1795
+ params: { x: { type: "number", description: "要取对数的数" } },
1796
+ returns: { type: "number" }
1833
1797
  });
1834
1798
  var log10 = VmLib(build2(Math.log10), {
1835
1799
  summary: "返回数值的以 10 为底的对数",
1836
- params: { x: "要取对数的数" },
1837
- paramsType: { x: "number" },
1838
- returnsType: "number"
1800
+ params: { x: { type: "number", description: "要取对数的数" } },
1801
+ returns: { type: "number" }
1839
1802
  });
1840
1803
  var log1p = VmLib(build2(Math.log1p), {
1841
1804
  summary: "返回 1 加上数值的自然对数",
1842
- params: { x: "要取对数的数" },
1843
- paramsType: { x: "number" },
1844
- returnsType: "number"
1805
+ params: { x: { type: "number", description: "要取对数的数" } },
1806
+ returns: { type: "number" }
1845
1807
  });
1846
1808
  var log2 = VmLib(build2(Math.log2), {
1847
1809
  summary: "返回数值的以 2 为底的对数",
1848
- params: { x: "要取对数的数" },
1849
- paramsType: { x: "number" },
1850
- returnsType: "number"
1810
+ params: { x: { type: "number", description: "要取对数的数" } },
1811
+ returns: { type: "number" }
1851
1812
  });
1852
1813
  var sqrt = VmLib(build2(Math.sqrt), {
1853
1814
  summary: "返回数值的平方根",
1854
- params: { x: "要开平方的数" },
1855
- paramsType: { x: "number" },
1856
- returnsType: "number"
1815
+ params: { x: { type: "number", description: "要开平方的数" } },
1816
+ returns: { type: "number" }
1857
1817
  });
1858
1818
  var cbrt = VmLib(build2(Math.cbrt), {
1859
1819
  summary: "返回数值的立方根",
1860
- params: { x: "要计算立方根的数" },
1861
- paramsType: { x: "number" },
1862
- returnsType: "number"
1820
+ params: { x: { type: "number", description: "要计算立方根的数" } },
1821
+ returns: { type: "number" }
1863
1822
  });
1864
1823
 
1865
1824
  // src/vm/lib/global/math/round.ts
@@ -1874,21 +1833,27 @@ function build3(f) {
1874
1833
  }
1875
1834
  var trunc2 = VmLib(build3(Math.trunc), {
1876
1835
  summary: "向零方向舍入数值",
1877
- params: { x: "要舍入的数", n: "小数位数,默认为 0" },
1878
- paramsType: { x: "number", n: "number | nil" },
1879
- returnsType: "number"
1836
+ params: {
1837
+ x: { type: "number", description: "要舍入的数" },
1838
+ n: { type: "number | nil", description: "小数位数,默认为 0" }
1839
+ },
1840
+ returns: { type: "number" }
1880
1841
  });
1881
1842
  var floor = VmLib(build3(Math.floor), {
1882
1843
  summary: "向下舍入数值",
1883
- params: { x: "要舍入的数", n: "小数位数,默认为 0" },
1884
- paramsType: { x: "number", n: "number | nil" },
1885
- returnsType: "number"
1844
+ params: {
1845
+ x: { type: "number", description: "要舍入的数" },
1846
+ n: { type: "number | nil", description: "小数位数,默认为 0" }
1847
+ },
1848
+ returns: { type: "number" }
1886
1849
  });
1887
1850
  var ceil2 = VmLib(build3(Math.ceil), {
1888
1851
  summary: "向上舍入数值",
1889
- params: { x: "要舍入的数", n: "小数位数,默认为 0" },
1890
- paramsType: { x: "number", n: "number | nil" },
1891
- returnsType: "number"
1852
+ params: {
1853
+ x: { type: "number", description: "要舍入的数" },
1854
+ n: { type: "number | nil", description: "小数位数,默认为 0" }
1855
+ },
1856
+ returns: { type: "number" }
1892
1857
  });
1893
1858
  var _round = Math.round;
1894
1859
  var _abs = Math.abs;
@@ -1902,9 +1867,11 @@ var round = VmLib(
1902
1867
  }),
1903
1868
  {
1904
1869
  summary: "四舍五入数值",
1905
- params: { x: "要舍入的数", n: "小数位数,默认为 0" },
1906
- paramsType: { x: "number", n: "number" },
1907
- returnsType: "number"
1870
+ params: {
1871
+ x: { type: "number", description: "要舍入的数" },
1872
+ n: { type: "number | nil", description: "小数位数,默认为 0" }
1873
+ },
1874
+ returns: { type: "number" }
1908
1875
  }
1909
1876
  );
1910
1877
 
@@ -2042,9 +2009,8 @@ var gamma = VmLib(
2042
2009
  },
2043
2010
  {
2044
2011
  summary: "返回 Gamma 函数的值",
2045
- params: { x: "要计算 Gamma 函数的数值" },
2046
- paramsType: { x: "number" },
2047
- returnsType: "number",
2012
+ params: { x: { type: "number", description: "要计算 Gamma 函数的数值" } },
2013
+ returns: { type: "number" },
2048
2014
  examples: ["gamma(5) // 24"]
2049
2015
  }
2050
2016
  );
@@ -2068,9 +2034,8 @@ var factorial = VmLib(
2068
2034
  },
2069
2035
  {
2070
2036
  summary: "返回一个数的阶乘",
2071
- params: { x: "要计算阶乘的数值" },
2072
- paramsType: { x: "number" },
2073
- returnsType: "number",
2037
+ params: { x: { type: "number", description: "要计算阶乘的数值" } },
2038
+ returns: { type: "number" },
2074
2039
  examples: ["factorial(5) // 120"]
2075
2040
  }
2076
2041
  );
@@ -2079,21 +2044,24 @@ var factorial = VmLib(
2079
2044
  var { atan2: _atan2, pow: _pow, random: _random } = Math;
2080
2045
  var atan2 = VmLib((x, y) => _atan2(expectNumber(0, x), expectNumber(1, y)), {
2081
2046
  summary: "返回从原点到点 (x, y) 的角度(弧度)",
2082
- params: { x: "x 坐标", y: "y 坐标" },
2083
- paramsType: { x: "number", y: "number" },
2084
- returnsType: "number"
2047
+ params: {
2048
+ x: { type: "number", description: "x 坐标" },
2049
+ y: { type: "number", description: "y 坐标" }
2050
+ },
2051
+ returns: { type: "number" }
2085
2052
  });
2086
2053
  var pow3 = VmLib((x, y) => _pow(expectNumber(0, x), expectNumber(1, y)), {
2087
2054
  summary: "返回 x 的 y 次幂",
2088
- params: { x: "底数", y: "指数" },
2089
- paramsType: { x: "number", y: "number" },
2090
- returnsType: "number"
2055
+ params: {
2056
+ x: { type: "number", description: "底数" },
2057
+ y: { type: "number", description: "指数" }
2058
+ },
2059
+ returns: { type: "number" }
2091
2060
  });
2092
2061
  var random = VmLib(() => _random(), {
2093
2062
  summary: "返回 [0, 1) 之间的伪随机数",
2094
2063
  params: {},
2095
- paramsType: {},
2096
- returnsType: "number"
2064
+ returns: { type: "number" }
2097
2065
  });
2098
2066
 
2099
2067
  // src/vm/lib/global/bit.ts
@@ -2103,9 +2071,11 @@ var b_and = VmLib(
2103
2071
  },
2104
2072
  {
2105
2073
  summary: "返回两个数的按位与",
2106
- params: { x: "第一个操作数", y: "第二个操作数" },
2107
- paramsType: { x: "number", y: "number" },
2108
- returnsType: "number",
2074
+ params: {
2075
+ x: { type: "number", description: "第一个操作数" },
2076
+ y: { type: "number", description: "第二个操作数" }
2077
+ },
2078
+ returns: { type: "number" },
2109
2079
  examples: ["b_and(6, 3) // 2"]
2110
2080
  }
2111
2081
  );
@@ -2115,9 +2085,11 @@ var b_or = VmLib(
2115
2085
  },
2116
2086
  {
2117
2087
  summary: "返回两个数的按位或",
2118
- params: { x: "第一个操作数", y: "第二个操作数" },
2119
- paramsType: { x: "number", y: "number" },
2120
- returnsType: "number",
2088
+ params: {
2089
+ x: { type: "number", description: "第一个操作数" },
2090
+ y: { type: "number", description: "第二个操作数" }
2091
+ },
2092
+ returns: { type: "number" },
2121
2093
  examples: ["b_or(5, 2) // 7"]
2122
2094
  }
2123
2095
  );
@@ -2127,9 +2099,8 @@ var b_not = VmLib(
2127
2099
  },
2128
2100
  {
2129
2101
  summary: "返回一个数的按位取反",
2130
- params: { x: "操作数" },
2131
- paramsType: { x: "number" },
2132
- returnsType: "number",
2102
+ params: { x: { type: "number", description: "操作数" } },
2103
+ returns: { type: "number" },
2133
2104
  examples: ["b_not(0) // -1"]
2134
2105
  }
2135
2106
  );
@@ -2139,9 +2110,11 @@ var b_xor = VmLib(
2139
2110
  },
2140
2111
  {
2141
2112
  summary: "返回两个数的按位异或",
2142
- params: { x: "第一个操作数", y: "第二个操作数" },
2143
- paramsType: { x: "number", y: "number" },
2144
- returnsType: "number",
2113
+ params: {
2114
+ x: { type: "number", description: "第一个操作数" },
2115
+ y: { type: "number", description: "第二个操作数" }
2116
+ },
2117
+ returns: { type: "number" },
2145
2118
  examples: ["b_xor(5, 3) // 6"]
2146
2119
  }
2147
2120
  );
@@ -2151,9 +2124,8 @@ var shl = VmLib(
2151
2124
  },
2152
2125
  {
2153
2126
  summary: "返回第一个操作数左移指定的位数",
2154
- params: { x: "第一个操作数", y: "位数" },
2155
- paramsType: { x: "number", y: "number" },
2156
- returnsType: "number",
2127
+ params: { x: { type: "number", description: "第一个操作数" }, y: { type: "number", description: "位数" } },
2128
+ returns: { type: "number" },
2157
2129
  examples: ["shl(3, 2) // 12"]
2158
2130
  }
2159
2131
  );
@@ -2163,9 +2135,8 @@ var sar = VmLib(
2163
2135
  },
2164
2136
  {
2165
2137
  summary: "返回第一个操作数右移指定的位数",
2166
- params: { x: "第一个操作数", y: "位数" },
2167
- paramsType: { x: "number", y: "number" },
2168
- returnsType: "number",
2138
+ params: { x: { type: "number", description: "第一个操作数" }, y: { type: "number", description: "位数" } },
2139
+ returns: { type: "number" },
2169
2140
  examples: ["sar(-8, 1) // -4"]
2170
2141
  }
2171
2142
  );
@@ -2175,9 +2146,8 @@ var shr = VmLib(
2175
2146
  },
2176
2147
  {
2177
2148
  summary: "返回第一个操作数无符号右移指定的位数",
2178
- params: { x: "第一个操作数", y: "位数" },
2179
- paramsType: { x: "number", y: "number" },
2180
- returnsType: "number",
2149
+ params: { x: { type: "number", description: "第一个操作数" }, y: { type: "number", description: "位数" } },
2150
+ returns: { type: "number" },
2181
2151
  examples: ["shr(8, 1) // 4"]
2182
2152
  }
2183
2153
  );
@@ -2294,14 +2264,13 @@ var _with = VmLib(
2294
2264
  {
2295
2265
  summary: "在数组或记录中设置多个键值对",
2296
2266
  params: {
2297
- data: "要设置的数组或记录",
2298
- "..entries": "要设置的键值对,成对出现;键可以是一个值或一个数组(表示嵌套路径)"
2299
- },
2300
- paramsType: {
2301
- data: "array | record",
2302
- "..entries": `[..[number | string | (number | string)[], any][]]`
2267
+ data: { type: "array | record", description: "要设置的数组或记录" },
2268
+ "..entries": {
2269
+ type: "[..[number | string | (number | string)[], any][]]",
2270
+ description: "要设置的键值对,成对出现;键可以是一个值或一个数组(表示嵌套路径)"
2271
+ }
2303
2272
  },
2304
- returnsType: "type(data)",
2273
+ returns: { type: "type(data)" },
2305
2274
  examples: [
2306
2275
  `with([10, 20], 2, 99, 3 ,100) // [10, 20, 99, 100]`,
2307
2276
  `(a: 1)::with(["b", 1], 2) // (a: 1, b: [nil, 2])`
@@ -2328,9 +2297,10 @@ var keys3 = VmLib(
2328
2297
  },
2329
2298
  {
2330
2299
  summary: "返回数组、记录、外部对象或模块的键列表",
2331
- params: { data: "要获取键的数组、记录、外部对象或模块" },
2332
- paramsType: { data: "array | record | extern | module" },
2333
- returnsType: "number[] | string[]",
2300
+ params: {
2301
+ data: { type: "array | record | extern | module", description: "要获取键的数组、记录、外部对象或模块" }
2302
+ },
2303
+ returns: { type: "number[] | string[]" },
2334
2304
  examples: ["keys([10, 20]) // [0, 1]", 'keys((10, 20)) // ["0", "1"]']
2335
2305
  }
2336
2306
  );
@@ -2344,9 +2314,8 @@ var values3 = VmLib(
2344
2314
  },
2345
2315
  {
2346
2316
  summary: "返回数组或记录的值列表",
2347
- params: { data: "要获取值的数组或记录" },
2348
- paramsType: { data: "array | record" },
2349
- returnsType: "array",
2317
+ params: { data: { type: "array | record", description: "要获取值的数组或记录" } },
2318
+ returns: { type: "array" },
2350
2319
  examples: ["values((a: 1, b: 2)) // [1, 2]"]
2351
2320
  }
2352
2321
  );
@@ -2365,9 +2334,8 @@ var entries2 = VmLib(
2365
2334
  },
2366
2335
  {
2367
2336
  summary: "返回数组或记录的键值对列表",
2368
- params: { data: "要获取键值对的数组或记录" },
2369
- paramsType: { data: "array | record" },
2370
- returnsType: "(number, any)[] | (string, any)[]",
2337
+ params: { data: { type: "array | record", description: "要获取键值对的数组或记录" } },
2338
+ returns: { type: "(number, any)[] | (string, any)[]" },
2371
2339
  examples: ["entries([1]) // [(0, 1)]", 'entries((a: 1)) // [("a", 1)]']
2372
2340
  }
2373
2341
  );
@@ -2386,9 +2354,8 @@ var len = VmLib(
2386
2354
  },
2387
2355
  {
2388
2356
  summary: "返回数组的长度",
2389
- params: { arr: "要求长度的数组" },
2390
- paramsType: { arr: "array | extern" },
2391
- returnsType: "number",
2357
+ params: { arr: { type: "array | extern", description: "要求长度的数组" } },
2358
+ returns: { type: "number" },
2392
2359
  examples: ["len([1, 2, 3]) // 3"]
2393
2360
  }
2394
2361
  );
@@ -2408,14 +2375,13 @@ var map2 = VmLib(
2408
2375
  {
2409
2376
  summary: "对数组或记录中的每个元素应用函数,并返回结果",
2410
2377
  params: {
2411
- data: "要映射的数组或记录",
2412
- f: "应用于每个元素的函数"
2413
- },
2414
- paramsType: {
2415
- data: "array | record",
2416
- f: "fn(value: any, key: number | string, input: type(data)) -> any"
2378
+ data: { type: "array | record", description: "要映射的数组或记录" },
2379
+ f: {
2380
+ type: "fn(value: any, key: number | string, input: type(data)) -> any",
2381
+ description: "应用于每个元素的函数"
2382
+ }
2417
2383
  },
2418
- returnsType: "type(data)",
2384
+ returns: { type: "type(data)" },
2419
2385
  examples: ["map([1, 2, 3], fn { it * it }) // [1, 4, 9]"]
2420
2386
  }
2421
2387
  );
@@ -2427,14 +2393,13 @@ var filter = VmLib(
2427
2393
  {
2428
2394
  summary: "过滤数组或记录中的元素,返回满足条件的元素",
2429
2395
  params: {
2430
- data: "要过滤的数组或记录",
2431
- predicate: "用于测试每个元素的函数"
2432
- },
2433
- paramsType: {
2434
- data: "array | record",
2435
- predicate: "fn(value: any, key: number | string, input: type(data)) -> boolean"
2396
+ data: { type: "array | record", description: "要过滤的数组或记录" },
2397
+ predicate: {
2398
+ type: "fn(value: any, key: number | string, input: type(data)) -> boolean",
2399
+ description: "用于测试每个元素的函数"
2400
+ }
2436
2401
  },
2437
- returnsType: "type(data)",
2402
+ returns: { type: "type(data)" },
2438
2403
  examples: ["filter([1, 2, 3, 4], fn { it % 2 == 0 }) // [2, 4]"]
2439
2404
  }
2440
2405
  );
@@ -2446,14 +2411,13 @@ var filter_map = VmLib(
2446
2411
  {
2447
2412
  summary: "对数组或记录中的每个元素应用函数,并返回非 `nil` 的结果",
2448
2413
  params: {
2449
- data: "要映射的数组或记录",
2450
- f: "应用于每个元素的函数"
2451
- },
2452
- paramsType: {
2453
- data: "array | record",
2454
- f: "fn(value: any, key: number | string, input: type(data)) -> any | nil"
2414
+ data: { type: "array | record", description: "要映射的数组或记录" },
2415
+ f: {
2416
+ type: "fn(value: any, key: number | string, input: type(data)) -> any | nil",
2417
+ description: "应用于每个元素的函数"
2418
+ }
2455
2419
  },
2456
- returnsType: "type(data)",
2420
+ returns: { type: "type(data)" },
2457
2421
  examples: ["filter_map([1, 2, 3], fn {\n if it % 2 == 0 { it * it } else { nil } \n}) // [4]"]
2458
2422
  }
2459
2423
  );
@@ -2491,14 +2455,13 @@ var find = VmLib(
2491
2455
  {
2492
2456
  summary: "查找数组或记录中的键值对,返回第一个满足条件的键值对",
2493
2457
  params: {
2494
- data: "要查找的数组或记录",
2495
- predicate: "用于测试每个键值对的函数,或要查找的值"
2496
- },
2497
- paramsType: {
2498
- data: "array | record",
2499
- predicate: "(fn(value: any, key: number | string, input: type(data)) -> boolean) | any"
2458
+ data: { type: "array | record", description: "要查找的数组或记录" },
2459
+ predicate: {
2460
+ type: "(fn(value: any, key: number | string, input: type(data)) -> boolean) | any",
2461
+ description: "用于测试每个键值对的函数,或要查找的值"
2462
+ }
2500
2463
  },
2501
- returnsType: "(number | string, any) | nil",
2464
+ returns: { type: "(number | string, any) | nil" },
2502
2465
  examples: ["find([3, 5, 8], fn (v) { v % 2 == 0 }) // (2, 8)", `find((x: 1, y: 2, z: 3), 2) // ('y', 2)`]
2503
2466
  }
2504
2467
  );
@@ -2511,9 +2474,11 @@ var flatten = VmLib(
2511
2474
  },
2512
2475
  {
2513
2476
  summary: "将数组扁平化",
2514
- params: { data: "要扁平化的数组", depth: "扁平化的深度,默认为 1" },
2515
- paramsType: { data: "array", depth: "number" },
2516
- returnsType: "array",
2477
+ params: {
2478
+ data: { type: "array", description: "要扁平化的数组" },
2479
+ depth: { type: "number | nil", description: "扁平化的深度,默认为 1" }
2480
+ },
2481
+ returns: { type: "array" },
2517
2482
  examples: ["flatten([[1, 2], [3, [4]]], 2) // [1, 2, 3, 4]"]
2518
2483
  }
2519
2484
  );
@@ -2528,9 +2493,8 @@ var reverse = VmLib(
2528
2493
  },
2529
2494
  {
2530
2495
  summary: "返回数组的反转副本",
2531
- params: { arr: "要反转的数组" },
2532
- paramsType: { arr: "array" },
2533
- returnsType: "array",
2496
+ params: { arr: { type: "array", description: "要反转的数组" } },
2497
+ returns: { type: "array" },
2534
2498
  examples: ["reverse([1, 2, 3]) // [3, 2, 1]"]
2535
2499
  }
2536
2500
  );
@@ -2561,9 +2525,8 @@ var zip = VmLib(
2561
2525
  },
2562
2526
  {
2563
2527
  summary: "将数组的数组/记录转换为数组/记录的数组",
2564
- params: { data: "要转换的数组/记录" },
2565
- paramsType: { data: "array | record" },
2566
- returnsType: "(array | record)[]",
2528
+ params: { data: { type: "array | record", description: "要转换的数组/记录" } },
2529
+ returns: { type: "(array | record)[]" },
2567
2530
  examples: [
2568
2531
  'zip((x: [1, 2], y: ["a", "b"])) // [(x: 1, y: "a"), (x: 2, y: "b")]',
2569
2532
  `zip([[1, 2], ["a", "b"]]) // [[1, "a"], [2, "b"]]`
@@ -2596,12 +2559,14 @@ var all = VmLib(
2596
2559
  },
2597
2560
  {
2598
2561
  summary: "检查数组或记录中的所有键值对是否都满足条件",
2599
- params: { data: "要检查的数组或记录", predicate: "用于测试每个键值对的函数,返回 true 或 false" },
2600
- paramsType: {
2601
- data: "array | record",
2602
- predicate: "fn(value: any, key: number | string, input: type(data)) -> boolean"
2562
+ params: {
2563
+ data: { type: "array | record", description: "要检查的数组或记录" },
2564
+ predicate: {
2565
+ type: "fn(value: any, key: number | string, input: type(data)) -> boolean",
2566
+ description: "用于测试每个键值对的函数"
2567
+ }
2603
2568
  },
2604
- returnsType: "boolean",
2569
+ returns: { type: "boolean" },
2605
2570
  examples: ["all([1, 2, 3], fn { it > 0 }) // true"]
2606
2571
  }
2607
2572
  );
@@ -2629,12 +2594,14 @@ var any = VmLib(
2629
2594
  },
2630
2595
  {
2631
2596
  summary: "检查数组或记录中的是否存在满足条件的键值对",
2632
- params: { data: "要检查的数组或记录", predicate: "用于测试每个键值对的函数,返回 true 或 false" },
2633
- paramsType: {
2634
- data: "array | record",
2635
- predicate: "fn(value: any, key: number | string, input: type(data)) -> boolean"
2597
+ params: {
2598
+ data: { type: "array | record", description: "要检查的数组或记录" },
2599
+ predicate: {
2600
+ type: "fn(value: any, key: number | string, input: type(data)) -> boolean",
2601
+ description: "用于测试每个键值对的函数"
2602
+ }
2636
2603
  },
2637
- returnsType: "boolean",
2604
+ returns: { type: "boolean" },
2638
2605
  examples: ["any([0, 1, 2], fn { it > 1 }) // true"]
2639
2606
  }
2640
2607
  );
@@ -2677,14 +2644,13 @@ var sort = VmLib(
2677
2644
  {
2678
2645
  summary: "对数组中的元素进行排序,并返回排序后的结果",
2679
2646
  params: {
2680
- data: "要排序的数组",
2681
- comparator: "用于比较两个元素的函数,返回一个数字,表示它们的相对顺序,默认按升序排列"
2682
- },
2683
- paramsType: {
2684
- data: "array",
2685
- comparator: "fn(a: any, b: any) -> number"
2647
+ data: { type: "array", description: "要排序的数组" },
2648
+ comparator: {
2649
+ type: "fn(a: any, b: any) -> number",
2650
+ description: "用于比较两个元素的函数,返回一个数字,表示它们的相对顺序,默认按升序排列"
2651
+ }
2686
2652
  },
2687
- returnsType: "array",
2653
+ returns: { type: "array" },
2688
2654
  examples: ['sort(["c", "a", "b"]) // ["a", "b", "c"]']
2689
2655
  }
2690
2656
  );
@@ -2708,16 +2674,17 @@ var sort_by = VmLib(
2708
2674
  {
2709
2675
  summary: "根据键函数对数组中的元素进行排序,并返回排序后的结果",
2710
2676
  params: {
2711
- data: "要排序的数组",
2712
- key: "用于提取排序键的函数,接受一个元素并返回其排序键",
2713
- comparator: "用于比较两个排序键的函数,返回一个数字,表示它们的相对顺序,默认按升序排列"
2714
- },
2715
- paramsType: {
2716
- data: "array",
2717
- key: "fn(value: any, index: number, arr: type(data)) -> any",
2718
- comparator: "fn(a: any, b: any) -> number"
2677
+ data: { type: "array", description: "要排序的数组" },
2678
+ key: {
2679
+ type: "fn(value: any, index: number, arr: type(data)) -> any",
2680
+ description: "用于提取排序键的函数,接受一个元素并返回其排序键"
2681
+ },
2682
+ comparator: {
2683
+ type: "fn(a: any, b: any) -> number",
2684
+ description: "用于比较两个排序键的函数,返回一个数字,表示它们的相对顺序,默认按升序排列"
2685
+ }
2719
2686
  },
2720
- returnsType: "array",
2687
+ returns: { type: "array" },
2721
2688
  examples: ['sort_by([(0, "x"), (2, "y"), (1, "z")], fn (item) { item[0] }) // [(0, "x"), (1, "z"), (2, "y")]']
2722
2689
  }
2723
2690
  );
@@ -2754,14 +2721,13 @@ var unique = VmLib(
2754
2721
  {
2755
2722
  summary: "对数组中的元素进行去重,并返回去重后的结果",
2756
2723
  params: {
2757
- data: "要去重的数组",
2758
- equal: "用于判等两个元素的函数,返回一个布尔值,默认使用严格相等比较"
2759
- },
2760
- paramsType: {
2761
- data: "array",
2762
- equal: "fn(a: any, b: any) -> boolean"
2724
+ data: { type: "array", description: "要去重的数组" },
2725
+ equal: {
2726
+ type: "fn(a: any, b: any) -> boolean",
2727
+ description: "用于判等两个元素的函数,返回一个布尔值,默认使用严格相等比较"
2728
+ }
2763
2729
  },
2764
- returnsType: "array",
2730
+ returns: { type: "array" },
2765
2731
  examples: ["unique([1, 2, 2, 3]) // [1, 2, 3]"]
2766
2732
  }
2767
2733
  );
@@ -2794,16 +2760,17 @@ var unique_by = VmLib(
2794
2760
  {
2795
2761
  summary: "根据键函数对数组中的元素进行去重,并返回去重后的结果",
2796
2762
  params: {
2797
- data: "要去重的数组",
2798
- key: "用于提取去重键的函数,接受一个元素并返回其去重键",
2799
- equal: "用于判同两个元素的函数,返回一个布尔值,默认使用严格相等比较"
2800
- },
2801
- paramsType: {
2802
- data: "array",
2803
- key: "fn(value: any, index: number, arr: type(data)) -> any",
2804
- equal: "fn(a: any, b: any) -> boolean"
2763
+ data: { type: "array", description: "要去重的数组" },
2764
+ key: {
2765
+ type: "fn(value: any, index: number, arr: type(data)) -> any",
2766
+ description: "用于提取去重键的函数,接受一个元素并返回其去重键"
2767
+ },
2768
+ equal: {
2769
+ type: "fn(a: any, b: any) -> boolean",
2770
+ description: "用于判同两个元素的函数,返回一个布尔值,默认使用严格相等比较"
2771
+ }
2805
2772
  },
2806
- returnsType: "array",
2773
+ returns: { type: "array" },
2807
2774
  examples: ['unique_by(["apple", "banana", "apricot"], fn { chars(it)[0] }) // ["apple", "banana"]']
2808
2775
  }
2809
2776
  );
@@ -2821,14 +2788,10 @@ var repeat = VmLib(
2821
2788
  {
2822
2789
  summary: "创建一个包含重复元素的数组",
2823
2790
  params: {
2824
- data: "要重复的元素",
2825
- times: "重复的次数,必须是非负整数"
2826
- },
2827
- paramsType: {
2828
- data: "any",
2829
- times: "number"
2791
+ data: { type: "any", description: "要重复的元素" },
2792
+ times: { type: "number", description: "重复的次数,必须是非负整数" }
2830
2793
  },
2831
- returnsType: "type(data)[]",
2794
+ returns: { type: "type(data)[]" },
2832
2795
  examples: ["repeat(0, 5) // [0, 0, 0, 0, 0]", 'repeat("a", 3) // ["a", "a", "a"]']
2833
2796
  }
2834
2797
  );
@@ -2850,9 +2813,14 @@ var new_record = VmLib(
2850
2813
  },
2851
2814
  {
2852
2815
  summary: "根据生成器函数创建一个记录",
2853
- params: { size: "记录的大小", generator: "生成器函数,返回键值对或 nil(表示跳过该条目)" },
2854
- paramsType: { size: "number", generator: "fn(index: number) -> (string, any) | nil" },
2855
- returnsType: "record",
2816
+ params: {
2817
+ size: { type: "number", description: "记录的大小" },
2818
+ generator: {
2819
+ type: "fn(index: number) -> (string, any) | nil",
2820
+ description: "生成器函数,返回键值对或 nil(表示跳过该条目)"
2821
+ }
2822
+ },
2823
+ returns: { type: "record" },
2856
2824
  examples: ["new_record(3, fn { (it, it * 2) }) // (0, 2, 4)"]
2857
2825
  }
2858
2826
  );
@@ -2868,9 +2836,11 @@ var new_array = VmLib(
2868
2836
  },
2869
2837
  {
2870
2838
  summary: "根据生成器函数创建一个数组",
2871
- params: { length: "数组的长度", generator: "生成器函数,返回数组元素的值" },
2872
- paramsType: { length: "number", generator: "fn(index: number) -> any" },
2873
- returnsType: "array",
2839
+ params: {
2840
+ length: { type: "number", description: "数组的长度" },
2841
+ generator: { type: "fn(index: number) -> any", description: "生成器函数,返回数组元素的值" }
2842
+ },
2843
+ returns: { type: "array" },
2874
2844
  examples: ["new_array(5, fn { it * it }) // [0, 1, 4, 9, 16]"]
2875
2845
  }
2876
2846
  );
@@ -3012,9 +2982,10 @@ var debug_print = VmLib(
3012
2982
  },
3013
2983
  {
3014
2984
  summary: "打印调试信息到控制台",
3015
- params: { "..args": "要打印的调试信息,可以是任意类型" },
3016
- paramsType: { "..args": "any[]" },
3017
- returnsType: "nil",
2985
+ params: {
2986
+ "..args": { type: "any[]", description: "要打印的值,可以是任意类型" }
2987
+ },
2988
+ returns: { type: "nil" },
3018
2989
  examples: ['debug_print("value:", 42);']
3019
2990
  },
3020
2991
  // eslint-disable-next-line no-console
@@ -3029,9 +3000,8 @@ var panic = VmLib(
3029
3000
  },
3030
3001
  {
3031
3002
  summary: "产生错误,并打印错误信息到控制台",
3032
- params: { message: "要打印的错误信息" },
3033
- paramsType: { message: "string" },
3034
- returnsType: "never",
3003
+ params: { message: { type: "string", description: "要打印的错误信息" } },
3004
+ returns: { type: "never" },
3035
3005
  examples: ['panic("boom");']
3036
3006
  },
3037
3007
  // eslint-disable-next-line no-console
@@ -3069,9 +3039,8 @@ var to_json = VmLib(
3069
3039
  },
3070
3040
  {
3071
3041
  summary: "将数据转换为 JSON 字符串",
3072
- params: { data: "要转换为 JSON 的数据" },
3073
- paramsType: { data: "any" },
3074
- returnsType: "string",
3042
+ params: { data: { type: "any", description: "要转换为 JSON 的数据" } },
3043
+ returns: { type: "string" },
3075
3044
  examples: ['to_json([1, 2, 3]) // "[1,2,3]"']
3076
3045
  }
3077
3046
  );
@@ -3087,9 +3056,11 @@ var from_json = VmLib(
3087
3056
  },
3088
3057
  {
3089
3058
  summary: "将 JSON 字符串转换为数据",
3090
- params: { json: "要转换的 JSON 字符串", fallback: "如果转换失败,返回的默认值" },
3091
- paramsType: { json: "string", fallback: "any" },
3092
- returnsType: "any",
3059
+ params: {
3060
+ json: { type: "string", description: "要转换的 JSON 字符串" },
3061
+ fallback: { type: "any", description: "如果转换失败,返回的默认值" }
3062
+ },
3063
+ returns: { type: "any" },
3093
3064
  examples: [`from_json('{"a":1}') // (a: 1)`]
3094
3065
  }
3095
3066
  );
@@ -3103,11 +3074,10 @@ var to_string = VmLib(
3103
3074
  {
3104
3075
  summary: "将数据转换为字符串",
3105
3076
  params: {
3106
- data: "要转换的数据",
3107
- fallback: "转换失败时的返回值"
3077
+ data: { type: "any", description: "要转换的数据" },
3078
+ fallback: { type: "any", description: "转换失败时的返回值" }
3108
3079
  },
3109
- paramsType: { data: "any", fallback: "any" },
3110
- returnsType: "string | type(fallback)",
3080
+ returns: { type: "string | type(fallback)" },
3111
3081
  examples: ['to_string([1, 2]) // "1, 2"']
3112
3082
  }
3113
3083
  );
@@ -3119,11 +3089,10 @@ var to_number = VmLib(
3119
3089
  {
3120
3090
  summary: "将数据转换为数字",
3121
3091
  params: {
3122
- data: "要转换的数据",
3123
- fallback: "转换失败时的返回值"
3092
+ data: { type: "string | number | boolean", description: "要转换的数据" },
3093
+ fallback: { type: "any", description: "转换失败时的返回值" }
3124
3094
  },
3125
- paramsType: { data: "string | number | boolean", fallback: "any" },
3126
- returnsType: "number | type(fallback)",
3095
+ returns: { type: "number | type(fallback)" },
3127
3096
  examples: ['to_number("1.5") // 1.5']
3128
3097
  }
3129
3098
  );
@@ -3134,9 +3103,11 @@ var format = VmLib(
3134
3103
  },
3135
3104
  {
3136
3105
  summary: "将数据格式化为指定格式的字符串",
3137
- params: { data: "要格式化的数据", format: "格式字符串" },
3138
- paramsType: { data: "any", format: "string" },
3139
- returnsType: "string",
3106
+ params: {
3107
+ data: { type: "any", description: "要格式化的数据" },
3108
+ format: { type: "string", description: "格式字符串" }
3109
+ },
3110
+ returns: { type: "string" },
3140
3111
  examples: ['format(12, ".3") // "12.000"']
3141
3112
  }
3142
3113
  );
@@ -3148,9 +3119,8 @@ var trim_start = VmLib(
3148
3119
  },
3149
3120
  {
3150
3121
  summary: "去除字符串开头的空白字符",
3151
- params: { str: "要处理的字符串" },
3152
- paramsType: { str: "string" },
3153
- returnsType: "string",
3122
+ params: { str: { type: "string", description: "要处理的字符串" } },
3123
+ returns: { type: "string" },
3154
3124
  examples: ['trim_start(" mira") // "mira"']
3155
3125
  }
3156
3126
  );
@@ -3160,9 +3130,8 @@ var trim_end = VmLib(
3160
3130
  },
3161
3131
  {
3162
3132
  summary: "去除字符串结尾的空白字符",
3163
- params: { str: "要处理的字符串" },
3164
- paramsType: { str: "string" },
3165
- returnsType: "string",
3133
+ params: { str: { type: "string", description: "要处理的字符串" } },
3134
+ returns: { type: "string" },
3166
3135
  examples: ['trim_end("mira ") // "mira"']
3167
3136
  }
3168
3137
  );
@@ -3172,9 +3141,8 @@ var trim = VmLib(
3172
3141
  },
3173
3142
  {
3174
3143
  summary: "去除字符串两端的空白字符",
3175
- params: { str: "要处理的字符串" },
3176
- paramsType: { str: "string" },
3177
- returnsType: "string",
3144
+ params: { str: { type: "string", description: "要处理的字符串" } },
3145
+ returns: { type: "string" },
3178
3146
  examples: ['trim(" mira ") // "mira"']
3179
3147
  }
3180
3148
  );
@@ -3186,9 +3154,8 @@ var to_uppercase = VmLib(
3186
3154
  },
3187
3155
  {
3188
3156
  summary: "将字符串转换为大写",
3189
- params: { str: "要转换的字符串" },
3190
- paramsType: { str: "string" },
3191
- returnsType: "string",
3157
+ params: { str: { type: "string", description: "要转换的字符串" } },
3158
+ returns: { type: "string" },
3192
3159
  examples: ['to_uppercase("mira") // "MIRA"']
3193
3160
  }
3194
3161
  );
@@ -3198,9 +3165,8 @@ var to_lowercase = VmLib(
3198
3165
  },
3199
3166
  {
3200
3167
  summary: "将字符串转换为小写",
3201
- params: { str: "要转换的字符串" },
3202
- paramsType: { str: "string" },
3203
- returnsType: "string",
3168
+ params: { str: { type: "string", description: "要转换的字符串" } },
3169
+ returns: { type: "string" },
3204
3170
  examples: ['to_lowercase("MIRA") // "mira"']
3205
3171
  }
3206
3172
  );
@@ -3212,9 +3178,11 @@ var starts_with = VmLib(
3212
3178
  },
3213
3179
  {
3214
3180
  summary: "检查字符串是否以指定子串开头",
3215
- params: { str: "要检查的字符串", search: "要匹配的子串" },
3216
- paramsType: { str: "string", search: "string" },
3217
- returnsType: "boolean",
3181
+ params: {
3182
+ str: { type: "string", description: "要检查的字符串" },
3183
+ search: { type: "string", description: "要匹配的子串" }
3184
+ },
3185
+ returns: { type: "boolean" },
3218
3186
  examples: ['starts_with("mira", "mi") // true']
3219
3187
  }
3220
3188
  );
@@ -3224,9 +3192,11 @@ var ends_with = VmLib(
3224
3192
  },
3225
3193
  {
3226
3194
  summary: "检查字符串是否以指定子串结尾",
3227
- params: { str: "要检查的字符串", search: "要匹配的子串" },
3228
- paramsType: { str: "string", search: "string" },
3229
- returnsType: "boolean",
3195
+ params: {
3196
+ str: { type: "string", description: "要检查的字符串" },
3197
+ search: { type: "string", description: "要匹配的子串" }
3198
+ },
3199
+ returns: { type: "boolean" },
3230
3200
  examples: ['ends_with("mira", "ra") // true']
3231
3201
  }
3232
3202
  );
@@ -3236,9 +3206,11 @@ var contains = VmLib(
3236
3206
  },
3237
3207
  {
3238
3208
  summary: "检查字符串是否包含指定子串",
3239
- params: { str: "要检查的字符串", search: "要匹配的子串" },
3240
- paramsType: { str: "string", search: "string" },
3241
- returnsType: "boolean",
3209
+ params: {
3210
+ str: { type: "string", description: "要检查的字符串" },
3211
+ search: { type: "string", description: "要匹配的子串" }
3212
+ },
3213
+ returns: { type: "boolean" },
3242
3214
  examples: ['contains("hello", "ll") // true']
3243
3215
  }
3244
3216
  );
@@ -3250,9 +3222,8 @@ var chars = VmLib(
3250
3222
  },
3251
3223
  {
3252
3224
  summary: "将字符串转换为字符数组",
3253
- params: { str: "要转换的字符串" },
3254
- paramsType: { str: "string" },
3255
- returnsType: "string[]",
3225
+ params: { str: { type: "string", description: "要转换的字符串" } },
3226
+ returns: { type: "string[]" },
3256
3227
  examples: ['chars("Mira") // ["M", "i", "r", "a"]']
3257
3228
  }
3258
3229
  );
@@ -3265,9 +3236,12 @@ var replace = VmLib(
3265
3236
  },
3266
3237
  {
3267
3238
  summary: "替换字符串中的指定子串",
3268
- params: { str: "要处理的字符串", search: "要替换的子串", replacement: "替换后的字符串" },
3269
- paramsType: { str: "string", search: "string", replacement: "string" },
3270
- returnsType: "string",
3239
+ params: {
3240
+ str: { type: "string", description: "要处理的字符串" },
3241
+ search: { type: "string", description: "要替换的子串" },
3242
+ replacement: { type: "string", description: "替换后的字符串" }
3243
+ },
3244
+ returns: { type: "string" },
3271
3245
  examples: ['replace("foo bar foo", "foo", "baz") // "baz bar baz"']
3272
3246
  }
3273
3247
  );
@@ -3280,9 +3254,11 @@ var split = VmLib(
3280
3254
  },
3281
3255
  {
3282
3256
  summary: "将字符串拆分为子串数组",
3283
- params: { str: "要拆分的字符串", separator: "分隔符" },
3284
- paramsType: { str: "string", separator: "string" },
3285
- returnsType: "string[]",
3257
+ params: {
3258
+ str: { type: "string", description: "要拆分的字符串" },
3259
+ separator: { type: "string", description: "分隔符" }
3260
+ },
3261
+ returns: { type: "string[]" },
3286
3262
  examples: ['split("a,b,c", ",") // ["a", "b", "c"]']
3287
3263
  }
3288
3264
  );
@@ -3294,9 +3270,11 @@ var join = VmLib(
3294
3270
  },
3295
3271
  {
3296
3272
  summary: "将字符串数组连接为单个字符串",
3297
- params: { arr: "要连接的字符串数组", separator: "分隔符" },
3298
- paramsType: { arr: "string[]", separator: "string" },
3299
- returnsType: "string",
3273
+ params: {
3274
+ arr: { type: "string[]", description: "要连接的字符串数组" },
3275
+ separator: { type: "string", description: "分隔符" }
3276
+ },
3277
+ returns: { type: "string" },
3300
3278
  examples: ['join(["a", "b", "c"], "-") // "a-b-c"']
3301
3279
  }
3302
3280
  );
@@ -3337,11 +3315,10 @@ var to_timestamp = VmLib(
3337
3315
  {
3338
3316
  summary: "将数据转换为 Unix 毫秒时间戳",
3339
3317
  params: {
3340
- datetime: "要转换的数据,默认为当前时间",
3341
- fallback: "转换失败时的返回值"
3318
+ datetime: { type: "number | string | nil", description: "要转换的数据,默认为当前时间" },
3319
+ fallback: { type: "any", description: "转换失败时的返回值" }
3342
3320
  },
3343
- paramsType: { datetime: "number | string | nil", fallback: "any" },
3344
- returnsType: "number | type(fallback)",
3321
+ returns: { type: "number | type(fallback)" },
3345
3322
  examples: ['to_timestamp("1970-01-01T00:00:00Z") // 0']
3346
3323
  }
3347
3324
  );
@@ -3366,12 +3343,11 @@ var to_datetime = VmLib(
3366
3343
  {
3367
3344
  summary: "将数据转换为 DateTime 记录",
3368
3345
  params: {
3369
- datetime: "要转换的数据,默认为当前时间",
3370
- offset: "时区偏移量(单位:小时),默认为 0",
3371
- fallback: "转换失败时的返回值"
3346
+ datetime: { type: "number | string | nil", description: "要转换的数据,默认为当前时间" },
3347
+ offset: { type: "number | nil", description: "时区偏移量(单位:小时),默认为 0" },
3348
+ fallback: { type: "any", description: "转换失败时的返回值" }
3372
3349
  },
3373
- paramsType: { datetime: "number | string | nil", offset: "number | nil", fallback: "any" },
3374
- returnsType: "DateTime | type(fallback)",
3350
+ returns: { type: "DateTime | type(fallback)" },
3375
3351
  examples: [
3376
3352
  `
3377
3353
  to_datetime(0)
@@ -3394,11 +3370,10 @@ var to_iso8601 = VmLib(
3394
3370
  {
3395
3371
  summary: "将数据转换为 ISO 8601 格式的字符串",
3396
3372
  params: {
3397
- datetime: "要转换的数据,默认为当前时间",
3398
- fallback: "转换失败时的返回值"
3373
+ datetime: { type: "number | string | nil", description: "要转换的数据,默认为当前时间" },
3374
+ fallback: { type: "any", description: "转换失败时的返回值" }
3399
3375
  },
3400
- paramsType: { datetime: "number | string | nil", fallback: "any" },
3401
- returnsType: "string | type(fallback)",
3376
+ returns: { type: "string | type(fallback)" },
3402
3377
  examples: ['to_iso8601(0) // "1970-01-01T00:00:00.000Z"']
3403
3378
  }
3404
3379
  );
@@ -3450,9 +3425,8 @@ var size = VmLib(
3450
3425
  },
3451
3426
  {
3452
3427
  summary: "获取矩阵尺寸",
3453
- params: { matrix: "要获取尺寸的矩阵" },
3454
- paramsType: { matrix: "any[][]" },
3455
- returnsType: "[number, number]",
3428
+ params: { matrix: { type: "any[][]", description: "要获取尺寸的矩阵" } },
3429
+ returns: { type: "[number, number]" },
3456
3430
  examples: ["matrix.size([[1, 2], [3, 4]]) // [2, 2]"]
3457
3431
  }
3458
3432
  );
@@ -3476,9 +3450,8 @@ var transpose = VmLib(
3476
3450
  },
3477
3451
  {
3478
3452
  summary: "转置矩阵",
3479
- params: { matrix: "要转置的矩阵" },
3480
- paramsType: { matrix: "any[][]" },
3481
- returnsType: "any[][]",
3453
+ params: { matrix: { type: "any[][]", description: "要转置的矩阵" } },
3454
+ returns: { type: "any[][]" },
3482
3455
  examples: ["matrix.transpose([[1, 2], [3, 4]]) // [[1, 3], [2, 4]]"]
3483
3456
  }
3484
3457
  );
@@ -3591,9 +3564,12 @@ var entrywise = VmLib(
3591
3564
  },
3592
3565
  {
3593
3566
  summary: "逐项操作",
3594
- params: { a: "第一个操作数", b: "第二个操作数", f: "操作函数" },
3595
- paramsType: { a: "any | any[] | any[][]", b: "any | any[] | any[][]", f: "fn(a: any, b: any) -> any" },
3596
- returnsType: "any | any[] | any[][]",
3567
+ params: {
3568
+ a: { type: "any | any[] | any[][]", description: "第一个操作数" },
3569
+ b: { type: "any | any[] | any[][]", description: "第二个操作数" },
3570
+ f: { type: "fn(a: any, b: any) -> any", description: "操作函数" }
3571
+ },
3572
+ returns: { type: "any | any[] | any[][]" },
3597
3573
  examples: [`matrix.entrywise([1, 2], [3, 4], fn (x, y) { x + y }) // [4, 6]`]
3598
3574
  }
3599
3575
  );
@@ -3605,9 +3581,11 @@ var add2 = VmLib(
3605
3581
  },
3606
3582
  {
3607
3583
  summary: "逐项相加",
3608
- params: { a: "第一个操作数", b: "第二个操作数" },
3609
- paramsType: { a: "number | number[] | number[][]", b: "number | number[] | number[][]" },
3610
- returnsType: "number | number[] | number[][]",
3584
+ params: {
3585
+ a: { type: "number | number[] | number[][]", description: "第一个操作数" },
3586
+ b: { type: "number | number[] | number[][]", description: "第二个操作数" }
3587
+ },
3588
+ returns: { type: "number | number[] | number[][]" },
3611
3589
  examples: ["matrix.add([1, 2], [3, 4]) // [4, 6]"]
3612
3590
  }
3613
3591
  );
@@ -3619,9 +3597,11 @@ var subtract = VmLib(
3619
3597
  },
3620
3598
  {
3621
3599
  summary: "逐项相减",
3622
- params: { a: "第一个操作数", b: "第二个操作数" },
3623
- paramsType: { a: "number | number[] | number[][]", b: "number | number[] | number[][]" },
3624
- returnsType: "number | number[] | number[][]",
3600
+ params: {
3601
+ a: { type: "number | number[] | number[][]", description: "第一个操作数" },
3602
+ b: { type: "number | number[] | number[][]", description: "第二个操作数" }
3603
+ },
3604
+ returns: { type: "number | number[] | number[][]" },
3625
3605
  examples: ["matrix.subtract([3, 4], [1, 2]) // [2, 2]"]
3626
3606
  }
3627
3607
  );
@@ -3633,9 +3613,11 @@ var entrywise_multiply = VmLib(
3633
3613
  },
3634
3614
  {
3635
3615
  summary: "逐项相乘",
3636
- params: { a: "第一个操作数", b: "第二个操作数" },
3637
- paramsType: { a: "number | number[] | number[][]", b: "number | number[] | number[][]" },
3638
- returnsType: "number | number[] | number[][]",
3616
+ params: {
3617
+ a: { type: "number | number[] | number[][]", description: "第一个操作数" },
3618
+ b: { type: "number | number[] | number[][]", description: "第二个操作数" }
3619
+ },
3620
+ returns: { type: "number | number[] | number[][]" },
3639
3621
  examples: ["matrix.entrywise_multiply([1, 2], [3, 4]) // [3, 8]"]
3640
3622
  }
3641
3623
  );
@@ -3647,9 +3629,11 @@ var entrywise_divide = VmLib(
3647
3629
  },
3648
3630
  {
3649
3631
  summary: "逐项相除",
3650
- params: { a: "第一个操作数", b: "第二个操作数" },
3651
- paramsType: { a: "number | number[] | number[][]", b: "number | number[] | number[][]" },
3652
- returnsType: "number | number[] | number[][]",
3632
+ params: {
3633
+ a: { type: "number | number[] | number[][]", description: "第一个操作数" },
3634
+ b: { type: "number | number[] | number[][]", description: "第二个操作数" }
3635
+ },
3636
+ returns: { type: "number | number[] | number[][]" },
3653
3637
  examples: ["matrix.entrywise_divide([4, 6], [2, 3]) // [2, 2]"]
3654
3638
  }
3655
3639
  );
@@ -3713,9 +3697,11 @@ var multiply = VmLib(
3713
3697
  },
3714
3698
  {
3715
3699
  summary: "矩阵相乘",
3716
- params: { a: "第一个操作数", b: "第二个操作数" },
3717
- paramsType: { a: "number | number[] | number[][]", b: "number | number[] | number[][]" },
3718
- returnsType: "number | number[] | number[][]",
3700
+ params: {
3701
+ a: { type: "number | number[] | number[][]", description: "第一个操作数" },
3702
+ b: { type: "number | number[] | number[][]", description: "第二个操作数" }
3703
+ },
3704
+ returns: { type: "number | number[] | number[][]" },
3719
3705
  examples: ["matrix.multiply([[1, 2], [3, 4]], [5, 6]) // [17, 39]"]
3720
3706
  }
3721
3707
  );
@@ -3804,9 +3790,8 @@ var invert = VmLib(
3804
3790
  },
3805
3791
  {
3806
3792
  summary: "矩阵求逆",
3807
- params: { a: "待求逆的矩阵" },
3808
- paramsType: { a: "number | number[][]" },
3809
- returnsType: "number | number[][]",
3793
+ params: { a: { type: "number | number[][]", description: "待求逆的矩阵" } },
3794
+ returns: { type: "number | number[][]" },
3810
3795
  examples: ["matrix.invert([[1, 2], [3, 4]]) // [[-2, 1], [1.5, -0.5]]"]
3811
3796
  }
3812
3797
  );
@@ -3825,16 +3810,14 @@ function filled(size2, value) {
3825
3810
  }
3826
3811
  var zeros = VmLib((...size2) => filled(size2, 0), {
3827
3812
  summary: "创建一个全零的矩阵",
3828
- params: { "..size": "矩阵的维度" },
3829
- paramsType: { "..size": "number[]" },
3830
- returnsType: "number[][]",
3813
+ params: { "..size": { type: "number[]", description: "矩阵的维度" } },
3814
+ returns: { type: "number[][]" },
3831
3815
  examples: ["matrix.zeros(2, 3) // [[0, 0, 0], [0, 0, 0]]"]
3832
3816
  });
3833
3817
  var ones = VmLib((...size2) => filled(size2, 1), {
3834
3818
  summary: "创建一个全一的矩阵",
3835
- params: { "..size": "矩阵的维度" },
3836
- paramsType: { "..size": "number[]" },
3837
- returnsType: "number[][]",
3819
+ params: { "..size": { type: "number[]", description: "矩阵的维度" } },
3820
+ returns: { type: "number[][]" },
3838
3821
  examples: ["matrix.ones(2, 2) // [[1, 1], [1, 1]]"]
3839
3822
  });
3840
3823
  var identity = VmLib(
@@ -3857,9 +3840,8 @@ var identity = VmLib(
3857
3840
  },
3858
3841
  {
3859
3842
  summary: "创建一个单位矩阵",
3860
- params: { "..size": "矩阵的维度" },
3861
- paramsType: { "..size": "[number] | [number, number]" },
3862
- returnsType: "number[][]",
3843
+ params: { "..size": { type: "[number] | [number, number]", description: "矩阵的维度" } },
3844
+ returns: { type: "number[][]" },
3863
3845
  examples: ["matrix.identity(3) // [[1, 0, 0], [0, 1, 0], [0, 0, 1]]"]
3864
3846
  }
3865
3847
  );
@@ -3897,9 +3879,11 @@ var diagonal = VmLib(
3897
3879
  },
3898
3880
  {
3899
3881
  summary: "创建一个对角矩阵或获取矩阵的对角线",
3900
- params: { x: "对角线元素或要获取对角线的矩阵", k: "对角线偏移量,默认为 0" },
3901
- paramsType: { x: "number[] | number[][]", k: "number" },
3902
- returnsType: "number[][] | number[]",
3882
+ params: {
3883
+ x: { type: "number[] | number[][]", description: "对角线元素或要获取对角线的矩阵" },
3884
+ k: { type: "number", description: "对角线偏移量,默认为 0" }
3885
+ },
3886
+ returns: { type: "number[][] | number[]" },
3903
3887
  examples: [
3904
3888
  "matrix.diagonal([1, 2, 3]) // [[1, 0, 0], [0, 2, 0], [0, 0, 3]]",
3905
3889
  "matrix.diagonal([[1, 2], [3, 4]]) // [1, 4]"
@@ -3978,4 +3962,4 @@ export {
3978
3962
  emitScript,
3979
3963
  lib
3980
3964
  };
3981
- //# sourceMappingURL=chunk-5BBTXV5A.js.map
3965
+ //# sourceMappingURL=chunk-MRA5WJ72.js.map