@mirascript/mirascript 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-3RUWGMBP.js → chunk-JB6LPPFJ.js} +190 -24
- package/dist/chunk-JB6LPPFJ.js.map +6 -0
- package/dist/{chunk-MVHCSH3E.js → chunk-RYSPVMVZ.js} +36 -127
- package/dist/chunk-RYSPVMVZ.js.map +6 -0
- package/dist/cli/execute.d.ts +1 -1
- package/dist/cli/execute.d.ts.map +1 -1
- package/dist/cli/index.js +41 -20
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/print.d.ts.map +1 -1
- package/dist/compiler/diagnostic.d.ts +3 -1
- package/dist/compiler/diagnostic.d.ts.map +1 -1
- package/dist/compiler/emit.d.ts +2 -1
- package/dist/compiler/emit.d.ts.map +1 -1
- package/dist/compiler/index.d.ts.map +1 -1
- package/dist/compiler/worker.d.ts.map +1 -1
- package/dist/compiler/worker.js +6 -3
- package/dist/compiler/worker.js.map +1 -1
- package/dist/helpers/serialize.d.ts +10 -2
- package/dist/helpers/serialize.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/subtle.d.ts +1 -1
- package/dist/subtle.d.ts.map +1 -1
- package/dist/subtle.js +17 -7
- package/dist/vm/types/wrapper.d.ts.map +1 -1
- package/package.json +6 -5
- package/src/cli/execute.ts +8 -3
- package/src/cli/index.ts +22 -5
- package/src/cli/print.ts +13 -9
- package/src/compiler/diagnostic.ts +19 -3
- package/src/compiler/emit.ts +45 -19
- package/src/compiler/index.ts +10 -2
- package/src/compiler/worker.ts +5 -1
- package/src/helpers/serialize.ts +6 -6
- package/src/subtle.ts +11 -1
- package/src/vm/lib/global/math-arr.ts +1 -1
- package/src/vm/types/wrapper.ts +3 -1
- package/dist/chunk-3RUWGMBP.js.map +0 -6
- package/dist/chunk-MVHCSH3E.js.map +0 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mirascript/mirascript",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "An expression based scripting language.",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -35,8 +35,9 @@
|
|
|
35
35
|
"ansi-styles": "^6.2.3",
|
|
36
36
|
"commander": "^14.0.2",
|
|
37
37
|
"js-base64": "^3.7.8",
|
|
38
|
-
"
|
|
39
|
-
"@mirascript/wasm": "~0.1.
|
|
38
|
+
"source-map-js": "^1.2.1",
|
|
39
|
+
"@mirascript/wasm": "~0.1.4",
|
|
40
|
+
"@mirascript/napi": "~0.1.4"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
42
43
|
"@types/node": "^24.10.0",
|
|
@@ -44,13 +45,13 @@
|
|
|
44
45
|
"ava": "^6.4.1",
|
|
45
46
|
"c8": "^10.1.3",
|
|
46
47
|
"sinon": "^21.0.0",
|
|
47
|
-
"type-fest": "^5.
|
|
48
|
+
"type-fest": "^5.2.0"
|
|
48
49
|
},
|
|
49
50
|
"scripts": {
|
|
50
51
|
"watch": "pnpm build:ts --watch",
|
|
51
52
|
"build:ts": "pnpm clean && tsc",
|
|
52
53
|
"build": "pnpm build:ts --emitDeclarationOnly && node ./esbuild.config.js",
|
|
53
|
-
"mirascript": "node ./dist/cli/index.js",
|
|
54
|
+
"mirascript": "node --enable-source-maps ./dist/cli/index.js",
|
|
54
55
|
"clean": "rimraf dist",
|
|
55
56
|
"test": "c8 ava"
|
|
56
57
|
}
|
package/src/cli/execute.ts
CHANGED
|
@@ -6,9 +6,14 @@ import { debug_print } from '../vm/lib/global/debug.js';
|
|
|
6
6
|
import { print } from './print.js';
|
|
7
7
|
|
|
8
8
|
/** 执行脚本 */
|
|
9
|
-
export async function execute(
|
|
9
|
+
export async function execute(
|
|
10
|
+
script: string,
|
|
11
|
+
template: boolean,
|
|
12
|
+
variables: Record<string, VmValue>,
|
|
13
|
+
fileName: string,
|
|
14
|
+
): Promise<void> {
|
|
10
15
|
try {
|
|
11
|
-
const f = await compile(script, { input_mode: template ? 'Template' : 'Script' });
|
|
16
|
+
const f = await compile(script, { input_mode: template ? 'Template' : 'Script', sourceMap: true, fileName });
|
|
12
17
|
const r = f(
|
|
13
18
|
createVmContext({
|
|
14
19
|
debug_print: VmFunction((...values) => {
|
|
@@ -26,7 +31,7 @@ export async function execute(script: string, template: boolean, variables: Reco
|
|
|
26
31
|
console.log(print(r));
|
|
27
32
|
}
|
|
28
33
|
} catch (ex) {
|
|
29
|
-
console.error(styles.red.open + (ex as Error).
|
|
34
|
+
console.error(styles.red.open + (ex as Error).stack + styles.red.close);
|
|
30
35
|
process.exitCode = 2;
|
|
31
36
|
}
|
|
32
37
|
}
|
package/src/cli/index.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
/* c8 ignore start */
|
|
2
2
|
/* eslint-disable no-console */
|
|
3
3
|
import { readFile, stat } from 'node:fs/promises';
|
|
4
|
-
import {
|
|
4
|
+
import { pathToFileURL } from 'node:url';
|
|
5
|
+
import { InvalidArgumentError, program } from '@commander-js/extra-typings';
|
|
5
6
|
import { execute } from './execute.js';
|
|
6
7
|
import pkg from '../../package.json' with { type: 'json' };
|
|
7
8
|
import { compileSync } from '../compiler/index.js';
|
|
8
|
-
import type
|
|
9
|
+
import { configCheckpoint, type VmValue } from '../vm/index.js';
|
|
10
|
+
|
|
11
|
+
const DEFAULT_TIMEOUT = 3000;
|
|
9
12
|
|
|
10
13
|
program.name(pkg.name.split('/').pop()!).version(pkg.version).description(pkg.description);
|
|
11
14
|
|
|
@@ -33,12 +36,26 @@ program
|
|
|
33
36
|
{} as Record<string, VmValue>,
|
|
34
37
|
)
|
|
35
38
|
.option('-t, --template', '使用模板模式')
|
|
39
|
+
.option(
|
|
40
|
+
'--timeout <ms>',
|
|
41
|
+
'脚本执行超时时间(毫秒,0 表示不超时)',
|
|
42
|
+
(v) => {
|
|
43
|
+
const ms = Number.parseFloat(v);
|
|
44
|
+
if (Number.isNaN(ms) || ms < 0) {
|
|
45
|
+
throw new InvalidArgumentError('超时时间必须是非负整数');
|
|
46
|
+
}
|
|
47
|
+
return ms;
|
|
48
|
+
},
|
|
49
|
+
DEFAULT_TIMEOUT,
|
|
50
|
+
)
|
|
36
51
|
.option('--no-template', '使用脚本模式')
|
|
37
52
|
.option('-e, --eval <script>', '要执行的脚本')
|
|
38
53
|
.argument('[script]', '要执行的脚本文件路径(如果提供了 -e 则忽略此参数)')
|
|
39
54
|
.action(async (script, opt) => {
|
|
55
|
+
configCheckpoint(opt.timeout || Number.POSITIVE_INFINITY);
|
|
40
56
|
if (opt.eval != null) {
|
|
41
|
-
|
|
57
|
+
const template = !!opt.template;
|
|
58
|
+
await execute(opt.eval, template, opt.variable, template ? 'eval.miratpl' : 'eval.mira');
|
|
42
59
|
return;
|
|
43
60
|
}
|
|
44
61
|
if (script) {
|
|
@@ -62,9 +79,9 @@ program
|
|
|
62
79
|
}
|
|
63
80
|
return;
|
|
64
81
|
}
|
|
65
|
-
const context = await readFile(script, '
|
|
82
|
+
const context = await readFile(script, 'utf-8');
|
|
66
83
|
const template = opt.template ?? script.endsWith('.miratpl');
|
|
67
|
-
await execute(context, template, opt.variable);
|
|
84
|
+
await execute(context, template, opt.variable, pathToFileURL(script).href);
|
|
68
85
|
return;
|
|
69
86
|
}
|
|
70
87
|
program.help({ error: true });
|
package/src/cli/print.ts
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import styles from 'ansi-styles';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
serialize,
|
|
4
|
+
serializeNumber,
|
|
5
|
+
serializeBoolean,
|
|
6
|
+
serializeNil,
|
|
7
|
+
type SerializeOptions,
|
|
8
|
+
operations,
|
|
9
|
+
} from '../subtle.js';
|
|
3
10
|
import type { VmAny, VmRecord } from '../vm/index.js';
|
|
4
11
|
|
|
5
12
|
const options: Partial<SerializeOptions> = {
|
|
6
13
|
maxDepth: 3,
|
|
7
|
-
serializeNil: () => styles.gray.open +
|
|
8
|
-
serializeBoolean: (v) => styles.blue.open + (v
|
|
9
|
-
serializeNumber: (v) =>
|
|
10
|
-
styles.yellow.open +
|
|
11
|
-
(Number.isNaN(v) ? 'nan' : Number.isFinite(v) ? v.toString() : v > 0 ? 'inf' : '-inf') +
|
|
12
|
-
styles.yellow.close,
|
|
14
|
+
serializeNil: () => styles.gray.open + serializeNil() + styles.gray.close,
|
|
15
|
+
serializeBoolean: (v) => styles.blue.open + serializeBoolean(v) + styles.blue.close,
|
|
16
|
+
serializeNumber: (v) => styles.yellow.open + serializeNumber(v) + styles.yellow.close,
|
|
13
17
|
serializeStringQuote: (v, open) => {
|
|
14
18
|
const q = styles.dim.open + v + styles.dim.close;
|
|
15
19
|
if (open) {
|
|
@@ -19,12 +23,12 @@ const options: Partial<SerializeOptions> = {
|
|
|
19
23
|
}
|
|
20
24
|
},
|
|
21
25
|
serializeStringEscape: (v) => styles.bold.open + v + styles.bold.close,
|
|
22
|
-
serializeFunction: (v) => styles.cyan.open +
|
|
26
|
+
serializeFunction: (v) => styles.cyan.open + operations.$ToString(v) + styles.cyan.close,
|
|
23
27
|
serializePropName: (v) => styles.whiteBright.open + String(v) + styles.whiteBright.close,
|
|
24
28
|
serializeModule: (v, depth, options) => {
|
|
25
29
|
return (
|
|
26
30
|
styles.magenta.open +
|
|
27
|
-
|
|
31
|
+
operations.$ToString(v) +
|
|
28
32
|
styles.magenta.close +
|
|
29
33
|
' ' +
|
|
30
34
|
options.serializeRecord(v.value as VmRecord, depth, options)
|
|
@@ -77,20 +77,30 @@ interface ParsedDiagnostics {
|
|
|
77
77
|
references: SourceReference[];
|
|
78
78
|
/** 标签引用诊断信息 */
|
|
79
79
|
tagsReferences: SourceReference[];
|
|
80
|
+
|
|
81
|
+
/** 代码映射信息 */
|
|
82
|
+
sourcemaps: IRange[];
|
|
80
83
|
}
|
|
81
84
|
|
|
82
85
|
/** 分析诊断信息,{@link diagnostic_position_encoding} 不能设为 `None` */
|
|
83
|
-
export function parseDiagnostics(
|
|
86
|
+
export function parseDiagnostics(
|
|
87
|
+
source: ScriptInput,
|
|
88
|
+
diagnostics: Uint32Array,
|
|
89
|
+
filter?: (code: DiagnosticCode) => boolean,
|
|
90
|
+
): ParsedDiagnostics {
|
|
84
91
|
const parsed = [];
|
|
85
92
|
const bufLen = diagnostics.length;
|
|
86
93
|
for (let i = 0; i < bufLen; i += 5) {
|
|
94
|
+
const code = diagnostics[i + 4]! as DiagnosticCode;
|
|
95
|
+
if (filter && !filter(code)) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
87
98
|
const startLineNumber = diagnostics[i]!;
|
|
88
99
|
const startColumn = diagnostics[i + 1]!;
|
|
89
100
|
const endLineNumber = diagnostics[i + 2]!;
|
|
90
101
|
const endColumn = diagnostics[i + 3]!;
|
|
91
|
-
const error = diagnostics[i + 4]! as DiagnosticCode;
|
|
92
102
|
parsed.push({
|
|
93
|
-
code
|
|
103
|
+
code,
|
|
94
104
|
range: {
|
|
95
105
|
startLineNumber,
|
|
96
106
|
startColumn,
|
|
@@ -107,6 +117,7 @@ export function parseDiagnostics(source: ScriptInput, diagnostics: Uint32Array):
|
|
|
107
117
|
const _tags: SourceDiagnostic[] = [];
|
|
108
118
|
const _references: SourceReference[] = [];
|
|
109
119
|
const _tagsReferences: SourceReference[] = [];
|
|
120
|
+
const _sourcemaps: IRange[] = [];
|
|
110
121
|
for (let i = 0; i < parsed.length; i++) {
|
|
111
122
|
const diagnostic = parsed[i]!;
|
|
112
123
|
const { code } = diagnostic;
|
|
@@ -120,7 +131,11 @@ export function parseDiagnostics(source: ScriptInput, diagnostics: Uint32Array):
|
|
|
120
131
|
_hints.push(diagnostic);
|
|
121
132
|
} else if (code > DiagnosticCode.TagStart && code < DiagnosticCode.TagEnd) {
|
|
122
133
|
_tags.push(diagnostic);
|
|
134
|
+
} else if (code === DiagnosticCode.SourceMap) {
|
|
135
|
+
_sourcemaps.push(diagnostic.range);
|
|
136
|
+
continue;
|
|
123
137
|
} else {
|
|
138
|
+
// 非法诊断代码,跳过
|
|
124
139
|
continue;
|
|
125
140
|
}
|
|
126
141
|
diagnostic.references = [];
|
|
@@ -151,6 +166,7 @@ export function parseDiagnostics(source: ScriptInput, diagnostics: Uint32Array):
|
|
|
151
166
|
tags: _tags,
|
|
152
167
|
references: _references,
|
|
153
168
|
tagsReferences: _tagsReferences,
|
|
169
|
+
sourcemaps: _sourcemaps,
|
|
154
170
|
};
|
|
155
171
|
}
|
|
156
172
|
|
package/src/compiler/emit.ts
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { OpCode } from '@mirascript/wasm/types';
|
|
2
|
-
import {
|
|
2
|
+
import { toBase64 } from 'js-base64';
|
|
3
3
|
import type { VmConst, VmPrimitive } from '../vm/index.js';
|
|
4
4
|
import type { ScriptInput, TranspileOptions } from './types.js';
|
|
5
|
+
import type { IRange } from './diagnostic.js';
|
|
6
|
+
import { SourceMapGenerator } from 'source-map-js';
|
|
5
7
|
|
|
6
8
|
/** 生成代码 */
|
|
7
|
-
export function emit(
|
|
8
|
-
|
|
9
|
+
export function emit(
|
|
10
|
+
source: ScriptInput,
|
|
11
|
+
chunk: Uint8Array,
|
|
12
|
+
sourcemaps: readonly IRange[],
|
|
13
|
+
options: TranspileOptions,
|
|
14
|
+
): string {
|
|
15
|
+
const gen = new Emitter(source, chunk, sourcemaps, options);
|
|
9
16
|
gen.read();
|
|
10
17
|
const code = gen.codeLines.join('\n');
|
|
11
18
|
return code;
|
|
@@ -57,7 +64,7 @@ function toJavascript(value: VmConst | undefined): string {
|
|
|
57
64
|
return String(value);
|
|
58
65
|
}
|
|
59
66
|
|
|
60
|
-
const ORIGIN = `mira://MiraScript
|
|
67
|
+
const ORIGIN = `mira://MiraScript/`;
|
|
61
68
|
let sourceId = 1;
|
|
62
69
|
|
|
63
70
|
/** 创建数组 */
|
|
@@ -75,6 +82,7 @@ class Emitter {
|
|
|
75
82
|
constructor(
|
|
76
83
|
readonly source: ScriptInput,
|
|
77
84
|
readonly chunk: Uint8Array,
|
|
85
|
+
readonly sourcemaps: readonly IRange[],
|
|
78
86
|
readonly options: TranspileOptions,
|
|
79
87
|
) {
|
|
80
88
|
this.pretty = options.pretty ?? false;
|
|
@@ -362,9 +370,9 @@ class Emitter {
|
|
|
362
370
|
);
|
|
363
371
|
if (script) {
|
|
364
372
|
args.unshift(`global = GlobalFallback()`);
|
|
365
|
-
code = `'use strict'; return (
|
|
373
|
+
code = `'use strict'; return ((${args.join(', ')}) => { try { CpEnter(); var ${regs};`;
|
|
366
374
|
} else {
|
|
367
|
-
code = `${this.wv(reg)} = Function(
|
|
375
|
+
code = `${this.wv(reg)} = Function((${args.join(', ')}) => { try { CpEnter(); var ${regs};`;
|
|
368
376
|
}
|
|
369
377
|
if (varg) {
|
|
370
378
|
code += ` var ${this.wv(argn, -1)} = Vargs(vargs);`;
|
|
@@ -688,6 +696,9 @@ class Emitter {
|
|
|
688
696
|
code = `continue;`;
|
|
689
697
|
break;
|
|
690
698
|
}
|
|
699
|
+
case OpCode.Noop: {
|
|
700
|
+
return;
|
|
701
|
+
}
|
|
691
702
|
default: {
|
|
692
703
|
code = `; // ${OpCode[opcode] ?? opcode}`;
|
|
693
704
|
break;
|
|
@@ -742,27 +753,42 @@ class Emitter {
|
|
|
742
753
|
const hasSchema = /^\w+:/.test(fileName);
|
|
743
754
|
if (!hasSchema) {
|
|
744
755
|
if (fileName.startsWith('/')) {
|
|
745
|
-
fileName = fileName.replace(
|
|
756
|
+
fileName = fileName.replace(/^\/+\s*/, '');
|
|
746
757
|
}
|
|
747
758
|
if (!fileName) {
|
|
748
759
|
fileName = `${sourceId++}.${this.options.input_mode === 'Template' ? 'miratpl' : 'mira'}`;
|
|
749
760
|
}
|
|
750
761
|
}
|
|
751
|
-
const
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
762
|
+
const map = new SourceMapGenerator({
|
|
763
|
+
file: fileName + '.js',
|
|
764
|
+
});
|
|
765
|
+
if (typeof this.source === 'string') {
|
|
766
|
+
map.setSourceContent(fileName, this.source);
|
|
767
|
+
}
|
|
768
|
+
for (let i = 0; i < this.sourcemaps.length; i++) {
|
|
769
|
+
const range = this.sourcemaps[i];
|
|
770
|
+
if (!range) break;
|
|
771
|
+
map.addMapping({
|
|
772
|
+
generated: {
|
|
773
|
+
// 前两行固定为:
|
|
774
|
+
// (function anonymous($Add,$Aeq, ...
|
|
775
|
+
// ) {
|
|
776
|
+
line: i + 3,
|
|
777
|
+
column: 0,
|
|
778
|
+
},
|
|
779
|
+
original: {
|
|
780
|
+
line: range.startLineNumber,
|
|
781
|
+
column: range.startColumn - 1,
|
|
782
|
+
},
|
|
783
|
+
source: fileName,
|
|
784
|
+
});
|
|
785
|
+
}
|
|
760
786
|
const prefix = '//# ';
|
|
761
|
-
const sourceURL = hasSchema ? fileName : `${ORIGIN}
|
|
787
|
+
const sourceURL = hasSchema ? fileName : `${ORIGIN}${fileName}`;
|
|
762
788
|
this.codeLines.push(
|
|
763
789
|
// Prevent source map from being recognized as of this file
|
|
764
|
-
`${prefix}sourceURL=${sourceURL}`,
|
|
765
|
-
`${prefix}sourceMappingURL=data:application/json;base64,${
|
|
790
|
+
`${prefix}sourceURL=${sourceURL}.js`,
|
|
791
|
+
`${prefix}sourceMappingURL=data:application/json;base64,${toBase64(map.toString())}`,
|
|
766
792
|
);
|
|
767
793
|
}
|
|
768
794
|
}
|
package/src/compiler/index.ts
CHANGED
|
@@ -4,7 +4,7 @@ import './types.js';
|
|
|
4
4
|
import { emit } from './emit.js';
|
|
5
5
|
import { createScript } from './create-script.js';
|
|
6
6
|
import { compileFast } from './compile-fast.js';
|
|
7
|
-
import { formatDiagnostic, parseDiagnostics } from './diagnostic.js';
|
|
7
|
+
import { DiagnosticCode, formatDiagnostic, parseDiagnostics } from './diagnostic.js';
|
|
8
8
|
import { generateBytecode, generateBytecodeSync, loadModule } from './generate-bytecode.js';
|
|
9
9
|
import { compileWorker } from './worker-manager.js';
|
|
10
10
|
await loadModule();
|
|
@@ -33,7 +33,10 @@ export function emitScript(
|
|
|
33
33
|
if (!code) {
|
|
34
34
|
reportDiagnostic(source, diagnostics);
|
|
35
35
|
}
|
|
36
|
-
const
|
|
36
|
+
const sourcemaps = options.sourceMap
|
|
37
|
+
? parseDiagnostics(source, diagnostics, (c) => c === DiagnosticCode.SourceMap).sourcemaps
|
|
38
|
+
: [];
|
|
39
|
+
const target = emit(source, code, sourcemaps, options);
|
|
37
40
|
return createScript(source, target);
|
|
38
41
|
}
|
|
39
42
|
|
|
@@ -41,6 +44,11 @@ export function emitScript(
|
|
|
41
44
|
* 生成 MiraScript 对应的 JavaScript 代码
|
|
42
45
|
*/
|
|
43
46
|
export async function compile(this: void, source: ScriptInput, options: TranspileOptions = {}): Promise<VmScript> {
|
|
47
|
+
if (options.sourceMap) {
|
|
48
|
+
options.diagnostic_sourcemap = true;
|
|
49
|
+
// https://tc39.es/ecma426/#sec-terms-and-definitions-colun
|
|
50
|
+
options.diagnostic_position_encoding ??= 'Utf16';
|
|
51
|
+
}
|
|
44
52
|
if (typeof source == 'string') {
|
|
45
53
|
const result = compileFast(source, options);
|
|
46
54
|
if (result) return result;
|
package/src/compiler/worker.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ScriptInput, TranspileOptions } from './types.js';
|
|
2
2
|
import { emit } from './emit.js';
|
|
3
3
|
import { generateBytecode } from './generate-bytecode.js';
|
|
4
|
+
import { DiagnosticCode, parseDiagnostics } from './diagnostic.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* 生成 MiraScript 对应的 JavaScript 代码
|
|
@@ -13,7 +14,10 @@ export async function compile(
|
|
|
13
14
|
if (bytecode == null) {
|
|
14
15
|
return [undefined, errors];
|
|
15
16
|
}
|
|
16
|
-
const
|
|
17
|
+
const sourcemaps = options.sourceMap
|
|
18
|
+
? parseDiagnostics(script, errors, (c) => c === DiagnosticCode.SourceMap).sourcemaps
|
|
19
|
+
: [];
|
|
20
|
+
const generatedCode = emit(script, bytecode, sourcemaps, options);
|
|
17
21
|
return [generatedCode, errors];
|
|
18
22
|
}
|
|
19
23
|
|
package/src/helpers/serialize.ts
CHANGED
|
@@ -67,7 +67,7 @@ const DEFAULT_OPTIONS = Object.freeze({
|
|
|
67
67
|
} satisfies SerializeOptions);
|
|
68
68
|
|
|
69
69
|
/** 获取选项 */
|
|
70
|
-
|
|
70
|
+
function getSerializeOptions(options: Partial<SerializeOptions> | undefined): SerializeOptions {
|
|
71
71
|
if (options == null) return DEFAULT_OPTIONS;
|
|
72
72
|
const opt = { ...DEFAULT_OPTIONS };
|
|
73
73
|
for (const key in options) {
|
|
@@ -157,17 +157,17 @@ export function serializePropName(value: string, options?: Partial<SerializeOpti
|
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
/** 序列化 nil 值 */
|
|
160
|
-
function serializeNil(): string {
|
|
160
|
+
export function serializeNil(): string {
|
|
161
161
|
return 'nil';
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
/** 序列化布尔值 */
|
|
165
|
-
function serializeBoolean(value: boolean): string {
|
|
165
|
+
export function serializeBoolean(value: boolean): string {
|
|
166
166
|
return value ? 'true' : 'false';
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
/** 序列化数字 */
|
|
170
|
-
function serializeNumber(value: number): string {
|
|
170
|
+
export function serializeNumber(value: number): string {
|
|
171
171
|
if (isNaN(value)) return 'nan';
|
|
172
172
|
if (!isFinite(value)) return value < 0 ? '-inf' : 'inf';
|
|
173
173
|
if (value === 0) {
|
|
@@ -178,7 +178,7 @@ function serializeNumber(value: number): string {
|
|
|
178
178
|
}
|
|
179
179
|
|
|
180
180
|
/** 序列化数组 */
|
|
181
|
-
function serializeArray(value: VmArray, depth: number, options: SerializeOptions): string {
|
|
181
|
+
export function serializeArray(value: VmArray, depth: number, options: SerializeOptions): string {
|
|
182
182
|
if (depth > options.maxDepth) return `[]`;
|
|
183
183
|
if (value.length === 0) return '[]';
|
|
184
184
|
let str = '[';
|
|
@@ -207,7 +207,7 @@ function customValueOf(value: VmRecord): VmAny | undefined {
|
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
/** 序列化记录 */
|
|
210
|
-
function serializeRecord(value: VmRecord, depth: number, options: SerializeOptions): string {
|
|
210
|
+
export function serializeRecord(value: VmRecord, depth: number, options: SerializeOptions): string {
|
|
211
211
|
const customValue = customValueOf(value);
|
|
212
212
|
if (customValue !== undefined) {
|
|
213
213
|
return serializeImpl(customValue, depth - 1, options);
|
package/src/subtle.ts
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
export * as constants from './helpers/constants.js';
|
|
2
2
|
export { VmSharedContext, DefaultVmContext } from './vm/types/context.js';
|
|
3
3
|
export * as operations from './vm/operations.js';
|
|
4
|
-
export {
|
|
4
|
+
export {
|
|
5
|
+
serialize,
|
|
6
|
+
serializeNil,
|
|
7
|
+
serializeBoolean,
|
|
8
|
+
serializeNumber,
|
|
9
|
+
serializeString,
|
|
10
|
+
serializePropName,
|
|
11
|
+
serializeArray,
|
|
12
|
+
serializeRecord,
|
|
13
|
+
type SerializeOptions,
|
|
14
|
+
} from './helpers/serialize.js';
|
|
5
15
|
export { lib } from './vm/lib/_loader.js';
|
|
6
16
|
export * from './compiler/diagnostic.js';
|
|
7
17
|
export { generateBytecode, generateBytecodeSync, emitScript } from './compiler/index.js';
|
|
@@ -36,7 +36,7 @@ export const hypot = VmLib(build(Math.hypot), {
|
|
|
36
36
|
export const sum = VmLib(
|
|
37
37
|
(...values: readonly VmAny[]) => {
|
|
38
38
|
const numbers = getNumbers(values);
|
|
39
|
-
return numbers.reduce((a, b) => a + b, 0);
|
|
39
|
+
return numbers.reduce((a, b) => a + b, -0);
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
summary: '返回一组数的总和',
|
package/src/vm/types/wrapper.ts
CHANGED
|
@@ -23,7 +23,9 @@ export abstract class VmWrapper<T extends object> {
|
|
|
23
23
|
}
|
|
24
24
|
/** 转为字符串 */
|
|
25
25
|
toString(): string {
|
|
26
|
-
|
|
26
|
+
const { type, describe } = this;
|
|
27
|
+
if (!describe) return `<${type}>`;
|
|
28
|
+
return `<${type} ${describe}>`;
|
|
27
29
|
}
|
|
28
30
|
}
|
|
29
31
|
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/compiler/emit.ts", "../src/compiler/generate-bytecode.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["i"]
|
|
6
|
-
}
|