@mirascript/mirascript 0.1.41 → 0.1.43

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.
@@ -5,20 +5,58 @@ type SerializeFormat =
5
5
  ''
6
6
  /** 以 `%` 开头的格式占位符 */
7
7
  | `%${string}`;
8
- /**
9
- * 默认的序列化函数
10
- * @param arg 要序列化的值
11
- * @param format 序列化格式
12
- * @returns 序列化后的字符串,或 null 表示直接将原值传递给控制台
13
- */
14
- declare function defaultSerializer(arg: VmAny, format: SerializeFormat): string | null;
8
+ /** 格式化结果 */
9
+ interface FormatResult {
10
+ /** 模板字符串数组 */
11
+ templates: readonly string[];
12
+ /** 值数组,长度为 {@link templates}.length - 1 */
13
+ values: readonly VmAny[];
14
+ /** 格式化字符串数组,与 {@link values} 一一对应 */
15
+ formats: readonly SerializeFormat[];
16
+ }
17
+ /** 打印输出选项 */
18
+ interface PrintOptions {
19
+ /** 输出时的固定前缀 */
20
+ prefix: readonly [prefix: string, ...additional: readonly string[]];
21
+ /**
22
+ * 序列化函数
23
+ * @param arg 要序列化的值
24
+ * @param format 序列化格式
25
+ * @returns 序列化后的字符串,或 null 表示直接将原值传递给控制台
26
+ */
27
+ serializer: (this: PrintOptions, arg: VmAny, format: SerializeFormat) => string | null | PromiseLike<string>;
28
+ /** 格式化函数 */
29
+ formatter: (this: PrintOptions, args: readonly VmAny[]) => FormatResult;
30
+ /** 输出函数 */
31
+ printer: (this: PrintOptions, format: FormatResult) => void;
32
+ }
15
33
  export declare const debug_print: ((...args: readonly (import("../../types/index.js").VmValue | undefined)[]) => void) & import("../helpers.js").VmLibOption & {
34
+ printer: (this: PrintOptions, format: FormatResult) => void;
35
+ /** 输出时的固定前缀 */
16
36
  prefix: readonly [prefix: string, ...additional: readonly string[]];
17
- serializer: typeof defaultSerializer;
37
+ /**
38
+ * 序列化函数
39
+ * @param arg 要序列化的值
40
+ * @param format 序列化格式
41
+ * @returns 序列化后的字符串,或 null 表示直接将原值传递给控制台
42
+ */
43
+ serializer: (this: PrintOptions, arg: VmAny, format: SerializeFormat) => string | null | PromiseLike<string>;
44
+ /** 格式化函数 */
45
+ formatter: (this: PrintOptions, args: readonly VmAny[]) => FormatResult;
18
46
  };
19
47
  export declare const panic: ((message: VmAny) => never) & import("../helpers.js").VmLibOption & {
48
+ printer: (this: PrintOptions, format: FormatResult) => void;
49
+ /** 输出时的固定前缀 */
20
50
  prefix: readonly [prefix: string, ...additional: readonly string[]];
21
- serializer: typeof defaultSerializer;
51
+ /**
52
+ * 序列化函数
53
+ * @param arg 要序列化的值
54
+ * @param format 序列化格式
55
+ * @returns 序列化后的字符串,或 null 表示直接将原值传递给控制台
56
+ */
57
+ serializer: (this: PrintOptions, arg: VmAny, format: SerializeFormat) => string | null | PromiseLike<string>;
58
+ /** 格式化函数 */
59
+ formatter: (this: PrintOptions, args: readonly VmAny[]) => FormatResult;
22
60
  };
23
61
  export {};
24
62
  //# sourceMappingURL=debug.d.ts.map
@@ -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,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;;CAG5F,CAAC"}
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/debug.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGlD,YAAY;AACZ,KAAK,eAAe;AAChB,cAAc;AACZ,EAAE;AACJ,qBAAqB;GACnB,IAAI,MAAM,EAAE,CAAC;AAOnB,YAAY;AACZ,UAAU,YAAY;IAClB,cAAc;IACd,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,2CAA2C;IAC3C,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,qCAAqC;IACrC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CACvC;AA4HD,aAAa;AACb,UAAU,YAAY;IAClB,eAAe;IACf,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IACpE;;;;;OAKG;IACH,UAAU,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,KAAK,MAAM,GAAG,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7G,YAAY;IACZ,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,KAAK,EAAE,KAAK,YAAY,CAAC;IACxE,WAAW;IACX,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/D;AASD,eAAO,MAAM,WAAW;oBAVJ,YAAY,UAAU,YAAY,KAAK,IAAI;IAZ3D,eAAe;YACP,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACnE;;;;;OAKG;gBACS,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,KAAK,MAAM,GAAG,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC;IAC5G,YAAY;eACD,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,KAAK,EAAE,KAAK,YAAY;CA6B1E,CAAC;AAEF,eAAO,MAAM,KAAK,aACJ,KAAK;oBA9BC,YAAY,UAAU,YAAY,KAAK,IAAI;IAZ3D,eAAe;YACP,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACnE;;;;;OAKG;gBACS,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,KAAK,MAAM,GAAG,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC;IAC5G,YAAY;eACD,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,KAAK,EAAE,KAAK,YAAY;CAmD1E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/json.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,4IAqBnB,CAAC;AAEF,eAAO,MAAM,SAAS,yfAkBrB,CAAC"}
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/json.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,4IAoBnB,CAAC;AAEF,eAAO,MAAM,SAAS,yfAiBrB,CAAC"}
@@ -46,7 +46,7 @@ export declare function map(data: VmConst,
46
46
  /** 返回 `undefined` 表示跳过该元素 */
47
47
  mapper: (value: VmConst, index: number | string | null, data: VmConst) => VmConst | undefined): VmConst;
48
48
  /** 库函数选项 */
49
- export type VmLibOption = Pick<VmFunctionOption, 'summary' | 'params' | 'paramsType' | 'returns' | 'returnsType' | 'examples' | 'injectCp' | 'deprecated'>;
49
+ export type VmLibOption = Pick<VmFunctionOption, 'summary' | 'params' | 'paramsType' | 'returns' | 'returnsType' | 'examples' | '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":"AAOA,OAAO,KAAK,EACR,QAAQ,EACR,UAAU,EACV,KAAK,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,cAAc,EACd,gBAAgB,EACnB,MAAM,mBAAmB,CAAC;AAG3B,WAAW;AACX,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,CAGnF;AACD,WAAW;AACX,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AACzC,WAAW;AACX,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAQtD;AAED,gBAAgB;AAChB,wBAAgB,wBAAwB,CACpC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GACjC,KAAK,CAEP;AACD,gBAAgB;AAChB,wBAAgB,yBAAyB,CACrC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GACjC,KAAK,CAEP;AAED,aAAa;AACb,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,CAGpG;AAED,eAAe;AACf,wBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,EACtC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,CAAC,GAAG,SAAS,EACpB,SAAS,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GACjC,OAAO,CAAC,KAAK,IAAI,CAAC,CAIpB;AAED,iBAAiB;AACjB,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAOnE;AACD,iBAAiB;AACjB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAYlG;AACD,iBAAiB;AACjB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CASnG;AACD,iBAAiB;AACjB,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAWpE;AAED,kBAAkB;AAClB,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAOrE;AAED,kBAAkB;AAClB,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAOnE;AAED,cAAc;AACd,wBAAgB,WAAW,CACvB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GACjC,OAAO,CAAC,KAAK,IAAI,OAAO,CAK1B;AAED,cAAc;AACd,wBAAgB,YAAY,CACxB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GACjC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAK3B;AAED,iBAAiB;AACjB,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GACjC,OAAO,CAAC,KAAK,IAAI,OAAO,GAAG,QAAQ,CAKrC;AAED,gBAAgB;AAChB,wBAAgB,cAAc,CAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GACjC,OAAO,CAAC,KAAK,IAAI,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAK3D;AAED,cAAc;AACd,wBAAgB,WAAW,CACvB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GACjC,OAAO,CAAC,KAAK,IAAI,OAAO,CAK1B;AAED,aAAa;AACb,wBAAgB,cAAc,CAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,GACjC,OAAO,CAAC,KAAK,IAAI,UAAU,GAAG,QAAQ,CAKxC;AAED,sCAAsC;AACtC,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,KAAK,EAAE,GAAG,MAAM,EAAE,CAY3D;AAED,eAAe;AACf,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAS/D;AAED,aAAa;AACb,wBAAgB,GAAG,CACf,IAAI,EAAE,OAAO;AACb,6BAA6B;AAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,GAAG,SAAS,GAC9F,OAAO,CAwBT;AAED,YAAY;AACZ,MAAM,MAAM,WAAW,GAAG,IAAI,CAC1B,gBAAgB,EAChB,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,YAAY,CAC9F,CAAC;AACF,UAAU;AACV,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,cAAc,GAAG,OAAO,GAAG,cAAc,IAAI,CAAC,CAAC,SAAS,cAAc,GAAG,CAAC,GAAG;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC,GAClH,WAAW,CAAC;AAEhB,YAAY;AACZ,wBAAgB,KAAK,CACjB,KAAK,CAAC,CAAC,SAAS,cAAc,GAAG,OAAO,EACxC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAC1D,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAa7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/vm/lib/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,UAAU,EACV,QAAQ,EACR,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,WAAW,EACnB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,cAAc,CAAC;AAEvD,WAAW;AACX,cAAM,eAAe,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAI5G,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;gBAF1D,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,EACC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAI9D,kBAAkB;IACT,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAGrD;AAED,UAAU;AACV,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,eAAe,CAAC;AACzE,UAAU;AACV,KAAK,cAAc,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACxH,UAAU;AACV,wBAAgB,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,QAAQ,EAC9C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,MAAM,GACf,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC,CA0B7D;AAED,WAAW;AACX,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,eAAe,CAAC;KAC7E,GAAG,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC3C,CAAC,CAAC;AAEH,WAAW;AACX,wBAAgB,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAS/G"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/vm/lib/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,UAAU,EACV,QAAQ,EACR,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,WAAW,EACnB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,WAAW;AACX,cAAM,eAAe,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAI5G,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;gBAF1D,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,EACC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAI9D,kBAAkB;IACT,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAGrD;AAED,UAAU;AACV,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,eAAe,CAAC;AACzE,UAAU;AACV,KAAK,cAAc,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACxH,UAAU;AACV,wBAAgB,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,QAAQ,EAC9C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,MAAM,GACf,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC,CA0B7D;AAED,WAAW;AACX,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,eAAe,CAAC;KAC7E,GAAG,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC3C,CAAC,CAAC;AAEH,WAAW;AACX,wBAAgB,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAS/G"}
@@ -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,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
+ {"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,CAEnG;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 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/vm/types/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAK9D,uBAAuB;AACvB,MAAM,WAAW,SAAS;IACtB,YAAY;IACZ,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IAC5B,0BAA0B;IAC1B,IAAI,IAAI,SAAS,MAAM,EAAE,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1C;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,oCAAoC;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AACD,uBAAuB;AACvB,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACpD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAgB,CAAC;AAC3E,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAgB,CAAC;AAS/F,qCAAqC;AACrC,wBAAgB,oBAAoB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,EAClD,QAAQ,UAAQ,EAChB,WAAW,GAAE,MAAM,GAAG,IAAI,GAAG,SAAqB,GACnD,IAAI,CAcN;AAED,aAAa;AACb,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,SAAS,CAsB/C,CAAC;AAqHH,uBAAuB;AACvB,wBAAgB,eAAe,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;AACvD,qBAAqB;AACrB,wBAAgB,eAAe,CAC3B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,EAC5C,UAAU,CAAC,EAAE,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,EAC5C,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,GACzD,SAAS,CAAC;AACb,qBAAqB;AACrB,wBAAgB,eAAe,CAC3B,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,EACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAC7C,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,GACzD,SAAS,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/vm/types/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAK9D,uBAAuB;AACvB,MAAM,WAAW,SAAS;IACtB,YAAY;IACZ,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IAC5B,0BAA0B;IAC1B,IAAI,IAAI,SAAS,MAAM,EAAE,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1C;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,oCAAoC;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AACD,uBAAuB;AACvB,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACpD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAgB,CAAC;AAC3E,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAgB,CAAC;AAS/F,qCAAqC;AACrC,wBAAgB,oBAAoB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,EAClD,QAAQ,UAAQ,EAChB,WAAW,GAAE,MAAM,GAAG,IAAI,GAAG,SAAqB,GACnD,IAAI,CAeN;AAED,aAAa;AACb,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,SAAS,CAsB/C,CAAC;AAqHH,uBAAuB;AACvB,wBAAgB,eAAe,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;AACvD,qBAAqB;AACrB,wBAAgB,eAAe,CAC3B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,EAC5C,UAAU,CAAC,EAAE,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,EAC5C,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,GACzD,SAAS,CAAC;AACb,qBAAqB;AACrB,wBAAgB,eAAe,CAC3B,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,EACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAC7C,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,GACzD,SAAS,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { DiagnosticCode } from '@mirascript/constants';
2
2
  import { kVmFunction } from '../../helpers/constants.js';
3
- import type { VmAny, VmValue } from './index.js';
3
+ import { type VmAny, type VmValue } from './index.js';
4
+ import type { VmLib } from '../lib/helpers.js';
4
5
  /**
5
6
  * Mirascript 函数签名
6
7
  *
@@ -12,7 +13,7 @@ export type VmFunction<T extends VmFunctionLike = VmFunctionLike> = T & {
12
13
  readonly [kVmFunction]: VmFunctionInfo;
13
14
  };
14
15
  /** Mirascript 函数信息 */
15
- export interface VmFunctionInfo {
16
+ export type VmFunctionInfo = {
16
17
  /** 完整名称 */
17
18
  readonly fullName: string;
18
19
  /** 是否为库函数 */
@@ -36,11 +37,14 @@ export interface VmFunctionInfo {
36
37
  use?: string;
37
38
  message: DiagnosticCode;
38
39
  };
39
- }
40
+ };
40
41
  /** Mirascript 函数创建选项 */
41
- export type VmFunctionOption = Partial<Omit<VmFunctionInfo, 'original'> & {
42
- readonly injectCp: boolean;
43
- }>;
42
+ export type VmFunctionOption = Partial<Omit<VmFunctionInfo, 'original'>> & {
43
+ /** 函数名称 */
44
+ readonly name?: string | null | undefined;
45
+ /** 是否注入检查点 */
46
+ readonly injectCp?: boolean;
47
+ };
44
48
  /** 创建 Mirascript 函数 */
45
- export declare function VmFunction<T extends VmFunctionLike>(fn: T, option?: VmFunctionOption): VmFunction<T>;
49
+ export declare function VmFunction<T extends VmFunctionLike>(fn: T, option?: VmFunctionOption | VmFunction | VmLib<T>): VmFunction<T>;
46
50
  //# sourceMappingURL=function.d.ts.map
@@ -1 +1 @@
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"}
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,EAAgB,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAGpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;;;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,MAAM,cAAc,GAAG;IACzB,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,CAAC;AAEF,wBAAwB;AACxB,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,GAAG;IACvE,WAAW;IACX,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,cAAc;IACd,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,uBAAuB;AACvB,wBAAgB,UAAU,CAAC,CAAC,SAAS,cAAc,EAC/C,EAAE,EAAE,CAAC,EACL,MAAM,GAAE,gBAAgB,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,CAAM,GACtD,UAAU,CAAC,CAAC,CAAC,CA6Cf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirascript/mirascript",
3
- "version": "0.1.41",
3
+ "version": "0.1.43",
4
4
  "author": "CloudPSS",
5
5
  "license": "MIT",
6
6
  "description": "An expression based scripting language.",
@@ -29,11 +29,11 @@
29
29
  "@cloudpss/worker": "^0.1.10",
30
30
  "source-map-js": "^1.2.1",
31
31
  "supports-color": "^10.2.2",
32
- "@mirascript/bindings": "~0.1.41",
33
- "@mirascript/constants": "~0.1.41"
32
+ "@mirascript/bindings": "~0.1.43",
33
+ "@mirascript/constants": "~0.1.43"
34
34
  },
35
35
  "devDependencies": {
36
- "@types/node": "^25.0.10",
36
+ "@types/node": "^25.1.0",
37
37
  "ava": "^6.4.1",
38
38
  "c8": "^10.1.3",
39
39
  "tinybench": "^6.0.0",
@@ -10,78 +10,172 @@ type SerializeFormat =
10
10
  | ''
11
11
  /** 以 `%` 开头的格式占位符 */
12
12
  | `%${string}`;
13
- /**
14
- * 默认的序列化函数
15
- * @param arg 要序列化的值
16
- * @param format 序列化格式
17
- * @returns 序列化后的字符串,或 null 表示直接将原值传递给控制台
18
- */
13
+
14
+ /** 默认的序列化函数 */
19
15
  function defaultSerializer(arg: VmAny, format: SerializeFormat): string | null {
20
16
  return null;
21
17
  }
22
18
 
19
+ /** 格式化结果 */
20
+ interface FormatResult {
21
+ /** 模板字符串数组 */
22
+ templates: readonly string[];
23
+ /** 值数组,长度为 {@link templates}.length - 1 */
24
+ values: readonly VmAny[];
25
+ /** 格式化字符串数组,与 {@link values} 一一对应 */
26
+ formats: readonly SerializeFormat[];
27
+ }
28
+
23
29
  /** 序列化值 */
24
- function serializeValue(arg: VmAny, format: SerializeFormat, serializer: typeof defaultSerializer): string | null {
30
+ function serializeValue(
31
+ options: PrintOptions,
32
+ arg: VmAny,
33
+ format: SerializeFormat,
34
+ ): string | null | PromiseLike<string> {
35
+ const { serializer } = options;
25
36
  if (serializer == null || serializer === defaultSerializer) {
26
37
  return defaultSerializer(arg, format);
27
38
  }
28
39
  try {
29
- return serializer(arg, format);
40
+ return serializer.call(options, arg, format);
30
41
  } catch {
31
42
  return defaultSerializer(arg, format);
32
43
  }
33
44
  }
34
45
 
35
- export const debug_print = VmLib(
36
- (...args) => {
37
- const { serializer } = debug_print;
38
- if (args.length <= 1 || typeof args[0] != 'string' || !args[0].includes('%')) {
39
- // eslint-disable-next-line no-console
40
- console.log(...debug_print.prefix, ...args.map((v) => serializeValue(v, '', serializer) ?? v));
41
- return;
42
- }
43
- const [prefix, ...additional] = debug_print.prefix;
46
+ /** 构造格式化字符串 */
47
+ function buildFormatString(
48
+ options: PrintOptions,
49
+ args: readonly VmAny[],
50
+ ): readonly [format: string, values: readonly VmAny[]] {
51
+ const [prefix, ...additional] = options.prefix;
52
+ if (args.length <= 1 || typeof args[0] != 'string') {
53
+ return [prefix || '', [...additional, ...args]];
54
+ } else {
44
55
  const [arg0, ...argsRest] = args;
45
- const format = `${prefix || ''} ${arg0}`;
46
56
  const values = [...additional, ...argsRest];
57
+ if (!prefix) {
58
+ return [arg0, argsRest];
59
+ } else {
60
+ return [`${prefix} ${arg0}`, values];
61
+ }
62
+ }
63
+ }
64
+
65
+ /** 默认的格式化函数 */
66
+ const printFormatter: PrintOptions['formatter'] = function (args) {
67
+ const [format, values] = buildFormatString(this, args);
68
+ const templates: string[] = [];
69
+ const formats: SerializeFormat[] = [];
70
+ let valIndex = 0;
71
+ if (format.includes('%')) {
47
72
  const parts = format.split(/(%[%\w])/g);
48
- const messageToConsole: string[] = [];
49
- const valuesToConsole: unknown[] = [];
50
- let valIndex = 0;
51
73
  for (let i = 0; i < parts.length; i++) {
52
74
  if (i % 2 === 0) {
53
75
  // Regular string part
54
- messageToConsole.push(parts[i]!);
76
+ templates.push(parts[i]!);
55
77
  continue;
56
78
  }
57
79
  // Specifier part
58
- const specifier = parts[i]!;
59
- if (specifier === '%%') {
60
- messageToConsole.push('%');
61
- } else {
62
- if (valIndex >= values.length) {
63
- messageToConsole.push(specifier);
64
- continue;
65
- }
66
- const arg = values[valIndex++]!;
67
- const f = serializeValue(arg, specifier as SerializeFormat, serializer);
68
- if (f != null) {
69
- messageToConsole.push('%s');
70
- valuesToConsole.push(f);
80
+ let specifier = parts[i]!;
81
+ if (specifier === '%%' || valIndex >= values.length) {
82
+ if (specifier === '%%') specifier = '%';
83
+ if (!templates.length) {
84
+ templates.push(specifier);
71
85
  } else {
72
- messageToConsole.push(specifier);
73
- valuesToConsole.push(arg);
86
+ templates[templates.length - 1] += specifier;
74
87
  }
88
+ continue;
75
89
  }
90
+ formats.push(specifier as SerializeFormat);
91
+ valIndex++;
76
92
  }
93
+ } else if (format) {
94
+ templates.push(format);
95
+ }
96
+ // Append any remaining arguments separated by spaces
97
+ if (valIndex < values.length) {
98
+ if (templates.length) {
99
+ templates[templates.length - 1] += ' ';
100
+ } else {
101
+ templates.push('');
102
+ }
103
+ for (let i = valIndex; i < values.length; i++) {
104
+ formats.push('');
105
+ templates.push(i < values.length - 1 ? ' ' : '');
106
+ }
107
+ valIndex++;
108
+ }
109
+ return {
110
+ templates,
111
+ values,
112
+ formats,
113
+ };
114
+ };
77
115
 
78
- // Append any remaining arguments separated by spaces
79
- if (valIndex < values.length) {
80
- const remaining = values.slice(valIndex);
81
- valuesToConsole.push(...remaining.map((v) => serializeValue(v, '', serializer) ?? v));
116
+ /** 默认的输出函数 */
117
+ const createPrinter = (consoleMethod: (...args: unknown[]) => void): PrintOptions['printer'] => {
118
+ return function ({ templates, formats, values }: FormatResult) {
119
+ let format = '';
120
+ const formattedValues: unknown[] = [];
121
+ let needAwait = false;
122
+ for (let i = 0; i < templates.length; i++) {
123
+ format += templates[i]!;
124
+ if (i < values.length) {
125
+ const f = formats[i] ?? '';
126
+ const v = values[i]!;
127
+ const serialized = serializeValue(this, v, f);
128
+ if (serialized == null) {
129
+ format += f || (typeof v == 'string' ? '%s' : '%o');
130
+ formattedValues.push(v);
131
+ } else if (typeof serialized == 'string') {
132
+ format += '%s';
133
+ formattedValues.push(serialized);
134
+ } else {
135
+ needAwait = true;
136
+ format += '%s';
137
+ formattedValues.push(serialized);
138
+ }
139
+ }
82
140
  }
83
- // eslint-disable-next-line no-console
84
- console.log(messageToConsole.join(''), ...valuesToConsole);
141
+ if (!needAwait) {
142
+ consoleMethod(format, ...formattedValues);
143
+ } else {
144
+ void Promise.all(formattedValues).then((resolvedValues) => {
145
+ consoleMethod(format, ...resolvedValues);
146
+ });
147
+ }
148
+ };
149
+ };
150
+
151
+ /** 打印输出选项 */
152
+ interface PrintOptions {
153
+ /** 输出时的固定前缀 */
154
+ prefix: readonly [prefix: string, ...additional: readonly string[]];
155
+ /**
156
+ * 序列化函数
157
+ * @param arg 要序列化的值
158
+ * @param format 序列化格式
159
+ * @returns 序列化后的字符串,或 null 表示直接将原值传递给控制台
160
+ */
161
+ serializer: (this: PrintOptions, arg: VmAny, format: SerializeFormat) => string | null | PromiseLike<string>;
162
+ /** 格式化函数 */
163
+ formatter: (this: PrintOptions, args: readonly VmAny[]) => FormatResult;
164
+ /** 输出函数 */
165
+ printer: (this: PrintOptions, format: FormatResult) => void;
166
+ }
167
+
168
+ const printOptions: PrintOptions = {
169
+ prefix: ['MiraScript'] as readonly [prefix: string, ...additional: readonly string[]],
170
+ serializer: defaultSerializer,
171
+ formatter: printFormatter,
172
+ printer: () => undefined,
173
+ };
174
+
175
+ export const debug_print = VmLib(
176
+ (...args) => {
177
+ const formatResult = debug_print.formatter(args);
178
+ debug_print.printer(formatResult);
85
179
  },
86
180
  {
87
181
  summary: '打印调试信息到控制台',
@@ -91,17 +185,16 @@ export const debug_print = VmLib(
91
185
  examples: ['debug_print("value:", 42);'],
92
186
  },
93
187
  {
94
- prefix: ['MiraScript'] as readonly [prefix: string, ...additional: readonly string[]],
95
- serializer: defaultSerializer,
188
+ ...printOptions,
189
+ // eslint-disable-next-line no-console
190
+ printer: createPrinter(console.log),
96
191
  },
97
192
  );
98
193
 
99
194
  export const panic = VmLib(
100
195
  (message: VmAny) => {
101
- // eslint-disable-next-line no-console
102
- if (message === undefined) console.error(...panic.prefix);
103
- // eslint-disable-next-line no-console
104
- else console.error(...panic.prefix, serializeValue(message, '', panic.serializer) ?? message);
196
+ const formatResult = message === undefined ? panic.formatter([]) : panic.formatter([message]);
197
+ panic.printer(formatResult);
105
198
  const mgsStr = toString(message, null);
106
199
  const error = !mgsStr ? 'panic' : 'panic: ' + mgsStr;
107
200
  throw new VmError(error, undefined);
@@ -114,8 +207,9 @@ export const panic = VmLib(
114
207
  examples: ['panic("boom");'],
115
208
  },
116
209
  {
117
- prefix: ['MiraScript'] as readonly [prefix: string, ...additional: readonly string[]],
118
- serializer: defaultSerializer,
210
+ ...printOptions,
211
+ // eslint-disable-next-line no-console
212
+ printer: createPrinter(console.error),
119
213
  },
120
214
  );
121
215
 
@@ -21,7 +21,6 @@ export const to_json = VmLib(
21
21
  paramsType: { data: 'any' },
22
22
  returnsType: 'string',
23
23
  examples: ['to_json([1, 2, 3]) // "[1,2,3]"'],
24
- injectCp: true,
25
24
  },
26
25
  );
27
26
 
@@ -41,6 +40,5 @@ export const from_json = VmLib(
41
40
  paramsType: { json: 'string', fallback: 'any' },
42
41
  returnsType: 'any',
43
42
  examples: [`from_json('{"a":1}') // (a: 1)`],
44
- injectCp: true,
45
43
  },
46
44
  );
@@ -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' | 'deprecated'
277
+ 'summary' | 'params' | 'paramsType' | 'returns' | 'returnsType' | 'examples' | 'deprecated'
278
278
  >;
279
279
  /** 库函数 */
280
280
  export type VmLib<T extends VmFunctionLike | VmConst = VmFunctionLike> = (T extends VmFunctionLike ? T : { value: T }) &
@@ -295,7 +295,6 @@ export function VmLib<
295
295
  ret.returnsType = option.returnsType;
296
296
  ret.summary = option.summary;
297
297
  ret.examples = option.examples;
298
- ret.injectCp = option.injectCp ?? false;
299
298
  ret.deprecated = option.deprecated ?? undefined;
300
299
  return ret as VmLib<T> & P;
301
300
  }
@@ -8,7 +8,7 @@ import {
8
8
  } from '../types/index.js';
9
9
  import { create, defineProperty, entries } from '../../helpers/utils.js';
10
10
 
11
- import type { VmLib, VmLibOption } from './helpers.js';
11
+ import type { VmLib } from './helpers.js';
12
12
 
13
13
  /** 内置模块 */
14
14
  class VmBuiltinModule<const T extends Record<string, VmImmutable> = Record<string, VmImmutable>> extends VmModule<T> {
@@ -53,10 +53,10 @@ export function wrapEntry<const T extends RawValue>(
53
53
  }
54
54
  return [
55
55
  VmFunction(value, {
56
+ ...value,
56
57
  isLib: true,
57
- injectCp: true,
58
+ injectCp: false,
58
59
  fullName: `${module}.${name}`,
59
- ...(value as VmLibOption),
60
60
  }) as ToWrappedValue<T>,
61
61
  value.summary || undefined,
62
62
  ];
@@ -1,4 +1,4 @@
1
- import { create, defineProperty, isFinite } from '../../helpers/utils.js';
1
+ import { create, isFinite } from '../../helpers/utils.js';
2
2
  import { VM_ARRAY_MAX_LENGTH, VM_FUNCTION_ANONYMOUS_NAME } from '../../helpers/constants.js';
3
3
  import { isVmConst } from '../../helpers/types.js';
4
4
  import type { VmFunctionLike } from '../types/function.js';
@@ -25,8 +25,7 @@ export function $ElOpt(key: string, value: VmAny): VmConst {
25
25
 
26
26
  /** 构造函数和函数表达式 */
27
27
  export function $Fn<T extends VmFunctionLike>(name: string | null | undefined, fn: T): VmFunction<T> {
28
- defineProperty(fn, 'name', { value: name || VM_FUNCTION_ANONYMOUS_NAME });
29
- return VmFunction(fn, { isLib: false, injectCp: false });
28
+ return VmFunction(fn, { isLib: false, injectCp: false, name: name || VM_FUNCTION_ANONYMOUS_NAME });
30
29
  }
31
30
 
32
31
  /** 读取闭包上值 */
@@ -45,6 +45,7 @@ export function defineVmContextValue(
45
45
  let v: VmImmutable;
46
46
  if (typeof value == 'function') {
47
47
  v = VmFunction(value, {
48
+ name,
48
49
  isLib: true,
49
50
  fullName: `global.${name}`,
50
51
  });
@@ -2,9 +2,10 @@ import type { Writable } from 'type-fest';
2
2
  import type { DiagnosticCode } from '@mirascript/constants';
3
3
  import { defineProperty } from '../../helpers/utils.js';
4
4
  import { kVmFunction, VM_FUNCTION_ANONYMOUS_NAME } from '../../helpers/constants.js';
5
- import type { VmAny, VmValue } from './index.js';
5
+ import { isVmFunction, type VmAny, type VmValue } from './index.js';
6
6
  import { fromVmFunctionProxy } from './boundary.js';
7
7
  import { CpEnter, CpExit } from '../checkpoint.js';
8
+ import type { VmLib } from '../lib/helpers.js';
8
9
 
9
10
  /**
10
11
  * Mirascript 函数签名
@@ -18,7 +19,7 @@ export type VmFunctionLike = (...args: ReadonlyArray<VmValue | undefined>) => Vm
18
19
  export type VmFunction<T extends VmFunctionLike = VmFunctionLike> = T & { readonly [kVmFunction]: VmFunctionInfo };
19
20
 
20
21
  /** Mirascript 函数信息 */
21
- export interface VmFunctionInfo {
22
+ export type VmFunctionInfo = {
22
23
  /** 完整名称 */
23
24
  readonly fullName: string;
24
25
  /** 是否为库函数 */
@@ -39,17 +40,21 @@ export interface VmFunctionInfo {
39
40
  readonly original?: VmFunctionLike;
40
41
  /** 标记为弃用 */
41
42
  readonly deprecated?: { use?: string; message: DiagnosticCode };
42
- }
43
+ };
43
44
 
44
45
  /** Mirascript 函数创建选项 */
45
- export type VmFunctionOption = Partial<
46
- Omit<VmFunctionInfo, 'original'> & {
47
- readonly injectCp: boolean;
48
- }
49
- >;
46
+ export type VmFunctionOption = Partial<Omit<VmFunctionInfo, 'original'>> & {
47
+ /** 函数名称 */
48
+ readonly name?: string | null | undefined;
49
+ /** 是否注入检查点 */
50
+ readonly injectCp?: boolean;
51
+ };
50
52
 
51
53
  /** 创建 Mirascript 函数 */
52
- export function VmFunction<T extends VmFunctionLike>(fn: T, option: VmFunctionOption = {}): VmFunction<T> {
54
+ export function VmFunction<T extends VmFunctionLike>(
55
+ fn: T,
56
+ option: VmFunctionOption | VmFunction | VmLib<T> = {},
57
+ ): VmFunction<T> {
53
58
  if (typeof fn != 'function') {
54
59
  throw new TypeError('Invalid function');
55
60
  }
@@ -57,19 +62,28 @@ export function VmFunction<T extends VmFunctionLike>(fn: T, option: VmFunctionOp
57
62
  const exists = fromVmFunctionProxy(fn);
58
63
  // 如果已经是 VmFunction,则直接返回
59
64
  if (exists) return exists;
65
+ let opt: VmFunctionOption;
66
+ if (isVmFunction(option)) {
67
+ opt = option[kVmFunction];
68
+ } else if (typeof option == 'function') {
69
+ opt = { ...option, isLib: true } satisfies VmFunctionOption;
70
+ } else {
71
+ opt = option;
72
+ }
60
73
 
61
74
  const info: Writable<VmFunctionInfo> = {
62
- fullName: option.fullName ?? (fn.name === VM_FUNCTION_ANONYMOUS_NAME ? '' : fn.name),
63
- isLib: option.isLib ?? false,
64
- summary: option.summary || undefined,
65
- params: option.params,
66
- paramsType: option.paramsType,
67
- returns: option.returns || undefined,
68
- returnsType: option.returnsType || undefined,
69
- examples: option.examples?.length ? option.examples : undefined,
70
- deprecated: option.deprecated ?? undefined,
75
+ fullName: opt.fullName ?? (fn.name === VM_FUNCTION_ANONYMOUS_NAME ? '' : fn.name),
76
+ isLib: opt.isLib ?? false,
77
+ summary: opt.summary || undefined,
78
+ params: opt.params,
79
+ paramsType: opt.paramsType,
80
+ returns: opt.returns || undefined,
81
+ returnsType: opt.returnsType || undefined,
82
+ examples: opt.examples?.length ? opt.examples : undefined,
83
+ deprecated: opt.deprecated ?? undefined,
71
84
  };
72
- if (option.injectCp) {
85
+ const name = opt.name ?? fn.name;
86
+ if (opt.injectCp) {
73
87
  const original = fn;
74
88
  info.original = original;
75
89
  fn = ((...args) => {
@@ -81,10 +95,8 @@ export function VmFunction<T extends VmFunctionLike>(fn: T, option: VmFunctionOp
81
95
  CpExit();
82
96
  }
83
97
  }) as typeof fn;
84
- defineProperty(fn, 'name', { value: original.name });
85
98
  }
86
- defineProperty(fn, kVmFunction, {
87
- value: Object.freeze(info),
88
- });
99
+ defineProperty(fn, 'name', { value: name, configurable: true });
100
+ defineProperty(fn, kVmFunction, { value: Object.freeze(info) });
89
101
  return fn as VmFunction<T>;
90
102
  }