@mirascript/mirascript 0.1.92 → 0.1.93
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-7JTZW66P.js +1075 -0
- package/dist/chunk-7JTZW66P.js.map +6 -0
- package/dist/{chunk-Y7S6AHE7.js → chunk-F3FHURMG.js} +55 -939
- package/dist/chunk-F3FHURMG.js.map +6 -0
- package/dist/{chunk-HHKY7Y7L.js → chunk-GTNLLZL4.js} +4 -82
- package/dist/chunk-GTNLLZL4.js.map +6 -0
- package/dist/chunk-H2OHULLB.js +89 -0
- package/dist/chunk-H2OHULLB.js.map +6 -0
- package/dist/compiler/worker.js +2 -1
- package/dist/compiler/worker.js.map +1 -1
- package/dist/experimental-context.d.ts +93 -0
- package/dist/experimental-context.d.ts.map +1 -0
- package/dist/experimental-context.js +90 -0
- package/dist/experimental-context.js.map +6 -0
- package/dist/helpers/convert/string.d.ts +0 -2
- package/dist/helpers/convert/string.d.ts.map +1 -1
- package/dist/helpers/error.d.ts.map +1 -1
- package/dist/helpers/serialize/display.d.ts +29 -0
- package/dist/helpers/serialize/display.d.ts.map +1 -0
- package/dist/helpers/serialize/index.d.ts +5 -0
- package/dist/helpers/serialize/index.d.ts.map +1 -0
- package/dist/helpers/serialize/interface.d.ts +33 -0
- package/dist/helpers/serialize/interface.d.ts.map +1 -0
- package/dist/helpers/serialize/serialize.d.ts +39 -0
- package/dist/helpers/serialize/serialize.d.ts.map +1 -0
- package/dist/helpers/serialize/simple.d.ts +9 -0
- package/dist/helpers/serialize/simple.d.ts.map +1 -0
- package/dist/helpers/serialize/string.d.ts +6 -0
- package/dist/helpers/serialize/string.d.ts.map +1 -0
- package/dist/helpers/utils.d.ts +4 -0
- package/dist/helpers/utils.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -8
- package/dist/index.js.map +1 -1
- package/dist/subtle.d.ts +1 -1
- package/dist/subtle.d.ts.map +1 -1
- package/dist/subtle.js +9 -6
- package/dist/subtle.js.map +1 -1
- package/dist/vm/effects/run.d.ts +7 -0
- package/dist/vm/effects/run.d.ts.map +1 -0
- package/dist/vm/effects/state.d.ts +62 -0
- package/dist/vm/effects/state.d.ts.map +1 -0
- package/dist/vm/effects/wrap.d.ts +4 -0
- package/dist/vm/effects/wrap.d.ts.map +1 -0
- package/dist/vm/lib/global/bit.d.ts +7 -7
- package/dist/vm/lib/global/bit.d.ts.map +1 -1
- 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/json.d.ts +2 -2
- package/dist/vm/lib/global/json.d.ts.map +1 -1
- package/dist/vm/lib/global/math/index.d.ts +2 -2
- package/dist/vm/lib/global/math/index.d.ts.map +1 -1
- package/dist/vm/lib/global/math/tgamma.d.ts +2 -2
- package/dist/vm/lib/global/math/tgamma.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/all-any.d.ts +2 -2
- package/dist/vm/lib/global/sequence/all-any.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/entries.d.ts +3 -3
- package/dist/vm/lib/global/sequence/entries.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/find.d.ts +1 -1
- package/dist/vm/lib/global/sequence/flatten.d.ts +1 -1
- package/dist/vm/lib/global/sequence/flatten.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/fold.d.ts +1 -1
- package/dist/vm/lib/global/sequence/fold.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/group.d.ts +1 -1
- package/dist/vm/lib/global/sequence/group.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/len.d.ts +1 -1
- package/dist/vm/lib/global/sequence/len.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/map-filter.d.ts +3 -3
- package/dist/vm/lib/global/sequence/map-filter.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/new.d.ts +2 -2
- package/dist/vm/lib/global/sequence/new.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/repeat.d.ts +1 -1
- package/dist/vm/lib/global/sequence/repeat.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/reverse.d.ts +1 -1
- package/dist/vm/lib/global/sequence/reverse.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/sort.d.ts +2 -2
- package/dist/vm/lib/global/sequence/sort.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/unique.d.ts +2 -2
- package/dist/vm/lib/global/sequence/unique.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/with.d.ts +1 -1
- package/dist/vm/lib/global/sequence/with.d.ts.map +1 -1
- package/dist/vm/lib/global/sequence/zip.d.ts +1 -1
- package/dist/vm/lib/global/sequence/zip.d.ts.map +1 -1
- package/dist/vm/lib/global/string/case.d.ts +2 -2
- package/dist/vm/lib/global/string/case.d.ts.map +1 -1
- package/dist/vm/lib/global/string/index.d.ts +4 -4
- package/dist/vm/lib/global/string/index.d.ts.map +1 -1
- package/dist/vm/lib/global/string/search.d.ts +3 -3
- package/dist/vm/lib/global/string/search.d.ts.map +1 -1
- package/dist/vm/lib/global/string/trim.d.ts +3 -3
- package/dist/vm/lib/global/string/trim.d.ts.map +1 -1
- package/dist/vm/lib/global/time.d.ts +3 -3
- package/dist/vm/lib/global/time.d.ts.map +1 -1
- package/dist/vm/lib/global/to-primitive.d.ts +3 -3
- package/dist/vm/lib/global/to-primitive.d.ts.map +1 -1
- package/dist/vm/lib/mod/matrix/bin-ops.d.ts +6 -6
- package/dist/vm/lib/mod/matrix/bin-ops.d.ts.map +1 -1
- package/dist/vm/lib/mod/matrix/fill.d.ts +4 -4
- package/dist/vm/lib/mod/matrix/fill.d.ts.map +1 -1
- package/dist/vm/lib/mod/matrix/invert.d.ts +1 -1
- package/dist/vm/lib/mod/matrix/invert.d.ts.map +1 -1
- package/dist/vm/lib/mod/matrix/size.d.ts +1 -1
- package/dist/vm/lib/mod/matrix/size.d.ts.map +1 -1
- package/dist/vm/lib/mod/matrix/transpose.d.ts +1 -1
- package/dist/vm/lib/mod/matrix/transpose.d.ts.map +1 -1
- package/dist/vm/types/function.d.ts +4 -2
- package/dist/vm/types/function.d.ts.map +1 -1
- package/package.json +8 -4
- package/src/experimental-context.ts +121 -0
- package/src/helpers/convert/boolean.ts +1 -1
- package/src/helpers/convert/number.ts +1 -1
- package/src/helpers/convert/string.ts +6 -11
- package/src/helpers/error.ts +2 -0
- package/src/helpers/serialize/display.ts +60 -0
- package/src/helpers/serialize/index.ts +4 -0
- package/src/helpers/serialize/interface.ts +33 -0
- package/src/helpers/serialize/serialize.ts +200 -0
- package/src/helpers/serialize/simple.ts +25 -0
- package/src/helpers/serialize/string.ts +91 -0
- package/src/helpers/utils.ts +11 -2
- package/src/index.ts +1 -1
- package/src/subtle.ts +2 -2
- package/src/vm/effects/run.ts +80 -0
- package/src/vm/effects/state.ts +108 -0
- package/src/vm/effects/wrap.ts +71 -0
- package/src/vm/lib/global/debug.ts +6 -3
- package/src/vm/lib/global/math/index.ts +9 -5
- package/src/vm/lib/global/sequence/zip.ts +1 -1
- package/src/vm/lib/global/time.ts +5 -2
- package/src/vm/lib/helpers.ts +1 -1
- package/src/vm/operations/call.ts +1 -1
- package/src/vm/operations/compound.ts +1 -1
- package/src/vm/operations/iterable.ts +1 -1
- package/src/vm/operations/slice.ts +1 -1
- package/src/vm/operations/spread.ts +1 -1
- package/src/vm/types/function.ts +7 -5
- package/dist/chunk-HHKY7Y7L.js.map +0 -6
- package/dist/chunk-Y7S6AHE7.js.map +0 -6
- package/dist/helpers/serialize.d.ts +0 -63
- package/dist/helpers/serialize.d.ts.map +0 -1
- package/src/helpers/serialize.ts +0 -397
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { VmScript } from '../../compiler/create-script.js';
|
|
2
|
+
import type { VmContext, VmValue } from '../types/index.js';
|
|
3
|
+
import {
|
|
4
|
+
ContextReentrancyError,
|
|
5
|
+
ReplayMismatchError,
|
|
6
|
+
currentContext,
|
|
7
|
+
failContext,
|
|
8
|
+
resetContext,
|
|
9
|
+
createContext,
|
|
10
|
+
setCurrentContext,
|
|
11
|
+
} from './state.js';
|
|
12
|
+
|
|
13
|
+
/** 立即执行脚本,挂起后通过重新执行并复用 effect 结果恢复运行 */
|
|
14
|
+
export function runInContext(script: VmScript, globals?: VmContext | null): VmValue | Promise<VmValue>;
|
|
15
|
+
/** 立即执行脚本,挂起后通过重新执行并复用 effect 结果恢复运行 */
|
|
16
|
+
export function runInContext(
|
|
17
|
+
script: VmScript,
|
|
18
|
+
globals: VmContext | null | undefined,
|
|
19
|
+
onDone: (result: VmValue) => void,
|
|
20
|
+
onError: (error: unknown) => void,
|
|
21
|
+
): void;
|
|
22
|
+
export function runInContext(
|
|
23
|
+
script: VmScript,
|
|
24
|
+
globals: VmContext | null | undefined,
|
|
25
|
+
onDone?: (result: VmValue) => void,
|
|
26
|
+
onError?: (error: unknown) => void,
|
|
27
|
+
): void | VmValue | Promise<VmValue> {
|
|
28
|
+
let ret: void | VmValue | Promise<VmValue> = undefined;
|
|
29
|
+
if (onDone == null && onError == null) {
|
|
30
|
+
ret = new Promise<VmValue>((resolve, reject) => {
|
|
31
|
+
onDone = (result) => {
|
|
32
|
+
ret = result;
|
|
33
|
+
resolve(result);
|
|
34
|
+
};
|
|
35
|
+
onError = reject;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
if (onDone == null || onError == null) {
|
|
39
|
+
throw new TypeError('Both onDone and onError must be provided if one is provided.');
|
|
40
|
+
}
|
|
41
|
+
if (currentContext) failContext(new ContextReentrancyError());
|
|
42
|
+
const context = createContext();
|
|
43
|
+
let finished = false;
|
|
44
|
+
const attempt = (): void => {
|
|
45
|
+
if (finished) return;
|
|
46
|
+
resetContext(context);
|
|
47
|
+
const previous = setCurrentContext(context);
|
|
48
|
+
let result: VmValue = null;
|
|
49
|
+
let failed = false;
|
|
50
|
+
let failure: unknown;
|
|
51
|
+
try {
|
|
52
|
+
result = script(globals);
|
|
53
|
+
if (!context.suspension && context.cursor !== context.slots.length) {
|
|
54
|
+
failContext(new ReplayMismatchError());
|
|
55
|
+
}
|
|
56
|
+
} catch (error) {
|
|
57
|
+
failed = true;
|
|
58
|
+
failure = error;
|
|
59
|
+
} finally {
|
|
60
|
+
setCurrentContext(previous);
|
|
61
|
+
}
|
|
62
|
+
const { suspension } = context;
|
|
63
|
+
if (context.failure) {
|
|
64
|
+
failed = true;
|
|
65
|
+
failure = context.failure;
|
|
66
|
+
} else if (suspension) {
|
|
67
|
+
void suspension.slot.ready!.then(() => {
|
|
68
|
+
// 避免回调异常进入内部 Promise 链
|
|
69
|
+
queueMicrotask(attempt);
|
|
70
|
+
});
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
finished = true;
|
|
74
|
+
context.slots.length = 0;
|
|
75
|
+
if (failed) onError!(failure);
|
|
76
|
+
else onDone!(result);
|
|
77
|
+
};
|
|
78
|
+
attempt();
|
|
79
|
+
return ret;
|
|
80
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/** 异步函数缺少执行上下文 */
|
|
2
|
+
export class AsyncRequiredError extends Error {
|
|
3
|
+
override readonly name = 'AsyncRequiredError';
|
|
4
|
+
constructor() {
|
|
5
|
+
super('An async VM function requires runInContext');
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** 重新执行时的 effect 调用顺序与记录不一致 */
|
|
10
|
+
export class ReplayMismatchError extends Error {
|
|
11
|
+
override readonly name = 'ReplayMismatchError';
|
|
12
|
+
constructor() {
|
|
13
|
+
super('Host effect sequence changed during replay');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** 不支持嵌套的执行上下文或 effect 调用 */
|
|
18
|
+
export class ContextReentrancyError extends Error {
|
|
19
|
+
override readonly name = 'ContextReentrancyError';
|
|
20
|
+
constructor() {
|
|
21
|
+
super('Nested execution contexts and host effects are not supported');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** 函数重新执行时的处理方式 */
|
|
26
|
+
export type EffectKind = 'memo' | 'once' | 'async';
|
|
27
|
+
/** 一次逻辑调用的执行状态与结果 */
|
|
28
|
+
export type EffectSlot = {
|
|
29
|
+
token: symbol;
|
|
30
|
+
kind: EffectKind;
|
|
31
|
+
state: 'pending' | 'resolved' | 'rejected';
|
|
32
|
+
value: unknown;
|
|
33
|
+
ready?: Promise<void>;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/** 内部挂起信号,不作为脚本结果或公开 API */
|
|
37
|
+
export class SuspensionError extends Error {
|
|
38
|
+
override readonly name = 'SuspensionError';
|
|
39
|
+
constructor(readonly slot: EffectSlot) {
|
|
40
|
+
super('Host effect suspended');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const kEffectContext = Symbol('EffectContext');
|
|
45
|
+
/** 单次 runInContext 调用的执行状态 */
|
|
46
|
+
export interface EffectContext {
|
|
47
|
+
/** 内部标记,用于区分 EffectContext 类型 */
|
|
48
|
+
readonly __marker__: typeof kEffectContext;
|
|
49
|
+
/** 下一次 effect 调用的位置 */
|
|
50
|
+
cursor: number;
|
|
51
|
+
/** 按执行顺序保存的调用记录 */
|
|
52
|
+
slots: EffectSlot[];
|
|
53
|
+
/** 是否正在执行宿主实现,用于阻止嵌套 effect */
|
|
54
|
+
inHost: boolean;
|
|
55
|
+
/** 待处理的挂起信号,用户代码捕获后仍保留 */
|
|
56
|
+
suspension?: SuspensionError;
|
|
57
|
+
/** 首次不可恢复的运行时错误,用户代码捕获后仍保留 */
|
|
58
|
+
failure?: ReplayMismatchError | ContextReentrancyError;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** 创建上下文 */
|
|
62
|
+
export function createContext(): EffectContext {
|
|
63
|
+
return {
|
|
64
|
+
__proto__: null,
|
|
65
|
+
__marker__: kEffectContext,
|
|
66
|
+
cursor: 0,
|
|
67
|
+
slots: [],
|
|
68
|
+
inHost: false,
|
|
69
|
+
} as EffectContext;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export let currentContext: EffectContext | undefined;
|
|
73
|
+
|
|
74
|
+
/** 设置当前上下文,仅在脚本同步执行期间生效,返回之前的上下文 */
|
|
75
|
+
export function setCurrentContext(context: EffectContext | undefined): EffectContext | undefined {
|
|
76
|
+
const previous = currentContext;
|
|
77
|
+
currentContext = context;
|
|
78
|
+
return previous;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** 重置执行位置与挂起信号,保留已有调用记录 */
|
|
82
|
+
export function resetContext(context: EffectContext): void {
|
|
83
|
+
context.cursor = 0;
|
|
84
|
+
context.suspension = undefined;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** 记录并抛出不可恢复的运行时错误 */
|
|
88
|
+
export function failContext(error: ReplayMismatchError | ContextReentrancyError): never {
|
|
89
|
+
if (currentContext) currentContext.failure ??= error;
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** 重新抛出已记录的运行时错误,防止宿主代码捕获后继续执行 */
|
|
94
|
+
export function throwIfFailed(context: EffectContext): void {
|
|
95
|
+
if (context.failure) throw context.failure;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/** 透传运行时控制信号,在包装异常或使用后备值前调用 */
|
|
99
|
+
export function rethrowControl(error: unknown): void {
|
|
100
|
+
if (
|
|
101
|
+
error instanceof SuspensionError ||
|
|
102
|
+
error instanceof AsyncRequiredError ||
|
|
103
|
+
error instanceof ReplayMismatchError ||
|
|
104
|
+
error instanceof ContextReentrancyError
|
|
105
|
+
) {
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { apply, isPromiseLike } from '../../helpers/utils.js';
|
|
2
|
+
import {
|
|
3
|
+
AsyncRequiredError,
|
|
4
|
+
ContextReentrancyError,
|
|
5
|
+
ReplayMismatchError,
|
|
6
|
+
SuspensionError,
|
|
7
|
+
currentContext,
|
|
8
|
+
failContext,
|
|
9
|
+
rethrowControl,
|
|
10
|
+
throwIfFailed,
|
|
11
|
+
type EffectKind,
|
|
12
|
+
type EffectSlot,
|
|
13
|
+
} from './state.js';
|
|
14
|
+
|
|
15
|
+
/** 包装 effect 调用,也支持标准库内部使用的参数与返回值 */
|
|
16
|
+
export function wrapEffect<A extends readonly unknown[], R>(
|
|
17
|
+
kind: EffectKind,
|
|
18
|
+
fn: (...args: A) => R | PromiseLike<R>,
|
|
19
|
+
): (...args: A) => R {
|
|
20
|
+
const token = Symbol();
|
|
21
|
+
return function (this: unknown, ...args: A): R {
|
|
22
|
+
const context = currentContext;
|
|
23
|
+
if (!context) {
|
|
24
|
+
if (kind === 'async') throw new AsyncRequiredError();
|
|
25
|
+
return apply(fn, this, args) as R;
|
|
26
|
+
}
|
|
27
|
+
throwIfFailed(context);
|
|
28
|
+
if (context.inHost) failContext(new ContextReentrancyError());
|
|
29
|
+
if (context.suspension) throw context.suspension;
|
|
30
|
+
const index = context.cursor++;
|
|
31
|
+
let slot = context.slots[index];
|
|
32
|
+
if (slot) {
|
|
33
|
+
if (slot.token !== token || slot.kind !== kind) failContext(new ReplayMismatchError());
|
|
34
|
+
} else {
|
|
35
|
+
slot = { token, kind, state: 'pending', value: undefined };
|
|
36
|
+
context.slots.push(slot);
|
|
37
|
+
context.inHost = true;
|
|
38
|
+
try {
|
|
39
|
+
const value = apply(fn, this, args);
|
|
40
|
+
if (kind === 'async' && isPromiseLike(value)) {
|
|
41
|
+
const pending: EffectSlot = slot;
|
|
42
|
+
pending.ready = Promise.resolve(value).then(
|
|
43
|
+
(result) => {
|
|
44
|
+
pending.state = 'resolved';
|
|
45
|
+
pending.value = result;
|
|
46
|
+
},
|
|
47
|
+
(error: unknown) => {
|
|
48
|
+
pending.state = 'rejected';
|
|
49
|
+
pending.value = error;
|
|
50
|
+
},
|
|
51
|
+
);
|
|
52
|
+
} else {
|
|
53
|
+
slot.state = 'resolved';
|
|
54
|
+
slot.value = value;
|
|
55
|
+
}
|
|
56
|
+
} catch (error) {
|
|
57
|
+
rethrowControl(error);
|
|
58
|
+
slot.state = 'rejected';
|
|
59
|
+
slot.value = error;
|
|
60
|
+
} finally {
|
|
61
|
+
context.inHost = false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
throwIfFailed(context);
|
|
65
|
+
// 保留原始异常值,包括 undefined 和 null
|
|
66
|
+
if (slot.state === 'rejected') throw slot.value;
|
|
67
|
+
if (slot.state === 'resolved') return slot.value as R;
|
|
68
|
+
context.suspension = new SuspensionError(slot);
|
|
69
|
+
throw context.suspension;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -3,6 +3,8 @@ import { VmError } from '../../../helpers/error.js';
|
|
|
3
3
|
import { toString } from '../../../helpers/convert/index.js';
|
|
4
4
|
import type { VmAny } from '../../types/index.js';
|
|
5
5
|
import { VmLib } from '../helpers.js';
|
|
6
|
+
import { wrapEffect } from '../../effects/wrap.js';
|
|
7
|
+
import { rethrowControl } from '../../effects/state.js';
|
|
6
8
|
|
|
7
9
|
/** 序列化格式 */
|
|
8
10
|
type SerializeFormat =
|
|
@@ -38,7 +40,8 @@ function serializeValue(
|
|
|
38
40
|
}
|
|
39
41
|
try {
|
|
40
42
|
return serializer.call(options, arg, format);
|
|
41
|
-
} catch {
|
|
43
|
+
} catch (error) {
|
|
44
|
+
rethrowControl(error);
|
|
42
45
|
return defaultSerializer(arg, format);
|
|
43
46
|
}
|
|
44
47
|
}
|
|
@@ -184,10 +187,10 @@ type PrintOptions = {
|
|
|
184
187
|
};
|
|
185
188
|
|
|
186
189
|
/** 进行输出 */
|
|
187
|
-
|
|
190
|
+
const doPrint = wrapEffect('once', (opt: PrintOptions, args: readonly VmAny[]): void => {
|
|
188
191
|
const formatResult = opt.parser(args);
|
|
189
192
|
void Promise.resolve(opt.formatter(formatResult)).then((printed) => opt.logger(...printed));
|
|
190
|
-
}
|
|
193
|
+
});
|
|
191
194
|
|
|
192
195
|
export const debug_print = VmLib(
|
|
193
196
|
(...args) => {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { expectNumber, VmLib } from '../../helpers.js';
|
|
2
|
+
import { wrapEffect } from '../../../effects/wrap.js';
|
|
2
3
|
const { atan2: _atan2, pow: _pow, random: _random } = Math;
|
|
3
4
|
|
|
4
5
|
export const atan2 = VmLib((x, y) => _atan2(expectNumber(0, x), expectNumber(1, y)), {
|
|
@@ -17,11 +18,14 @@ export const pow = VmLib((x, y) => _pow(expectNumber(0, x), expectNumber(1, y)),
|
|
|
17
18
|
},
|
|
18
19
|
returns: { type: 'number' },
|
|
19
20
|
});
|
|
20
|
-
export const random = VmLib(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
21
|
+
export const random = VmLib(
|
|
22
|
+
wrapEffect('memo', () => _random()),
|
|
23
|
+
{
|
|
24
|
+
summary: '返回 [0, 1) 之间的伪随机数',
|
|
25
|
+
params: {},
|
|
26
|
+
returns: { type: 'number' },
|
|
27
|
+
},
|
|
28
|
+
);
|
|
25
29
|
|
|
26
30
|
export * from './arr.js';
|
|
27
31
|
export * from './const.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { display } from '../../../../helpers/serialize.js';
|
|
1
|
+
import { display } from '../../../../helpers/serialize/display.js';
|
|
2
2
|
import { setRecord } from '../../../../helpers/utils.js';
|
|
3
3
|
import { Cp } from '../../../checkpoint.js';
|
|
4
4
|
import { isVmArray, type VmConst, type VmArray, type VmRecord } from '../../../types/index.js';
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { describeParam, expectNumberRange, throwError, throwUnexpectedTypeError, VmLib } from '../helpers.js';
|
|
2
2
|
import { isNaN, NotNumber, isFinite } from '../../../helpers/utils.js';
|
|
3
3
|
import { toNumber } from '../../../helpers/convert/index.js';
|
|
4
|
-
import { display } from '../../../helpers/serialize.js';
|
|
4
|
+
import { display } from '../../../helpers/serialize/display.js';
|
|
5
5
|
import type { VmAny } from '../../types/index.js';
|
|
6
|
+
import { wrapEffect } from '../../effects/wrap.js';
|
|
7
|
+
|
|
8
|
+
const now = wrapEffect('memo', () => Date.now());
|
|
6
9
|
|
|
7
10
|
const fromNumber = (datetime: number, fallback: boolean): number | null => {
|
|
8
11
|
const n = new Date(datetime).getTime();
|
|
@@ -13,7 +16,7 @@ const fromNumber = (datetime: number, fallback: boolean): number | null => {
|
|
|
13
16
|
|
|
14
17
|
const getTimestamp = (datetime: VmAny, fallback: boolean): number | null => {
|
|
15
18
|
if (datetime == null) {
|
|
16
|
-
return
|
|
19
|
+
return now();
|
|
17
20
|
}
|
|
18
21
|
if (typeof datetime == 'number') {
|
|
19
22
|
return fromNumber(datetime, fallback);
|
package/src/vm/lib/helpers.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VM_ARRAY_MAX_LENGTH } from '../../helpers/constants.js';
|
|
2
2
|
import { NotNumber, entries, fromEntries, isSafeInteger, isFinite } from '../../helpers/utils.js';
|
|
3
3
|
import { toBoolean, toNumber, toString } from '../../helpers/convert/index.js';
|
|
4
|
-
import { display } from '../../helpers/serialize.js';
|
|
4
|
+
import { display } from '../../helpers/serialize/display.js';
|
|
5
5
|
import {
|
|
6
6
|
isVmArray,
|
|
7
7
|
isVmFunction,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { VmError } from '../../helpers/error.js';
|
|
2
|
-
import { display } from '../../helpers/serialize.js';
|
|
2
|
+
import { display } from '../../helpers/serialize/display.js';
|
|
3
3
|
import { isVmExtern, isVmConst } from '../../helpers/types/index.js';
|
|
4
4
|
import type { VmExtern, VmFunction, VmAny, VmArray, VmValue } from '../types/index.js';
|
|
5
5
|
import { $AssertInit } from './common.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VmError } from '../../helpers/error.js';
|
|
2
2
|
import { hasOwnEnumerable, NotNumber, isFinite, getRecord, keysLength } from '../../helpers/utils.js';
|
|
3
3
|
import { toNumber } from '../../helpers/convert/index.js';
|
|
4
|
-
import { display } from '../../helpers/serialize.js';
|
|
4
|
+
import { display } from '../../helpers/serialize/display.js';
|
|
5
5
|
import { isVmArray, isVmRecord, isVmExtern, isVmWrapper } from '../../helpers/types/index.js';
|
|
6
6
|
import type { VmAny, VmValue } from '../types/index.js';
|
|
7
7
|
import { $AssertInit } from './common.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VmError } from '../../helpers/error.js';
|
|
2
2
|
import { hasOwnEnumerable, keys } from '../../helpers/utils.js';
|
|
3
3
|
import { toString } from '../../helpers/convert/index.js';
|
|
4
|
-
import { display } from '../../helpers/serialize.js';
|
|
4
|
+
import { display } from '../../helpers/serialize/display.js';
|
|
5
5
|
import { isVmPrimitive, isVmArray, isVmFunction, isVmWrapper } from '../../helpers/types/index.js';
|
|
6
6
|
import type { VmAny, VmRecord, VmValue } from '../types/index.js';
|
|
7
7
|
import { isSame } from './utils.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { VmError } from '../../helpers/error.js';
|
|
2
|
-
import { display } from '../../helpers/serialize.js';
|
|
2
|
+
import { display } from '../../helpers/serialize/display.js';
|
|
3
3
|
import { toNumber } from '../../helpers/convert/number.js';
|
|
4
4
|
import { isNaN, isSafeInteger } from '../../helpers/utils.js';
|
|
5
5
|
import { isVmArray } from '../../helpers/types/index.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VmError } from '../../helpers/error.js';
|
|
2
2
|
import { create } from '../../helpers/utils.js';
|
|
3
|
-
import { display } from '../../helpers/serialize.js';
|
|
3
|
+
import { display } from '../../helpers/serialize/display.js';
|
|
4
4
|
import { isVmArray, isVmRecord, isVmExtern, isVmConst } from '../../helpers/types/index.js';
|
|
5
5
|
import { wrapToVmConst } from '../types/boundary.js';
|
|
6
6
|
import type { VmAny, VmRecord, VmConst } from '../types/index.js';
|
package/src/vm/types/function.ts
CHANGED
|
@@ -13,7 +13,7 @@ import type { VmLib } from '../lib/helpers.js';
|
|
|
13
13
|
* 虽然所有输入参数的类型均为 {@linkcode VmValue},但当参数不足时,对应的参数会被填充为 `undefined`。
|
|
14
14
|
*/
|
|
15
15
|
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
|
|
16
|
-
export type VmFunctionLike = (...args: ReadonlyArray<VmValue | undefined>) => VmAny | void;
|
|
16
|
+
export type VmFunctionLike = (this: void, ...args: ReadonlyArray<VmValue | undefined>) => VmAny | void;
|
|
17
17
|
|
|
18
18
|
/** Mirascript 函数 */
|
|
19
19
|
export type VmFunction<T extends VmFunctionLike = VmFunctionLike> = T & { readonly [kVmFunction]: VmFunctionInfo };
|
|
@@ -53,11 +53,13 @@ const nameIfNotAnonymous = <T>({ name }: { name: string | undefined }, fallback:
|
|
|
53
53
|
return name;
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
+
/** Mirascript 函数创建选项 */
|
|
57
|
+
export type VmFunctionOptionLike<T extends VmFunctionLike = VmFunctionLike> = NoInfer<
|
|
58
|
+
VmFunctionOption | VmFunction | VmLib<T>
|
|
59
|
+
>;
|
|
60
|
+
|
|
56
61
|
/** 创建 Mirascript 函数 */
|
|
57
|
-
export function VmFunction<T extends VmFunctionLike>(
|
|
58
|
-
fn: T,
|
|
59
|
-
option: NoInfer<VmFunctionOption | VmFunction | VmLib<T>> = {},
|
|
60
|
-
): VmFunction<T> {
|
|
62
|
+
export function VmFunction<T extends VmFunctionLike>(fn: T, option: VmFunctionOptionLike<T> = {}): VmFunction<T> {
|
|
61
63
|
if (typeof fn != 'function') {
|
|
62
64
|
throw new TypeError('Invalid function');
|
|
63
65
|
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/compiler/generate-bytecode.ts", "../src/compiler/bytecode/consts.ts", "../src/compiler/bytecode/index.ts", "../src/compiler/emit/index.ts", "../src/compiler/emit/sourcemap.ts", "../src/compiler/emit/utils.ts", "../src/compiler/emit/constants.ts", "../src/compiler/diagnostic.ts", "../src/helpers/utils.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["a", "b", "c", "e", "g", "i", "k", "m", "i"]
|
|
6
|
-
}
|