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