@mirascript/mirascript 0.1.33 → 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-UM7PQV4L.js → chunk-C6YXWSTI.js} +205 -156
- package/dist/chunk-C6YXWSTI.js.map +6 -0
- package/dist/{chunk-BMSHG7ON.js → chunk-HGARNCSR.js} +2 -2
- package/dist/{chunk-NRUNNMNC.js → chunk-PYMZMMRB.js} +18 -20
- package/dist/chunk-PYMZMMRB.js.map +6 -0
- package/dist/{chunk-VZGKLLRC.js → chunk-SEZII6RI.js} +19 -7
- package/dist/chunk-SEZII6RI.js.map +6 -0
- package/dist/cli/index.js +4 -4
- package/dist/compiler/compile-fast.d.ts.map +1 -1
- package/dist/compiler/create-script.d.ts +1 -1
- package/dist/compiler/create-script.d.ts.map +1 -1
- package/dist/compiler/emit/constants.d.ts +1 -1
- package/dist/compiler/emit/constants.d.ts.map +1 -1
- 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/global/time.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/call.d.ts +7 -3
- package/dist/vm/operations/call.d.ts.map +1 -1
- package/dist/vm/operations/common.d.ts +2 -1
- package/dist/vm/operations/common.d.ts.map +1 -1
- package/dist/vm/operations/compound.d.ts +20 -10
- package/dist/vm/operations/compound.d.ts.map +1 -1
- package/dist/vm/operations/convert.d.ts +8 -4
- package/dist/vm/operations/convert.d.ts.map +1 -1
- package/dist/vm/operations/helpers.d.ts +8 -6
- package/dist/vm/operations/helpers.d.ts.map +1 -1
- package/dist/vm/operations/operator.d.ts +44 -22
- package/dist/vm/operations/operator.d.ts.map +1 -1
- package/dist/vm/operations/slice.d.ts +4 -2
- package/dist/vm/operations/slice.d.ts.map +1 -1
- package/dist/vm/operations/type-check.d.ts +14 -7
- package/dist/vm/operations/type-check.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 +7 -2
- 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/compiler/compile-fast.ts +17 -20
- package/src/compiler/create-script.ts +1 -1
- package/src/compiler/emit/constants.ts +1 -1
- 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/global/time.ts +6 -5
- package/src/vm/lib/helpers.ts +2 -1
- package/src/vm/operations/call.ts +30 -7
- package/src/vm/operations/common.ts +3 -2
- package/src/vm/operations/compound.ts +59 -32
- package/src/vm/operations/convert.ts +12 -8
- package/src/vm/operations/helpers.ts +14 -12
- package/src/vm/operations/operator.ts +66 -44
- package/src/vm/operations/slice.ts +6 -4
- package/src/vm/operations/type-check.ts +21 -14
- package/src/vm/types/boundary.ts +27 -11
- package/src/vm/types/extern.ts +3 -1
- package/src/vm/types/function.ts +4 -0
- package/dist/chunk-NRUNNMNC.js.map +0 -6
- package/dist/chunk-UM7PQV4L.js.map +0 -6
- package/dist/chunk-VZGKLLRC.js.map +0 -6
- /package/dist/{chunk-BMSHG7ON.js.map → chunk-HGARNCSR.js.map} +0 -0
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/time.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,YAAY,mPAgBxB,CAAC;AAEF,eAAO,MAAM,WAAW,+
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/time.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,YAAY,mPAgBxB,CAAC;AAEF,eAAO,MAAM,WAAW,+SAuCvB,CAAC;AAEF,eAAO,MAAM,UAAU,mPAgBtB,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,5 +1,9 @@
|
|
|
1
|
-
import type { VmAny, VmArray, VmValue } from '../types/index.js';
|
|
2
|
-
|
|
1
|
+
import type { VmExtern, VmFunction, VmAny, VmArray, VmValue } from '../types/index.js';
|
|
2
|
+
/** 调用返回类型 */
|
|
3
|
+
type CallReturn<T extends VmValue> = T extends VmFunction<infer F> ? F extends (...args: readonly VmAny[]) => infer R ? R extends void | undefined ? null : R : VmValue : T extends VmExtern<infer E> ? E extends (...args: readonly VmAny[]) => infer R ? R extends void | undefined ? null : R extends VmValue ? R : R extends object ? VmExtern<R> : VmValue : VmValue : VmValue;
|
|
4
|
+
/** 调用函数 */
|
|
5
|
+
export declare function $Call<T extends VmValue, A extends readonly VmValue[]>(func: T, args: A): CallReturn<T>;
|
|
3
6
|
/** 过滤剩余参数数组 */
|
|
4
|
-
export declare
|
|
7
|
+
export declare function $VArgs(varags: VmAny[]): VmArray;
|
|
8
|
+
export {};
|
|
5
9
|
//# sourceMappingURL=call.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/call.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/call.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGvF,aAAa;AACb,KAAK,UAAU,CAAC,CAAC,SAAS,OAAO,IAC7B,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GACvB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,SAAS,KAAK,EAAE,KAAK,MAAM,CAAC,GAE5C,CAAC,SAAS,IAAI,GAAG,SAAS,GACtB,IAAI,GACJ,CAAC,GACL,OAAO,GACX,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GACzB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,SAAS,KAAK,EAAE,KAAK,MAAM,CAAC,GAE5C,CAAC,SAAS,IAAI,GAAG,SAAS,GACtB,IAAI,GACJ,CAAC,SAAS,OAAO,GACf,CAAC,GACD,CAAC,SAAS,MAAM,GACd,QAAQ,CAAC,CAAC,CAAC,GACX,OAAO,GACf,OAAO,GACX,OAAO,CAAC;AAEpB,WAAW;AACX,wBAAgB,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAWtG;AAED,eAAe;AACf,wBAAgB,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAQ/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/common.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAExD,
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/common.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAExD,cAAc;AACd,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAElE"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import type { VmAny, VmRecord, VmValue, VmConst } from '../types/index.js';
|
|
2
|
-
|
|
3
|
-
export declare
|
|
4
|
-
|
|
5
|
-
export declare
|
|
6
|
-
|
|
7
|
-
export declare
|
|
8
|
-
|
|
9
|
-
export declare
|
|
10
|
-
|
|
11
|
-
export declare
|
|
2
|
+
/** 检查值是否在可迭代对象中 */
|
|
3
|
+
export declare function $In(value: VmAny, iterable: VmAny): boolean;
|
|
4
|
+
/** 获取值的长度 */
|
|
5
|
+
export declare function $Length(value: VmAny): number;
|
|
6
|
+
/** 删除记录中的指定字段 */
|
|
7
|
+
export declare function $Omit(value: VmAny, omitted: ReadonlyArray<number | string>): VmRecord;
|
|
8
|
+
/** 选择记录中的指定字段 */
|
|
9
|
+
export declare function $Pick(value: VmAny, picked: ReadonlyArray<number | string>): VmRecord;
|
|
10
|
+
/** 检查是否拥有字段 */
|
|
11
|
+
export declare function $Has(obj: VmAny, key: VmAny): boolean;
|
|
12
|
+
/** 获取字段 */
|
|
13
|
+
export declare function $Get(obj: VmAny, key: VmAny): VmValue;
|
|
14
|
+
/** 设置字段 */
|
|
15
|
+
export declare function $Set(obj: VmAny, key: VmAny, value: VmAny): void;
|
|
16
|
+
/** 获取可迭代对象 */
|
|
17
|
+
export declare function $Iterable(value: VmAny): Iterable<VmValue | undefined>;
|
|
18
|
+
/** 展开记录 */
|
|
19
|
+
export declare function $RecordSpread(record: VmAny): VmRecord | null;
|
|
20
|
+
/** 展开数组 */
|
|
21
|
+
export declare function $ArraySpread(array: VmAny): Iterable<VmConst | undefined>;
|
|
12
22
|
//# sourceMappingURL=compound.d.ts.map
|
|
@@ -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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { VmAny } from '../types/index.js';
|
|
2
|
-
|
|
3
|
-
export declare
|
|
4
|
-
|
|
5
|
-
export declare
|
|
2
|
+
/** 转换为布尔值 */
|
|
3
|
+
export declare function $ToBoolean(value: VmAny): boolean;
|
|
4
|
+
/** 转换为字符串 */
|
|
5
|
+
export declare function $ToString(value: VmAny): string;
|
|
6
|
+
/** 转换为数字 */
|
|
7
|
+
export declare function $ToNumber(value: VmAny): number;
|
|
8
|
+
/** 格式化值 */
|
|
9
|
+
export declare function $Format(value: VmAny, format: string | null): string;
|
|
6
10
|
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/convert.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C,
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/convert.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C,aAAa;AACb,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAIhD;AACD,aAAa;AACb,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAI9C;AACD,YAAY;AACZ,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAI9C;AACD,WAAW;AACX,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGnE"}
|
|
@@ -3,15 +3,17 @@ import { type VmContext } from '../types/context.js';
|
|
|
3
3
|
import type { VmConst, VmAny, VmArray, VmValue } from '../types/index.js';
|
|
4
4
|
import { VmFunction } from '../types/function.js';
|
|
5
5
|
/** 构造 record | array 元素 */
|
|
6
|
-
export declare
|
|
6
|
+
export declare function $El(value: VmAny): VmConst;
|
|
7
7
|
/** 构造 record 可选元素 */
|
|
8
|
-
export declare
|
|
8
|
+
export declare function $ElOpt(key: string, value: VmAny): VmConst;
|
|
9
9
|
/** 构造函数和函数表达式 */
|
|
10
|
-
export declare
|
|
10
|
+
export declare function $Fn<T extends VmFunctionLike>(name: string | null | undefined, fn: T): VmFunction<T>;
|
|
11
11
|
/** 读取闭包上值 */
|
|
12
|
-
export declare
|
|
13
|
-
|
|
14
|
-
export declare
|
|
12
|
+
export declare function $Upvalue(value: VmAny): VmValue;
|
|
13
|
+
/** 构造范围数组 */
|
|
14
|
+
export declare function $ArrayRange(start: VmAny, end: VmAny): VmArray;
|
|
15
|
+
/** 构造范围数组(不包含结束值) */
|
|
16
|
+
export declare function $ArrayRangeExclusive(start: VmAny, end: VmAny): VmArray;
|
|
15
17
|
/** 默认执行上下文 */
|
|
16
18
|
export declare function $GlobalFallback(): VmContext;
|
|
17
19
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,2BAA2B;AAC3B,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,2BAA2B;AAC3B,wBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAIzC;AAGD,qBAAqB;AACrB,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAIzD;AAED,iBAAiB;AACjB,wBAAgB,GAAG,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAGnG;AAED,aAAa;AACb,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAG9C;AAUD,aAAa;AACb,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAU7D;AACD,qBAAqB;AACrB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAUtE;AAED,cAAc;AACd,wBAAgB,eAAe,IAAI,SAAS,CAE3C"}
|
|
@@ -1,24 +1,46 @@
|
|
|
1
1
|
import type { VmAny } from '../types/index.js';
|
|
2
|
-
|
|
3
|
-
export declare
|
|
4
|
-
|
|
5
|
-
export declare
|
|
6
|
-
|
|
7
|
-
export declare
|
|
8
|
-
|
|
9
|
-
export declare
|
|
10
|
-
|
|
11
|
-
export declare
|
|
12
|
-
|
|
13
|
-
export declare
|
|
14
|
-
|
|
15
|
-
export declare
|
|
16
|
-
|
|
17
|
-
export declare
|
|
18
|
-
|
|
19
|
-
export declare
|
|
20
|
-
|
|
21
|
-
export declare
|
|
22
|
-
|
|
23
|
-
export declare
|
|
2
|
+
/** 字符串连接 */
|
|
3
|
+
export declare function $Concat(...args: readonly string[]): string;
|
|
4
|
+
/** 正号 */
|
|
5
|
+
export declare function $Pos(a: VmAny): number;
|
|
6
|
+
/** 负号 */
|
|
7
|
+
export declare function $Neg(a: VmAny): number;
|
|
8
|
+
/** 非 */
|
|
9
|
+
export declare function $Not(a: VmAny): boolean;
|
|
10
|
+
/** 加法 */
|
|
11
|
+
export declare function $Add(a: VmAny, b: VmAny): number;
|
|
12
|
+
/** 减法 */
|
|
13
|
+
export declare function $Sub(a: VmAny, b: VmAny): number;
|
|
14
|
+
/** 乘法 */
|
|
15
|
+
export declare function $Mul(a: VmAny, b: VmAny): number;
|
|
16
|
+
/** 除法 */
|
|
17
|
+
export declare function $Div(a: VmAny, b: VmAny): number;
|
|
18
|
+
/** 取模 */
|
|
19
|
+
export declare function $Mod(a: VmAny, b: VmAny): number;
|
|
20
|
+
/** 乘方 */
|
|
21
|
+
export declare function $Pow(a: VmAny, b: VmAny): number;
|
|
22
|
+
/** 与 */
|
|
23
|
+
export declare function $And(a: VmAny, b: VmAny): boolean;
|
|
24
|
+
/** 或 */
|
|
25
|
+
export declare function $Or(a: VmAny, b: VmAny): boolean;
|
|
26
|
+
/** 大于 */
|
|
27
|
+
export declare function $Gt(a: VmAny, b: VmAny): boolean;
|
|
28
|
+
/** 大于等于 */
|
|
29
|
+
export declare function $Gte(a: VmAny, b: VmAny): boolean;
|
|
30
|
+
/** 小于 */
|
|
31
|
+
export declare function $Lt(a: VmAny, b: VmAny): boolean;
|
|
32
|
+
/** 小于等于 */
|
|
33
|
+
export declare function $Lte(a: VmAny, b: VmAny): boolean;
|
|
34
|
+
/** 等于 */
|
|
35
|
+
export declare function $Eq(a: VmAny, b: VmAny): boolean;
|
|
36
|
+
/** 不等于 */
|
|
37
|
+
export declare function $Neq(a: VmAny, b: VmAny): boolean;
|
|
38
|
+
/** 近似等于 */
|
|
39
|
+
export declare function $Aeq(a: VmAny, b: VmAny): boolean;
|
|
40
|
+
/** 不近似等于 */
|
|
41
|
+
export declare function $Naeq(a: VmAny, b: VmAny): boolean;
|
|
42
|
+
/** 全等于 */
|
|
43
|
+
export declare function $Same(a: VmAny, b: VmAny): boolean;
|
|
44
|
+
/** 不全等于 */
|
|
45
|
+
export declare function $Nsame(a: VmAny, b: VmAny): boolean;
|
|
24
46
|
//# sourceMappingURL=operator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operator.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/operator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAM/C,
|
|
1
|
+
{"version":3,"file":"operator.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/operator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAM/C,YAAY;AACZ,wBAAgB,OAAO,CAAC,GAAG,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE1D;AAGD,SAAS;AACT,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAErC;AACD,SAAS;AACT,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAErC;AACD,QAAQ;AACR,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAEtC;AAGD,SAAS;AACT,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAE/C;AACD,SAAS;AACT,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAE/C;AACD,SAAS;AACT,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAE/C;AACD,SAAS;AACT,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAE/C;AACD,SAAS;AACT,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAE/C;AACD,SAAS;AACT,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAE/C;AAGD,QAAQ;AACR,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAEhD;AACD,QAAQ;AACR,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAE/C;AAGD,SAAS;AACT,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAM/C;AACD,WAAW;AACX,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAMhD;AACD,SAAS;AACT,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAM/C;AACD,WAAW;AACX,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAMhD;AAGD,SAAS;AACT,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAM/C;AACD,UAAU;AACV,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAEhD;AAGD,WAAW;AACX,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAwBhD;AACD,YAAY;AACZ,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAEjD;AAED,UAAU;AACV,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAIjD;AACD,WAAW;AACX,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAElD"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { VmAny, VmArray } from '../types/index.js';
|
|
2
|
-
|
|
3
|
-
export declare
|
|
2
|
+
/** 获取数组切片 */
|
|
3
|
+
export declare function $Slice(value: VmAny, start: VmAny, end: VmAny): VmArray;
|
|
4
|
+
/** 获取数组切片(不包含结束位置) */
|
|
5
|
+
export declare function $SliceExclusive(value: VmAny, start: VmAny, end: VmAny): VmArray;
|
|
4
6
|
//# sourceMappingURL=slice.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/slice.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAuBxD,
|
|
1
|
+
{"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/slice.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAuBxD,aAAa;AACb,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAMtE;AACD,sBAAsB;AACtB,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAM/E"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import type { TypeName, VmAny, VmArray, VmRecord, VmValue } from '../types/index.js';
|
|
2
|
-
|
|
3
|
-
export declare
|
|
4
|
-
|
|
5
|
-
export declare
|
|
6
|
-
|
|
7
|
-
export declare
|
|
8
|
-
|
|
2
|
+
/** 获取值的类型名称 */
|
|
3
|
+
export declare function $Type(value: VmAny): TypeName;
|
|
4
|
+
/** 判断值是否为布尔值 */
|
|
5
|
+
export declare function $IsBoolean(value: VmAny): value is boolean;
|
|
6
|
+
/** 判断值是否为数字 */
|
|
7
|
+
export declare function $IsNumber(value: VmAny): value is number;
|
|
8
|
+
/** 判断值是否为字符串 */
|
|
9
|
+
export declare function $IsString(value: VmAny): value is string;
|
|
10
|
+
/** 判断值是否为记录 */
|
|
11
|
+
export declare function $IsRecord(value: VmAny): value is VmRecord;
|
|
12
|
+
/** 判断值是否为数组 */
|
|
13
|
+
export declare function $IsArray(value: VmAny): value is VmArray;
|
|
14
|
+
/** 断言值非 nil */
|
|
15
|
+
export declare function $AssertNonNil(value: VmAny): asserts value is NonNullable<VmValue>;
|
|
9
16
|
//# sourceMappingURL=type-check.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-check.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/type-check.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGrF,
|
|
1
|
+
{"version":3,"file":"type-check.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/type-check.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGrF,eAAe;AACf,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAO5C;AACD,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO,CAGzD;AACD,eAAe;AACf,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,MAAM,CAGvD;AACD,gBAAgB;AAChB,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,MAAM,CAGvD;AACD,eAAe;AACf,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,QAAQ,CAGzD;AACD,eAAe;AACf,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO,CAGvD;AACD,eAAe;AACf,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,CAIjF"}
|
|
@@ -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"}
|
|
@@ -2,12 +2,17 @@ import type { TypeName, VmAny, VmConst, VmPrimitive, VmValue } from './index.js'
|
|
|
2
2
|
import { VmWrapper } from './wrapper.js';
|
|
3
3
|
/** 包装 Mirascript `extern` 类型的对象 */
|
|
4
4
|
export declare class VmExtern<const T extends object = object> extends VmWrapper<T> {
|
|
5
|
+
/** 当 {@link value} 是函数时,绑定的 this 参数 */
|
|
5
6
|
readonly thisArg: ThisParameterType<T> | null;
|
|
6
|
-
constructor(
|
|
7
|
+
constructor(
|
|
8
|
+
/** 包装值 */
|
|
9
|
+
value: T,
|
|
10
|
+
/** 当 {@link value} 是函数时,绑定的 this 参数 */
|
|
11
|
+
thisArg?: ThisParameterType<T> | null);
|
|
7
12
|
/** Check if the object has a property */
|
|
8
13
|
protected access(key: string, read: boolean): boolean;
|
|
9
14
|
/** 决定是否对属性进行包装 */
|
|
10
|
-
|
|
15
|
+
assumeVmValue(value: object, key: keyof T | undefined): value is Exclude<VmConst, VmPrimitive>;
|
|
11
16
|
/** @inheritdoc */
|
|
12
17
|
has(key: string): boolean;
|
|
13
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;
|
|
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/bindings": "~0.1.
|
|
40
|
-
"@mirascript/constants": "~0.1.
|
|
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",
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { isKeyword } from '@mirascript/constants';
|
|
2
|
-
import { wrapScript, type VmScript } from './create-script.js';
|
|
2
|
+
import { wrapScript, type VmScript, type VmScriptLike } from './create-script.js';
|
|
3
3
|
import type { TranspileOptions } from './types.js';
|
|
4
4
|
import { $GlobalFallback } from '../vm/operations/index.js';
|
|
5
|
-
import type { VmContext, VmValue } from '../vm/index.js';
|
|
6
5
|
import { defineProperty, isFinite } from '../helpers/utils.js';
|
|
7
6
|
|
|
8
7
|
const REG_NUMBER_FULL = /^(?:[+-])?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?$/;
|
|
@@ -82,11 +81,11 @@ function nil(): () => null {
|
|
|
82
81
|
}
|
|
83
82
|
|
|
84
83
|
/** 构造返回全局变量的函数 */
|
|
85
|
-
function globalVariable(id: string):
|
|
86
|
-
const f = (global
|
|
84
|
+
function globalVariable(id: string): VmScriptLike {
|
|
85
|
+
const f: VmScriptLike = (global) => (global ?? $GlobalFallback()).get(id);
|
|
87
86
|
defineProperty(f, 'toString', {
|
|
88
87
|
value: () => {
|
|
89
|
-
return `(global
|
|
88
|
+
return `(global) => (global ?? $GlobalFallback()).get(${JSON.stringify(id)});`;
|
|
90
89
|
},
|
|
91
90
|
writable: false,
|
|
92
91
|
enumerable: false,
|
|
@@ -98,27 +97,26 @@ function globalVariable(id: string): (global: VmContext | undefined) => VmValue
|
|
|
98
97
|
/**
|
|
99
98
|
* 对短代码进行编译
|
|
100
99
|
*/
|
|
101
|
-
function compileScriptFast(code: string
|
|
100
|
+
function compileScriptFast(code: string): VmScript | undefined {
|
|
102
101
|
if (code.length > FAST_SCRIPT_MAX_LEN) return undefined; // 超过长度限制,直接返回 undefined
|
|
103
|
-
const mode = options.input_mode ?? 'Script';
|
|
104
102
|
const trimmedCode = code.trim();
|
|
105
103
|
if (!trimmedCode) {
|
|
106
|
-
return wrapScript(code,
|
|
104
|
+
return wrapScript(code, 'Script', nil());
|
|
107
105
|
}
|
|
108
106
|
switch (trimmedCode) {
|
|
109
107
|
case 'nil':
|
|
110
|
-
return wrapScript(code,
|
|
108
|
+
return wrapScript(code, 'Script', nil());
|
|
111
109
|
case 'true':
|
|
112
|
-
return wrapScript(code,
|
|
110
|
+
return wrapScript(code, 'Script', constantBoolean(true));
|
|
113
111
|
case 'false':
|
|
114
|
-
return wrapScript(code,
|
|
112
|
+
return wrapScript(code, 'Script', constantBoolean(false));
|
|
115
113
|
case 'nan':
|
|
116
|
-
return wrapScript(code,
|
|
114
|
+
return wrapScript(code, 'Script', nan());
|
|
117
115
|
case 'inf':
|
|
118
116
|
case '+inf':
|
|
119
|
-
return wrapScript(code,
|
|
117
|
+
return wrapScript(code, 'Script', posInf());
|
|
120
118
|
case '-inf':
|
|
121
|
-
return wrapScript(code,
|
|
119
|
+
return wrapScript(code, 'Script', negInf());
|
|
122
120
|
}
|
|
123
121
|
if (REG_IDENTIFIER_FAST.test(trimmedCode)) {
|
|
124
122
|
// 直接返回标识符
|
|
@@ -126,13 +124,13 @@ function compileScriptFast(code: string, options: TranspileOptions): VmScript |
|
|
|
126
124
|
if (isKeyword(id)) {
|
|
127
125
|
return undefined; // 关键字不处理
|
|
128
126
|
}
|
|
129
|
-
return wrapScript(code,
|
|
127
|
+
return wrapScript(code, 'Script', globalVariable(id));
|
|
130
128
|
}
|
|
131
129
|
if (REG_NUMBER_FULL.test(trimmedCode)) {
|
|
132
130
|
const num = Number(trimmedCode);
|
|
133
131
|
if (!isFinite(num)) return undefined;
|
|
134
132
|
// 直接返回数字
|
|
135
|
-
return wrapScript(code,
|
|
133
|
+
return wrapScript(code, 'Script', constantFiniteNumber(num));
|
|
136
134
|
}
|
|
137
135
|
return undefined;
|
|
138
136
|
}
|
|
@@ -142,13 +140,12 @@ const FAST_TEMPLATE_MAX_LEN = 1024;
|
|
|
142
140
|
/**
|
|
143
141
|
* 对短代码进行编译
|
|
144
142
|
*/
|
|
145
|
-
function compileTemplateFast(code: string
|
|
143
|
+
function compileTemplateFast(code: string): VmScript | undefined {
|
|
146
144
|
if (code.length > FAST_TEMPLATE_MAX_LEN) return undefined; // 超过长度限制,直接返回 undefined
|
|
147
145
|
|
|
148
146
|
if (!code.includes('$')) {
|
|
149
|
-
const mode = options.input_mode ?? 'Template';
|
|
150
147
|
// 不包含插值的模板
|
|
151
|
-
return wrapScript(code,
|
|
148
|
+
return wrapScript(code, 'Template', constantString(code));
|
|
152
149
|
}
|
|
153
150
|
return undefined;
|
|
154
151
|
}
|
|
@@ -158,5 +155,5 @@ function compileTemplateFast(code: string, options: TranspileOptions): VmScript
|
|
|
158
155
|
*/
|
|
159
156
|
export function compileFast(code: string, options: TranspileOptions): VmScript | undefined {
|
|
160
157
|
if (options.sourceMap) return undefined; // 不支持源映射
|
|
161
|
-
return (options.input_mode === 'Template' ? compileTemplateFast : compileScriptFast)(code
|
|
158
|
+
return (options.input_mode === 'Template' ? compileTemplateFast : compileScriptFast)(code);
|
|
162
159
|
}
|
|
@@ -5,7 +5,7 @@ import type { VmValue, VmContext } from '../vm/types/index.js';
|
|
|
5
5
|
import type { InputMode, ScriptInput } from './types.js';
|
|
6
6
|
|
|
7
7
|
/** Mirascript 脚本 */
|
|
8
|
-
export type VmScriptLike = (global?: VmContext) => VmValue;
|
|
8
|
+
export type VmScriptLike = (global?: VmContext | null) => VmValue;
|
|
9
9
|
|
|
10
10
|
/** Mirascript 脚本 */
|
|
11
11
|
export type VmScript = VmScriptLike & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SCRIPT_PREFIX = `((global
|
|
1
|
+
export const SCRIPT_PREFIX = `((global) => { global ??= $GlobalFallback(); try { $CpEnter();`;
|