@mirascript/mirascript 0.1.30 → 0.1.32

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.
Files changed (42) hide show
  1. package/dist/{chunk-NP67IFXU.js → chunk-BMSHG7ON.js} +2 -2
  2. package/dist/{chunk-XWLR2YT7.js → chunk-MN6Y5AIX.js} +47 -31
  3. package/dist/chunk-MN6Y5AIX.js.map +6 -0
  4. package/dist/{chunk-PZXZH3RE.js → chunk-QHPRKCJU.js} +3 -3
  5. package/dist/{chunk-HCZX65XA.js → chunk-VZGKLLRC.js} +13 -2
  6. package/dist/chunk-VZGKLLRC.js.map +6 -0
  7. package/dist/cli/index.d.ts.map +1 -1
  8. package/dist/cli/index.js +8 -6
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/compiler/worker.js +1 -1
  11. package/dist/helpers/convert/to-format.d.ts.map +1 -1
  12. package/dist/helpers/convert/to-number.d.ts.map +1 -1
  13. package/dist/helpers/utils.d.ts +1 -1
  14. package/dist/helpers/utils.d.ts.map +1 -1
  15. package/dist/index.js +3 -3
  16. package/dist/subtle.js +3 -3
  17. package/dist/vm/lib/global/sequence/len.d.ts +1 -1
  18. package/dist/vm/lib/global/sequence/len.d.ts.map +1 -1
  19. package/dist/vm/lib/global/to-primitive.d.ts.map +1 -1
  20. package/dist/vm/operations/compound.d.ts.map +1 -1
  21. package/dist/vm/types/context.d.ts +2 -2
  22. package/dist/vm/types/context.d.ts.map +1 -1
  23. package/dist/vm/types/extern.d.ts +2 -0
  24. package/dist/vm/types/extern.d.ts.map +1 -1
  25. package/package.json +3 -3
  26. package/src/cli/index.ts +3 -2
  27. package/src/helpers/convert/to-format.ts +10 -8
  28. package/src/helpers/convert/to-number.ts +5 -6
  29. package/src/helpers/utils.ts +9 -1
  30. package/src/vm/lib/global/math-additional.ts +3 -3
  31. package/src/vm/lib/global/sequence/len.ts +11 -3
  32. package/src/vm/lib/global/sequence/with.ts +2 -2
  33. package/src/vm/lib/global/time.ts +5 -5
  34. package/src/vm/lib/global/to-primitive.ts +2 -1
  35. package/src/vm/lib/helpers.ts +4 -4
  36. package/src/vm/operations/compound.ts +7 -6
  37. package/src/vm/types/context.ts +4 -4
  38. package/src/vm/types/extern.ts +8 -2
  39. package/dist/chunk-HCZX65XA.js.map +0 -6
  40. package/dist/chunk-XWLR2YT7.js.map +0 -6
  41. /package/dist/{chunk-NP67IFXU.js.map → chunk-BMSHG7ON.js.map} +0 -0
  42. /package/dist/{chunk-PZXZH3RE.js.map → chunk-QHPRKCJU.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/cli/index.ts", "../../src/cli/execute.ts", "../../src/cli/print.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["styles", "supportsColor", "options", "supportsColor", "styles"]
6
6
  }
@@ -3,7 +3,7 @@ import {
3
3
  emit,
4
4
  generateBytecode,
5
5
  parseDiagnostics
6
- } from "../chunk-HCZX65XA.js";
6
+ } from "../chunk-VZGKLLRC.js";
7
7
 
8
8
  // src/compiler/worker.ts
9
9
  async function compile(script, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"to-format.d.ts","sourceRoot":"","sources":["../../../src/helpers/convert/to-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAqB/C,kBAAkB;AAClB,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAchF"}
1
+ {"version":3,"file":"to-format.d.ts","sourceRoot":"","sources":["../../../src/helpers/convert/to-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAoB/C,kBAAkB;AAClB,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAiBhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"to-number.d.ts","sourceRoot":"","sources":["../../../src/helpers/convert/to-number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAM/C,iBAAiB;AACjB,wBAAgB,QAAQ,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CA2BlG"}
1
+ {"version":3,"file":"to-number.d.ts","sourceRoot":"","sources":["../../../src/helpers/convert/to-number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK/C,iBAAiB;AACjB,wBAAgB,QAAQ,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CA2BlG"}
@@ -1,5 +1,5 @@
1
1
  export declare const isArray: (arg: any) => arg is unknown[];
2
- export declare const isFinite: (number: unknown) => boolean, isNaN: (number: unknown) => boolean, isInteger: (number: unknown) => boolean, isSafeInteger: (number: unknown) => boolean;
2
+ export declare const isFinite: (number: unknown) => boolean, isNaN: (number: unknown) => boolean, isInteger: (number: unknown) => boolean, isSafeInteger: (number: unknown) => boolean, NotNumber: number, PositiveInfinity: number, NegativeInfinity: number;
3
3
  export declare const hasOwn: <Obj extends object, Key extends PropertyKey>(o: Obj, v: Key) => o is Obj & (string extends Key ? {} : number extends Key ? {} : symbol extends Key ? {} : Key extends PropertyKey ? { [key in Key]: unknown; } : {}), keys: {
4
4
  (o: object): string[];
5
5
  (o: {}): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAQ,OAAO,gCAAU,CAAC;AACjC,eAAO,MAAQ,QAAQ,gCAAE,KAAK,gCAAE,SAAS,gCAAE,aAAa,8BAAW,CAAC;AACpE,eAAO,MAAQ,MAAM,yNAAE,IAAI;;;GAAE,MAAM;;;;GAAE,OAAO;;;;GAAE,MAAM;;;;;;;;;;;;;GAAE,cAAc,sBAAE,WAAW,2FAAE,cAAc;;;;6BAAW,CAAC;AAC7G,eAAO,MAAQ,KAAK,sBAAY,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAGxB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAQ,OAAO,gCAAU,CAAC;AACjC,eAAO,MACH,QAAQ,gCACR,KAAK,gCACL,SAAS,gCACT,aAAa,gCACR,SAAS,UACK,gBAAgB,UAChB,gBAAgB,QAC7B,CAAC;AACX,eAAO,MAAQ,MAAM,yNAAE,IAAI;;;GAAE,MAAM;;;;GAAE,OAAO;;;;GAAE,MAAM;;;;;;;;;;;;;GAAE,cAAc,sBAAE,WAAW,2FAAE,cAAc;;;;6BAAW,CAAC;AAC7G,eAAO,MAAQ,KAAK,sBAAY,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAGxB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  compile,
3
3
  compileSync
4
- } from "./chunk-PZXZH3RE.js";
4
+ } from "./chunk-QHPRKCJU.js";
5
5
  import {
6
6
  VmExtern,
7
7
  VmFunction,
@@ -11,7 +11,7 @@ import {
11
11
  defineVmContextValue,
12
12
  unwrapFromVmValue,
13
13
  wrapToVmValue
14
- } from "./chunk-XWLR2YT7.js";
14
+ } from "./chunk-MN6Y5AIX.js";
15
15
  import {
16
16
  VmError,
17
17
  getVmFunctionInfo,
@@ -33,7 +33,7 @@ import {
33
33
  isVmValue,
34
34
  isVmWrapper,
35
35
  serialize
36
- } from "./chunk-HCZX65XA.js";
36
+ } from "./chunk-VZGKLLRC.js";
37
37
  export {
38
38
  VmError,
39
39
  VmExtern,
package/dist/subtle.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  OpCode,
3
3
  analyzeGlobalReferences,
4
4
  isKeyword
5
- } from "./chunk-NP67IFXU.js";
5
+ } from "./chunk-BMSHG7ON.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-XWLR2YT7.js";
14
+ } from "./chunk-MN6Y5AIX.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-HCZX65XA.js";
32
+ } from "./chunk-VZGKLLRC.js";
33
33
  export {
34
34
  DefaultVmContext,
35
35
  DiagnosticCode,
@@ -1,2 +1,2 @@
1
- export declare const len: ((arr: import("../../../index.js").VmValue | undefined) => number) & import("../../helpers.js").VmLibOption & Record<never, never>;
1
+ export declare const len: ((arr: import("../../../types/index.js").VmValue | undefined) => number) & import("../../helpers.js").VmLibOption & Record<never, never>;
2
2
  //# sourceMappingURL=len.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"len.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/len.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,GAAG,oIAYf,CAAC"}
1
+ {"version":3,"file":"len.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/len.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,GAAG,0IAkBf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"to-primitive.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/to-primitive.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,ocAerB,CAAC;AAEF,eAAO,MAAM,SAAS,ocAerB,CAAC;AAEF,eAAO,MAAM,UAAU,ocAetB,CAAC;AAEF,eAAO,MAAM,MAAM,qLAYlB,CAAC"}
1
+ {"version":3,"file":"to-primitive.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/to-primitive.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,ocAerB,CAAC;AAEF,eAAO,MAAM,SAAS,ocAerB,CAAC;AAEF,eAAO,MAAM,UAAU,ocAetB,CAAC;AAEF,eAAO,MAAM,MAAM,qLAYlB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"compound.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/compound.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAe,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAQxF,eAAO,MAAM,GAAG,GAAI,OAAO,KAAK,EAAE,UAAU,KAAK,KAAG,OAoBnD,CAAC;AACF,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,KAAG,MAOtC,CAAC;AACF,eAAO,MAAM,KAAK,GAAI,OAAO,KAAK,EAAE,SAAS,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,QAa7E,CAAC;AACF,eAAO,MAAM,KAAK,GAAI,OAAO,KAAK,EAAE,QAAQ,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,QAW5E,CAAC;AACF,eAAO,MAAM,IAAI,GAAI,KAAK,KAAK,EAAE,KAAK,KAAK,KAAG,OAM7C,CAAC;AACF,eAAO,MAAM,IAAI,GAAI,KAAK,KAAK,EAAE,KAAK,KAAK,KAAG,OAY7C,CAAC;AACF,eAAO,MAAM,IAAI,GAAI,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,OAAO,KAAK,KAAG,IAO3D,CAAC;AACF,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,KAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAMpE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,QAAQ,KAAK,KAAG,QAAQ,GAAG,IAwBxD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,KAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAiBvE,CAAC"}
1
+ {"version":3,"file":"compound.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/compound.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAQ3E,eAAO,MAAM,GAAG,GAAI,OAAO,KAAK,EAAE,UAAU,KAAK,KAAG,OAoBnD,CAAC;AACF,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,KAAG,MAOtC,CAAC;AACF,eAAO,MAAM,KAAK,GAAI,OAAO,KAAK,EAAE,SAAS,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,QAa7E,CAAC;AACF,eAAO,MAAM,KAAK,GAAI,OAAO,KAAK,EAAE,QAAQ,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,QAW5E,CAAC;AACF,eAAO,MAAM,IAAI,GAAI,KAAK,KAAK,EAAE,KAAK,KAAK,KAAG,OAM7C,CAAC;AACF,eAAO,MAAM,IAAI,GAAI,KAAK,KAAK,EAAE,KAAK,KAAK,KAAG,OAa7C,CAAC;AACF,eAAO,MAAM,IAAI,GAAI,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,OAAO,KAAK,KAAG,IAO3D,CAAC;AACF,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,KAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAMpE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,QAAQ,KAAK,KAAG,QAAQ,GAAG,IAwBxD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,KAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAiBvE,CAAC"}
@@ -27,7 +27,7 @@ export declare const DefaultVmContext: Readonly<VmContext>;
27
27
  /** 获取用于执行脚本的默认执行上下文 */
28
28
  export declare function createVmContext(): Readonly<VmContext>;
29
29
  /** 创建用于执行脚本的执行上下文 */
30
- export declare function createVmContext(vmValues?: VmContextRecord | null, externValues?: Record<string, unknown> | null, describer?: ((key: string) => string | undefined) | null): VmContext;
31
- /** 创建用于执行脚本的执行上下文 */
32
30
  export declare function createVmContext(getter: (key: string) => VmValue | undefined, enumerator?: (() => Iterable<string>) | null, describer?: ((key: string) => string | undefined) | null): VmContext;
31
+ /** 创建用于执行脚本的执行上下文 */
32
+ export declare function createVmContext(vmValues?: VmContextRecord | null, externValues?: Record<string, unknown> | null, describer?: ((key: string) => string | undefined) | null): VmContext;
33
33
  //# sourceMappingURL=context.d.ts.map
@@ -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,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;AACb,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"}
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"}
@@ -21,6 +21,8 @@ export declare class VmExtern<const T extends object = object> extends VmWrapper
21
21
  /** @inheritdoc */
22
22
  same(other: VmAny): boolean;
23
23
  /** @inheritdoc */
24
+ isArrayLike(): this is VmExtern<ArrayLike<unknown>>;
25
+ /** @inheritdoc */
24
26
  toString(useBraces: boolean): string;
25
27
  /** @inheritdoc */
26
28
  get type(): TypeName;
@@ -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;AAsBzC,mCAAmC;AACnC,qBAAa,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAGnE,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;gBAD7C,KAAK,EAAE,CAAC,EACC,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,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;IAIxG,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;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
+ {"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;IAGnE,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;gBAD7C,KAAK,EAAE,CAAC,EACC,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,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;IAIxG,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirascript/mirascript",
3
- "version": "0.1.30",
3
+ "version": "0.1.32",
4
4
  "author": "CloudPSS",
5
5
  "license": "MIT",
6
6
  "description": "An expression based scripting language.",
@@ -36,8 +36,8 @@
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.30",
40
- "@mirascript/constants": "~0.1.30"
39
+ "@mirascript/constants": "~0.1.32",
40
+ "@mirascript/bindings": "~0.1.32"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^25.0.3",
package/src/cli/index.ts CHANGED
@@ -3,6 +3,7 @@ import { readFile, stat } from 'node:fs/promises';
3
3
  import { pathToFileURL } from 'node:url';
4
4
  import { InvalidArgumentError, program } from '@commander-js/extra-typings';
5
5
  import { execute } from './execute.js';
6
+ import { isNaN, PositiveInfinity } from '../helpers/utils.js';
6
7
  import pkg from '#package.json' with { type: 'json' };
7
8
  import { compileSync } from '../compiler/index.js';
8
9
  import { configCheckpoint, type VmValue } from '../vm/index.js';
@@ -41,7 +42,7 @@ export default program
41
42
  '脚本执行超时时间(毫秒,0 表示不超时)',
42
43
  (v) => {
43
44
  const ms = Number.parseFloat(v);
44
- if (Number.isNaN(ms) || ms < 0) {
45
+ if (isNaN(ms) || ms < 0) {
45
46
  throw new InvalidArgumentError('超时时间必须是非负整数');
46
47
  }
47
48
  return ms;
@@ -52,7 +53,7 @@ export default program
52
53
  .option('-e, --eval <script>', '要执行的脚本')
53
54
  .argument('[script]', '要执行的脚本文件路径(如果提供了 -e 则忽略此参数)')
54
55
  .action(async (script, opt) => {
55
- configCheckpoint(opt.timeout || Number.POSITIVE_INFINITY);
56
+ configCheckpoint(opt.timeout || PositiveInfinity);
56
57
  if (opt.eval != null) {
57
58
  const template = !!opt.template;
58
59
  await execute(opt.eval, template, opt.variable, template ? 'eval.miratpl' : 'eval.mira');
@@ -3,18 +3,17 @@ import { isFinite } from '../utils.js';
3
3
  import { toString } from './to-string.js';
4
4
 
5
5
  /** 渲染数字 */
6
- function formatNumber(value: number): string {
7
- if (!isFinite(value)) return toString(value, undefined as never);
8
- if (value === 0) return '0';
9
- const s = value.toString();
6
+ function formatNumber(finite: number): string {
7
+ if (finite === 0) return '0';
8
+ const s = finite.toString();
10
9
  let ps;
11
- const abs = Math.abs(value);
10
+ const abs = Math.abs(finite);
12
11
  if (abs >= 1000 || abs < 0.001) {
13
- const ps1 = value.toExponential();
14
- const ps2 = value.toExponential(5);
12
+ const ps1 = finite.toExponential();
13
+ const ps2 = finite.toExponential(5);
15
14
  ps = ps1.length < ps2.length ? ps1 : ps2;
16
15
  } else {
17
- ps = value.toPrecision(6);
16
+ ps = finite.toPrecision(6);
18
17
  }
19
18
  return ps.length < s.length ? ps : s;
20
19
  }
@@ -24,6 +23,9 @@ export function toFormat(value: VmAny, format: string | null | undefined): strin
24
23
  const f = format == null ? '' : format.trim();
25
24
 
26
25
  if (typeof value == 'number') {
26
+ if (!isFinite(value)) {
27
+ return toString(value, undefined as never);
28
+ }
27
29
  if (/^\.\d+$/.test(f)) {
28
30
  let digits = Math.trunc(Number(f.slice(1)));
29
31
  if (!(digits <= 100)) digits = 100;
@@ -1,8 +1,7 @@
1
1
  import type { VmAny } from '../../vm/index.js';
2
2
  import { VmError } from '../error.js';
3
3
  import { display } from '../serialize.js';
4
- import { isNaN } from '../utils.js';
5
- const { POSITIVE_INFINITY, NEGATIVE_INFINITY } = Number;
4
+ import { isNaN, NegativeInfinity, NotNumber, PositiveInfinity } from '../utils.js';
6
5
 
7
6
  /** 转换为 number */
8
7
  export function toNumber<F = undefined>(value: VmAny, fallback?: F): number | Exclude<F, undefined> {
@@ -16,20 +15,20 @@ export function toNumber<F = undefined>(value: VmAny, fallback?: F): number | Ex
16
15
  value = value.trim();
17
16
  if (value !== '') {
18
17
  if (value === 'inf' || value === '+inf' || value === 'Infinity' || value === '+Infinity') {
19
- return POSITIVE_INFINITY;
18
+ return PositiveInfinity;
20
19
  }
21
20
  if (value === '-inf' || value === '-Infinity') {
22
- return NEGATIVE_INFINITY;
21
+ return NegativeInfinity;
23
22
  }
24
23
  if (value === 'nan' || value === 'NaN') {
25
- return Number.NaN;
24
+ return NotNumber;
26
25
  }
27
26
  const num = Number(value);
28
27
  if (!isNaN(num)) return num;
29
28
  }
30
29
  }
31
30
  if (fallback === undefined) {
32
- throw new VmError(`Failed to convert value to number: ${display(value)}`, Number.NaN);
31
+ throw new VmError(`Failed to convert value to number: ${display(value)}`, NotNumber);
33
32
  }
34
33
  return fallback as Exclude<F, undefined>;
35
34
  }
@@ -1,5 +1,13 @@
1
1
  export const { isArray } = Array;
2
- export const { isFinite, isNaN, isInteger, isSafeInteger } = Number;
2
+ export const {
3
+ isFinite,
4
+ isNaN,
5
+ isInteger,
6
+ isSafeInteger,
7
+ NaN: NotNumber,
8
+ POSITIVE_INFINITY: PositiveInfinity,
9
+ NEGATIVE_INFINITY: NegativeInfinity,
10
+ } = Number;
3
11
  export const { hasOwn, keys, values, entries, create, getPrototypeOf, fromEntries, defineProperty } = Object;
4
12
  export const { apply } = Reflect;
5
13
 
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-loss-of-precision */
2
- import { isInteger, isNaN } from '../../../helpers/utils.js';
2
+ import { isInteger, isNaN, NotNumber, PositiveInfinity } from '../../../helpers/utils.js';
3
3
  import { expectNumber, VmLib } from '../helpers.js';
4
4
  const { sqrt, pow, exp } = Math;
5
5
 
@@ -18,8 +18,8 @@ const SQRT_2_PI = sqrt(2 * Math.PI);
18
18
  export const factorial = VmLib(
19
19
  (x): number => {
20
20
  let n = expectNumber('x', x);
21
- if (isNaN(n) || n < 0) return Number.NaN;
22
- if (n >= 171) return Number.POSITIVE_INFINITY; // will overflow
21
+ if (isNaN(n) || n < 0) return NotNumber;
22
+ if (n >= 171) return PositiveInfinity; // will overflow
23
23
 
24
24
  if (isInteger(n)) {
25
25
  if (n === 0 || n === 1) return 1;
@@ -1,14 +1,22 @@
1
- import { VmLib, expectArray } from '../../helpers.js';
1
+ import { NotNumber } from '../../../../helpers/utils.js';
2
+ import { isVmExtern } from '../../../types/index.js';
3
+ import { VmLib, expectArray, throwUnexpectedTypeError } from '../../helpers.js';
2
4
 
3
5
  export const len = VmLib(
4
6
  (arr) => {
5
- expectArray('arr', arr, Number.NaN);
7
+ if (isVmExtern(arr)) {
8
+ if (!arr.isArrayLike()) {
9
+ throwUnexpectedTypeError('arr', 'array-like extern', arr, NotNumber);
10
+ }
11
+ return arr.value.length;
12
+ }
13
+ expectArray('arr', arr, NotNumber);
6
14
  return arr.length;
7
15
  },
8
16
  {
9
17
  summary: '返回数组的长度',
10
18
  params: { arr: '要求长度的数组' },
11
- paramsType: { arr: 'array' },
19
+ paramsType: { arr: 'array | extern' },
12
20
  returnsType: 'number',
13
21
  examples: ['len([1, 2, 3]) // 3'],
14
22
  },
@@ -1,13 +1,13 @@
1
1
  import { VM_ARRAY_MAX_LENGTH } from '../../../../helpers/constants.js';
2
2
  import { toNumber, toString } from '../../../../helpers/convert/index.js';
3
3
  import { isVmArray, isVmRecord } from '../../../../helpers/types.js';
4
- import { isArray, isInteger, isNaN } from '../../../../helpers/utils.js';
4
+ import { isArray, isInteger, isNaN, NotNumber } from '../../../../helpers/utils.js';
5
5
  import { $El } from '../../../operations/helpers.js';
6
6
  import type { VmArray, VmConst, VmValue } from '../../../types/index.js';
7
7
  import { VmLib, expectArrayOrRecord, expectConst, throwError } from '../../helpers.js';
8
8
 
9
9
  const arrIndex = (index: NonNullable<VmConst>): number => {
10
- const idx = Math.trunc(toNumber(index, Number.NaN));
10
+ const idx = Math.trunc(toNumber(index, NotNumber));
11
11
  if (isNaN(idx) || idx < 0) {
12
12
  throwError('Array index must be a non-negative integer', index);
13
13
  }
@@ -1,5 +1,5 @@
1
1
  import { describeParam, expectNumberRange, throwError, throwUnexpectedTypeError, VmLib } from '../helpers.js';
2
- import { isNaN, isFinite } from '../../../helpers/utils.js';
2
+ import { isNaN, NotNumber, isFinite } from '../../../helpers/utils.js';
3
3
  import { toNumber } from '../../../helpers/convert/to-number.js';
4
4
  import { display } from '../../../helpers/serialize.js';
5
5
  import type { VmAny } from '../../types/index.js';
@@ -8,7 +8,7 @@ const fromNumber = (datetime: number, fallback: boolean): number | null => {
8
8
  const n = new Date(datetime).getTime();
9
9
  if (isFinite(n)) return n;
10
10
  if (fallback) return null;
11
- throwError(`${describeParam('datetime')} is an invalid timestamp: ${display(datetime)}`, Number.NaN);
11
+ throwError(`${describeParam('datetime')} is an invalid timestamp: ${display(datetime)}`, NotNumber);
12
12
  };
13
13
 
14
14
  const getTimestamp = (datetime: VmAny, fallback: boolean): number | null => {
@@ -20,16 +20,16 @@ const getTimestamp = (datetime: VmAny, fallback: boolean): number | null => {
20
20
  }
21
21
  if (typeof datetime != 'string') {
22
22
  if (fallback) return null;
23
- throwUnexpectedTypeError('datetime', 'number | string', datetime, Number.NaN);
23
+ throwUnexpectedTypeError('datetime', 'number | string', datetime, NotNumber);
24
24
  }
25
- const num = toNumber(datetime, Number.NaN);
25
+ const num = toNumber(datetime, NotNumber);
26
26
  if (!isNaN(num)) {
27
27
  return fromNumber(num, fallback);
28
28
  }
29
29
  const parsed = Date.parse(datetime);
30
30
  if (isFinite(parsed)) return parsed;
31
31
  if (fallback) return null;
32
- throwError(`${describeParam('datetime')} cannot be parsed as datetime: ${display(datetime)}`, Number.NaN);
32
+ throwError(`${describeParam('datetime')} cannot be parsed as datetime: ${display(datetime)}`, NotNumber);
33
33
  };
34
34
 
35
35
  export const to_timestamp = VmLib(
@@ -1,4 +1,5 @@
1
1
  import { toBoolean, toFormat, toNumber, toString } from '../../../helpers/convert/index.js';
2
+ import { NotNumber } from '../../../helpers/utils.js';
2
3
  import { expectString, required, VmLib } from '../helpers.js';
3
4
 
4
5
  export const to_string = VmLib(
@@ -20,7 +21,7 @@ export const to_string = VmLib(
20
21
 
21
22
  export const to_number = VmLib(
22
23
  (data, fallback) => {
23
- required('data', data, Number.NaN);
24
+ required('data', data, NotNumber);
24
25
  return toNumber(data, fallback);
25
26
  },
26
27
  {
@@ -1,6 +1,6 @@
1
1
  import type { Writable } from 'type-fest';
2
2
  import { VM_ARRAY_MAX_LENGTH } from '../../helpers/constants.js';
3
- import { isNaN, entries, fromEntries, isSafeInteger, isFinite } from '../../helpers/utils.js';
3
+ import { isNaN, NotNumber, entries, fromEntries, isSafeInteger, isFinite } from '../../helpers/utils.js';
4
4
  import { toBoolean, toNumber, toString } from '../../helpers/convert/index.js';
5
5
  import { display } from '../../helpers/serialize.js';
6
6
  import { isVmArray, isVmFunction, isVmPrimitive, isVmConst, isVmCallable, isVmRecord } from '../../helpers/types.js';
@@ -75,10 +75,10 @@ export function required<const T = VmValue>(
75
75
 
76
76
  /** 标记并转换参数为数字 */
77
77
  export function expectNumber(name: ParamIndex, value: VmAny): number {
78
- required(name, value, Number.NaN);
78
+ required(name, value, NotNumber);
79
79
  const v = toNumber(value, null);
80
80
  if (v == null) {
81
- throwUnconvertedTypeError(name, 'number', value, Number.NaN);
81
+ throwUnconvertedTypeError(name, 'number', value, NotNumber);
82
82
  }
83
83
  return v;
84
84
  }
@@ -86,7 +86,7 @@ export function expectNumber(name: ParamIndex, value: VmAny): number {
86
86
  export function expectNumberRange(name: ParamIndex, value: VmAny, min: number, max: number): number {
87
87
  const v = expectNumber(name, value);
88
88
  if (!isFinite(v)) {
89
- throwError(`${describeParam(name)} is not a finite number: ${display(value)}`, Number.NaN);
89
+ throwError(`${describeParam(name)} is not a finite number: ${display(value)}`, NotNumber);
90
90
  }
91
91
  if (v < min) {
92
92
  throwError(`${describeParam(name)} is less than minimum value ${min}: ${display(value)}`, min);
@@ -1,12 +1,12 @@
1
1
  import { VmError } from '../../helpers/error.js';
2
- import { hasOwnEnumerable, isNaN, keys, create } from '../../helpers/utils.js';
3
- import { toString } from '../../helpers/convert/index.js';
2
+ import { hasOwnEnumerable, isNaN, NotNumber, keys, create } from '../../helpers/utils.js';
3
+ import { toNumber, toString } from '../../helpers/convert/index.js';
4
4
  import { display } from '../../helpers/serialize.js';
5
5
  import { isVmPrimitive, isVmArray, isVmRecord, isVmFunction, isVmExtern, isVmWrapper } from '../../helpers/types.js';
6
- import type { VmAny, VmImmutable, VmRecord, VmValue, VmConst } from '../types/index.js';
6
+ import type { VmAny, VmRecord, VmValue, VmConst } from '../types/index.js';
7
7
  import { isSame } from './utils.js';
8
8
  import { $AssertInit } from './common.js';
9
- import { $ToNumber, $ToString } from './convert.js';
9
+ import { $ToString } from './convert.js';
10
10
 
11
11
  const { trunc } = Math;
12
12
  const { at } = Array.prototype;
@@ -76,7 +76,8 @@ export const $Has = (obj: VmAny, key: VmAny): boolean => {
76
76
  export const $Get = (obj: VmAny, key: VmAny): VmValue => {
77
77
  $AssertInit(obj);
78
78
  if (isVmArray(obj)) {
79
- const index = $ToNumber(key);
79
+ $AssertInit(key);
80
+ const index = toNumber(key, NotNumber);
80
81
  if (isNaN(index)) return null;
81
82
  return (at.call(obj, trunc(index)) as VmConst | undefined) ?? null;
82
83
  }
@@ -84,7 +85,7 @@ export const $Get = (obj: VmAny, key: VmAny): VmValue => {
84
85
  if (obj == null || typeof obj != 'object') return null;
85
86
  if (isVmWrapper(obj)) return obj.get(pk) ?? null;
86
87
  if (!hasOwnEnumerable(obj, pk)) return null;
87
- return (obj as Record<string, VmImmutable>)[pk] ?? null;
88
+ return obj[pk] ?? null;
88
89
  };
89
90
  export const $Set = (obj: VmAny, key: VmAny, value: VmAny): void => {
90
91
  $AssertInit(obj);
@@ -200,14 +200,14 @@ freeze(FactoryVmContext.prototype);
200
200
  export function createVmContext(): Readonly<VmContext>;
201
201
  /** 创建用于执行脚本的执行上下文 */
202
202
  export function createVmContext(
203
- vmValues?: VmContextRecord | null,
204
- externValues?: Record<string, unknown> | null,
203
+ getter: (key: string) => VmValue | undefined,
204
+ enumerator?: (() => Iterable<string>) | null,
205
205
  describer?: ((key: string) => string | undefined) | null,
206
206
  ): VmContext;
207
207
  /** 创建用于执行脚本的执行上下文 */
208
208
  export function createVmContext(
209
- getter: (key: string) => VmValue | undefined,
210
- enumerator?: (() => Iterable<string>) | null,
209
+ vmValues?: VmContextRecord | null,
210
+ externValues?: Record<string, unknown> | null,
211
211
  describer?: ((key: string) => string | undefined) | null,
212
212
  ): VmContext;
213
213
 
@@ -14,6 +14,8 @@ const ObjectToString = ObjectPrototype.toString;
14
14
  const FunctionToString = Function.prototype.toString;
15
15
  const ArrayToString = Array.prototype.toString;
16
16
  const ArrayMap = Array.prototype.map;
17
+ // eslint-disable-next-line @typescript-eslint/unbound-method
18
+ const TypedArrayToString = Uint8Array.prototype.toString;
17
19
 
18
20
  /** 获取类的名称,如果无法确定则返回 null */
19
21
  // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
@@ -120,13 +122,17 @@ export class VmExtern<const T extends object = object> extends VmWrapper<T> {
120
122
  return this.value === other.value && this.thisArg === other.thisArg;
121
123
  }
122
124
  /** @inheritdoc */
125
+ isArrayLike(): this is VmExtern<ArrayLike<unknown>> {
126
+ return isArray(this.value) || (ArrayBuffer.isView(this.value) && 'length' in this.value);
127
+ }
128
+ /** @inheritdoc */
123
129
  override toString(useBraces: boolean): string {
124
130
  // eslint-disable-next-line @typescript-eslint/unbound-method
125
131
  const { toString } = this.value;
126
132
  if (typeof toString != 'function' || toString === ObjectToString || toString === FunctionToString) {
127
133
  return super.toString(useBraces);
128
134
  }
129
- if (toString === ArrayToString && isArray(this.value)) {
135
+ if ((toString === ArrayToString || toString === TypedArrayToString) && this.isArrayLike()) {
130
136
  const mapped = ArrayMap.call(this.value, (item: unknown) => {
131
137
  if (item === undefined) return '';
132
138
  return innerToString(wrapToVmValue(item ?? null, null, null), true);
@@ -144,7 +150,7 @@ export class VmExtern<const T extends object = object> extends VmWrapper<T> {
144
150
  /** @inheritdoc */
145
151
  override get tag(): string {
146
152
  const tag = ObjectToString.call(this.value).slice(8, -1);
147
- if (isArray(this.value)) {
153
+ if (this.isArrayLike()) {
148
154
  return `${tag}(${this.value.length})`;
149
155
  } else if (tag === 'Object') {
150
156
  const proto = getPrototypeOf(this.value);