@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.
Files changed (53) hide show
  1. package/dist/{chunk-BMSHG7ON.js → chunk-DNMS3ZEP.js} +2 -2
  2. package/dist/{chunk-QHPRKCJU.js → chunk-GUMBLKWM.js} +18 -20
  3. package/dist/chunk-GUMBLKWM.js.map +6 -0
  4. package/dist/{chunk-MN6Y5AIX.js → chunk-KUOYMOEU.js} +122 -121
  5. package/dist/chunk-KUOYMOEU.js.map +6 -0
  6. package/dist/{chunk-VZGKLLRC.js → chunk-VXTRR2CX.js} +2 -2
  7. package/dist/cli/index.js +4 -4
  8. package/dist/compiler/compile-fast.d.ts.map +1 -1
  9. package/dist/compiler/create-script.d.ts +1 -1
  10. package/dist/compiler/create-script.d.ts.map +1 -1
  11. package/dist/compiler/emit/constants.d.ts +1 -1
  12. package/dist/compiler/emit/constants.d.ts.map +1 -1
  13. package/dist/compiler/worker.js +1 -1
  14. package/dist/index.js +3 -3
  15. package/dist/subtle.js +3 -3
  16. package/dist/vm/lib/global/time.d.ts.map +1 -1
  17. package/dist/vm/operations/call.d.ts +7 -3
  18. package/dist/vm/operations/call.d.ts.map +1 -1
  19. package/dist/vm/operations/common.d.ts +2 -1
  20. package/dist/vm/operations/common.d.ts.map +1 -1
  21. package/dist/vm/operations/compound.d.ts +20 -10
  22. package/dist/vm/operations/compound.d.ts.map +1 -1
  23. package/dist/vm/operations/convert.d.ts +8 -4
  24. package/dist/vm/operations/convert.d.ts.map +1 -1
  25. package/dist/vm/operations/helpers.d.ts +8 -6
  26. package/dist/vm/operations/helpers.d.ts.map +1 -1
  27. package/dist/vm/operations/operator.d.ts +44 -22
  28. package/dist/vm/operations/operator.d.ts.map +1 -1
  29. package/dist/vm/operations/slice.d.ts +4 -2
  30. package/dist/vm/operations/slice.d.ts.map +1 -1
  31. package/dist/vm/operations/type-check.d.ts +14 -7
  32. package/dist/vm/operations/type-check.d.ts.map +1 -1
  33. package/dist/vm/types/extern.d.ts +6 -1
  34. package/dist/vm/types/extern.d.ts.map +1 -1
  35. package/package.json +3 -3
  36. package/src/compiler/compile-fast.ts +17 -20
  37. package/src/compiler/create-script.ts +1 -1
  38. package/src/compiler/emit/constants.ts +1 -1
  39. package/src/vm/lib/global/time.ts +6 -5
  40. package/src/vm/lib/global/to-primitive.ts +6 -6
  41. package/src/vm/operations/call.ts +30 -7
  42. package/src/vm/operations/common.ts +3 -2
  43. package/src/vm/operations/compound.ts +33 -21
  44. package/src/vm/operations/convert.ts +12 -8
  45. package/src/vm/operations/helpers.ts +14 -12
  46. package/src/vm/operations/operator.ts +66 -44
  47. package/src/vm/operations/slice.ts +6 -4
  48. package/src/vm/operations/type-check.ts +21 -14
  49. package/src/vm/types/extern.ts +2 -0
  50. package/dist/chunk-MN6Y5AIX.js.map +0 -6
  51. package/dist/chunk-QHPRKCJU.js.map +0 -6
  52. /package/dist/{chunk-BMSHG7ON.js.map → chunk-DNMS3ZEP.js.map} +0 -0
  53. /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-VZGKLLRC.js";
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-BMSHG7ON.js.map
74
+ //# sourceMappingURL=chunk-DNMS3ZEP.js.map
@@ -4,13 +4,13 @@ import {
4
4
  emitScript,
5
5
  reportDiagnostic,
6
6
  wrapScript
7
- } from "./chunk-MN6Y5AIX.js";
7
+ } from "./chunk-KUOYMOEU.js";
8
8
  import {
9
9
  defineProperty,
10
10
  generateBytecode,
11
11
  generateBytecodeSync,
12
12
  isFinite
13
- } from "./chunk-VZGKLLRC.js";
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 = $GlobalFallback()) => global.get(id);
71
+ const f = (global) => (global ?? $GlobalFallback()).get(id);
72
72
  defineProperty(f, "toString", {
73
73
  value: () => {
74
- return `(global = $GlobalFallback()) => global.get(${JSON.stringify(id)});`;
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, options) {
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, mode, nil());
86
+ return wrapScript(code, "Script", nil());
88
87
  }
89
88
  switch (trimmedCode) {
90
89
  case "nil":
91
- return wrapScript(code, mode, nil());
90
+ return wrapScript(code, "Script", nil());
92
91
  case "true":
93
- return wrapScript(code, mode, constantBoolean(true));
92
+ return wrapScript(code, "Script", constantBoolean(true));
94
93
  case "false":
95
- return wrapScript(code, mode, constantBoolean(false));
94
+ return wrapScript(code, "Script", constantBoolean(false));
96
95
  case "nan":
97
- return wrapScript(code, mode, nan());
96
+ return wrapScript(code, "Script", nan());
98
97
  case "inf":
99
98
  case "+inf":
100
- return wrapScript(code, mode, posInf());
99
+ return wrapScript(code, "Script", posInf());
101
100
  case "-inf":
102
- return wrapScript(code, mode, negInf());
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, mode, globalVariable(id));
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, mode, constantFiniteNumber(num));
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, options) {
118
+ function compileTemplateFast(code) {
120
119
  if (code.length > FAST_TEMPLATE_MAX_LEN) return void 0;
121
120
  if (!code.includes("$")) {
122
- const mode = options.input_mode ?? "Template";
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, options);
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-QHPRKCJU.js.map
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-VZGKLLRC.js";
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
- var $AssertInit = (value) => {
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
- var $Call = (func, args) => {
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
- var $VArgs = (varags) => {
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
- var $ToBoolean = (value) => {
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
- var $ToString = (value) => {
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
- var $ToNumber = (value) => {
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
- var $Format = (value, format2) => {
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
- var $Type = (value) => {
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
- var $IsBoolean = (value) => {
772
+ }
773
+ function $IsBoolean(value) {
774
774
  $AssertInit(value);
775
775
  return typeof value == "boolean";
776
- };
777
- var $IsNumber = (value) => {
776
+ }
777
+ function $IsNumber(value) {
778
778
  $AssertInit(value);
779
779
  return typeof value == "number";
780
- };
781
- var $IsString = (value) => {
780
+ }
781
+ function $IsString(value) {
782
782
  $AssertInit(value);
783
783
  return typeof value == "string";
784
- };
785
- var $IsRecord = (value) => {
784
+ }
785
+ function $IsRecord(value) {
786
786
  $AssertInit(value);
787
787
  return isVmRecord(value);
788
- };
789
- var $IsArray = (value) => {
788
+ }
789
+ function $IsArray(value) {
790
790
  $AssertInit(value);
791
791
  return isVmArray(value);
792
- };
793
- var $AssertNonNil = (value) => {
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
- var $Concat = (...args) => {
847
+ function $Concat(...args) {
848
848
  return args.map((a) => toFormat(a, null)).join("");
849
- };
850
- var $Pos = (a) => {
849
+ }
850
+ function $Pos(a) {
851
851
  return $ToNumber(a);
852
- };
853
- var $Neg = (a) => {
852
+ }
853
+ function $Neg(a) {
854
854
  return -$ToNumber(a);
855
- };
856
- var $Not = (a) => {
855
+ }
856
+ function $Not(a) {
857
857
  return !$ToBoolean(a);
858
- };
859
- var $Add = (a, b) => {
858
+ }
859
+ function $Add(a, b) {
860
860
  return $ToNumber(a) + $ToNumber(b);
861
- };
862
- var $Sub = (a, b) => {
861
+ }
862
+ function $Sub(a, b) {
863
863
  return $ToNumber(a) - $ToNumber(b);
864
- };
865
- var $Mul = (a, b) => {
864
+ }
865
+ function $Mul(a, b) {
866
866
  return $ToNumber(a) * $ToNumber(b);
867
- };
868
- var $Div = (a, b) => {
867
+ }
868
+ function $Div(a, b) {
869
869
  return $ToNumber(a) / $ToNumber(b);
870
- };
871
- var $Mod = (a, b) => {
870
+ }
871
+ function $Mod(a, b) {
872
872
  return $ToNumber(a) % $ToNumber(b);
873
- };
874
- var $Pow = (a, b) => {
873
+ }
874
+ function $Pow(a, b) {
875
875
  return $ToNumber(a) ** $ToNumber(b);
876
- };
877
- var $And = (a, b) => {
876
+ }
877
+ function $And(a, b) {
878
878
  return $ToBoolean(a) && $ToBoolean(b);
879
- };
880
- var $Or = (a, b) => {
879
+ }
880
+ function $Or(a, b) {
881
881
  return $ToBoolean(a) || $ToBoolean(b);
882
- };
883
- var $Gt = (a, b) => {
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
- var $Gte = (a, b) => {
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
- var $Lt = (a, b) => {
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
- var $Lte = (a, b) => {
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
- var $Eq = (a, b) => {
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
- var $Neq = (a, b) => {
916
+ }
917
+ function $Neq(a, b) {
918
918
  return !$Eq(a, b);
919
- };
919
+ }
920
920
  var { abs, min } = Math;
921
- var $Aeq = (a, b) => {
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
- var $Naeq = (a, b) => {
943
+ }
944
+ function $Naeq(a, b) {
945
945
  return !$Aeq(a, b);
946
- };
947
- var $Same = (a, b) => {
946
+ }
947
+ function $Same(a, b) {
948
948
  $AssertInit(a);
949
949
  $AssertInit(b);
950
950
  return isSame(a, b);
951
- };
952
- var $Nsame = (a, b) => {
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
- var $Slice = (value, start, end) => {
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
- var $SliceExclusive = (value, start, end) => {
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
- var $El = (value) => {
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
- var $ElOpt = (key, value) => {
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
- var $Fn = (name, fn) => {
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
- var $Upvalue = (value) => {
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
- var $ArrayRange = (start, end) => {
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
- var $ArrayRangeExclusive = (start, end) => {
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
- var $In = (value, iterable) => {
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
- var $Length = (value) => {
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
- var $Omit = (value, omitted) => {
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
- var $Pick = (value, picked) => {
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
- var $Has = (obj, key) => {
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
- var $Get = (obj, key) => {
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
- var $Set = (obj, key, value) => {
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
- var $Iterable = (value) => {
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
- var $RecordSpread = (record) => {
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
- var $ArraySpread = (array) => {
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: "any", fallback: "any" },
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: "any", fallback: "any" },
2698
+ paramsType: { data: "boolean", fallback: "any" },
2699
2699
  returnsType: "boolean | type(fallback)",
2700
- examples: ["to_boolean(nil) // false"]
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: "将数据转换为 Date 记录",
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: "Date | type(fallback)",
2917
+ returnsType: "DateTime | type(fallback)",
2918
2918
  examples: [
2919
2919
  `
2920
2920
  to_datetime(0)
2921
2921
  // (
2922
- // year: 1970, month: 1, day: 1,
2923
- // hour: 0, minute: 0, second: 0,
2924
- // millisecond: 0, dayOfWeek: 4, offset: 0
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-MN6Y5AIX.js.map
3536
+ //# sourceMappingURL=chunk-KUOYMOEU.js.map