@mirascript/mirascript 0.1.2 → 0.1.4

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 (63) hide show
  1. package/dist/{chunk-3RUWGMBP.js → chunk-JB6LPPFJ.js} +190 -24
  2. package/dist/chunk-JB6LPPFJ.js.map +6 -0
  3. package/dist/{chunk-AOINGBRS.js → chunk-RYSPVMVZ.js} +189 -191
  4. package/dist/chunk-RYSPVMVZ.js.map +6 -0
  5. package/dist/cli/execute.d.ts +1 -1
  6. package/dist/cli/execute.d.ts.map +1 -1
  7. package/dist/cli/index.js +42 -21
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/cli/print.d.ts.map +1 -1
  10. package/dist/compiler/diagnostic.d.ts +14 -3
  11. package/dist/compiler/diagnostic.d.ts.map +1 -1
  12. package/dist/compiler/emit.d.ts +2 -1
  13. package/dist/compiler/emit.d.ts.map +1 -1
  14. package/dist/compiler/index.d.ts.map +1 -1
  15. package/dist/compiler/worker.d.ts.map +1 -1
  16. package/dist/compiler/worker.js +6 -3
  17. package/dist/compiler/worker.js.map +1 -1
  18. package/dist/helpers/serialize.d.ts +10 -2
  19. package/dist/helpers/serialize.d.ts.map +1 -1
  20. package/dist/index.js +4 -2
  21. package/dist/subtle.d.ts +1 -1
  22. package/dist/subtle.d.ts.map +1 -1
  23. package/dist/subtle.js +17 -7
  24. package/dist/vm/lib/_helpers.d.ts.map +1 -1
  25. package/dist/vm/lib/global/sequence/with.d.ts +2 -2
  26. package/dist/vm/lib/global/sequence/with.d.ts.map +1 -1
  27. package/dist/vm/operations.d.ts.map +1 -1
  28. package/dist/vm/types/boundary.d.ts.map +1 -1
  29. package/dist/vm/types/checker.d.ts +1 -1
  30. package/dist/vm/types/checker.d.ts.map +1 -1
  31. package/dist/vm/types/context.d.ts +14 -6
  32. package/dist/vm/types/context.d.ts.map +1 -1
  33. package/dist/vm/types/extern.d.ts +2 -0
  34. package/dist/vm/types/extern.d.ts.map +1 -1
  35. package/dist/vm/types/index.d.ts +6 -10
  36. package/dist/vm/types/index.d.ts.map +1 -1
  37. package/dist/vm/types/module.d.ts +2 -0
  38. package/dist/vm/types/module.d.ts.map +1 -1
  39. package/dist/vm/types/wrapper.d.ts +2 -0
  40. package/dist/vm/types/wrapper.d.ts.map +1 -1
  41. package/package.json +7 -6
  42. package/src/cli/execute.ts +8 -3
  43. package/src/cli/index.ts +22 -5
  44. package/src/cli/print.ts +13 -9
  45. package/src/compiler/diagnostic.ts +32 -14
  46. package/src/compiler/emit.ts +45 -19
  47. package/src/compiler/index.ts +10 -2
  48. package/src/compiler/worker.ts +5 -1
  49. package/src/helpers/serialize.ts +6 -6
  50. package/src/subtle.ts +11 -1
  51. package/src/vm/lib/_helpers.ts +2 -10
  52. package/src/vm/lib/global/math-arr.ts +1 -1
  53. package/src/vm/lib/global/sequence/with.ts +111 -17
  54. package/src/vm/operations.ts +23 -24
  55. package/src/vm/types/boundary.ts +4 -4
  56. package/src/vm/types/checker.ts +8 -15
  57. package/src/vm/types/context.ts +28 -16
  58. package/src/vm/types/extern.ts +11 -2
  59. package/src/vm/types/index.ts +7 -26
  60. package/src/vm/types/module.ts +7 -0
  61. package/src/vm/types/wrapper.ts +10 -1
  62. package/dist/chunk-3RUWGMBP.js.map +0 -6
  63. package/dist/chunk-AOINGBRS.js.map +0 -6
@@ -1 +1 @@
1
- {"version":3,"file":"_helpers.d.ts","sourceRoot":"","sources":["../../../src/vm/lib/_helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_helpers.d.ts","sourceRoot":"","sources":["../../../src/vm/lib/_helpers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { type VmConst } from '../../../types/index.js';
1
+ import { type VmArray, type VmValue } from '../../../types/index.js';
2
2
  import { VmLib } from '../../_helpers.js';
3
- declare const _with: VmLib<(data: import("../../../types/index.js").VmValue | undefined, ...entries: (import("../../../types/index.js").VmValue | undefined)[]) => (VmConst | undefined)[] | Record<string, VmConst | undefined>>;
3
+ declare const _with: VmLib<(data: VmValue | undefined, ...entries: (VmValue | undefined)[]) => import("../../../types/index.js").VmRecord | VmArray>;
4
4
  export { _with as 'with' };
5
5
  //# sourceMappingURL=with.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"with.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/with.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,KAAK,EAAmC,MAAM,mBAAmB,CAAC;AAG3E,QAAA,MAAM,KAAK,8MAmCV,CAAC;AACF,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"with.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/with.ts"],"names":[],"mappings":"AAGA,OAAO,EAIH,KAAK,OAAO,EAEZ,KAAK,OAAO,EACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,EAAgD,MAAM,mBAAmB,CAAC;AA8DxF,QAAA,MAAM,KAAK,iIA8DV,CAAC;AACF,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/vm/operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/vm/operations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../../src/vm/types/boundary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAY,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAMjF,iCAAiC;AACjC,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAqBhF;AAED,iCAAiC;AACjC,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,cAAc,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAO9F;AAED,+BAA+B;AAC/B,wBAAgB,aAAa,CACzB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,QAAQ,GAAG,IAAW,EAC/B,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,GACtE,OAAO,CA0BT;AAED,+BAA+B;AAC/B,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAiBvD"}
1
+ {"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../../src/vm/types/boundary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAc,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAY,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAMjF,iCAAiC;AACjC,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAqBhF;AAED,iCAAiC;AACjC,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,cAAc,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAO9F;AAED,+BAA+B;AAC/B,wBAAgB,aAAa,CACzB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,QAAQ,GAAG,IAAW,EAC/B,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,GACtE,OAAO,CA0BT;AAED,+BAA+B;AAC/B,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAiBvD"}
@@ -1,4 +1,4 @@
1
- import { type VmAny, type VmConst, type VmImmutable, type VmValue } from './index.js';
1
+ import type { VmAny, VmConst, VmImmutable, VmValue } from './index.js';
2
2
  /**
3
3
  * 检查是否为 Mirascript 值语义值
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/vm/types/checker.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,KAAK,KAAK,EAEV,KAAK,OAAO,EACZ,KAAK,WAAW,EAEhB,KAAK,OAAO,EACf,MAAM,YAAY,CAAC;AAiEpB;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO,CAAC;AAC1D;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC;AA8BhF;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC;AAClE;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC;AAOxF;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO,CAAC;AAC1D;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC;AAShF;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAkB1E"}
1
+ {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/vm/types/checker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAW,OAAO,EAAE,WAAW,EAAY,OAAO,EAAE,MAAM,YAAY,CAAC;AAmE1F;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO,CAAC;AAC1D;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC;AA8BhF;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC;AAClE;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC;AAOxF;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO,CAAC;AAC1D;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC;AAShF;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAkB1E"}
@@ -17,6 +17,8 @@ export interface VmContext {
17
17
  readonly [kVmContext]: true;
18
18
  /** 枚举所有 key,仅在 LSP 中使用 */
19
19
  keys(): Iterable<string>;
20
+ /** 描述值,返回 MarkDown 文本,仅在 LSP 中使用 */
21
+ describe?(key: string): string | undefined;
20
22
  /** 获取指定 key 的值 `global[key]` */
21
23
  get(key: string): VmValue;
22
24
  /** 查找指定 key 是否存在 `key in global` */
@@ -29,14 +31,20 @@ export declare const VmSharedContext: VmSharedContext;
29
31
  export declare function defineVmContextValue(name: string, value: VmImmutable | ((...args: VmAny[]) => VmAny), override?: boolean): void;
30
32
  /** 无后备的实现 */
31
33
  export declare const DefaultVmContext: VmContext;
32
- /** 创建用于执行脚本的执行上下文 */
33
- export declare function createVmContext(...args: readonly [
34
+ /** 以值为后备的实现 */
35
+ type CreateVmContextWithValues = readonly [
34
36
  vmValues?: VmContextRecord | null | undefined,
35
- externValues?: Record<string, unknown> | null | undefined
36
- ] | readonly [
37
+ externValues?: Record<string, unknown> | null | undefined,
38
+ describer?: ((key: string) => string | undefined) | null | undefined
39
+ ];
40
+ /** 以工厂函数为后备的实现 */
41
+ type CreateVmContextWithFactory = readonly [
37
42
  getter: (key: string) => VmValue | undefined,
38
- enumerator?: (() => Iterable<string>) | null | undefined
39
- ]): VmContext;
43
+ enumerator?: (() => Iterable<string>) | null | undefined,
44
+ describer?: ((key: string) => string | undefined) | null | undefined
45
+ ];
46
+ /** 创建用于执行脚本的执行上下文 */
47
+ export declare function createVmContext(...args: CreateVmContextWithValues | CreateVmContextWithFactory): VmContext;
40
48
  /** 检查是否为执行上下文 */
41
49
  export declare function isVmContext(context: unknown): context is VmContext;
42
50
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/vm/types/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,OAAO,EAGZ,KAAK,cAAc,EACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,KAAK,MAAM,MAAM,wBAAwB,CAAC;AAEtD,eAAe;AACf,KAAK,UAAU,GAAG,MAAM,OAAO,MAAM,CAAC;AACtC,gBAAgB;AAChB,KAAK,aAAa,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,GAC9E,UAAU,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAC9B,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,eAAe;AACf,KAAK,aAAa,GAAG;KAChB,GAAG,IAAI,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC;CAC1C,CAAC;AACF,QAAA,MAAM,UAAU,eAAgC,CAAC;AACjD,iCAAiC;AACjC,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC1E,uBAAuB;AACvB,MAAM,WAAW,SAAS;IACtB,YAAY;IACZ,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IAC5B,0BAA0B;IAC1B,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzB,gCAAgC;IAChC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,oCAAoC;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AACD,uBAAuB;AACvB,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAClE,eAAO,MAAM,eAAe,EAAmB,eAAe,CAAC;AAE/D,qCAAqC;AACrC,wBAAgB,oBAAoB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,EAClD,QAAQ,UAAQ,GACjB,IAAI,CAYN;AAED,aAAa;AACb,eAAO,MAAM,gBAAgB,EAAE,SAc7B,CAAC;AA8CH,qBAAqB;AACrB,wBAAgB,eAAe,CAC3B,GAAG,IAAI,EACD,SAAS;IACL,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS;CAC5D,GACD,SAAS;IACL,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS;IAC5C,UAAU,CAAC,EAAE,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS;CAC3D,GACR,SAAS,CAuBX;AAED,iBAAiB;AACjB,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,SAAS,CAGlE"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/vm/types/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,OAAO,EAGZ,KAAK,cAAc,EACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,KAAK,MAAM,MAAM,wBAAwB,CAAC;AAEtD,eAAe;AACf,KAAK,UAAU,GAAG,MAAM,OAAO,MAAM,CAAC;AACtC,gBAAgB;AAChB,KAAK,aAAa,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,GAC9E,UAAU,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAC9B,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,eAAe;AACf,KAAK,aAAa,GAAG;KAChB,GAAG,IAAI,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC;CAC1C,CAAC;AACF,QAAA,MAAM,UAAU,eAAgC,CAAC;AACjD,iCAAiC;AACjC,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC1E,uBAAuB;AACvB,MAAM,WAAW,SAAS;IACtB,YAAY;IACZ,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IAC5B,0BAA0B;IAC1B,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzB,oCAAoC;IACpC,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,gCAAgC;IAChC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,oCAAoC;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AACD,uBAAuB;AACvB,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAClE,eAAO,MAAM,eAAe,EAAmB,eAAe,CAAC;AAE/D,qCAAqC;AACrC,wBAAgB,oBAAoB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,EAClD,QAAQ,UAAQ,GACjB,IAAI,CAYN;AAED,aAAa;AACb,eAAO,MAAM,gBAAgB,EAAE,SAc7B,CAAC;AAoDH,eAAe;AACf,KAAK,yBAAyB,GAAG,SAAS;IACtC,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS;IACzD,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS;CACvE,CAAC;AACF,kBAAkB;AAClB,KAAK,0BAA0B,GAAG,SAAS;IACvC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS;IAC5C,UAAU,CAAC,EAAE,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS;IACxD,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS;CACvE,CAAC;AAEF,qBAAqB;AACrB,wBAAgB,eAAe,CAAC,GAAG,IAAI,EAAE,yBAAyB,GAAG,0BAA0B,GAAG,SAAS,CAwB1G;AAED,iBAAiB;AACjB,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,SAAS,CAGlE"}
@@ -27,4 +27,6 @@ export declare class VmExtern<const T extends object = object> extends VmWrapper
27
27
  /** @inheritdoc */
28
28
  get describe(): string;
29
29
  }
30
+ /** 检查值是否为 Mirascript 外部值 */
31
+ export declare function isVmExtern<T extends object>(value: unknown): value is VmExtern<T>;
30
32
  //# sourceMappingURL=extern.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extern.d.ts","sourceRoot":"","sources":["../../../src/vm/types/extern.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAOjF,mCAAmC;AACnC,qBAAa,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAGnE,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,SAAS,KAAK,EAAE,KAAK,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI;gBAD3F,KAAK,EAAE,CAAC,EACC,OAAO,GAAE,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,SAAS,KAAK,EAAE,KAAK,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAW;IAKtG,yCAAyC;IACzC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO;IAiBrD,kBAAkB;IAClB,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;IAIxG,kBAAkB;IACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAGlC,kBAAkB;IACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK;IAKhC,mCAAmC;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAMzC,wBAAwB;IACxB,IAAI,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,KAAK;IAerC,kBAAkB;IACT,IAAI,IAAI,MAAM,EAAE;IAOzB,kBAAkB;IACT,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIpC,kBAAkB;IACT,QAAQ,IAAI,MAAM;IAY3B,kBAAkB;IAClB,IAAa,IAAI,IAAI,QAAQ,CAE5B;IACD,kBAAkB;IAClB,IAAa,QAAQ,IAAI,MAAM,CAuB9B;CACJ"}
1
+ {"version":3,"file":"extern.d.ts","sourceRoot":"","sources":["../../../src/vm/types/extern.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AASjF,mCAAmC;AACnC,qBAAa,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAGnE,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,SAAS,KAAK,EAAE,KAAK,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI;gBAD3F,KAAK,EAAE,CAAC,EACC,OAAO,GAAE,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,SAAS,KAAK,EAAE,KAAK,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAW;IAKtG,yCAAyC;IACzC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO;IAiBrD,kBAAkB;IAClB,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;IAIxG,kBAAkB;IACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAGlC,kBAAkB;IACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK;IAKhC,mCAAmC;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAMzC,wBAAwB;IACxB,IAAI,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,KAAK;IAerC,kBAAkB;IACT,IAAI,IAAI,MAAM,EAAE;IAOzB,kBAAkB;IACT,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIpC,kBAAkB;IACT,QAAQ,IAAI,MAAM;IAY3B,kBAAkB;IAClB,IAAa,IAAI,IAAI,QAAQ,CAE5B;IACD,kBAAkB;IAClB,IAAa,QAAQ,IAAI,MAAM,CAuB9B;CACJ;AAID,4BAA4B;AAC5B,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAEjF"}
@@ -1,6 +1,7 @@
1
- import { VmExtern } from './extern.js';
2
- import { type VmFunction } from './function.js';
3
- import { VmModule } from './module.js';
1
+ import { isVmExtern, VmExtern } from './extern.js';
2
+ import { isVmFunction, VmFunction } from './function.js';
3
+ import { VmModule, isVmModule } from './module.js';
4
+ import { isVmWrapper } from './wrapper.js';
4
5
  /** Mirascript 原始值 */
5
6
  export type VmPrimitive = null | string | number | boolean;
6
7
  /**
@@ -61,16 +62,11 @@ export declare function isVmRecord(value: VmAny): value is VmRecord;
61
62
  * 检查值是否为 Mirascript 原始值
62
63
  */
63
64
  export declare function isVmPrimitive(value: unknown): value is VmPrimitive;
64
- export { VmExtern } from './extern.js';
65
+ export { VmFunction, isVmFunction, VmExtern, isVmExtern, VmModule, isVmModule, isVmWrapper };
65
66
  export { wrapToVmValue, unwrapFromVmValue, toVmFunctionProxy, fromVmFunctionProxy } from './boundary.js';
66
- /** 检查值是否为 Mirascript 外部值 */
67
- export declare function isVmExtern(value: unknown): value is VmExtern;
68
67
  /** 检查值是否为 Mirascript 可调用值 */
69
68
  export declare function isVmCallable(value: unknown): value is VmFunction | VmExtern<Function>;
70
- export { VmFunction, isVmFunction, getVmFunctionInfo, type VmFunctionInfo, type VmFunctionLike, type VmFunctionOption, } from './function.js';
71
- export { VmModule } from './module.js';
72
- /** 检查值是否为 Mirascript 模块 */
73
- export declare function isVmModule(value: unknown): value is VmModule;
69
+ export { getVmFunctionInfo, type VmFunctionInfo, type VmFunctionLike, type VmFunctionOption } from './function.js';
74
70
  export { type VmContext, type VmSharedContext, isVmContext, defineVmContextValue, createVmContext } from './context.js';
75
71
  export { type VmScript, isVmScript } from './script.js';
76
72
  export { isVmAny, isVmConst, isVmImmutable, isVmValue } from './checker.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vm/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vm/types/index.ts"],"names":[],"mappings":"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"}
@@ -22,4 +22,6 @@ export declare class VmModule<const T extends Record<string, VmValue> = Record<s
22
22
  /** @inheritdoc */
23
23
  get describe(): string;
24
24
  }
25
+ /** 检查值是否为 Mirascript 模块 */
26
+ export declare function isVmModule<T extends Record<string, VmValue>>(value: unknown): value is VmModule<T>;
25
27
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/vm/types/module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,oBAAoB;AACpB,qBAAa,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAErG,WAAW;IACX,QAAQ,CAAC,IAAI,EAAE,MAAM;;IADrB,WAAW;IACF,IAAI,EAAE,MAAM;IACrB,WAAW;IACX,KAAK,EAAE,CAAC;IAIZ,kBAAkB;IACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAGlC,kBAAkB;IACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK;IAIhC,kBAAkB;IACT,IAAI,IAAI,MAAM,EAAE;IAGzB,kBAAkB;IACT,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAGpC,kBAAkB;IAClB,IAAa,IAAI,IAAI,QAAQ,CAE5B;IACD,kBAAkB;IAClB,IAAa,QAAQ,IAAI,MAAM,CAE9B;CACJ"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/vm/types/module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,oBAAoB;AACpB,qBAAa,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAErG,WAAW;IACX,QAAQ,CAAC,IAAI,EAAE,MAAM;;IADrB,WAAW;IACF,IAAI,EAAE,MAAM;IACrB,WAAW;IACX,KAAK,EAAE,CAAC;IAIZ,kBAAkB;IACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAGlC,kBAAkB;IACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK;IAIhC,kBAAkB;IACT,IAAI,IAAI,MAAM,EAAE;IAGzB,kBAAkB;IACT,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAGpC,kBAAkB;IAClB,IAAa,IAAI,IAAI,QAAQ,CAE5B;IACD,kBAAkB;IAClB,IAAa,QAAQ,IAAI,MAAM,CAE9B;CACJ;AAID,2BAA2B;AAC3B,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAElG"}
@@ -22,4 +22,6 @@ export declare abstract class VmWrapper<T extends object> {
22
22
  /** 转为字符串 */
23
23
  toString(): string;
24
24
  }
25
+ /** 检查值是否为 MiraScript 包装器 */
26
+ export declare function isVmWrapper<T extends object>(value: unknown): value is VmWrapper<T>;
25
27
  //# sourceMappingURL=wrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../../src/vm/types/wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,8BAAsB,SAAS,CAAC,CAAC,SAAS,MAAM;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAAR,KAAK,EAAE,CAAC;IAC7B,cAAc;IACd,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAClC,cAAc;IACd,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK;IAChC,WAAW;IACX,QAAQ,CAAC,IAAI,IAAI,MAAM,EAAE;IACzB,aAAa;IACb,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IACpC,WAAW;IACX,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC;IAC9B,WAAW;IACX,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC;IAChC,iCAAiC;IACjC,MAAM,IAAI,SAAS;IAGnB,YAAY;IACZ,QAAQ,IAAI,MAAM;CAGrB"}
1
+ {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../../src/vm/types/wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAElD;;GAEG;AACH,8BAAsB,SAAS,CAAC,CAAC,SAAS,MAAM;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAAR,KAAK,EAAE,CAAC;IAC7B,cAAc;IACd,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAClC,cAAc;IACd,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK;IAChC,WAAW;IACX,QAAQ,CAAC,IAAI,IAAI,MAAM,EAAE;IACzB,aAAa;IACb,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IACpC,WAAW;IACX,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC;IAC9B,WAAW;IACX,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC;IAChC,iCAAiC;IACjC,MAAM,IAAI,SAAS;IAGnB,YAAY;IACZ,QAAQ,IAAI,MAAM;CAKrB;AAID,4BAA4B;AAC5B,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,CAEnF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirascript/mirascript",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "type": "module",
5
5
  "description": "An expression based scripting language.",
6
6
  "main": "./dist/index.js",
@@ -35,22 +35,23 @@
35
35
  "ansi-styles": "^6.2.3",
36
36
  "commander": "^14.0.2",
37
37
  "js-base64": "^3.7.8",
38
- "@mirascript/napi": "~0.1.2",
39
- "@mirascript/wasm": "~0.1.2"
38
+ "source-map-js": "^1.2.1",
39
+ "@mirascript/wasm": "~0.1.4",
40
+ "@mirascript/napi": "~0.1.4"
40
41
  },
41
42
  "devDependencies": {
42
- "@types/node": "^24.9.2",
43
+ "@types/node": "^24.10.0",
43
44
  "@types/sinon": "^17.0.4",
44
45
  "ava": "^6.4.1",
45
46
  "c8": "^10.1.3",
46
47
  "sinon": "^21.0.0",
47
- "type-fest": "^5.1.0"
48
+ "type-fest": "^5.2.0"
48
49
  },
49
50
  "scripts": {
50
51
  "watch": "pnpm build:ts --watch",
51
52
  "build:ts": "pnpm clean && tsc",
52
53
  "build": "pnpm build:ts --emitDeclarationOnly && node ./esbuild.config.js",
53
- "mirascript": "node ./dist/cli/index.js",
54
+ "mirascript": "node --enable-source-maps ./dist/cli/index.js",
54
55
  "clean": "rimraf dist",
55
56
  "test": "c8 ava"
56
57
  }
@@ -6,9 +6,14 @@ import { debug_print } from '../vm/lib/global/debug.js';
6
6
  import { print } from './print.js';
7
7
 
8
8
  /** 执行脚本 */
9
- export async function execute(script: string, template: boolean, variables: Record<string, VmValue>): Promise<void> {
9
+ export async function execute(
10
+ script: string,
11
+ template: boolean,
12
+ variables: Record<string, VmValue>,
13
+ fileName: string,
14
+ ): Promise<void> {
10
15
  try {
11
- const f = await compile(script, { input_mode: template ? 'Template' : 'Script' });
16
+ const f = await compile(script, { input_mode: template ? 'Template' : 'Script', sourceMap: true, fileName });
12
17
  const r = f(
13
18
  createVmContext({
14
19
  debug_print: VmFunction((...values) => {
@@ -26,7 +31,7 @@ export async function execute(script: string, template: boolean, variables: Reco
26
31
  console.log(print(r));
27
32
  }
28
33
  } catch (ex) {
29
- console.error(styles.red.open + (ex as Error).message + styles.red.close);
34
+ console.error(styles.red.open + (ex as Error).stack + styles.red.close);
30
35
  process.exitCode = 2;
31
36
  }
32
37
  }
package/src/cli/index.ts CHANGED
@@ -1,11 +1,14 @@
1
1
  /* c8 ignore start */
2
2
  /* eslint-disable no-console */
3
3
  import { readFile, stat } from 'node:fs/promises';
4
- import { program } from '@commander-js/extra-typings';
4
+ import { pathToFileURL } from 'node:url';
5
+ import { InvalidArgumentError, program } from '@commander-js/extra-typings';
5
6
  import { execute } from './execute.js';
6
7
  import pkg from '../../package.json' with { type: 'json' };
7
8
  import { compileSync } from '../compiler/index.js';
8
- import type { VmValue } from '../vm/index.js';
9
+ import { configCheckpoint, type VmValue } from '../vm/index.js';
10
+
11
+ const DEFAULT_TIMEOUT = 3000;
9
12
 
10
13
  program.name(pkg.name.split('/').pop()!).version(pkg.version).description(pkg.description);
11
14
 
@@ -33,12 +36,26 @@ program
33
36
  {} as Record<string, VmValue>,
34
37
  )
35
38
  .option('-t, --template', '使用模板模式')
39
+ .option(
40
+ '--timeout <ms>',
41
+ '脚本执行超时时间(毫秒,0 表示不超时)',
42
+ (v) => {
43
+ const ms = Number.parseFloat(v);
44
+ if (Number.isNaN(ms) || ms < 0) {
45
+ throw new InvalidArgumentError('超时时间必须是非负整数');
46
+ }
47
+ return ms;
48
+ },
49
+ DEFAULT_TIMEOUT,
50
+ )
36
51
  .option('--no-template', '使用脚本模式')
37
52
  .option('-e, --eval <script>', '要执行的脚本')
38
53
  .argument('[script]', '要执行的脚本文件路径(如果提供了 -e 则忽略此参数)')
39
54
  .action(async (script, opt) => {
55
+ configCheckpoint(opt.timeout || Number.POSITIVE_INFINITY);
40
56
  if (opt.eval != null) {
41
- await execute(opt.eval, !!opt.template, opt.variable);
57
+ const template = !!opt.template;
58
+ await execute(opt.eval, template, opt.variable, template ? 'eval.miratpl' : 'eval.mira');
42
59
  return;
43
60
  }
44
61
  if (script) {
@@ -62,9 +79,9 @@ program
62
79
  }
63
80
  return;
64
81
  }
65
- const context = await readFile(script, 'utf8');
82
+ const context = await readFile(script, 'utf-8');
66
83
  const template = opt.template ?? script.endsWith('.miratpl');
67
- await execute(context, template, opt.variable);
84
+ await execute(context, template, opt.variable, pathToFileURL(script).href);
68
85
  return;
69
86
  }
70
87
  program.help({ error: true });
package/src/cli/print.ts CHANGED
@@ -1,15 +1,19 @@
1
1
  import styles from 'ansi-styles';
2
- import { serialize, type SerializeOptions } from '../subtle.js';
2
+ import {
3
+ serialize,
4
+ serializeNumber,
5
+ serializeBoolean,
6
+ serializeNil,
7
+ type SerializeOptions,
8
+ operations,
9
+ } from '../subtle.js';
3
10
  import type { VmAny, VmRecord } from '../vm/index.js';
4
11
 
5
12
  const options: Partial<SerializeOptions> = {
6
13
  maxDepth: 3,
7
- serializeNil: () => styles.gray.open + 'nil' + styles.gray.close,
8
- serializeBoolean: (v) => styles.blue.open + (v ? 'true' : 'false') + styles.blue.close,
9
- serializeNumber: (v) =>
10
- styles.yellow.open +
11
- (Number.isNaN(v) ? 'nan' : Number.isFinite(v) ? v.toString() : v > 0 ? 'inf' : '-inf') +
12
- styles.yellow.close,
14
+ serializeNil: () => styles.gray.open + serializeNil() + styles.gray.close,
15
+ serializeBoolean: (v) => styles.blue.open + serializeBoolean(v) + styles.blue.close,
16
+ serializeNumber: (v) => styles.yellow.open + serializeNumber(v) + styles.yellow.close,
13
17
  serializeStringQuote: (v, open) => {
14
18
  const q = styles.dim.open + v + styles.dim.close;
15
19
  if (open) {
@@ -19,12 +23,12 @@ const options: Partial<SerializeOptions> = {
19
23
  }
20
24
  },
21
25
  serializeStringEscape: (v) => styles.bold.open + v + styles.bold.close,
22
- serializeFunction: (v) => styles.cyan.open + `<function ${v.name || 'anonymous'}>` + styles.cyan.close,
26
+ serializeFunction: (v) => styles.cyan.open + operations.$ToString(v) + styles.cyan.close,
23
27
  serializePropName: (v) => styles.whiteBright.open + String(v) + styles.whiteBright.close,
24
28
  serializeModule: (v, depth, options) => {
25
29
  return (
26
30
  styles.magenta.open +
27
- `<module ${v.name || 'anonymous'}>` +
31
+ operations.$ToString(v) +
28
32
  styles.magenta.close +
29
33
  ' ' +
30
34
  options.serializeRecord(v.value as VmRecord, depth, options)
@@ -60,30 +60,47 @@ export interface SourceReference<T extends DiagnosticCode = DiagnosticCode> exte
60
60
  readonly diagnostic: SourceDiagnostic<T>;
61
61
  }
62
62
 
63
- /** 分析诊断信息,{@link diagnostic_position_encoding} 不能设为 `None` */
64
- export function parseDiagnostics(
65
- source: ScriptInput,
66
- diagnostics: Uint32Array,
67
- ): {
63
+ /** 解析后的诊断信息 */
64
+ interface ParsedDiagnostics {
65
+ /** 错误诊断信息 */
68
66
  errors: SourceDiagnostic[];
67
+ /** 警告诊断信息 */
69
68
  warnings: SourceDiagnostic[];
69
+ /** 信息诊断信息 */
70
70
  infos: SourceDiagnostic[];
71
+ /** 提示诊断信息 */
71
72
  hints: SourceDiagnostic[];
73
+ /** 标签诊断信息 */
72
74
  tags: SourceDiagnostic[];
73
75
 
76
+ /** 引用诊断信息 */
74
77
  references: SourceReference[];
78
+ /** 标签引用诊断信息 */
75
79
  tagsReferences: SourceReference[];
76
- } {
80
+
81
+ /** 代码映射信息 */
82
+ sourcemaps: IRange[];
83
+ }
84
+
85
+ /** 分析诊断信息,{@link diagnostic_position_encoding} 不能设为 `None` */
86
+ export function parseDiagnostics(
87
+ source: ScriptInput,
88
+ diagnostics: Uint32Array,
89
+ filter?: (code: DiagnosticCode) => boolean,
90
+ ): ParsedDiagnostics {
77
91
  const parsed = [];
78
92
  const bufLen = diagnostics.length;
79
93
  for (let i = 0; i < bufLen; i += 5) {
94
+ const code = diagnostics[i + 4]! as DiagnosticCode;
95
+ if (filter && !filter(code)) {
96
+ continue;
97
+ }
80
98
  const startLineNumber = diagnostics[i]!;
81
99
  const startColumn = diagnostics[i + 1]!;
82
100
  const endLineNumber = diagnostics[i + 2]!;
83
101
  const endColumn = diagnostics[i + 3]!;
84
- const error = diagnostics[i + 4]! as DiagnosticCode;
85
102
  parsed.push({
86
- code: error,
103
+ code,
87
104
  range: {
88
105
  startLineNumber,
89
106
  startColumn,
@@ -100,6 +117,7 @@ export function parseDiagnostics(
100
117
  const _tags: SourceDiagnostic[] = [];
101
118
  const _references: SourceReference[] = [];
102
119
  const _tagsReferences: SourceReference[] = [];
120
+ const _sourcemaps: IRange[] = [];
103
121
  for (let i = 0; i < parsed.length; i++) {
104
122
  const diagnostic = parsed[i]!;
105
123
  const { code } = diagnostic;
@@ -113,7 +131,11 @@ export function parseDiagnostics(
113
131
  _hints.push(diagnostic);
114
132
  } else if (code > DiagnosticCode.TagStart && code < DiagnosticCode.TagEnd) {
115
133
  _tags.push(diagnostic);
134
+ } else if (code === DiagnosticCode.SourceMap) {
135
+ _sourcemaps.push(diagnostic.range);
136
+ continue;
116
137
  } else {
138
+ // 非法诊断代码,跳过
117
139
  continue;
118
140
  }
119
141
  diagnostic.references = [];
@@ -144,16 +166,12 @@ export function parseDiagnostics(
144
166
  tags: _tags,
145
167
  references: _references,
146
168
  tagsReferences: _tagsReferences,
169
+ sourcemaps: _sourcemaps,
147
170
  };
148
171
  }
149
172
 
150
173
  /** 生成诊断 range 的字符串 */
151
- function formatRange(range: {
152
- startLineNumber: number;
153
- startColumn: number;
154
- endLineNumber: number;
155
- endColumn: number;
156
- }): string {
174
+ function formatRange(range: IRange): string {
157
175
  if (range.startLineNumber === range.endLineNumber) {
158
176
  if (range.startColumn === range.endColumn) {
159
177
  return `${range.startLineNumber}:${range.startColumn}`;
@@ -1,11 +1,18 @@
1
1
  import { OpCode } from '@mirascript/wasm/types';
2
- import { encodeURL } from 'js-base64';
2
+ import { toBase64 } from 'js-base64';
3
3
  import type { VmConst, VmPrimitive } from '../vm/index.js';
4
4
  import type { ScriptInput, TranspileOptions } from './types.js';
5
+ import type { IRange } from './diagnostic.js';
6
+ import { SourceMapGenerator } from 'source-map-js';
5
7
 
6
8
  /** 生成代码 */
7
- export function emit(source: ScriptInput, chunk: Uint8Array, options: TranspileOptions): string {
8
- const gen = new Emitter(source, chunk, options);
9
+ export function emit(
10
+ source: ScriptInput,
11
+ chunk: Uint8Array,
12
+ sourcemaps: readonly IRange[],
13
+ options: TranspileOptions,
14
+ ): string {
15
+ const gen = new Emitter(source, chunk, sourcemaps, options);
9
16
  gen.read();
10
17
  const code = gen.codeLines.join('\n');
11
18
  return code;
@@ -57,7 +64,7 @@ function toJavascript(value: VmConst | undefined): string {
57
64
  return String(value);
58
65
  }
59
66
 
60
- const ORIGIN = `mira://MiraScript`;
67
+ const ORIGIN = `mira://MiraScript/`;
61
68
  let sourceId = 1;
62
69
 
63
70
  /** 创建数组 */
@@ -75,6 +82,7 @@ class Emitter {
75
82
  constructor(
76
83
  readonly source: ScriptInput,
77
84
  readonly chunk: Uint8Array,
85
+ readonly sourcemaps: readonly IRange[],
78
86
  readonly options: TranspileOptions,
79
87
  ) {
80
88
  this.pretty = options.pretty ?? false;
@@ -362,9 +370,9 @@ class Emitter {
362
370
  );
363
371
  if (script) {
364
372
  args.unshift(`global = GlobalFallback()`);
365
- code = `'use strict'; return (function script(${args.join(', ')}) { try { CpEnter(); var ${regs};`;
373
+ code = `'use strict'; return ((${args.join(', ')}) => { try { CpEnter(); var ${regs};`;
366
374
  } else {
367
- code = `${this.wv(reg)} = Function(function (${args.join(', ')}) { try { CpEnter(); var ${regs};`;
375
+ code = `${this.wv(reg)} = Function((${args.join(', ')}) => { try { CpEnter(); var ${regs};`;
368
376
  }
369
377
  if (varg) {
370
378
  code += ` var ${this.wv(argn, -1)} = Vargs(vargs);`;
@@ -688,6 +696,9 @@ class Emitter {
688
696
  code = `continue;`;
689
697
  break;
690
698
  }
699
+ case OpCode.Noop: {
700
+ return;
701
+ }
691
702
  default: {
692
703
  code = `; // ${OpCode[opcode] ?? opcode}`;
693
704
  break;
@@ -742,27 +753,42 @@ class Emitter {
742
753
  const hasSchema = /^\w+:/.test(fileName);
743
754
  if (!hasSchema) {
744
755
  if (fileName.startsWith('/')) {
745
- fileName = fileName.replace(/^\\+\s*/, '');
756
+ fileName = fileName.replace(/^\/+\s*/, '');
746
757
  }
747
758
  if (!fileName) {
748
759
  fileName = `${sourceId++}.${this.options.input_mode === 'Template' ? 'miratpl' : 'mira'}`;
749
760
  }
750
761
  }
751
- const data = {
752
- version: 3,
753
- file: fileName,
754
- sourceRoot: hasSchema ? '' : ORIGIN,
755
- sources: [fileName],
756
- sourcesContent: [ArrayBuffer.isView(this.source) ? null : this.source],
757
- names: [],
758
- mappings: '',
759
- };
762
+ const map = new SourceMapGenerator({
763
+ file: fileName + '.js',
764
+ });
765
+ if (typeof this.source === 'string') {
766
+ map.setSourceContent(fileName, this.source);
767
+ }
768
+ for (let i = 0; i < this.sourcemaps.length; i++) {
769
+ const range = this.sourcemaps[i];
770
+ if (!range) break;
771
+ map.addMapping({
772
+ generated: {
773
+ // 前两行固定为:
774
+ // (function anonymous($Add,$Aeq, ...
775
+ // ) {
776
+ line: i + 3,
777
+ column: 0,
778
+ },
779
+ original: {
780
+ line: range.startLineNumber,
781
+ column: range.startColumn - 1,
782
+ },
783
+ source: fileName,
784
+ });
785
+ }
760
786
  const prefix = '//# ';
761
- const sourceURL = hasSchema ? fileName : `${ORIGIN}/${fileName}.js`;
787
+ const sourceURL = hasSchema ? fileName : `${ORIGIN}${fileName}`;
762
788
  this.codeLines.push(
763
789
  // Prevent source map from being recognized as of this file
764
- `${prefix}sourceURL=${sourceURL}`,
765
- `${prefix}sourceMappingURL=data:application/json;base64,${encodeURL(JSON.stringify(data))}`,
790
+ `${prefix}sourceURL=${sourceURL}.js`,
791
+ `${prefix}sourceMappingURL=data:application/json;base64,${toBase64(map.toString())}`,
766
792
  );
767
793
  }
768
794
  }
@@ -4,7 +4,7 @@ import './types.js';
4
4
  import { emit } from './emit.js';
5
5
  import { createScript } from './create-script.js';
6
6
  import { compileFast } from './compile-fast.js';
7
- import { formatDiagnostic, parseDiagnostics } from './diagnostic.js';
7
+ import { DiagnosticCode, formatDiagnostic, parseDiagnostics } from './diagnostic.js';
8
8
  import { generateBytecode, generateBytecodeSync, loadModule } from './generate-bytecode.js';
9
9
  import { compileWorker } from './worker-manager.js';
10
10
  await loadModule();
@@ -33,7 +33,10 @@ export function emitScript(
33
33
  if (!code) {
34
34
  reportDiagnostic(source, diagnostics);
35
35
  }
36
- const target = emit(source, code, options);
36
+ const sourcemaps = options.sourceMap
37
+ ? parseDiagnostics(source, diagnostics, (c) => c === DiagnosticCode.SourceMap).sourcemaps
38
+ : [];
39
+ const target = emit(source, code, sourcemaps, options);
37
40
  return createScript(source, target);
38
41
  }
39
42
 
@@ -41,6 +44,11 @@ export function emitScript(
41
44
  * 生成 MiraScript 对应的 JavaScript 代码
42
45
  */
43
46
  export async function compile(this: void, source: ScriptInput, options: TranspileOptions = {}): Promise<VmScript> {
47
+ if (options.sourceMap) {
48
+ options.diagnostic_sourcemap = true;
49
+ // https://tc39.es/ecma426/#sec-terms-and-definitions-colun
50
+ options.diagnostic_position_encoding ??= 'Utf16';
51
+ }
44
52
  if (typeof source == 'string') {
45
53
  const result = compileFast(source, options);
46
54
  if (result) return result;