@mirascript/mirascript 0.1.32 → 0.1.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-BMSHG7ON.js → chunk-DNMS3ZEP.js} +2 -2
- package/dist/{chunk-QHPRKCJU.js → chunk-GUMBLKWM.js} +18 -20
- package/dist/chunk-GUMBLKWM.js.map +6 -0
- package/dist/{chunk-MN6Y5AIX.js → chunk-KUOYMOEU.js} +122 -121
- package/dist/chunk-KUOYMOEU.js.map +6 -0
- package/dist/{chunk-VZGKLLRC.js → chunk-VXTRR2CX.js} +2 -2
- package/dist/cli/index.js +4 -4
- package/dist/compiler/compile-fast.d.ts.map +1 -1
- package/dist/compiler/create-script.d.ts +1 -1
- package/dist/compiler/create-script.d.ts.map +1 -1
- package/dist/compiler/emit/constants.d.ts +1 -1
- package/dist/compiler/emit/constants.d.ts.map +1 -1
- package/dist/compiler/worker.js +1 -1
- package/dist/index.js +3 -3
- package/dist/subtle.js +3 -3
- package/dist/vm/lib/global/time.d.ts.map +1 -1
- package/dist/vm/operations/call.d.ts +7 -3
- package/dist/vm/operations/call.d.ts.map +1 -1
- package/dist/vm/operations/common.d.ts +2 -1
- package/dist/vm/operations/common.d.ts.map +1 -1
- package/dist/vm/operations/compound.d.ts +20 -10
- package/dist/vm/operations/compound.d.ts.map +1 -1
- package/dist/vm/operations/convert.d.ts +8 -4
- package/dist/vm/operations/convert.d.ts.map +1 -1
- package/dist/vm/operations/helpers.d.ts +8 -6
- package/dist/vm/operations/helpers.d.ts.map +1 -1
- package/dist/vm/operations/operator.d.ts +44 -22
- package/dist/vm/operations/operator.d.ts.map +1 -1
- package/dist/vm/operations/slice.d.ts +4 -2
- package/dist/vm/operations/slice.d.ts.map +1 -1
- package/dist/vm/operations/type-check.d.ts +14 -7
- package/dist/vm/operations/type-check.d.ts.map +1 -1
- package/dist/vm/types/extern.d.ts +6 -1
- package/dist/vm/types/extern.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/compiler/compile-fast.ts +17 -20
- package/src/compiler/create-script.ts +1 -1
- package/src/compiler/emit/constants.ts +1 -1
- package/src/vm/lib/global/time.ts +6 -5
- package/src/vm/lib/global/to-primitive.ts +6 -6
- package/src/vm/operations/call.ts +30 -7
- package/src/vm/operations/common.ts +3 -2
- package/src/vm/operations/compound.ts +33 -21
- package/src/vm/operations/convert.ts +12 -8
- package/src/vm/operations/helpers.ts +14 -12
- package/src/vm/operations/operator.ts +66 -44
- package/src/vm/operations/slice.ts +6 -4
- package/src/vm/operations/type-check.ts +21 -14
- package/src/vm/types/extern.ts +2 -0
- package/dist/chunk-MN6Y5AIX.js.map +0 -6
- package/dist/chunk-QHPRKCJU.js.map +0 -6
- /package/dist/{chunk-BMSHG7ON.js.map → chunk-DNMS3ZEP.js.map} +0 -0
- /package/dist/{chunk-VZGKLLRC.js.map → chunk-VXTRR2CX.js.map} +0 -0
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
REG_IDENTIFIER,
|
|
4
4
|
generateBytecodeSync,
|
|
5
5
|
parseDiagnostics
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VXTRR2CX.js";
|
|
7
7
|
|
|
8
8
|
// src/subtle.ts
|
|
9
9
|
import { OpCode, isKeyword } from "@mirascript/constants";
|
|
@@ -71,4 +71,4 @@ export {
|
|
|
71
71
|
OpCode,
|
|
72
72
|
isKeyword
|
|
73
73
|
};
|
|
74
|
-
//# sourceMappingURL=chunk-
|
|
74
|
+
//# sourceMappingURL=chunk-DNMS3ZEP.js.map
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
emitScript,
|
|
5
5
|
reportDiagnostic,
|
|
6
6
|
wrapScript
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-KUOYMOEU.js";
|
|
8
8
|
import {
|
|
9
9
|
defineProperty,
|
|
10
10
|
generateBytecode,
|
|
11
11
|
generateBytecodeSync,
|
|
12
12
|
isFinite
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-VXTRR2CX.js";
|
|
14
14
|
|
|
15
15
|
// src/compiler/compile-fast.ts
|
|
16
16
|
import { isKeyword } from "@mirascript/constants";
|
|
@@ -68,10 +68,10 @@ function nil() {
|
|
|
68
68
|
return () => null;
|
|
69
69
|
}
|
|
70
70
|
function globalVariable(id) {
|
|
71
|
-
const f = (global
|
|
71
|
+
const f = (global) => (global ?? $GlobalFallback()).get(id);
|
|
72
72
|
defineProperty(f, "toString", {
|
|
73
73
|
value: () => {
|
|
74
|
-
return `(global
|
|
74
|
+
return `(global) => (global ?? $GlobalFallback()).get(${JSON.stringify(id)});`;
|
|
75
75
|
},
|
|
76
76
|
writable: false,
|
|
77
77
|
enumerable: false,
|
|
@@ -79,54 +79,52 @@ function globalVariable(id) {
|
|
|
79
79
|
});
|
|
80
80
|
return f;
|
|
81
81
|
}
|
|
82
|
-
function compileScriptFast(code
|
|
82
|
+
function compileScriptFast(code) {
|
|
83
83
|
if (code.length > FAST_SCRIPT_MAX_LEN) return void 0;
|
|
84
|
-
const mode = options.input_mode ?? "Script";
|
|
85
84
|
const trimmedCode = code.trim();
|
|
86
85
|
if (!trimmedCode) {
|
|
87
|
-
return wrapScript(code,
|
|
86
|
+
return wrapScript(code, "Script", nil());
|
|
88
87
|
}
|
|
89
88
|
switch (trimmedCode) {
|
|
90
89
|
case "nil":
|
|
91
|
-
return wrapScript(code,
|
|
90
|
+
return wrapScript(code, "Script", nil());
|
|
92
91
|
case "true":
|
|
93
|
-
return wrapScript(code,
|
|
92
|
+
return wrapScript(code, "Script", constantBoolean(true));
|
|
94
93
|
case "false":
|
|
95
|
-
return wrapScript(code,
|
|
94
|
+
return wrapScript(code, "Script", constantBoolean(false));
|
|
96
95
|
case "nan":
|
|
97
|
-
return wrapScript(code,
|
|
96
|
+
return wrapScript(code, "Script", nan());
|
|
98
97
|
case "inf":
|
|
99
98
|
case "+inf":
|
|
100
|
-
return wrapScript(code,
|
|
99
|
+
return wrapScript(code, "Script", posInf());
|
|
101
100
|
case "-inf":
|
|
102
|
-
return wrapScript(code,
|
|
101
|
+
return wrapScript(code, "Script", negInf());
|
|
103
102
|
}
|
|
104
103
|
if (REG_IDENTIFIER_FAST.test(trimmedCode)) {
|
|
105
104
|
const id = trimmedCode;
|
|
106
105
|
if (isKeyword(id)) {
|
|
107
106
|
return void 0;
|
|
108
107
|
}
|
|
109
|
-
return wrapScript(code,
|
|
108
|
+
return wrapScript(code, "Script", globalVariable(id));
|
|
110
109
|
}
|
|
111
110
|
if (REG_NUMBER_FULL.test(trimmedCode)) {
|
|
112
111
|
const num = Number(trimmedCode);
|
|
113
112
|
if (!isFinite(num)) return void 0;
|
|
114
|
-
return wrapScript(code,
|
|
113
|
+
return wrapScript(code, "Script", constantFiniteNumber(num));
|
|
115
114
|
}
|
|
116
115
|
return void 0;
|
|
117
116
|
}
|
|
118
117
|
var FAST_TEMPLATE_MAX_LEN = 1024;
|
|
119
|
-
function compileTemplateFast(code
|
|
118
|
+
function compileTemplateFast(code) {
|
|
120
119
|
if (code.length > FAST_TEMPLATE_MAX_LEN) return void 0;
|
|
121
120
|
if (!code.includes("$")) {
|
|
122
|
-
|
|
123
|
-
return wrapScript(code, mode, constantString(code));
|
|
121
|
+
return wrapScript(code, "Template", constantString(code));
|
|
124
122
|
}
|
|
125
123
|
return void 0;
|
|
126
124
|
}
|
|
127
125
|
function compileFast(code, options) {
|
|
128
126
|
if (options.sourceMap) return void 0;
|
|
129
|
-
return (options.input_mode === "Template" ? compileTemplateFast : compileScriptFast)(code
|
|
127
|
+
return (options.input_mode === "Template" ? compileTemplateFast : compileScriptFast)(code);
|
|
130
128
|
}
|
|
131
129
|
|
|
132
130
|
// src/compiler/worker-manager.ts
|
|
@@ -225,4 +223,4 @@ export {
|
|
|
225
223
|
compile,
|
|
226
224
|
compileSync
|
|
227
225
|
};
|
|
228
|
-
//# sourceMappingURL=chunk-
|
|
226
|
+
//# sourceMappingURL=chunk-GUMBLKWM.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/compiler/compile-fast.ts", "../src/compiler/worker-manager.ts", "../src/compiler/index.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["worker"]
|
|
6
|
+
}
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
parseDiagnostics,
|
|
46
46
|
toString,
|
|
47
47
|
values
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-VXTRR2CX.js";
|
|
49
49
|
|
|
50
50
|
// src/compiler/load-module.ts
|
|
51
51
|
import { loadModule } from "@mirascript/bindings";
|
|
@@ -154,12 +154,12 @@ var VmWrapper = class {
|
|
|
154
154
|
Object.defineProperty(VmWrapper.prototype, kVmWrapper, { value: true });
|
|
155
155
|
|
|
156
156
|
// src/vm/operations/common.ts
|
|
157
|
-
|
|
157
|
+
function $AssertInit(value) {
|
|
158
158
|
if (value === void 0) throw new VmError(`Uninitialized value`, null);
|
|
159
|
-
}
|
|
159
|
+
}
|
|
160
160
|
|
|
161
161
|
// src/vm/operations/call.ts
|
|
162
|
-
|
|
162
|
+
function $Call(func, args) {
|
|
163
163
|
for (const a of args) {
|
|
164
164
|
$AssertInit(a);
|
|
165
165
|
}
|
|
@@ -170,8 +170,8 @@ var $Call = (func, args) => {
|
|
|
170
170
|
return func(...args) ?? null;
|
|
171
171
|
}
|
|
172
172
|
throw new VmError(`Value is not callable: ${display(func)}`, null);
|
|
173
|
-
}
|
|
174
|
-
|
|
173
|
+
}
|
|
174
|
+
function $VArgs(varags) {
|
|
175
175
|
for (let i = 0, l = varags.length; i < l; i++) {
|
|
176
176
|
const el = varags[i];
|
|
177
177
|
if (!isVmConst(el)) {
|
|
@@ -179,7 +179,7 @@ var $VArgs = (varags) => {
|
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
return varags;
|
|
182
|
-
}
|
|
182
|
+
}
|
|
183
183
|
|
|
184
184
|
// src/vm/types/boundary.ts
|
|
185
185
|
function toVmFunctionProxy(fn) {
|
|
@@ -742,59 +742,59 @@ __export(operations_exports, {
|
|
|
742
742
|
});
|
|
743
743
|
|
|
744
744
|
// src/vm/operations/convert.ts
|
|
745
|
-
|
|
745
|
+
function $ToBoolean(value) {
|
|
746
746
|
if (typeof value == "boolean") return value;
|
|
747
747
|
$AssertInit(value);
|
|
748
748
|
return toBoolean(value, void 0);
|
|
749
|
-
}
|
|
750
|
-
|
|
749
|
+
}
|
|
750
|
+
function $ToString(value) {
|
|
751
751
|
if (typeof value == "string") return value;
|
|
752
752
|
$AssertInit(value);
|
|
753
753
|
return toString(value, void 0);
|
|
754
|
-
}
|
|
755
|
-
|
|
754
|
+
}
|
|
755
|
+
function $ToNumber(value) {
|
|
756
756
|
if (typeof value == "number") return value;
|
|
757
757
|
$AssertInit(value);
|
|
758
758
|
return toNumber(value, void 0);
|
|
759
|
-
}
|
|
760
|
-
|
|
759
|
+
}
|
|
760
|
+
function $Format(value, format2) {
|
|
761
761
|
$AssertInit(value);
|
|
762
762
|
return toFormat(value, format2);
|
|
763
|
-
}
|
|
763
|
+
}
|
|
764
764
|
|
|
765
765
|
// src/vm/operations/type-check.ts
|
|
766
|
-
|
|
766
|
+
function $Type(value) {
|
|
767
767
|
if (value == null) return "nil";
|
|
768
768
|
if (isVmWrapper(value)) return value.type;
|
|
769
769
|
if (isVmArray(value)) return "array";
|
|
770
770
|
if (typeof value == "object") return "record";
|
|
771
771
|
return typeof value;
|
|
772
|
-
}
|
|
773
|
-
|
|
772
|
+
}
|
|
773
|
+
function $IsBoolean(value) {
|
|
774
774
|
$AssertInit(value);
|
|
775
775
|
return typeof value == "boolean";
|
|
776
|
-
}
|
|
777
|
-
|
|
776
|
+
}
|
|
777
|
+
function $IsNumber(value) {
|
|
778
778
|
$AssertInit(value);
|
|
779
779
|
return typeof value == "number";
|
|
780
|
-
}
|
|
781
|
-
|
|
780
|
+
}
|
|
781
|
+
function $IsString(value) {
|
|
782
782
|
$AssertInit(value);
|
|
783
783
|
return typeof value == "string";
|
|
784
|
-
}
|
|
785
|
-
|
|
784
|
+
}
|
|
785
|
+
function $IsRecord(value) {
|
|
786
786
|
$AssertInit(value);
|
|
787
787
|
return isVmRecord(value);
|
|
788
|
-
}
|
|
789
|
-
|
|
788
|
+
}
|
|
789
|
+
function $IsArray(value) {
|
|
790
790
|
$AssertInit(value);
|
|
791
791
|
return isVmArray(value);
|
|
792
|
-
}
|
|
793
|
-
|
|
792
|
+
}
|
|
793
|
+
function $AssertNonNil(value) {
|
|
794
794
|
$AssertInit(value);
|
|
795
795
|
if (value !== null) return;
|
|
796
796
|
throw new VmError(`Expected non-nil value`, null);
|
|
797
|
-
}
|
|
797
|
+
}
|
|
798
798
|
|
|
799
799
|
// src/vm/operations/utils.ts
|
|
800
800
|
function overloadNumberString(a, b) {
|
|
@@ -844,81 +844,81 @@ function isSame(a, b) {
|
|
|
844
844
|
}
|
|
845
845
|
|
|
846
846
|
// src/vm/operations/operator.ts
|
|
847
|
-
|
|
847
|
+
function $Concat(...args) {
|
|
848
848
|
return args.map((a) => toFormat(a, null)).join("");
|
|
849
|
-
}
|
|
850
|
-
|
|
849
|
+
}
|
|
850
|
+
function $Pos(a) {
|
|
851
851
|
return $ToNumber(a);
|
|
852
|
-
}
|
|
853
|
-
|
|
852
|
+
}
|
|
853
|
+
function $Neg(a) {
|
|
854
854
|
return -$ToNumber(a);
|
|
855
|
-
}
|
|
856
|
-
|
|
855
|
+
}
|
|
856
|
+
function $Not(a) {
|
|
857
857
|
return !$ToBoolean(a);
|
|
858
|
-
}
|
|
859
|
-
|
|
858
|
+
}
|
|
859
|
+
function $Add(a, b) {
|
|
860
860
|
return $ToNumber(a) + $ToNumber(b);
|
|
861
|
-
}
|
|
862
|
-
|
|
861
|
+
}
|
|
862
|
+
function $Sub(a, b) {
|
|
863
863
|
return $ToNumber(a) - $ToNumber(b);
|
|
864
|
-
}
|
|
865
|
-
|
|
864
|
+
}
|
|
865
|
+
function $Mul(a, b) {
|
|
866
866
|
return $ToNumber(a) * $ToNumber(b);
|
|
867
|
-
}
|
|
868
|
-
|
|
867
|
+
}
|
|
868
|
+
function $Div(a, b) {
|
|
869
869
|
return $ToNumber(a) / $ToNumber(b);
|
|
870
|
-
}
|
|
871
|
-
|
|
870
|
+
}
|
|
871
|
+
function $Mod(a, b) {
|
|
872
872
|
return $ToNumber(a) % $ToNumber(b);
|
|
873
|
-
}
|
|
874
|
-
|
|
873
|
+
}
|
|
874
|
+
function $Pow(a, b) {
|
|
875
875
|
return $ToNumber(a) ** $ToNumber(b);
|
|
876
|
-
}
|
|
877
|
-
|
|
876
|
+
}
|
|
877
|
+
function $And(a, b) {
|
|
878
878
|
return $ToBoolean(a) && $ToBoolean(b);
|
|
879
|
-
}
|
|
880
|
-
|
|
879
|
+
}
|
|
880
|
+
function $Or(a, b) {
|
|
881
881
|
return $ToBoolean(a) || $ToBoolean(b);
|
|
882
|
-
}
|
|
883
|
-
|
|
882
|
+
}
|
|
883
|
+
function $Gt(a, b) {
|
|
884
884
|
if (overloadNumberString(a, b)) {
|
|
885
885
|
return $ToNumber(a) > $ToNumber(b);
|
|
886
886
|
} else {
|
|
887
887
|
return $ToString(a) > $ToString(b);
|
|
888
888
|
}
|
|
889
|
-
}
|
|
890
|
-
|
|
889
|
+
}
|
|
890
|
+
function $Gte(a, b) {
|
|
891
891
|
if (overloadNumberString(a, b)) {
|
|
892
892
|
return $ToNumber(a) >= $ToNumber(b);
|
|
893
893
|
} else {
|
|
894
894
|
return $ToString(a) >= $ToString(b);
|
|
895
895
|
}
|
|
896
|
-
}
|
|
897
|
-
|
|
896
|
+
}
|
|
897
|
+
function $Lt(a, b) {
|
|
898
898
|
if (overloadNumberString(a, b)) {
|
|
899
899
|
return $ToNumber(a) < $ToNumber(b);
|
|
900
900
|
} else {
|
|
901
901
|
return $ToString(a) < $ToString(b);
|
|
902
902
|
}
|
|
903
|
-
}
|
|
904
|
-
|
|
903
|
+
}
|
|
904
|
+
function $Lte(a, b) {
|
|
905
905
|
if (overloadNumberString(a, b)) {
|
|
906
906
|
return $ToNumber(a) <= $ToNumber(b);
|
|
907
907
|
} else {
|
|
908
908
|
return $ToString(a) <= $ToString(b);
|
|
909
909
|
}
|
|
910
|
-
}
|
|
911
|
-
|
|
910
|
+
}
|
|
911
|
+
function $Eq(a, b) {
|
|
912
912
|
$AssertInit(a);
|
|
913
913
|
$AssertInit(b);
|
|
914
914
|
if (typeof a == "number" && typeof b == "number") return a === b;
|
|
915
915
|
return isSame(a, b);
|
|
916
|
-
}
|
|
917
|
-
|
|
916
|
+
}
|
|
917
|
+
function $Neq(a, b) {
|
|
918
918
|
return !$Eq(a, b);
|
|
919
|
-
}
|
|
919
|
+
}
|
|
920
920
|
var { abs, min } = Math;
|
|
921
|
-
|
|
921
|
+
function $Aeq(a, b) {
|
|
922
922
|
if (overloadNumberString(a, b)) {
|
|
923
923
|
const an = $ToNumber(a);
|
|
924
924
|
const bn = $ToNumber(b);
|
|
@@ -940,18 +940,18 @@ var $Aeq = (a, b) => {
|
|
|
940
940
|
const bn = bi.normalize("NFC");
|
|
941
941
|
return an === bn;
|
|
942
942
|
}
|
|
943
|
-
}
|
|
944
|
-
|
|
943
|
+
}
|
|
944
|
+
function $Naeq(a, b) {
|
|
945
945
|
return !$Aeq(a, b);
|
|
946
|
-
}
|
|
947
|
-
|
|
946
|
+
}
|
|
947
|
+
function $Same(a, b) {
|
|
948
948
|
$AssertInit(a);
|
|
949
949
|
$AssertInit(b);
|
|
950
950
|
return isSame(a, b);
|
|
951
|
-
}
|
|
952
|
-
|
|
951
|
+
}
|
|
952
|
+
function $Nsame(a, b) {
|
|
953
953
|
return !$Same(a, b);
|
|
954
|
-
}
|
|
954
|
+
}
|
|
955
955
|
|
|
956
956
|
// src/vm/operations/slice.ts
|
|
957
957
|
var { ceil } = Math;
|
|
@@ -970,41 +970,41 @@ var sliceCore = (value, start, end, exclusive) => {
|
|
|
970
970
|
}
|
|
971
971
|
return slice.call(value, start, end);
|
|
972
972
|
};
|
|
973
|
-
|
|
973
|
+
function $Slice(value, start, end) {
|
|
974
974
|
$AssertInit(value);
|
|
975
975
|
if (!isVmArray(value)) throw new VmError(`Expected array, got ${display(value)}`, []);
|
|
976
976
|
const s = start != null ? $ToNumber(start) : 0;
|
|
977
977
|
const e = end != null ? $ToNumber(end) : value.length - 1;
|
|
978
978
|
return sliceCore(value, s, e, false);
|
|
979
|
-
}
|
|
980
|
-
|
|
979
|
+
}
|
|
980
|
+
function $SliceExclusive(value, start, end) {
|
|
981
981
|
$AssertInit(value);
|
|
982
982
|
if (!isVmArray(value)) throw new VmError(`Expected array, got ${display(value)}`, []);
|
|
983
983
|
const s = start != null ? $ToNumber(start) : 0;
|
|
984
984
|
const e = end != null ? $ToNumber(end) : value.length;
|
|
985
985
|
return sliceCore(value, s, e, true);
|
|
986
|
-
}
|
|
986
|
+
}
|
|
987
987
|
|
|
988
988
|
// src/vm/operations/helpers.ts
|
|
989
|
-
|
|
989
|
+
function $El(value) {
|
|
990
990
|
$AssertInit(value);
|
|
991
991
|
if (!isVmConst(value)) return null;
|
|
992
992
|
return value;
|
|
993
|
-
}
|
|
993
|
+
}
|
|
994
994
|
var EMPTY = create(null);
|
|
995
|
-
|
|
995
|
+
function $ElOpt(key, value) {
|
|
996
996
|
$AssertInit(value);
|
|
997
997
|
if (value == null || !isVmConst(value)) return EMPTY;
|
|
998
998
|
return { __proto__: null, [key]: value };
|
|
999
|
-
}
|
|
1000
|
-
|
|
999
|
+
}
|
|
1000
|
+
function $Fn(name, fn) {
|
|
1001
1001
|
defineProperty(fn, "name", { value: name || VM_FUNCTION_ANONYMOUS_NAME });
|
|
1002
1002
|
return VmFunction(fn, { isLib: false, injectCp: false });
|
|
1003
|
-
}
|
|
1004
|
-
|
|
1003
|
+
}
|
|
1004
|
+
function $Upvalue(value) {
|
|
1005
1005
|
$AssertInit(value);
|
|
1006
1006
|
return value;
|
|
1007
|
-
}
|
|
1007
|
+
}
|
|
1008
1008
|
var assertArrayLength = (start, end) => {
|
|
1009
1009
|
if (end - start > VM_ARRAY_MAX_LENGTH) {
|
|
1010
1010
|
throw new RangeError(`Array length exceeds maximum limit of ${VM_ARRAY_MAX_LENGTH}`);
|
|
@@ -1013,7 +1013,7 @@ var assertArrayLength = (start, end) => {
|
|
|
1013
1013
|
var isEmptyRange = (start, end) => {
|
|
1014
1014
|
return !isFinite(start) || !isFinite(end) || start > end;
|
|
1015
1015
|
};
|
|
1016
|
-
|
|
1016
|
+
function $ArrayRange(start, end) {
|
|
1017
1017
|
const s = $ToNumber(start);
|
|
1018
1018
|
const e = $ToNumber(end);
|
|
1019
1019
|
if (isEmptyRange(s, e)) return [];
|
|
@@ -1023,8 +1023,8 @@ var $ArrayRange = (start, end) => {
|
|
|
1023
1023
|
arr.push(i);
|
|
1024
1024
|
}
|
|
1025
1025
|
return arr;
|
|
1026
|
-
}
|
|
1027
|
-
|
|
1026
|
+
}
|
|
1027
|
+
function $ArrayRangeExclusive(start, end) {
|
|
1028
1028
|
const s = $ToNumber(start);
|
|
1029
1029
|
const e = $ToNumber(end);
|
|
1030
1030
|
if (isEmptyRange(s, e)) return [];
|
|
@@ -1034,7 +1034,7 @@ var $ArrayRangeExclusive = (start, end) => {
|
|
|
1034
1034
|
arr.push(i);
|
|
1035
1035
|
}
|
|
1036
1036
|
return arr;
|
|
1037
|
-
}
|
|
1037
|
+
}
|
|
1038
1038
|
function $GlobalFallback() {
|
|
1039
1039
|
return DefaultVmContext;
|
|
1040
1040
|
}
|
|
@@ -1042,7 +1042,7 @@ function $GlobalFallback() {
|
|
|
1042
1042
|
// src/vm/operations/compound.ts
|
|
1043
1043
|
var { trunc } = Math;
|
|
1044
1044
|
var { at } = Array.prototype;
|
|
1045
|
-
|
|
1045
|
+
function $In(value, iterable) {
|
|
1046
1046
|
$AssertInit(value);
|
|
1047
1047
|
$AssertInit(iterable);
|
|
1048
1048
|
if (iterable == null) return false;
|
|
@@ -1058,15 +1058,15 @@ var $In = (value, iterable) => {
|
|
|
1058
1058
|
const key = toString(value, void 0);
|
|
1059
1059
|
if (isVmWrapper(iterable)) return iterable.has(key);
|
|
1060
1060
|
return hasOwnEnumerable(iterable, key);
|
|
1061
|
-
}
|
|
1062
|
-
|
|
1061
|
+
}
|
|
1062
|
+
function $Length(value) {
|
|
1063
1063
|
$AssertInit(value);
|
|
1064
1064
|
if (isVmArray(value)) return value.length;
|
|
1065
1065
|
if (isVmRecord(value)) return keys(value).length;
|
|
1066
1066
|
if (isVmWrapper(value)) return value.keys().length;
|
|
1067
1067
|
throw new VmError(`Value has no length: ${display(value)}`, 0);
|
|
1068
|
-
}
|
|
1069
|
-
|
|
1068
|
+
}
|
|
1069
|
+
function $Omit(value, omitted) {
|
|
1070
1070
|
$AssertInit(value);
|
|
1071
1071
|
if (value == null || !isVmRecord(value)) return {};
|
|
1072
1072
|
const result = {};
|
|
@@ -1078,8 +1078,8 @@ var $Omit = (value, omitted) => {
|
|
|
1078
1078
|
}
|
|
1079
1079
|
}
|
|
1080
1080
|
return result;
|
|
1081
|
-
}
|
|
1082
|
-
|
|
1081
|
+
}
|
|
1082
|
+
function $Pick(value, picked) {
|
|
1083
1083
|
$AssertInit(value);
|
|
1084
1084
|
if (value == null || !isVmRecord(value)) return {};
|
|
1085
1085
|
const result = {};
|
|
@@ -1090,15 +1090,15 @@ var $Pick = (value, picked) => {
|
|
|
1090
1090
|
}
|
|
1091
1091
|
}
|
|
1092
1092
|
return result;
|
|
1093
|
-
}
|
|
1094
|
-
|
|
1093
|
+
}
|
|
1094
|
+
function $Has(obj, key) {
|
|
1095
1095
|
$AssertInit(obj);
|
|
1096
1096
|
const pk = $ToString(key);
|
|
1097
1097
|
if (obj == null || typeof obj != "object") return false;
|
|
1098
1098
|
if (isVmWrapper(obj)) return obj.has(pk);
|
|
1099
1099
|
return hasOwnEnumerable(obj, pk);
|
|
1100
|
-
}
|
|
1101
|
-
|
|
1100
|
+
}
|
|
1101
|
+
function $Get(obj, key) {
|
|
1102
1102
|
$AssertInit(obj);
|
|
1103
1103
|
if (isVmArray(obj)) {
|
|
1104
1104
|
$AssertInit(key);
|
|
@@ -1111,23 +1111,23 @@ var $Get = (obj, key) => {
|
|
|
1111
1111
|
if (isVmWrapper(obj)) return obj.get(pk) ?? null;
|
|
1112
1112
|
if (!hasOwnEnumerable(obj, pk)) return null;
|
|
1113
1113
|
return obj[pk] ?? null;
|
|
1114
|
-
}
|
|
1115
|
-
|
|
1114
|
+
}
|
|
1115
|
+
function $Set(obj, key, value) {
|
|
1116
1116
|
$AssertInit(obj);
|
|
1117
1117
|
$AssertInit(value);
|
|
1118
1118
|
const pk = $ToString(key);
|
|
1119
1119
|
if (obj == null) return;
|
|
1120
1120
|
if (!isVmExtern(obj)) throw new VmError(`Expected extern, got ${display(obj)}`, void 0);
|
|
1121
1121
|
obj.set(pk, value);
|
|
1122
|
-
}
|
|
1123
|
-
|
|
1122
|
+
}
|
|
1123
|
+
function $Iterable(value) {
|
|
1124
1124
|
$AssertInit(value);
|
|
1125
1125
|
if (isVmWrapper(value)) return value.keys();
|
|
1126
1126
|
if (isVmArray(value)) return value;
|
|
1127
1127
|
if (value != null && typeof value == "object") return keys(value);
|
|
1128
1128
|
throw new VmError(`Value is not iterable: ${display(value)}`, isVmFunction(value) ? [] : [value]);
|
|
1129
|
-
}
|
|
1130
|
-
|
|
1129
|
+
}
|
|
1130
|
+
function $RecordSpread(record) {
|
|
1131
1131
|
$AssertInit(record);
|
|
1132
1132
|
if (record == null || isVmRecord(record)) return record;
|
|
1133
1133
|
if (isVmArray(record)) {
|
|
@@ -1150,8 +1150,8 @@ var $RecordSpread = (record) => {
|
|
|
1150
1150
|
return result;
|
|
1151
1151
|
}
|
|
1152
1152
|
throw new VmError(`Expected record, array, extern or nil, got ${display(record)}`, null);
|
|
1153
|
-
}
|
|
1154
|
-
|
|
1153
|
+
}
|
|
1154
|
+
function $ArraySpread(array) {
|
|
1155
1155
|
$AssertInit(array);
|
|
1156
1156
|
if (array == null) return [];
|
|
1157
1157
|
if (isVmArray(array)) return array;
|
|
@@ -1167,7 +1167,7 @@ var $ArraySpread = (array) => {
|
|
|
1167
1167
|
return result;
|
|
1168
1168
|
}
|
|
1169
1169
|
throw new VmError(`Expected array, iterable extern or nil, got ${display(array)}`, []);
|
|
1170
|
-
}
|
|
1170
|
+
}
|
|
1171
1171
|
|
|
1172
1172
|
// src/compiler/create-script.ts
|
|
1173
1173
|
function wrapScript(source, mode, script) {
|
|
@@ -2679,7 +2679,7 @@ var to_number = VmLib(
|
|
|
2679
2679
|
data: "要转换的数据",
|
|
2680
2680
|
fallback: "转换失败时的返回值"
|
|
2681
2681
|
},
|
|
2682
|
-
paramsType: { data: "
|
|
2682
|
+
paramsType: { data: "string | number | boolean", fallback: "any" },
|
|
2683
2683
|
returnsType: "number | type(fallback)",
|
|
2684
2684
|
examples: ['to_number("1.5") // 1.5']
|
|
2685
2685
|
}
|
|
@@ -2690,14 +2690,14 @@ var to_boolean = VmLib(
|
|
|
2690
2690
|
return toBoolean(data, fallback);
|
|
2691
2691
|
},
|
|
2692
2692
|
{
|
|
2693
|
-
summary: "
|
|
2693
|
+
summary: "将布尔值标准化",
|
|
2694
2694
|
params: {
|
|
2695
|
-
data: "
|
|
2696
|
-
fallback: "
|
|
2695
|
+
data: "要转换的数据,仅当为布尔类型时才会参与转换",
|
|
2696
|
+
fallback: "当输入不是布尔值时返回的值"
|
|
2697
2697
|
},
|
|
2698
|
-
paramsType: { data: "
|
|
2698
|
+
paramsType: { data: "boolean", fallback: "any" },
|
|
2699
2699
|
returnsType: "boolean | type(fallback)",
|
|
2700
|
-
examples: ["to_boolean(nil) //
|
|
2700
|
+
examples: ["to_boolean(true, false) // true", 'to_boolean(nil, "failed") // "failed"']
|
|
2701
2701
|
}
|
|
2702
2702
|
);
|
|
2703
2703
|
var format = VmLib(
|
|
@@ -2907,21 +2907,22 @@ var to_datetime = VmLib(
|
|
|
2907
2907
|
};
|
|
2908
2908
|
},
|
|
2909
2909
|
{
|
|
2910
|
-
summary: "将数据转换为
|
|
2910
|
+
summary: "将数据转换为 DateTime 记录",
|
|
2911
2911
|
params: {
|
|
2912
2912
|
datetime: "要转换的数据,默认为当前时间",
|
|
2913
2913
|
offset: "时区偏移量(单位:小时),默认为 0",
|
|
2914
2914
|
fallback: "转换失败时的返回值"
|
|
2915
2915
|
},
|
|
2916
2916
|
paramsType: { datetime: "number | string", offset: "number", fallback: "any" },
|
|
2917
|
-
returnsType: "
|
|
2917
|
+
returnsType: "DateTime | type(fallback)",
|
|
2918
2918
|
examples: [
|
|
2919
2919
|
`
|
|
2920
2920
|
to_datetime(0)
|
|
2921
2921
|
// (
|
|
2922
|
-
//
|
|
2923
|
-
//
|
|
2924
|
-
//
|
|
2922
|
+
// year: 1970, month: 1, day: 1,
|
|
2923
|
+
// hour: 0, minute: 0, second: 0,
|
|
2924
|
+
// millisecond: 0,
|
|
2925
|
+
// dayOfWeek: 4, offset: 0
|
|
2925
2926
|
// )
|
|
2926
2927
|
`.trim()
|
|
2927
2928
|
]
|
|
@@ -3532,4 +3533,4 @@ export {
|
|
|
3532
3533
|
panic,
|
|
3533
3534
|
lib
|
|
3534
3535
|
};
|
|
3535
|
-
//# sourceMappingURL=chunk-
|
|
3536
|
+
//# sourceMappingURL=chunk-KUOYMOEU.js.map
|