@mirascript/mirascript 0.1.34 → 0.1.35

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 (38) hide show
  1. package/dist/{chunk-KUOYMOEU.js → chunk-C6YXWSTI.js} +91 -43
  2. package/dist/chunk-C6YXWSTI.js.map +6 -0
  3. package/dist/{chunk-DNMS3ZEP.js → chunk-HGARNCSR.js} +2 -2
  4. package/dist/{chunk-GUMBLKWM.js → chunk-PYMZMMRB.js} +3 -3
  5. package/dist/{chunk-VXTRR2CX.js → chunk-SEZII6RI.js} +18 -6
  6. package/dist/chunk-SEZII6RI.js.map +6 -0
  7. package/dist/cli/index.js +4 -4
  8. package/dist/compiler/worker.js +1 -1
  9. package/dist/helpers/serialize.d.ts +5 -4
  10. package/dist/helpers/serialize.d.ts.map +1 -1
  11. package/dist/index.js +3 -3
  12. package/dist/subtle.js +3 -3
  13. package/dist/vm/lib/global/debug.d.ts +1 -1
  14. package/dist/vm/lib/global/debug.d.ts.map +1 -1
  15. package/dist/vm/lib/global/math-const.d.ts +6 -0
  16. package/dist/vm/lib/global/math-const.d.ts.map +1 -1
  17. package/dist/vm/lib/helpers.d.ts +1 -1
  18. package/dist/vm/lib/helpers.d.ts.map +1 -1
  19. package/dist/vm/operations/compound.d.ts.map +1 -1
  20. package/dist/vm/types/boundary.d.ts +2 -0
  21. package/dist/vm/types/boundary.d.ts.map +1 -1
  22. package/dist/vm/types/extern.d.ts +1 -1
  23. package/dist/vm/types/extern.d.ts.map +1 -1
  24. package/dist/vm/types/function.d.ts +6 -0
  25. package/dist/vm/types/function.d.ts.map +1 -1
  26. package/package.json +4 -4
  27. package/src/helpers/serialize.ts +22 -8
  28. package/src/vm/lib/global/debug.ts +1 -1
  29. package/src/vm/lib/global/math-const.ts +17 -0
  30. package/src/vm/lib/helpers.ts +2 -1
  31. package/src/vm/operations/compound.ts +26 -11
  32. package/src/vm/types/boundary.ts +27 -11
  33. package/src/vm/types/extern.ts +1 -1
  34. package/src/vm/types/function.ts +4 -0
  35. package/dist/chunk-KUOYMOEU.js.map +0 -6
  36. package/dist/chunk-VXTRR2CX.js.map +0 -6
  37. /package/dist/{chunk-DNMS3ZEP.js.map → chunk-HGARNCSR.js.map} +0 -0
  38. /package/dist/{chunk-GUMBLKWM.js.map → chunk-PYMZMMRB.js.map} +0 -0
package/dist/cli/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  compile,
3
3
  compileSync
4
- } from "../chunk-GUMBLKWM.js";
5
- import "../chunk-DNMS3ZEP.js";
4
+ } from "../chunk-PYMZMMRB.js";
5
+ import "../chunk-HGARNCSR.js";
6
6
  import {
7
7
  configCheckpoint,
8
8
  createVmContext,
9
9
  debug_print,
10
10
  operations_exports,
11
11
  panic
12
- } from "../chunk-KUOYMOEU.js";
12
+ } from "../chunk-C6YXWSTI.js";
13
13
  import {
14
14
  PositiveInfinity,
15
15
  isNaN,
@@ -17,7 +17,7 @@ import {
17
17
  serializeBoolean,
18
18
  serializeNil,
19
19
  serializeNumber
20
- } from "../chunk-VXTRR2CX.js";
20
+ } from "../chunk-SEZII6RI.js";
21
21
 
22
22
  // src/cli/index.ts
23
23
  import { readFile, stat } from "node:fs/promises";
@@ -3,7 +3,7 @@ import {
3
3
  emit,
4
4
  generateBytecode,
5
5
  parseDiagnostics
6
- } from "../chunk-VXTRR2CX.js";
6
+ } from "../chunk-SEZII6RI.js";
7
7
 
8
8
  // src/compiler/worker.ts
9
9
  async function compile(script, options) {
@@ -1,5 +1,4 @@
1
1
  import type { VmArray, VmExtern, VmFunction, VmModule, VmAny, VmRecord } from '../vm/index.js';
2
- import type { VmWrapper } from '../vm/types/wrapper.js';
3
2
  /** 序列化设置 */
4
3
  export interface SerializeOptions {
5
4
  /** 最大递归深度,超过该深度的值将被序列化为 `nil`,默认值为 128 */
@@ -51,10 +50,12 @@ export declare function serializeRecord(value: VmRecord, depth: number, options:
51
50
  * 将 MiraScript 值序列化为 MiraScript 字面量字符串,非常量值默认转换为 `nil`。
52
51
  */
53
52
  export declare function serialize(value: VmAny, options?: Partial<SerializeOptions>): string;
54
- /** 将 MiraScript function 转化为 MiraScript 字符串 */
53
+ /** 将 MiraScript 函数转化为 MiraScript 字符串 */
55
54
  export declare function displayFunction(value: VmFunction): string;
56
- /** 将 MiraScript module 转化为 MiraScript 字符串 */
57
- export declare function displayWrapper(value: VmWrapper<object>, useBraces: boolean, fallback: string): string;
55
+ /** 将 MiraScript 模块转化为 MiraScript 字符串 */
56
+ export declare function displayModule(value: VmModule): string;
57
+ /** 将 MiraScript 外部值转化为 MiraScript 字符串 */
58
+ export declare function displayExtern(value: VmExtern): string;
58
59
  /**
59
60
  * 将 MiraScript 值转化为 MiraScript 字符串。
60
61
  */
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/helpers/serialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/helpers/serialize.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  compile,
3
3
  compileSync
4
- } from "./chunk-GUMBLKWM.js";
4
+ } from "./chunk-PYMZMMRB.js";
5
5
  import {
6
6
  VmExtern,
7
7
  VmFunction,
@@ -11,7 +11,7 @@ import {
11
11
  defineVmContextValue,
12
12
  unwrapFromVmValue,
13
13
  wrapToVmValue
14
- } from "./chunk-KUOYMOEU.js";
14
+ } from "./chunk-C6YXWSTI.js";
15
15
  import {
16
16
  VmError,
17
17
  getVmFunctionInfo,
@@ -33,7 +33,7 @@ import {
33
33
  isVmValue,
34
34
  isVmWrapper,
35
35
  serialize
36
- } from "./chunk-VXTRR2CX.js";
36
+ } from "./chunk-SEZII6RI.js";
37
37
  export {
38
38
  VmError,
39
39
  VmExtern,
package/dist/subtle.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  OpCode,
3
3
  analyzeGlobalReferences,
4
4
  isKeyword
5
- } from "./chunk-DNMS3ZEP.js";
5
+ } from "./chunk-HGARNCSR.js";
6
6
  import {
7
7
  DefaultVmContext,
8
8
  convert_exports,
@@ -11,7 +11,7 @@ import {
11
11
  lib,
12
12
  operations_exports,
13
13
  wrapScript
14
- } from "./chunk-KUOYMOEU.js";
14
+ } from "./chunk-C6YXWSTI.js";
15
15
  import {
16
16
  DiagnosticCode,
17
17
  constants_exports,
@@ -29,7 +29,7 @@ import {
29
29
  serializeRecord,
30
30
  serializeRecordKey,
31
31
  serializeString
32
- } from "./chunk-VXTRR2CX.js";
32
+ } from "./chunk-SEZII6RI.js";
33
33
  export {
34
34
  DefaultVmContext,
35
35
  DiagnosticCode,
@@ -17,7 +17,7 @@ export declare const debug_print: ((...args: readonly (import("../../types/index
17
17
  serializer: typeof defaultSerializer;
18
18
  };
19
19
  export declare const panic: ((message: VmAny) => never) & import("../helpers.js").VmLibOption & {
20
- prefix: readonly string[];
20
+ prefix: readonly [prefix: string, ...additional: readonly string[]];
21
21
  serializer: typeof defaultSerializer;
22
22
  };
23
23
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/debug.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGlD,YAAY;AACZ,KAAK,eAAe;AAChB,cAAc;AACZ,EAAE;AACJ,qBAAqB;GACnB,IAAI,MAAM,EAAE,CAAC;AACnB;;;;;GAKG;AACH,iBAAS,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAE7E;AAcD,eAAO,MAAM,WAAW;YA2DU,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;;CAG5F,CAAC;AAEF,eAAO,MAAM,KAAK,aACJ,KAAK;YAiBe,SAAS,MAAM,EAAE;;CAGlD,CAAC"}
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/debug.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGlD,YAAY;AACZ,KAAK,eAAe;AAChB,cAAc;AACZ,EAAE;AACJ,qBAAqB;GACnB,IAAI,MAAM,EAAE,CAAC;AACnB;;;;;GAKG;AACH,iBAAS,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAE7E;AAcD,eAAO,MAAM,WAAW;YA2DU,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;;CAG5F,CAAC;AAEF,eAAO,MAAM,KAAK,aACJ,KAAK;YAiBe,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;;CAG5F,CAAC"}
@@ -4,6 +4,12 @@ export declare const PI: {
4
4
  export declare const E: {
5
5
  value: number;
6
6
  } & import("../helpers.js").VmLibOption & Record<never, never>;
7
+ export declare const pi: {
8
+ value: number;
9
+ } & import("../helpers.js").VmLibOption & Record<never, never>;
10
+ export declare const e: {
11
+ value: number;
12
+ } & import("../helpers.js").VmLibOption & Record<never, never>;
7
13
  export declare const SQRT1_2: {
8
14
  value: number;
9
15
  } & import("../helpers.js").VmLibOption & Record<never, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"math-const.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/math-const.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,EAAE;;8DAGb,CAAC;AACH,eAAO,MAAM,CAAC;;8DAGZ,CAAC;AACH,eAAO,MAAM,OAAO;;8DAGlB,CAAC;AACH,eAAO,MAAM,KAAK;;8DAGhB,CAAC;AACH,eAAO,MAAM,GAAG;;8DAGd,CAAC;AACH,eAAO,MAAM,IAAI;;8DAGf,CAAC;AACH,eAAO,MAAM,KAAK;;8DAGhB,CAAC;AACH,eAAO,MAAM,MAAM;;8DAGjB,CAAC"}
1
+ {"version":3,"file":"math-const.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/math-const.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,EAAE;;8DAGb,CAAC;AACH,eAAO,MAAM,CAAC;;8DAGZ,CAAC;AACH,eAAO,MAAM,EAAE;;8DAOb,CAAC;AACH,eAAO,MAAM,CAAC;;8DAOZ,CAAC;AACH,eAAO,MAAM,OAAO;;8DAGlB,CAAC;AACH,eAAO,MAAM,KAAK;;8DAGhB,CAAC;AACH,eAAO,MAAM,GAAG;;8DAGd,CAAC;AACH,eAAO,MAAM,IAAI;;8DAGf,CAAC;AACH,eAAO,MAAM,KAAK;;8DAGhB,CAAC;AACH,eAAO,MAAM,MAAM;;8DAGjB,CAAC"}
@@ -46,7 +46,7 @@ export declare function map(data: VmConst,
46
46
  /** 返回 `undefined` 表示跳过该元素 */
47
47
  mapper: (value: VmConst, index: number | string | null, data: VmConst) => VmConst | undefined): VmConst;
48
48
  /** 库函数选项 */
49
- export type VmLibOption = Pick<VmFunctionOption, 'summary' | 'params' | 'paramsType' | 'returns' | 'returnsType' | 'examples' | 'injectCp'>;
49
+ export type VmLibOption = Pick<VmFunctionOption, 'summary' | 'params' | 'paramsType' | 'returns' | 'returnsType' | 'examples' | 'injectCp' | 'deprecated'>;
50
50
  /** 库函数 */
51
51
  export type VmLib<T extends VmFunctionLike | VmConst = VmFunctionLike> = (T extends VmFunctionLike ? T : {
52
52
  value: T;
@@ -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 +1 @@
1
- {"version":3,"file":"compound.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/compound.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAQ3E,mBAAmB;AACnB,wBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,OAAO,CAoB1D;AAED,aAAa;AACb,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAO5C;AAED,iBAAiB;AACjB,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,QAAQ,CAarF;AAED,iBAAiB;AACjB,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,QAAQ,CAWpF;AACD,eAAe;AACf,wBAAgB,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAMpD;AACD,WAAW;AACX,wBAAgB,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAapD;AACD,WAAW;AACX,wBAAgB,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAO/D;AACD,cAAc;AACd,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAMrE;AACD,WAAW;AACX,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI,CAwB5D;AAED,WAAW;AACX,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAiBxE"}
1
+ {"version":3,"file":"compound.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/compound.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAQ3E,mBAAmB;AACnB,wBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,OAAO,CAoB1D;AAED,aAAa;AACb,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAO5C;AAED,iBAAiB;AACjB,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,QAAQ,CAarF;AAED,iBAAiB;AACjB,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,QAAQ,CAWpF;AACD,eAAe;AACf,wBAAgB,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAMpD;AACD,WAAW;AACX,wBAAgB,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAuBpD;AACD,WAAW;AACX,wBAAgB,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAO/D;AACD,cAAc;AACd,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAMrE;AACD,WAAW;AACX,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI,CAwB5D;AAED,WAAW;AACX,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAqBxE"}
@@ -5,6 +5,8 @@ export declare function toVmFunctionProxy<T extends VmFunctionLike>(fn: VmFuncti
5
5
  /** 解开 Mirascript 函数在宿主语言运行的代理 */
6
6
  export declare function fromVmFunctionProxy<T extends VmFunctionLike>(fn: T): VmFunction<T> | null;
7
7
  /** 将宿主语言的值包装为 Mirascript 类型 */
8
+ export declare function wrapToVmConst(value: unknown, assumeVmValue?: ((obj: object) => obj is Exclude<VmConst, VmPrimitive>) | null): VmConst;
9
+ /** 将宿主语言的值包装为 Mirascript 类型 */
8
10
  export declare function wrapToVmValue(value: unknown, thisArg?: unknown, assumeVmValue?: ((obj: object) => obj is Exclude<VmConst, VmPrimitive>) | null): VmValue;
9
11
  /** 取消宿主语言的值的 Mirascript 包装 */
10
12
  export declare function unwrapFromVmValue(value: VmAny, bindThisArg?: boolean): unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../../src/vm/types/boundary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAY,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGjF,iCAAiC;AACjC,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAmBhF;AAED,iCAAiC;AACjC,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,cAAc,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAOzF;AAED,+BAA+B;AAC/B,wBAAgB,aAAa,CACzB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,OAAc,EACvB,aAAa,GAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,GAAG,IAAW,GACrF,OAAO,CA0BT;AAYD,+BAA+B;AAC/B,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,UAAO,GAAG,OAAO,CAY3E"}
1
+ {"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../../src/vm/types/boundary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAY,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGjF,iCAAiC;AACjC,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAmBhF;AAED,iCAAiC;AACjC,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,cAAc,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAOzF;AAED,+BAA+B;AAC/B,wBAAgB,aAAa,CACzB,KAAK,EAAE,OAAO,EACd,aAAa,GAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,GAAG,IAAW,GACrF,OAAO,CAsBT;AACD,+BAA+B;AAC/B,wBAAgB,aAAa,CACzB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,OAAc,EACvB,aAAa,GAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,GAAG,IAAW,GACrF,OAAO,CAeT;AAYD,+BAA+B;AAC/B,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,UAAO,GAAG,OAAO,CAY3E"}
@@ -12,7 +12,7 @@ export declare class VmExtern<const T extends object = object> extends VmWrapper
12
12
  /** Check if the object has a property */
13
13
  protected access(key: string, read: boolean): boolean;
14
14
  /** 决定是否对属性进行包装 */
15
- protected assumeVmValue(value: object, key: keyof T | undefined): value is Exclude<VmConst, VmPrimitive>;
15
+ assumeVmValue(value: object, key: keyof T | undefined): value is Exclude<VmConst, VmPrimitive>;
16
16
  /** @inheritdoc */
17
17
  has(key: string): boolean;
18
18
  /** @inheritdoc */
@@ -1 +1 @@
1
- {"version":3,"file":"extern.d.ts","sourceRoot":"","sources":["../../../src/vm/types/extern.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAwBzC,mCAAmC;AACnC,qBAAa,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAInE,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;;IAH7C,UAAU;IACV,KAAK,EAAE,CAAC;IACR,uCAAuC;IAC9B,OAAO,GAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAW;IAKxD,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;IAMhC,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,CAAC,oBAAoB,UAAQ,GAAG,MAAM,EAAE;IAqBrD,kBAAkB;IACT,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIpC,kBAAkB;IAClB,WAAW,IAAI,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAGnD,kBAAkB;IACT,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM;IAiB7C,kBAAkB;IAClB,IAAa,IAAI,IAAI,QAAQ,CAE5B;IACD,kBAAkB;IAClB,IAAa,GAAG,IAAI,MAAM,CA6BzB;CACJ"}
1
+ {"version":3,"file":"extern.d.ts","sourceRoot":"","sources":["../../../src/vm/types/extern.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAwBzC,mCAAmC;AACnC,qBAAa,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAInE,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;;IAH7C,UAAU;IACV,KAAK,EAAE,CAAC;IACR,uCAAuC;IAC9B,OAAO,GAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAW;IAKxD,yCAAyC;IACzC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO;IAiBrD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;IAI9F,kBAAkB;IACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAGlC,kBAAkB;IACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK;IAMhC,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,CAAC,oBAAoB,UAAQ,GAAG,MAAM,EAAE;IAqBrD,kBAAkB;IACT,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIpC,kBAAkB;IAClB,WAAW,IAAI,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAGnD,kBAAkB;IACT,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM;IAiB7C,kBAAkB;IAClB,IAAa,IAAI,IAAI,QAAQ,CAE5B;IACD,kBAAkB;IAClB,IAAa,GAAG,IAAI,MAAM,CA6BzB;CACJ"}
@@ -1,3 +1,4 @@
1
+ import type { DiagnosticCode } from '@mirascript/constants';
1
2
  import { kVmFunction } from '../../helpers/constants.js';
2
3
  import type { VmAny, VmValue } from './index.js';
3
4
  /**
@@ -30,6 +31,11 @@ export interface VmFunctionInfo {
30
31
  readonly examples?: string[];
31
32
  /** 如果添加了包装,返回原函数 */
32
33
  readonly original?: VmFunctionLike;
34
+ /** 标记为弃用 */
35
+ readonly deprecated?: {
36
+ use?: string;
37
+ message: DiagnosticCode;
38
+ };
33
39
  }
34
40
  /** Mirascript 函数创建选项 */
35
41
  export type VmFunctionOption = Partial<Omit<VmFunctionInfo, 'original'> & {
@@ -1 +1 @@
1
- {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../../src/vm/types/function.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA8B,MAAM,4BAA4B,CAAC;AACrF,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIjD;;;;GAIG;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC;AAE3F,oBAAoB;AACpB,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,cAAc,CAAA;CAAE,CAAC;AAEnH,sBAAsB;AACtB,MAAM,WAAW,cAAc;IAC3B,WAAW;IACX,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,aAAa;IACb,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,YAAY;IACZ,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY;IACZ,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,YAAY;IACZ,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,YAAY;IACZ,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY;IACZ,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY;IACZ,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;CACtC;AAED,wBAAwB;AACxB,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAClC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC9B,CACJ,CAAC;AAEF,uBAAuB;AACvB,wBAAgB,UAAU,CAAC,CAAC,SAAS,cAAc,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAE,gBAAqB,GAAG,UAAU,CAAC,CAAC,CAAC,CAqCxG"}
1
+ {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../../src/vm/types/function.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAA8B,MAAM,4BAA4B,CAAC;AACrF,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIjD;;;;GAIG;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC;AAE3F,oBAAoB;AACpB,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,cAAc,CAAA;CAAE,CAAC;AAEnH,sBAAsB;AACtB,MAAM,WAAW,cAAc;IAC3B,WAAW;IACX,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,aAAa;IACb,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,YAAY;IACZ,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY;IACZ,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,YAAY;IACZ,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,YAAY;IACZ,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY;IACZ,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY;IACZ,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IACnC,YAAY;IACZ,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,cAAc,CAAA;KAAE,CAAC;CACnE;AAED,wBAAwB;AACxB,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAClC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC9B,CACJ,CAAC;AAEF,uBAAuB;AACvB,wBAAgB,UAAU,CAAC,CAAC,SAAS,cAAc,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAE,gBAAqB,GAAG,UAAU,CAAC,CAAC,CAAC,CAsCxG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirascript/mirascript",
3
- "version": "0.1.34",
3
+ "version": "0.1.35",
4
4
  "author": "CloudPSS",
5
5
  "license": "MIT",
6
6
  "description": "An expression based scripting language.",
@@ -36,11 +36,11 @@
36
36
  "commander": "^14.0.2",
37
37
  "source-map-js": "^1.2.1",
38
38
  "supports-color": "^10.2.2",
39
- "@mirascript/constants": "~0.1.34",
40
- "@mirascript/bindings": "~0.1.34"
39
+ "@mirascript/bindings": "~0.1.35",
40
+ "@mirascript/constants": "~0.1.35"
41
41
  },
42
42
  "devDependencies": {
43
- "@types/node": "^25.0.3",
43
+ "@types/node": "^25.0.6",
44
44
  "@types/sinon": "^21.0.0",
45
45
  "ava": "^6.4.1",
46
46
  "c8": "^10.1.3",
@@ -10,7 +10,6 @@ import {
10
10
  isVmModule,
11
11
  isVmRecord,
12
12
  } from './types.js';
13
- import type { VmWrapper } from '../vm/types/wrapper.js';
14
13
 
15
14
  /** 序列化设置 */
16
15
  export interface SerializeOptions {
@@ -302,7 +301,7 @@ export function serialize(value: VmAny, options?: Partial<SerializeOptions>): st
302
301
  return serializeImpl(value, 0, getSerializeOptions(options));
303
302
  }
304
303
 
305
- /** 将 MiraScript function 转化为 MiraScript 字符串 */
304
+ /** 将 MiraScript 函数转化为 MiraScript 字符串 */
306
305
  export function displayFunction(value: VmFunction): string {
307
306
  try {
308
307
  const name = getVmFunctionInfo(value)?.fullName;
@@ -312,12 +311,27 @@ export function displayFunction(value: VmFunction): string {
312
311
  return `<function>`;
313
312
  }
314
313
  }
315
- /** 将 MiraScript module 转化为 MiraScript 字符串 */
316
- export function displayWrapper(value: VmWrapper<object>, useBraces: boolean, fallback: string): string {
314
+ /** 将 MiraScript 模块转化为 MiraScript 字符串 */
315
+ export function displayModule(value: VmModule): string {
317
316
  try {
318
- return value.toString(useBraces);
317
+ return value.toString(true);
318
+ /* c8 ignore next 3 */
319
+ } catch {
320
+ return `<module>`;
321
+ }
322
+ }
323
+ /** 将 MiraScript 外部值转化为 MiraScript 字符串 */
324
+ export function displayExtern(value: VmExtern): string {
325
+ try {
326
+ const tag = `<extern ${value.tag}>`;
327
+ const rep = value.toString(true);
328
+ if (rep === tag || rep.length > 50) {
329
+ return tag;
330
+ }
331
+ return `${tag} ${rep}`;
332
+ /* c8 ignore next 3 */
319
333
  } catch {
320
- return fallback;
334
+ return `<extern>`;
321
335
  }
322
336
  }
323
337
  const DISPLAY_OPTIONS = Object.freeze({
@@ -333,8 +347,8 @@ const DISPLAY_OPTIONS = Object.freeze({
333
347
  serializeRecord,
334
348
  serializePropName: String,
335
349
  serializeFunction: displayFunction,
336
- serializeModule: (value) => displayWrapper(value, true, '<module>'),
337
- serializeExtern: (value) => displayWrapper(value, true, '<extern>'),
350
+ serializeModule: displayModule,
351
+ serializeExtern: displayExtern,
338
352
  } satisfies SerializeOptions);
339
353
  /**
340
354
  * 将 MiraScript 值转化为 MiraScript 字符串。
@@ -114,7 +114,7 @@ export const panic = VmLib(
114
114
  examples: ['panic("boom");'],
115
115
  },
116
116
  {
117
- prefix: ['MiraScript'] as readonly string[],
117
+ prefix: ['MiraScript'] as readonly [prefix: string, ...additional: readonly string[]],
118
118
  serializer: defaultSerializer,
119
119
  },
120
120
  );
@@ -1,3 +1,4 @@
1
+ import { DiagnosticCode } from '@mirascript/constants';
1
2
  import { VmLib } from '../helpers.js';
2
3
 
3
4
  export const PI = VmLib(Math.PI, {
@@ -8,6 +9,22 @@ export const E = VmLib(Math.E, {
8
9
  summary: '自然对数的底数',
9
10
  returnsType: 'number',
10
11
  });
12
+ export const pi = VmLib(Math.PI, {
13
+ summary: '圆周率',
14
+ returnsType: 'number',
15
+ deprecated: {
16
+ use: 'PI',
17
+ message: DiagnosticCode.PreferUppercaseConstant,
18
+ },
19
+ });
20
+ export const e = VmLib(Math.E, {
21
+ summary: '自然对数的底数',
22
+ returnsType: 'number',
23
+ deprecated: {
24
+ use: 'E',
25
+ message: DiagnosticCode.PreferUppercaseConstant,
26
+ },
27
+ });
11
28
  export const SQRT1_2 = VmLib(Math.SQRT1_2, {
12
29
  summary: '1 的平方根除以 2',
13
30
  returnsType: 'number',
@@ -274,7 +274,7 @@ export function map(
274
274
  /** 库函数选项 */
275
275
  export type VmLibOption = Pick<
276
276
  VmFunctionOption,
277
- 'summary' | 'params' | 'paramsType' | 'returns' | 'returnsType' | 'examples' | 'injectCp'
277
+ 'summary' | 'params' | 'paramsType' | 'returns' | 'returnsType' | 'examples' | 'injectCp' | 'deprecated'
278
278
  >;
279
279
  /** 库函数 */
280
280
  export type VmLib<T extends VmFunctionLike | VmConst = VmFunctionLike> = (T extends VmFunctionLike ? T : { value: T }) &
@@ -296,5 +296,6 @@ export function VmLib<
296
296
  ret.summary = option.summary;
297
297
  ret.examples = option.examples;
298
298
  ret.injectCp = option.injectCp ?? false;
299
+ ret.deprecated = option.deprecated ?? undefined;
299
300
  return ret as VmLib<T> & P;
300
301
  }
@@ -1,8 +1,9 @@
1
1
  import { VmError } from '../../helpers/error.js';
2
- import { hasOwnEnumerable, isNaN, NotNumber, keys, create } from '../../helpers/utils.js';
2
+ import { hasOwnEnumerable, isNaN, NotNumber, keys, create, isFinite } from '../../helpers/utils.js';
3
3
  import { toNumber, toString } from '../../helpers/convert/index.js';
4
4
  import { display } from '../../helpers/serialize.js';
5
5
  import { isVmPrimitive, isVmArray, isVmRecord, isVmFunction, isVmExtern, isVmWrapper } from '../../helpers/types.js';
6
+ import { wrapToVmConst } from '../types/boundary.js';
6
7
  import type { VmAny, VmRecord, VmValue, VmConst } from '../types/index.js';
7
8
  import { isSame } from './utils.js';
8
9
  import { $AssertInit } from './common.js';
@@ -92,7 +93,17 @@ export function $Get(obj: VmAny, key: VmAny): VmValue {
92
93
  }
93
94
  const pk = $ToString(key);
94
95
  if (obj == null || typeof obj != 'object') return null;
95
- if (isVmWrapper(obj)) return obj.get(pk) ?? null;
96
+ if (isVmWrapper(obj)) {
97
+ if (isFinite(key) && isVmExtern(obj) && obj.isArrayLike()) {
98
+ let index = trunc(key as number);
99
+ const { length } = obj.value;
100
+ if (index < 0) index += length;
101
+ if (index >= 0 && index < length) {
102
+ return obj.get(String(index)) ?? null;
103
+ }
104
+ }
105
+ return obj.get(pk) ?? null;
106
+ }
96
107
  if (!hasOwnEnumerable(obj, pk)) return null;
97
108
  return obj[pk] ?? null;
98
109
  }
@@ -145,17 +156,21 @@ export function $ArraySpread(array: VmAny): Iterable<VmConst | undefined> {
145
156
  $AssertInit(array);
146
157
  if (array == null) return [];
147
158
  if (isVmArray(array)) return array;
148
- if (isVmExtern(array) && typeof (array.value as Iterable<unknown>)[Symbol.iterator] == 'function') {
149
- const result: VmConst[] = [];
150
- for (const item of array.value as Iterable<unknown>) {
151
- // 当前只有 Primitive 不会进行二次包装
152
- if (isVmPrimitive(item)) {
153
- result.push(item);
154
- } else {
155
- result.push(null);
159
+ if (isVmExtern(array)) {
160
+ if (array.isArrayLike()) {
161
+ const result: VmConst[] = [];
162
+ for (let i = 0, len = array.value.length; i < len; i++) {
163
+ const item = array.value[i];
164
+ result.push(wrapToVmConst(item, (v) => array.assumeVmValue(v, i)));
165
+ }
166
+ return result;
167
+ } else if (typeof (array.value as Iterable<unknown>)[Symbol.iterator] == 'function') {
168
+ const result: VmConst[] = [];
169
+ for (const item of array.value as Iterable<unknown>) {
170
+ result.push(wrapToVmConst(item, (v) => array.assumeVmValue(v, Symbol.iterator as never)));
156
171
  }
172
+ return result;
157
173
  }
158
- return result;
159
174
  }
160
175
  throw new VmError(`Expected array, iterable extern or nil, got ${display(array)}`, []);
161
176
  }
@@ -39,24 +39,19 @@ export function fromVmFunctionProxy<T extends VmFunctionLike>(fn: T): VmFunction
39
39
  }
40
40
 
41
41
  /** 将宿主语言的值包装为 Mirascript 类型 */
42
- export function wrapToVmValue(
42
+ export function wrapToVmConst(
43
43
  value: unknown,
44
- thisArg: unknown = null,
45
44
  assumeVmValue: ((obj: object) => obj is Exclude<VmConst, VmPrimitive>) | null = null,
46
- ): VmValue {
45
+ ): VmConst {
47
46
  if (value == null) return null;
48
47
  switch (typeof value) {
49
- case 'function': {
50
- const unwrapped = fromVmFunctionProxy(value as VmFunctionLike);
51
- if (unwrapped != null) return unwrapped;
52
- return new VmExtern(value as () => never, thisArg);
53
- }
48
+ case 'function':
49
+ return null;
54
50
  case 'object': {
55
- if (isVmWrapper(value)) return value as VmModule | VmExtern;
51
+ if (isVmWrapper(value)) return null;
56
52
  if (value instanceof Date) return value.valueOf();
57
53
  if (assumeVmValue?.(value)) return value;
58
- // Only functions preserve thisArg
59
- return new VmExtern(value);
54
+ return null;
60
55
  }
61
56
  case 'string':
62
57
  case 'number':
@@ -70,6 +65,27 @@ export function wrapToVmValue(
70
65
  return null;
71
66
  }
72
67
  }
68
+ /** 将宿主语言的值包装为 Mirascript 类型 */
69
+ export function wrapToVmValue(
70
+ value: unknown,
71
+ thisArg: unknown = null,
72
+ assumeVmValue: ((obj: object) => obj is Exclude<VmConst, VmPrimitive>) | null = null,
73
+ ): VmValue {
74
+ if (value == null) return null;
75
+ if (typeof value == 'function') {
76
+ const unwrapped = fromVmFunctionProxy(value as VmFunctionLike);
77
+ if (unwrapped != null) return unwrapped;
78
+ return new VmExtern(value as () => never, thisArg);
79
+ }
80
+ const constValue = wrapToVmConst(value, assumeVmValue);
81
+ if (constValue != null) return constValue;
82
+ if (typeof value == 'object') {
83
+ if (isVmWrapper(value)) return value as VmModule | VmExtern;
84
+ // Only functions preserve thisArg
85
+ return new VmExtern(value);
86
+ }
87
+ return null;
88
+ }
73
89
 
74
90
  /** 创建绑定 */
75
91
  function bindThis<T extends (...args: unknown[]) => unknown>(fn: T, thisArg: unknown): T {
@@ -58,7 +58,7 @@ export class VmExtern<const T extends object = object> extends VmWrapper<T> {
58
58
  }
59
59
 
60
60
  /** 决定是否对属性进行包装 */
61
- protected assumeVmValue(value: object, key: keyof T | undefined): value is Exclude<VmConst, VmPrimitive> {
61
+ assumeVmValue(value: object, key: keyof T | undefined): value is Exclude<VmConst, VmPrimitive> {
62
62
  return false;
63
63
  }
64
64
 
@@ -1,4 +1,5 @@
1
1
  import type { Writable } from 'type-fest';
2
+ import type { DiagnosticCode } from '@mirascript/constants';
2
3
  import { defineProperty } from '../../helpers/utils.js';
3
4
  import { kVmFunction, VM_FUNCTION_ANONYMOUS_NAME } from '../../helpers/constants.js';
4
5
  import type { VmAny, VmValue } from './index.js';
@@ -36,6 +37,8 @@ export interface VmFunctionInfo {
36
37
  readonly examples?: string[];
37
38
  /** 如果添加了包装,返回原函数 */
38
39
  readonly original?: VmFunctionLike;
40
+ /** 标记为弃用 */
41
+ readonly deprecated?: { use?: string; message: DiagnosticCode };
39
42
  }
40
43
 
41
44
  /** Mirascript 函数创建选项 */
@@ -64,6 +67,7 @@ export function VmFunction<T extends VmFunctionLike>(fn: T, option: VmFunctionOp
64
67
  returns: option.returns || undefined,
65
68
  returnsType: option.returnsType || undefined,
66
69
  examples: option.examples?.length ? option.examples : undefined,
70
+ deprecated: option.deprecated ?? undefined,
67
71
  };
68
72
  if (option.injectCp) {
69
73
  const original = fn;