@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.
- package/dist/{chunk-KUOYMOEU.js → chunk-C6YXWSTI.js} +91 -43
- package/dist/chunk-C6YXWSTI.js.map +6 -0
- package/dist/{chunk-DNMS3ZEP.js → chunk-HGARNCSR.js} +2 -2
- package/dist/{chunk-GUMBLKWM.js → chunk-PYMZMMRB.js} +3 -3
- package/dist/{chunk-VXTRR2CX.js → chunk-SEZII6RI.js} +18 -6
- package/dist/chunk-SEZII6RI.js.map +6 -0
- package/dist/cli/index.js +4 -4
- package/dist/compiler/worker.js +1 -1
- package/dist/helpers/serialize.d.ts +5 -4
- package/dist/helpers/serialize.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/subtle.js +3 -3
- package/dist/vm/lib/global/debug.d.ts +1 -1
- package/dist/vm/lib/global/debug.d.ts.map +1 -1
- package/dist/vm/lib/global/math-const.d.ts +6 -0
- package/dist/vm/lib/global/math-const.d.ts.map +1 -1
- package/dist/vm/lib/helpers.d.ts +1 -1
- package/dist/vm/lib/helpers.d.ts.map +1 -1
- package/dist/vm/operations/compound.d.ts.map +1 -1
- package/dist/vm/types/boundary.d.ts +2 -0
- package/dist/vm/types/boundary.d.ts.map +1 -1
- package/dist/vm/types/extern.d.ts +1 -1
- package/dist/vm/types/extern.d.ts.map +1 -1
- package/dist/vm/types/function.d.ts +6 -0
- package/dist/vm/types/function.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/helpers/serialize.ts +22 -8
- package/src/vm/lib/global/debug.ts +1 -1
- package/src/vm/lib/global/math-const.ts +17 -0
- package/src/vm/lib/helpers.ts +2 -1
- package/src/vm/operations/compound.ts +26 -11
- package/src/vm/types/boundary.ts +27 -11
- package/src/vm/types/extern.ts +1 -1
- package/src/vm/types/function.ts +4 -0
- package/dist/chunk-KUOYMOEU.js.map +0 -6
- package/dist/chunk-VXTRR2CX.js.map +0 -6
- /package/dist/{chunk-DNMS3ZEP.js.map → chunk-HGARNCSR.js.map} +0 -0
- /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-
|
|
5
|
-
import "../chunk-
|
|
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-
|
|
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-
|
|
20
|
+
} from "../chunk-SEZII6RI.js";
|
|
21
21
|
|
|
22
22
|
// src/cli/index.ts
|
|
23
23
|
import { readFile, stat } from "node:fs/promises";
|
package/dist/compiler/worker.js
CHANGED
|
@@ -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
|
|
53
|
+
/** 将 MiraScript 函数转化为 MiraScript 字符串 */
|
|
55
54
|
export declare function displayFunction(value: VmFunction): string;
|
|
56
|
-
/** 将 MiraScript
|
|
57
|
-
export declare function
|
|
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":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/helpers/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAa/F,YAAY;AACZ,MAAM,WAAW,gBAAgB;IAC7B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACpD,aAAa;IACb,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACxE,YAAY;IACZ,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACtE,aAAa;IACb,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACtE,eAAe;IACf,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IAC1F,iBAAiB;IACjB,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IAC5E,iBAAiB;IACjB,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IAC7E,YAAY;IACZ,iBAAiB,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IAC5E,YAAY;IACZ,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACrF,YAAY;IACZ,eAAe,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACvF,aAAa;IACb,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACjF,YAAY;IACZ,eAAe,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACvF,aAAa;IACb,eAAe,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,MAAM,CAAC;CAC1F;AAkGD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAE1F;AA2BD,aAAa;AACb,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAK3F;AAED,gBAAgB;AAChB,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,aAAa;AACb,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEvD;AAED,YAAY;AACZ,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED,YAAY;AACZ,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAUzG;AAkBD,YAAY;AACZ,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CA4B3G;AAoCD;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAEnF;AAED,wCAAwC;AACxC,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAQzD;AACD,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAOrD;AACD,yCAAyC;AACzC,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAYrD;AAiBD;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAGjF"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compile,
|
|
3
3
|
compileSync
|
|
4
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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;;
|
|
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":"
|
|
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"}
|
package/dist/vm/lib/helpers.d.ts
CHANGED
|
@@ -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":"
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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":"
|
|
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.
|
|
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/
|
|
40
|
-
"@mirascript/
|
|
39
|
+
"@mirascript/bindings": "~0.1.35",
|
|
40
|
+
"@mirascript/constants": "~0.1.35"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@types/node": "^25.0.
|
|
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",
|
package/src/helpers/serialize.ts
CHANGED
|
@@ -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
|
|
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
|
|
316
|
-
export function
|
|
314
|
+
/** 将 MiraScript 模块转化为 MiraScript 字符串 */
|
|
315
|
+
export function displayModule(value: VmModule): string {
|
|
317
316
|
try {
|
|
318
|
-
return value.toString(
|
|
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
|
|
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:
|
|
337
|
-
serializeExtern:
|
|
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',
|
package/src/vm/lib/helpers.ts
CHANGED
|
@@ -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))
|
|
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)
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
result.push(item);
|
|
154
|
-
}
|
|
155
|
-
|
|
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
|
}
|
package/src/vm/types/boundary.ts
CHANGED
|
@@ -39,24 +39,19 @@ export function fromVmFunctionProxy<T extends VmFunctionLike>(fn: T): VmFunction
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
/** 将宿主语言的值包装为 Mirascript 类型 */
|
|
42
|
-
export function
|
|
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
|
-
):
|
|
45
|
+
): VmConst {
|
|
47
46
|
if (value == null) return null;
|
|
48
47
|
switch (typeof value) {
|
|
49
|
-
case 'function':
|
|
50
|
-
|
|
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
|
|
51
|
+
if (isVmWrapper(value)) return null;
|
|
56
52
|
if (value instanceof Date) return value.valueOf();
|
|
57
53
|
if (assumeVmValue?.(value)) return value;
|
|
58
|
-
|
|
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 {
|
package/src/vm/types/extern.ts
CHANGED
|
@@ -58,7 +58,7 @@ export class VmExtern<const T extends object = object> extends VmWrapper<T> {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
/** 决定是否对属性进行包装 */
|
|
61
|
-
|
|
61
|
+
assumeVmValue(value: object, key: keyof T | undefined): value is Exclude<VmConst, VmPrimitive> {
|
|
62
62
|
return false;
|
|
63
63
|
}
|
|
64
64
|
|
package/src/vm/types/function.ts
CHANGED
|
@@ -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;
|