@mirascript/mirascript 0.1.15 → 0.1.17

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 (229) hide show
  1. package/dist/chunk-JG3D67GF.js +1625 -0
  2. package/dist/chunk-JG3D67GF.js.map +6 -0
  3. package/dist/chunk-RIT53WVY.js +1 -0
  4. package/dist/chunk-RLWIIOH5.js +12 -0
  5. package/dist/chunk-RLWIIOH5.js.map +6 -0
  6. package/dist/{chunk-NT235HY3.js → chunk-W2I5XPIE.js} +1490 -608
  7. package/dist/chunk-W2I5XPIE.js.map +6 -0
  8. package/dist/cli/index.js +11 -67
  9. package/dist/cli/index.js.map +2 -2
  10. package/dist/compiler/compile-fast.d.ts +1 -1
  11. package/dist/compiler/compile-fast.d.ts.map +1 -1
  12. package/dist/compiler/create-script.d.ts +10 -1
  13. package/dist/compiler/create-script.d.ts.map +1 -1
  14. package/dist/compiler/diagnostic.d.ts +1 -1
  15. package/dist/compiler/diagnostic.d.ts.map +1 -1
  16. package/dist/compiler/emit/constants.d.ts +3 -0
  17. package/dist/compiler/emit/constants.d.ts.map +1 -0
  18. package/dist/compiler/emit/consts.d.ts +6 -0
  19. package/dist/compiler/emit/consts.d.ts.map +1 -0
  20. package/dist/compiler/emit/globals.d.ts +17 -0
  21. package/dist/compiler/emit/globals.d.ts.map +1 -0
  22. package/dist/compiler/emit/index.d.ts +58 -0
  23. package/dist/compiler/emit/index.d.ts.map +1 -0
  24. package/dist/compiler/emit/sourcemap.d.ts +6 -0
  25. package/dist/compiler/emit/sourcemap.d.ts.map +1 -0
  26. package/dist/compiler/index.d.ts +3 -2
  27. package/dist/compiler/index.d.ts.map +1 -1
  28. package/dist/compiler/worker.js +1 -1
  29. package/dist/helpers/constants.d.ts +10 -0
  30. package/dist/helpers/constants.d.ts.map +1 -1
  31. package/dist/helpers/convert/index.d.ts +5 -0
  32. package/dist/helpers/convert/index.d.ts.map +1 -0
  33. package/dist/helpers/convert/to-boolean.d.ts +4 -0
  34. package/dist/helpers/convert/to-boolean.d.ts.map +1 -0
  35. package/dist/helpers/convert/to-format.d.ts +4 -0
  36. package/dist/helpers/convert/to-format.d.ts.map +1 -0
  37. package/dist/helpers/convert/to-number.d.ts +4 -0
  38. package/dist/helpers/convert/to-number.d.ts.map +1 -0
  39. package/dist/helpers/convert/to-string.d.ts +6 -0
  40. package/dist/helpers/convert/to-string.d.ts.map +1 -0
  41. package/dist/{vm → helpers}/error.d.ts +1 -1
  42. package/dist/helpers/error.d.ts.map +1 -0
  43. package/dist/helpers/serialize.d.ts +13 -4
  44. package/dist/helpers/serialize.d.ts.map +1 -1
  45. package/dist/helpers/types.d.ts +54 -0
  46. package/dist/helpers/types.d.ts.map +1 -0
  47. package/dist/index.js +11 -17
  48. package/dist/subtle.d.ts +4 -3
  49. package/dist/subtle.d.ts.map +1 -1
  50. package/dist/subtle.js +20 -16
  51. package/dist/vm/checkpoint.d.ts +9 -0
  52. package/dist/vm/checkpoint.d.ts.map +1 -0
  53. package/dist/vm/helpers.d.ts +4 -10
  54. package/dist/vm/helpers.d.ts.map +1 -1
  55. package/dist/vm/index.d.ts +3 -3
  56. package/dist/vm/index.d.ts.map +1 -1
  57. package/dist/vm/lib/global/bit.d.ts +7 -7
  58. package/dist/vm/lib/global/bit.d.ts.map +1 -1
  59. package/dist/vm/lib/global/debug.d.ts +2 -2
  60. package/dist/vm/lib/global/debug.d.ts.map +1 -1
  61. package/dist/vm/lib/global/index.d.ts +0 -1
  62. package/dist/vm/lib/global/index.d.ts.map +1 -1
  63. package/dist/vm/lib/global/json.d.ts +2 -2
  64. package/dist/vm/lib/global/json.d.ts.map +1 -1
  65. package/dist/vm/lib/global/math-additional.d.ts +1 -1
  66. package/dist/vm/lib/global/math-additional.d.ts.map +1 -1
  67. package/dist/vm/lib/global/math-arr.d.ts +5 -5
  68. package/dist/vm/lib/global/math-arr.d.ts.map +1 -1
  69. package/dist/vm/lib/global/math-unary.d.ts +26 -26
  70. package/dist/vm/lib/global/math-unary.d.ts.map +1 -1
  71. package/dist/vm/lib/global/math.d.ts +3 -3
  72. package/dist/vm/lib/global/math.d.ts.map +1 -1
  73. package/dist/vm/lib/global/sequence/all-any.d.ts +2 -2
  74. package/dist/vm/lib/global/sequence/all-any.d.ts.map +1 -1
  75. package/dist/vm/lib/global/sequence/entries.d.ts +5 -5
  76. package/dist/vm/lib/global/sequence/entries.d.ts.map +1 -1
  77. package/dist/vm/lib/global/sequence/find.d.ts +3 -3
  78. package/dist/vm/lib/global/sequence/find.d.ts.map +1 -1
  79. package/dist/vm/lib/global/sequence/flatten.d.ts +1 -1
  80. package/dist/vm/lib/global/sequence/flatten.d.ts.map +1 -1
  81. package/dist/vm/lib/global/sequence/len.d.ts +1 -1
  82. package/dist/vm/lib/global/sequence/len.d.ts.map +1 -1
  83. package/dist/vm/lib/global/sequence/map-filter.d.ts +3 -3
  84. package/dist/vm/lib/global/sequence/map-filter.d.ts.map +1 -1
  85. package/dist/vm/lib/global/sequence/repeat.d.ts +1 -1
  86. package/dist/vm/lib/global/sequence/repeat.d.ts.map +1 -1
  87. package/dist/vm/lib/global/sequence/reverse.d.ts +1 -1
  88. package/dist/vm/lib/global/sequence/reverse.d.ts.map +1 -1
  89. package/dist/vm/lib/global/sequence/sort.d.ts +2 -2
  90. package/dist/vm/lib/global/sequence/sort.d.ts.map +1 -1
  91. package/dist/vm/lib/global/sequence/with.d.ts +2 -2
  92. package/dist/vm/lib/global/sequence/with.d.ts.map +1 -1
  93. package/dist/vm/lib/global/sequence/zip.d.ts +1 -1
  94. package/dist/vm/lib/global/sequence/zip.d.ts.map +1 -1
  95. package/dist/vm/lib/global/string.d.ts +10 -10
  96. package/dist/vm/lib/global/string.d.ts.map +1 -1
  97. package/dist/vm/lib/global/time.d.ts +3 -13
  98. package/dist/vm/lib/global/time.d.ts.map +1 -1
  99. package/dist/vm/lib/global/to-primitive.d.ts +4 -4
  100. package/dist/vm/lib/global/to-primitive.d.ts.map +1 -1
  101. package/dist/vm/lib/helpers.d.ts +53 -0
  102. package/dist/vm/lib/helpers.d.ts.map +1 -0
  103. package/dist/vm/lib/index.d.ts +4 -0
  104. package/dist/vm/lib/index.d.ts.map +1 -0
  105. package/dist/vm/lib/{_loader.d.ts → loader.d.ts} +5 -5
  106. package/dist/vm/lib/loader.d.ts.map +1 -0
  107. package/dist/vm/lib/mod/index.d.ts +2 -0
  108. package/dist/vm/lib/mod/index.d.ts.map +1 -0
  109. package/dist/vm/lib/mod/matrix.d.ts +15 -0
  110. package/dist/vm/lib/mod/matrix.d.ts.map +1 -0
  111. package/dist/vm/operations.d.ts +2 -4
  112. package/dist/vm/operations.d.ts.map +1 -1
  113. package/dist/vm/types/boundary.d.ts +1 -1
  114. package/dist/vm/types/boundary.d.ts.map +1 -1
  115. package/dist/vm/types/context.d.ts +4 -17
  116. package/dist/vm/types/context.d.ts.map +1 -1
  117. package/dist/vm/types/extern.d.ts +1 -3
  118. package/dist/vm/types/extern.d.ts.map +1 -1
  119. package/dist/vm/types/function.d.ts +1 -6
  120. package/dist/vm/types/function.d.ts.map +1 -1
  121. package/dist/vm/types/index.d.ts +31 -17
  122. package/dist/vm/types/index.d.ts.map +1 -1
  123. package/dist/vm/types/module.d.ts +2 -4
  124. package/dist/vm/types/module.d.ts.map +1 -1
  125. package/dist/vm/types/wrapper.d.ts +0 -2
  126. package/dist/vm/types/wrapper.d.ts.map +1 -1
  127. package/package.json +7 -3
  128. package/src/cli/index.ts +1 -1
  129. package/src/compiler/compile-fast.ts +1 -2
  130. package/src/compiler/create-script.ts +12 -2
  131. package/src/compiler/diagnostic.ts +17 -8
  132. package/src/compiler/emit/constants.ts +2 -0
  133. package/src/compiler/emit/consts.ts +47 -0
  134. package/src/compiler/emit/globals.ts +39 -0
  135. package/src/compiler/{emit.ts → emit/index.ts} +16 -200
  136. package/src/compiler/emit/sourcemap.ts +168 -0
  137. package/src/compiler/index.ts +9 -9
  138. package/src/compiler/worker.ts +1 -1
  139. package/src/helpers/constants.ts +12 -0
  140. package/src/helpers/convert/index.ts +4 -0
  141. package/src/helpers/convert/to-boolean.ts +12 -0
  142. package/src/helpers/convert/to-format.ts +37 -0
  143. package/src/helpers/convert/to-number.ts +35 -0
  144. package/src/helpers/convert/to-string.ts +55 -0
  145. package/src/{vm → helpers}/error.ts +1 -1
  146. package/src/helpers/serialize.ts +72 -24
  147. package/src/helpers/types.ts +267 -0
  148. package/src/subtle.ts +4 -2
  149. package/src/vm/checkpoint.ts +42 -0
  150. package/src/vm/helpers.ts +9 -53
  151. package/src/vm/index.ts +3 -3
  152. package/src/vm/lib/global/bit.ts +8 -9
  153. package/src/vm/lib/global/debug.ts +5 -4
  154. package/src/vm/lib/global/index.ts +0 -1
  155. package/src/vm/lib/global/json.ts +2 -2
  156. package/src/vm/lib/global/math-additional.ts +2 -4
  157. package/src/vm/lib/global/math-arr.ts +1 -1
  158. package/src/vm/lib/global/math-unary.ts +2 -4
  159. package/src/vm/lib/global/math.ts +3 -4
  160. package/src/vm/lib/global/sequence/all-any.ts +11 -6
  161. package/src/vm/lib/global/sequence/entries.ts +1 -1
  162. package/src/vm/lib/global/sequence/find.ts +4 -3
  163. package/src/vm/lib/global/sequence/flatten.ts +2 -3
  164. package/src/vm/lib/global/sequence/len.ts +1 -1
  165. package/src/vm/lib/global/sequence/map-filter.ts +4 -3
  166. package/src/vm/lib/global/sequence/repeat.ts +2 -4
  167. package/src/vm/lib/global/sequence/reverse.ts +1 -1
  168. package/src/vm/lib/global/sequence/sort.ts +6 -5
  169. package/src/vm/lib/global/sequence/with.ts +21 -20
  170. package/src/vm/lib/global/sequence/zip.ts +3 -3
  171. package/src/vm/lib/global/string.ts +16 -27
  172. package/src/vm/lib/global/time.ts +59 -30
  173. package/src/vm/lib/global/to-primitive.ts +27 -18
  174. package/src/vm/lib/{_helpers.ts → helpers.ts} +132 -44
  175. package/src/vm/lib/index.ts +16 -0
  176. package/src/vm/lib/{_loader.ts → loader.ts} +3 -11
  177. package/src/vm/lib/mod/index.ts +1 -0
  178. package/src/vm/lib/{global/mod → mod}/matrix.ts +9 -7
  179. package/src/vm/operations.ts +41 -137
  180. package/src/vm/types/boundary.ts +10 -13
  181. package/src/vm/types/context.ts +31 -50
  182. package/src/vm/types/extern.ts +8 -15
  183. package/src/vm/types/function.ts +4 -19
  184. package/src/vm/types/index.ts +47 -25
  185. package/src/vm/types/module.ts +3 -7
  186. package/src/vm/types/wrapper.ts +1 -5
  187. package/dist/chunk-35JGBXRE.js +0 -1
  188. package/dist/chunk-JVFUK7AN.js +0 -2324
  189. package/dist/chunk-JVFUK7AN.js.map +0 -6
  190. package/dist/chunk-NT235HY3.js.map +0 -6
  191. package/dist/compiler/emit.d.ts +0 -5
  192. package/dist/compiler/emit.d.ts.map +0 -1
  193. package/dist/vm/error.d.ts.map +0 -1
  194. package/dist/vm/lib/_helpers.d.ts +0 -35
  195. package/dist/vm/lib/_helpers.d.ts.map +0 -1
  196. package/dist/vm/lib/_loader.d.ts.map +0 -1
  197. package/dist/vm/lib/global/mod/index.d.ts +0 -3
  198. package/dist/vm/lib/global/mod/index.d.ts.map +0 -1
  199. package/dist/vm/lib/global/mod/matrix.d.ts +0 -15
  200. package/dist/vm/lib/global/mod/matrix.d.ts.map +0 -1
  201. package/dist/vm/types/any.d.ts +0 -10
  202. package/dist/vm/types/any.d.ts.map +0 -1
  203. package/dist/vm/types/array.d.ts +0 -12
  204. package/dist/vm/types/array.d.ts.map +0 -1
  205. package/dist/vm/types/callable.d.ts +0 -5
  206. package/dist/vm/types/callable.d.ts.map +0 -1
  207. package/dist/vm/types/const.d.ts +0 -15
  208. package/dist/vm/types/const.d.ts.map +0 -1
  209. package/dist/vm/types/immutable.d.ts +0 -15
  210. package/dist/vm/types/immutable.d.ts.map +0 -1
  211. package/dist/vm/types/primitive.d.ts +0 -7
  212. package/dist/vm/types/primitive.d.ts.map +0 -1
  213. package/dist/vm/types/record.d.ts +0 -20
  214. package/dist/vm/types/record.d.ts.map +0 -1
  215. package/dist/vm/types/script.d.ts +0 -14
  216. package/dist/vm/types/script.d.ts.map +0 -1
  217. package/dist/vm/types/value.d.ts +0 -14
  218. package/dist/vm/types/value.d.ts.map +0 -1
  219. package/src/vm/lib/global/mod/index.ts +0 -4
  220. package/src/vm/types/any.ts +0 -33
  221. package/src/vm/types/array.ts +0 -19
  222. package/src/vm/types/callable.ts +0 -10
  223. package/src/vm/types/const.ts +0 -109
  224. package/src/vm/types/immutable.ts +0 -22
  225. package/src/vm/types/primitive.ts +0 -14
  226. package/src/vm/types/record.ts +0 -53
  227. package/src/vm/types/script.ts +0 -18
  228. package/src/vm/types/value.ts +0 -22
  229. /package/dist/{chunk-35JGBXRE.js.map → chunk-RIT53WVY.js.map} +0 -0
@@ -1,12 +1,36 @@
1
- import type { VmArray } from './array.js';
2
1
  import type { VmExtern } from './extern.js';
3
2
  import type { VmFunction } from './function.js';
4
3
  import type { VmModule } from './module.js';
5
- import type { VmRecord } from './record.js';
6
4
 
7
5
  /** 类型名称 */
8
6
  export type TypeName = keyof VmValueMap;
9
7
 
8
+ /** Mirascript 虚拟机内的未初始化变量 */
9
+ export type VmUninitialized = undefined;
10
+ /** Mirascript 原始值 */
11
+ export type VmPrimitive = null | number | string | boolean;
12
+ /**
13
+ * Mirascript 数组
14
+ * 数组中的 `undefined`、`null` 及 <empty slot> 均视作 `nil`
15
+ */
16
+ export type VmArray = ReadonlyArray<VmConst | undefined>;
17
+ /**
18
+ * Mirascript 记录
19
+ * 仅拥有且可枚举的字符串键视作存在
20
+ * 字段值 `undefined` 和 `null` 均视作 `nil`
21
+ */
22
+ export type VmRecord = {
23
+ readonly [key: string]: VmConst | undefined;
24
+ };
25
+ /** Mirascript 虚拟机内的值语义值 */
26
+ export type VmConst = VmPrimitive | VmRecord | VmArray;
27
+ /** Mirascript 虚拟机内的不可变值 */
28
+ export type VmImmutable = VmConst | VmFunction | VmModule;
29
+ /** Mirascript 虚拟机内的合法值 */
30
+ export type VmValue = VmImmutable | VmExtern;
31
+ /** Mirascript 虚拟机内的值(包括未初始化变量) */
32
+ export type VmAny = VmValue | VmUninitialized;
33
+
10
34
  /** 类型名称映射 */
11
35
  export interface VmValueMap {
12
36
  /** 空值 */
@@ -29,32 +53,30 @@ export interface VmValueMap {
29
53
  module: VmModule;
30
54
  }
31
55
 
32
- export { wrapToVmValue, unwrapFromVmValue, toVmFunctionProxy, fromVmFunctionProxy } from './boundary.js';
33
- export { type VmContext, type VmSharedContext, isVmContext, defineVmContextValue, createVmContext } from './context.js';
34
- export { type VmScript, isVmScript } from './script.js';
35
- export { isVmCallable } from './callable.js';
36
-
37
- export { type VmArray, VM_ARRAY_MAX_LENGTH, isVmArray } from './array.js';
38
56
  export {
39
- type VmRecord,
40
- isVmRecord,
57
+ isVmAny,
58
+ isVmArray,
41
59
  isVmArrayLikeRecord,
42
60
  isVmArrayLikeRecordByEntires,
43
61
  isVmArrayLikeRecordByKeys,
44
- } from './record.js';
45
- export { type VmPrimitive, isVmPrimitive } from './primitive.js';
46
- export { type VmConst, isVmConst } from './const.js';
47
- export { type VmImmutable, isVmImmutable } from './immutable.js';
48
- export { VmExtern, isVmExtern } from './extern.js';
49
- export {
50
- VmFunction,
62
+ isVmCallable,
63
+ isVmConst,
64
+ isVmContext,
65
+ isVmExtern,
51
66
  isVmFunction,
67
+ isVmImmutable,
68
+ isVmModule,
69
+ isVmPrimitive,
70
+ isVmRecord,
71
+ isVmScript,
72
+ isVmValue,
73
+ isVmWrapper,
52
74
  getVmFunctionInfo,
53
- type VmFunctionInfo,
54
- type VmFunctionLike,
55
- type VmFunctionOption,
56
- } from './function.js';
57
- export { VmModule, isVmModule } from './module.js';
58
- export { isVmWrapper } from './wrapper.js';
59
- export { type VmValue, isVmValue } from './value.js';
60
- export { type VmAny, type VmUninitialized, isVmAny } from './any.js';
75
+ } from '../../helpers/types.js';
76
+
77
+ export { wrapToVmValue, unwrapFromVmValue } from './boundary.js';
78
+
79
+ export { type VmContext, defineVmContextValue, createVmContext } from './context.js';
80
+ export { VmExtern } from './extern.js';
81
+ export { VmFunction, type VmFunctionInfo, type VmFunctionLike, type VmFunctionOption } from './function.js';
82
+ export { VmModule } from './module.js';
@@ -1,9 +1,10 @@
1
+ import { kVmModule } from '../../helpers/constants.js';
1
2
  import { hasOwnEnumerable, keys } from '../../helpers/utils.js';
2
- import type { TypeName, VmAny, VmValue } from './index.js';
3
+ import type { TypeName, VmAny, VmImmutable } from './index.js';
3
4
  import { VmWrapper } from './wrapper.js';
4
5
 
5
6
  /** Mirascript 模块 */
6
- export class VmModule<const T extends Record<string, VmValue> = Record<string, VmValue>> extends VmWrapper<T> {
7
+ export class VmModule<const T extends Record<string, VmImmutable> = Record<string, VmImmutable>> extends VmWrapper<T> {
7
8
  constructor(
8
9
  /** 模块名称 */
9
10
  readonly name: string,
@@ -39,9 +40,4 @@ export class VmModule<const T extends Record<string, VmValue> = Record<string, V
39
40
  }
40
41
  }
41
42
 
42
- const kVmModule = Symbol.for('mirascript.vm.module');
43
43
  Object.defineProperty(VmModule.prototype, kVmModule, { value: true });
44
- /** 检查值是否为 Mirascript 模块 */
45
- export function isVmModule<T extends Record<string, VmValue>>(value: unknown): value is VmModule<T> {
46
- return value != null && typeof value == 'object' && kVmModule in value;
47
- }
@@ -1,3 +1,4 @@
1
+ import { kVmWrapper } from '../../helpers/constants.js';
1
2
  import type { TypeName, VmAny } from './index.js';
2
3
 
3
4
  /**
@@ -29,9 +30,4 @@ export abstract class VmWrapper<T extends object> {
29
30
  }
30
31
  }
31
32
 
32
- const kVmWrapper = Symbol.for('mirascript.vm.wrapper');
33
33
  Object.defineProperty(VmWrapper.prototype, kVmWrapper, { value: true });
34
- /** 检查值是否为 MiraScript 包装器 */
35
- export function isVmWrapper<T extends object>(value: unknown): value is VmWrapper<T> {
36
- return value != null && typeof value == 'object' && kVmWrapper in value;
37
- }
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-35JGBXRE.js.map