@mirascript/mirascript 0.1.76 → 0.1.78

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 (63) hide show
  1. package/dist/{chunk-VI74OKFU.js → chunk-BITOQYYQ.js} +99 -89
  2. package/dist/chunk-BITOQYYQ.js.map +6 -0
  3. package/dist/{chunk-ZRLBJK6A.js → chunk-VNQQF2W7.js} +127 -47
  4. package/dist/chunk-VNQQF2W7.js.map +6 -0
  5. package/dist/compiler/emit/index.d.ts.map +1 -1
  6. package/dist/compiler/emit-script.d.ts.map +1 -1
  7. package/dist/compiler/worker.js +1 -1
  8. package/dist/helpers/convert/to-number.d.ts.map +1 -1
  9. package/dist/helpers/convert/to-string.d.ts +2 -0
  10. package/dist/helpers/convert/to-string.d.ts.map +1 -1
  11. package/dist/helpers/error.d.ts +1 -0
  12. package/dist/helpers/error.d.ts.map +1 -1
  13. package/dist/helpers/serialize.d.ts.map +1 -1
  14. package/dist/helpers/utils.d.ts +9 -0
  15. package/dist/helpers/utils.d.ts.map +1 -1
  16. package/dist/index.js +3 -3
  17. package/dist/index.js.map +1 -1
  18. package/dist/subtle.js +2 -2
  19. package/dist/vm/lib/global/debug.d.ts.map +1 -1
  20. package/dist/vm/lib/global/json.d.ts +3 -2
  21. package/dist/vm/lib/global/json.d.ts.map +1 -1
  22. package/dist/vm/lib/global/math/tgamma.d.ts.map +1 -1
  23. package/dist/vm/lib/global/sequence/entries.d.ts +1 -1
  24. package/dist/vm/lib/global/sequence/entries.d.ts.map +1 -1
  25. package/dist/vm/lib/global/sequence/fold.d.ts +3 -0
  26. package/dist/vm/lib/global/sequence/fold.d.ts.map +1 -0
  27. package/dist/vm/lib/global/sequence/group.d.ts +3 -0
  28. package/dist/vm/lib/global/sequence/group.d.ts.map +1 -0
  29. package/dist/vm/lib/global/sequence/index.d.ts +2 -0
  30. package/dist/vm/lib/global/sequence/index.d.ts.map +1 -1
  31. package/dist/vm/lib/global/sequence/new.d.ts.map +1 -1
  32. package/dist/vm/lib/global/sequence/zip.d.ts +2 -2
  33. package/dist/vm/lib/global/sequence/zip.d.ts.map +1 -1
  34. package/dist/vm/lib/helpers.d.ts +2 -2
  35. package/dist/vm/lib/helpers.d.ts.map +1 -1
  36. package/dist/vm/operations/compound.d.ts.map +1 -1
  37. package/package.json +5 -5
  38. package/src/compiler/compile-fast.ts +1 -1
  39. package/src/compiler/emit/index.ts +0 -6
  40. package/src/compiler/emit-script.ts +1 -0
  41. package/src/helpers/convert/to-number.ts +5 -10
  42. package/src/helpers/convert/to-string.ts +3 -2
  43. package/src/helpers/error.ts +3 -1
  44. package/src/helpers/serialize.ts +4 -9
  45. package/src/helpers/types.ts +1 -1
  46. package/src/helpers/utils.ts +27 -0
  47. package/src/vm/lib/global/debug.ts +4 -8
  48. package/src/vm/lib/global/json.ts +21 -9
  49. package/src/vm/lib/global/math/tgamma.ts +8 -14
  50. package/src/vm/lib/global/sequence/entries.ts +6 -1
  51. package/src/vm/lib/global/sequence/fold.ts +30 -0
  52. package/src/vm/lib/global/sequence/group.ts +37 -0
  53. package/src/vm/lib/global/sequence/index.ts +2 -0
  54. package/src/vm/lib/global/sequence/map-filter.ts +2 -2
  55. package/src/vm/lib/global/sequence/new.ts +8 -2
  56. package/src/vm/lib/global/sequence/with.ts +4 -4
  57. package/src/vm/lib/global/sequence/zip.ts +21 -10
  58. package/src/vm/lib/helpers.ts +4 -4
  59. package/src/vm/lib/mod/matrix.ts +2 -2
  60. package/src/vm/operations/compound.ts +13 -6
  61. package/src/vm/types/extern.ts +1 -1
  62. package/dist/chunk-VI74OKFU.js.map +0 -6
  63. package/dist/chunk-ZRLBJK6A.js.map +0 -6
@@ -1,3 +1,4 @@
1
+ import type { VmConst, VmRecord } from '../vm/index.js';
1
2
  export declare const isArray: (arg: any) => arg is unknown[];
2
3
  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
4
  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: {
@@ -42,4 +43,12 @@ export declare const keysLength: (o: object) => number;
42
43
  * Determines whether an object has an enumerable property with the specified name.
43
44
  */
44
45
  export declare const hasOwnEnumerable: (o: object, v: PropertyKey) => boolean;
46
+ /**
47
+ * Set property on an vm record.
48
+ */
49
+ export declare const setRecord: (obj: Record<string, VmConst | undefined>, key: string, value: VmConst | undefined) => void;
50
+ /**
51
+ * Get property from an vm record.
52
+ */
53
+ export declare const getRecord: (obj: VmRecord, key: string) => VmConst | undefined;
45
54
  //# sourceMappingURL=utils.d.ts.map
@@ -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,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,WAAW,2FAAE,cAAc;;;;+BAAE,mBAAmB,uBAAE,MAAM;;;;;;CACpG,CAAC;AACX,eAAO,MAAQ,KAAK,wBAAE,cAAc,+BAAY,CAAC;AAGjD,eAAe;AACf,eAAO,MAAM,UAAU,MAEa,MAAM,KAAK,MACA,CAAC;AAEhD;;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,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAExD,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,WAAW,2FAAE,cAAc;;;;+BAAE,mBAAmB,uBAAE,MAAM;;;;;;CACpG,CAAC;AACX,eAAO,MAAQ,KAAK,wBAAE,cAAc,+BAAY,CAAC;AAGjD,eAAe;AACf,eAAO,MAAM,UAAU,MAEa,MAAM,KAAK,MACA,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAGxB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC;AAG5C;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,EAAE,KAAK,MAAM,EAAE,OAAO,OAAO,GAAG,SAAS,KAAG,IAW7G,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,KAAK,QAAQ,EAAE,KAAK,MAAM,KAAG,OAAO,GAAG,SAGhE,CAAC"}
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  unwrapFromVmValue,
13
13
  wrapScript,
14
14
  wrapToVmValue
15
- } from "./chunk-ZRLBJK6A.js";
15
+ } from "./chunk-VNQQF2W7.js";
16
16
  import {
17
17
  VmError,
18
18
  defineProperty,
@@ -39,7 +39,7 @@ import {
39
39
  isVmValue,
40
40
  isVmWrapper,
41
41
  serialize
42
- } from "./chunk-VI74OKFU.js";
42
+ } from "./chunk-BITOQYYQ.js";
43
43
 
44
44
  // src/compiler/compile-fast.ts
45
45
  import { isKeyword } from "@mirascript/constants";
@@ -47,7 +47,7 @@ var REG_NUMBER_FULL = /^(?:[+-])?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?$/;
47
47
  var REG_IDENTIFIER_FAST = /^(?:\$+|@+|[A-Za-z])[a-zA-Z0-9_]*$/;
48
48
  var FAST_SCRIPT_MAX_LEN = 32;
49
49
  function safeStringify(value) {
50
- return JSON.stringify(value).replaceAll(/[<>&\u2028\u2029/]/gu, (c) => {
50
+ return JSON.stringify(value).replaceAll(/[<>&\u{2028}\u{2029}/]/gu, (c) => {
51
51
  return String.raw`\u${c.codePointAt(0)?.toString(16).padStart(4, "0")}`;
52
52
  });
53
53
  }
package/dist/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/compiler/compile-fast.ts", "../src/compiler/worker-manager.ts", "../src/compiler/index.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/dist/subtle.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  lib,
7
7
  operations_exports,
8
8
  wrapScript
9
- } from "./chunk-ZRLBJK6A.js";
9
+ } from "./chunk-VNQQF2W7.js";
10
10
  import {
11
11
  DiagnosticCode,
12
12
  constants_exports,
@@ -26,7 +26,7 @@ import {
26
26
  serializeRecord,
27
27
  serializeRecordKey,
28
28
  serializeString
29
- } from "./chunk-VI74OKFU.js";
29
+ } from "./chunk-BITOQYYQ.js";
30
30
 
31
31
  // src/subtle.ts
32
32
  import { OpCode, isKeyword } from "@mirascript/constants";
@@ -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;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;AAgJD,aAAa;AACb,KAAK,YAAY,GAAG;IAChB,eAAe;IACf,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IACrE;;;;;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,kEAAkE;IAClE,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,KAAK,EAAE,KAAK,YAAY,CAAC;IACrE,0CAA0C;IAC1C,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5F,mBAAmB;IACnB,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CAC5D,CAAC;AAQF,eAAO,MAAM,WAAW,gJAcvB,CAAC;AAEF,eAAO,MAAM,KAAK,aACJ,KAAK,gEAclB,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;AA4ID,aAAa;AACb,KAAK,YAAY,GAAG;IAChB,eAAe;IACf,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IACrE;;;;;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,kEAAkE;IAClE,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,KAAK,EAAE,KAAK,YAAY,CAAC;IACrE,0CAA0C;IAC1C,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5F,mBAAmB;IACnB,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CAC5D,CAAC;AAQF,eAAO,MAAM,WAAW,gJAcvB,CAAC;AAEF,eAAO,MAAM,KAAK,aACJ,KAAK,gEAclB,CAAC"}
@@ -1,3 +1,4 @@
1
- export declare const to_json: ((data: import("../../types/index.js").VmValue | undefined) => string | null) & import("../helpers.js").VmLibOption & Record<never, never>;
2
- export declare const from_json: ((json: import("../../types/index.js").VmValue | undefined, fallback: import("../../types/index.js").VmValue | undefined) => string | number | boolean | import("../../types/index.js").VmRecord | import("../../types/index.js").VmArray | import("../../types/function.js").VmFunction | import("../../types/module.js").VmModule<Record<string, import("../../types/index.js").VmImmutable>> | import("../../types/extern.js").VmExtern<object> | null) & import("../helpers.js").VmLibOption & Record<never, never>;
1
+ import { type VmValue } from '../../types/index.js';
2
+ export declare const to_json: ((data: VmValue | undefined) => string | null | undefined) & import("../helpers.js").VmLibOption & Record<never, never>;
3
+ export declare const from_json: ((json: VmValue | undefined, fallback: VmValue | undefined) => string | number | boolean | import("../../types/index.js").VmRecord | import("../../types/index.js").VmArray | import("../../types/function.js").VmFunction | import("../../types/module.js").VmModule<Record<string, import("../../types/index.js").VmImmutable>> | import("../../types/extern.js").VmExtern<object> | null) & import("../helpers.js").VmLibOption & Record<never, never>;
3
4
  //# sourceMappingURL=json.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/json.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,4IAmBnB,CAAC;AAEF,eAAO,MAAM,SAAS,yfAmBrB,CAAC"}
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../src/vm/lib/global/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAI5E,eAAO,MAAM,OAAO,yHA+BnB,CAAC;AAEF,eAAO,MAAM,SAAS,2bAmBrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tgamma.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/math/tgamma.ts"],"names":[],"mappings":"AA2MA,eAAO,MAAM,KAAK,kIAWjB,CAAC;AAgBF,eAAO,MAAM,SAAS,2DACb,MAAM,iEAWd,CAAC"}
1
+ {"version":3,"file":"tgamma.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/math/tgamma.ts"],"names":[],"mappings":"AAqMA,eAAO,MAAM,KAAK,kIAWjB,CAAC;AAgBF,eAAO,MAAM,SAAS,2DACb,MAAM,iEAWd,CAAC"}
@@ -6,6 +6,6 @@ export declare const entries: ((data: import("../../../types/index.js").VmValue
6
6
  1: VmConst;
7
7
  }[] | {
8
8
  0: string;
9
- 1: string | number | boolean | import("../../../types/index.js").VmRecord | import("../../../types/index.js").VmArray | null;
9
+ 1: VmConst;
10
10
  }[]) & import("../../helpers.js").VmLibOption & Record<never, never>;
11
11
  //# sourceMappingURL=entries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/entries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAI9E,eAAO,MAAM,IAAI,wJAwBhB,CAAC;AAEF,eAAO,MAAM,MAAM,8KAgBlB,CAAC;AAEF,eAAO,MAAM,OAAO;OAIc,MAAM;OAAK,OAAO;;;;oEAenD,CAAC"}
1
+ {"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/entries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAI9E,eAAO,MAAM,IAAI,wJAwBhB,CAAC;AAEF,eAAO,MAAM,MAAM,8KAgBlB,CAAC;AAEF,eAAO,MAAM,OAAO;OAIc,MAAM;OAAK,OAAO;;OAOlB,MAAM;OAAK,OAAO;oEAanD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { VmValue } from '../../../types/index.js';
2
+ export declare const fold: ((data: VmValue | undefined, initial: VmValue | undefined, f: VmValue | undefined) => VmValue) & import("../../helpers.js").VmLibOption & Record<never, never>;
3
+ //# sourceMappingURL=fold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fold.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/fold.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGvD,eAAO,MAAM,IAAI,gKAyBhB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { VmConst } from '../../../types/index.js';
2
+ export declare const group_by: ((data: import("../../../types/index.js").VmValue | undefined, key: import("../../../types/index.js").VmValue | undefined) => Record<string, VmConst[]>) & import("../../helpers.js").VmLibOption & Record<never, never>;
3
+ //# sourceMappingURL=group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/group.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGvD,eAAO,MAAM,QAAQ,0NA8BpB,CAAC"}
@@ -11,4 +11,6 @@ export * from './sort.js';
11
11
  export * from './unique.js';
12
12
  export * from './repeat.js';
13
13
  export * from './new.js';
14
+ export * from './fold.js';
15
+ export * from './group.js';
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/new.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAW,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAO1E,eAAO,MAAM,UAAU,sIACA,QAAQ,iEAyB9B,CAAC;AAEF,eAAO,MAAM,SAAS,wIACG,OAAO,iEAkB/B,CAAC"}
1
+ {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/new.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAW,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAa1E,eAAO,MAAM,UAAU,sIACA,QAAQ,iEAyB9B,CAAC;AAEF,eAAO,MAAM,SAAS,wIACG,OAAO,iEAkB/B,CAAC"}
@@ -1,3 +1,3 @@
1
- import { type VmConst } from '../../../types/index.js';
2
- export declare const zip: ((data: import("../../../types/index.js").VmValue | undefined) => Record<string | number, VmConst>[]) & import("../../helpers.js").VmLibOption & Record<never, never>;
1
+ import { type VmArray, type VmRecord } from '../../../types/index.js';
2
+ export declare const zip: ((data: import("../../../types/index.js").VmValue | undefined) => (VmRecord | VmArray)[]) & import("../../helpers.js").VmLibOption & Record<never, never>;
3
3
  //# sourceMappingURL=zip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zip.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/zip.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,OAAO,EAAgB,MAAM,yBAAyB,CAAC;AAIhF,eAAO,MAAM,GAAG,uKAgCf,CAAC"}
1
+ {"version":3,"file":"zip.d.ts","sourceRoot":"","sources":["../../../../../src/vm/lib/global/sequence/zip.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAI/F,eAAO,MAAM,GAAG,2JA0Cf,CAAC"}
@@ -42,9 +42,9 @@ export declare function getNumbers(args: readonly VmAny[]): number[];
42
42
  /** 将值转为数组长度 */
43
43
  export declare function arrayLen(len: number | null | undefined): number;
44
44
  /** 应用映射函数 */
45
- export declare function map(data: VmConst,
45
+ export declare function iterate<T extends VmConst>(data: T,
46
46
  /** 返回 `undefined` 表示跳过该元素 */
47
- mapper: (value: VmConst, index: number | string | null, data: VmConst) => VmConst | undefined): VmConst;
47
+ mapper: (value: VmConst, index: number | string | null, data: T) => VmConst | undefined): VmConst;
48
48
  /** 库函数选项 */
49
49
  export type VmLibOption = Pick<VmFunctionOption, 'summary' | 'params' | 'returns' | 'examples' | 'deprecated'>;
50
50
  /** 库函数 */
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/vm/lib/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/vm/lib/helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compound.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/compound.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAS3E,mBAAmB;AACnB,eAAO,MAAM,GAAG,GAAI,OAAO,KAAK,EAAE,UAAU,KAAK,KAAG,OAoBnD,CAAC;AAEF,aAAa;AACb,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,KAAG,MAOtC,CAAC;AAEF,iBAAiB;AACjB,eAAO,MAAM,KAAK,GAAI,OAAO,KAAK,EAAE,SAAS,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,QAa7E,CAAC;AAEF,iBAAiB;AACjB,eAAO,MAAM,KAAK,GAAI,OAAO,KAAK,EAAE,QAAQ,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,QAW5E,CAAC;AACF,eAAe;AACf,eAAO,MAAM,IAAI,GAAI,KAAK,KAAK,EAAE,KAAK,KAAK,KAAG,OAM7C,CAAC;AAEF,WAAW;AACX,eAAO,MAAM,IAAI,GAAI,KAAK,KAAK,EAAE,KAAK,KAAK,KAAG,OAuB7C,CAAC;AACF,WAAW;AACX,eAAO,MAAM,IAAI,GAAI,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,OAAO,KAAK,KAAG,IAM3D,CAAC;AACF,cAAc;AACd,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,KAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAMpE,CAAC;AACF,WAAW;AACX,eAAO,MAAM,aAAa,GAAI,QAAQ,KAAK,KAAG,QAAQ,GAAG,IAuBxD,CAAC;AAEF,WAAW;AACX,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,KAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAqBvE,CAAC"}
1
+ {"version":3,"file":"compound.d.ts","sourceRoot":"","sources":["../../../src/vm/operations/compound.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAS3E,mBAAmB;AACnB,eAAO,MAAM,GAAG,GAAI,OAAO,KAAK,EAAE,UAAU,KAAK,KAAG,OAoBnD,CAAC;AAEF,aAAa;AACb,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,KAAG,MAOtC,CAAC;AAEF,iBAAiB;AACjB,eAAO,MAAM,KAAK,GAAI,OAAO,KAAK,EAAE,SAAS,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,QAY7E,CAAC;AAEF,iBAAiB;AACjB,eAAO,MAAM,KAAK,GAAI,OAAO,KAAK,EAAE,QAAQ,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KAAG,QAW5E,CAAC;AACF,eAAe;AACf,eAAO,MAAM,IAAI,GAAI,KAAK,KAAK,EAAE,KAAK,KAAK,KAAG,OAM7C,CAAC;AAEF,WAAW;AACX,eAAO,MAAM,IAAI,GAAI,KAAK,KAAK,EAAE,KAAK,KAAK,KAAG,OAsB7C,CAAC;AACF,WAAW;AACX,eAAO,MAAM,IAAI,GAAI,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,OAAO,KAAK,KAAG,IAM3D,CAAC;AACF,cAAc;AACd,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,KAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAMpE,CAAC;AACF,WAAW;AACX,eAAO,MAAM,aAAa,GAAI,QAAQ,KAAK,KAAG,QAAQ,GAAG,IAuBxD,CAAC;AAEF,WAAW;AACX,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,KAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAqBvE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirascript/mirascript",
3
- "version": "0.1.76",
3
+ "version": "0.1.78",
4
4
  "author": "CloudPSS",
5
5
  "license": "MIT",
6
6
  "description": "An expression based scripting language.",
@@ -41,15 +41,15 @@
41
41
  "dependencies": {
42
42
  "@cloudpss/worker": "^0.1.11",
43
43
  "source-map-js": "^1.2.1",
44
- "supports-color": "^10.2.2",
45
- "@mirascript/bindings": "~0.1.76",
46
- "@mirascript/constants": "~0.1.76"
44
+ "supports-color": "^11.0.0",
45
+ "@mirascript/bindings": "~0.1.78",
46
+ "@mirascript/constants": "~0.1.78"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/node": "^26.1.1",
50
50
  "ava": "^8.0.1",
51
51
  "c8": "^12.0.0",
52
- "tinybench": "^6.0.2",
52
+ "tinybench": "^6.1.2",
53
53
  "type-fest": "^5.8.0"
54
54
  },
55
55
  "scripts": {
@@ -20,7 +20,7 @@ const FAST_SCRIPT_MAX_LEN = 32;
20
20
 
21
21
  /** 生成安全的 JS 字符串 */
22
22
  function safeStringify(value: string): string {
23
- return JSON.stringify(value).replaceAll(/[<>&\u2028\u2029/]/gu, (c) => {
23
+ return JSON.stringify(value).replaceAll(/[<>&\u{2028}\u{2029}/]/gu, (c) => {
24
24
  return String.raw`\u${c.codePointAt(0)?.toString(16).padStart(4, '0')}`;
25
25
  });
26
26
  }
@@ -174,12 +174,6 @@ export class Emitter {
174
174
  this.codeLines.push(body);
175
175
  break;
176
176
  }
177
- if (opcode === OpCode.ElIf) {
178
- this.codeOffset++;
179
- const body = this.ident(-1) + `} else `;
180
- this.codeLines.push(body);
181
- return this.readCode();
182
- }
183
177
  this.readCode();
184
178
  }
185
179
  return this.readBlockEnd(OpCode.IfEnd);
@@ -8,6 +8,7 @@ import { DiagnosticCode, formatDiagnostics, parseDiagnostics } from './diagnosti
8
8
  export class CompileError extends Error {
9
9
  constructor(
10
10
  source: ScriptInput,
11
+ // eslint-disable-next-line unicorn/custom-error-definition
11
12
  diagnostics: Uint32Array,
12
13
  readonly fileName: string | undefined,
13
14
  ) {
@@ -1,34 +1,29 @@
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, NegativeInfinity, NotNumber, PositiveInfinity } from '../utils.js';
4
+ import { NegativeInfinity, NotNumber, PositiveInfinity } from '../utils.js';
5
5
 
6
6
  /** 将字符串转换为数字 */
7
7
  function parseNumericLiteral(value: string): number | null {
8
- if (value === '') return null;
9
8
  const ch0 = value.charAt(0);
10
9
  if (ch0 < '0' || ch0 > '9') {
11
10
  return null;
12
11
  }
13
12
  // 二进制
14
13
  if (/^0[bB][01]+$/.test(value)) {
15
- const num = Number.parseInt(value.slice(2), 2);
16
- return isNaN(num) ? null : num;
14
+ return Number.parseInt(value.slice(2), 2);
17
15
  }
18
16
  // 八进制
19
17
  if (/^0[oO][0-7]+$/.test(value)) {
20
- const num = Number.parseInt(value.slice(2), 8);
21
- return isNaN(num) ? null : num;
18
+ return Number.parseInt(value.slice(2), 8);
22
19
  }
23
20
  // 十六进制
24
21
  if (/^0[xX][0-9a-fA-F]+$/.test(value)) {
25
- const num = Number.parseInt(value.slice(2), 16);
26
- return isNaN(num) ? null : num;
22
+ return Number.parseInt(value.slice(2), 16);
27
23
  }
28
24
  // 十进制/科学计数法
29
25
  if (/^[0-9]+(\.[0-9]+)?([eE][+-]?[0-9]+)?$/.test(value)) {
30
- const num = Number.parseFloat(value);
31
- return isNaN(num) ? null : num;
26
+ return Number.parseFloat(value);
32
27
  }
33
28
  return null;
34
29
  }
@@ -5,17 +5,18 @@ import { display, displayFunction } from '../serialize.js';
5
5
  import { keys, isNaN } from '../utils.js';
6
6
 
7
7
  /** 转换为 string */
8
- function numberToString(value: number): string {
8
+ export function numberToString(value: number, minusZero: boolean): string {
9
9
  if (isNaN(value)) return 'nan';
10
10
  if (value === Infinity) return 'inf';
11
11
  if (value === -Infinity) return '-inf';
12
+ if (minusZero && value === 0 && 1 / value < 0) return '-0';
12
13
  return String(value);
13
14
  }
14
15
 
15
16
  /** 转换为 string */
16
17
  export function innerToString(value: VmAny, useBraces: boolean): string {
17
18
  if (value == null) return 'nil';
18
- if (typeof value == 'number') return numberToString(value);
19
+ if (typeof value == 'number') return numberToString(value, false);
19
20
  if (typeof value == 'string' || typeof value == 'boolean') return String(value);
20
21
  if (typeof value == 'function') return displayFunction(value);
21
22
  if (isVmWrapper(value)) return value.toString(useBraces);
@@ -6,12 +6,14 @@ import type { VmAny } from '../vm/types/index.js';
6
6
  export class VmError extends Error {
7
7
  constructor(
8
8
  message: string,
9
+ // eslint-disable-next-line unicorn/custom-error-definition
9
10
  readonly recovered: VmAny,
10
11
  ) {
11
12
  super(message);
12
- this.name = 'VmError';
13
13
  }
14
14
 
15
+ override readonly name = 'VmError';
16
+
15
17
  /** 从其他错误构造 */
16
18
  static from(prefix: string, error: unknown, recovered: VmAny): VmError {
17
19
  if (prefix) {
@@ -1,6 +1,6 @@
1
1
  import { REG_IDENTIFIER_FULL, REG_ORDINAL_FULL } from '@mirascript/constants';
2
2
  import type { VmArray, VmExtern, VmFunction, VmModule, VmAny, VmRecord } from '../vm/index.js';
3
- import { entries, hasOwn, isFinite, isNaN } from '../helpers/utils.js';
3
+ import { entries, hasOwn } from '../helpers/utils.js';
4
4
  import {
5
5
  getVmFunctionInfo,
6
6
  isVmArray,
@@ -10,6 +10,7 @@ import {
10
10
  isVmModule,
11
11
  isVmRecord,
12
12
  } from './types.js';
13
+ import { numberToString } from './convert/to-string.js';
13
14
 
14
15
  /** 序列化 nil 值 */
15
16
  export function serializeNil(): string {
@@ -23,13 +24,7 @@ export function serializeBoolean(value: boolean): string {
23
24
 
24
25
  /** 序列化数字 */
25
26
  export function serializeNumber(value: number): string {
26
- if (isNaN(value)) return 'nan';
27
- if (!isFinite(value)) return value < 0 ? '-inf' : 'inf';
28
- if (value === 0) {
29
- if (1 / value < 0) return '-0';
30
- return '0';
31
- }
32
- return String(value);
27
+ return numberToString(value, true);
33
28
  }
34
29
 
35
30
  /**
@@ -177,7 +172,7 @@ const { valueOf } = Object.prototype;
177
172
  function customValueOf(value: VmRecord): VmAny | undefined {
178
173
  // eslint-disable-next-line @typescript-eslint/unbound-method
179
174
  const thisValueOf = value.valueOf;
180
- if (typeof thisValueOf != 'function' || thisValueOf === valueOf) {
175
+ if (typeof thisValueOf !== 'function' || thisValueOf === valueOf) {
181
176
  return undefined;
182
177
  }
183
178
  const customValue = thisValueOf.call(value) as VmAny | undefined;
@@ -86,7 +86,7 @@ export function isVmArray(value: VmAny): value is VmArray {
86
86
 
87
87
  /** 检查值是否为 Mirascript 记录 */
88
88
  export function isVmRecord(value: VmAny): value is VmRecord {
89
- if (value == null || typeof value !== 'object') return false;
89
+ if (value == null || typeof value != 'object') return false;
90
90
  if (isVmWrapper(value)) return false;
91
91
  if (isVmArray(value)) return false;
92
92
  value satisfies VmRecord;
@@ -1,3 +1,5 @@
1
+ import type { VmConst, VmRecord } from '../vm/index.js';
2
+
1
3
  export const { isArray } = Array;
2
4
  export const {
3
5
  isFinite,
@@ -26,3 +28,28 @@ export const hasOwnEnumerable = Function.call.bind(
26
28
  // eslint-disable-next-line @typescript-eslint/unbound-method
27
29
  Object.prototype.propertyIsEnumerable,
28
30
  ) as (o: object, v: PropertyKey) => boolean;
31
+
32
+ const SPECIAL_KEYS = new Set(getOwnPropertyNames(Object.prototype));
33
+ /**
34
+ * Set property on an vm record.
35
+ */
36
+ export const setRecord = (obj: Record<string, VmConst | undefined>, key: string, value: VmConst | undefined): void => {
37
+ if (!SPECIAL_KEYS.has(key)) {
38
+ obj[key] = value ?? null;
39
+ } else {
40
+ Object.defineProperty(obj, key, {
41
+ value: value ?? null,
42
+ configurable: true,
43
+ writable: true,
44
+ enumerable: true,
45
+ });
46
+ }
47
+ };
48
+
49
+ /**
50
+ * Get property from an vm record.
51
+ */
52
+ export const getRecord = (obj: VmRecord, key: string): VmConst | undefined => {
53
+ if (!hasOwnEnumerable(obj, key)) return undefined;
54
+ return obj[key] ?? null;
55
+ };
@@ -33,7 +33,7 @@ function serializeValue(
33
33
  format: SerializeFormat,
34
34
  ): string | null | PromiseLike<string> {
35
35
  const { serializer } = options;
36
- if (serializer == null || serializer === defaultSerializer) {
36
+ if (serializer === defaultSerializer || serializer === null) {
37
37
  return defaultSerializer(arg, format);
38
38
  }
39
39
  try {
@@ -113,11 +113,7 @@ const printParser: PrintOptions['parser'] = function (args) {
113
113
  templates.push(i < values.length - 1 ? ' ' : '');
114
114
  }
115
115
  }
116
- return {
117
- templates,
118
- values,
119
- formats,
120
- };
116
+ return { templates, values, formats };
121
117
  };
122
118
 
123
119
  /** 默认格式化函数 */
@@ -234,9 +230,9 @@ if (typeof location != 'undefined') {
234
230
  panic.prefix = [badge, `${common} background: #d23d3d; color: #fff;`, reset];
235
231
  } else {
236
232
  if (supportsColor.stdout) {
237
- debug_print.prefix = ['\u001B[44;37m MiraScript \u001B[0m'];
233
+ debug_print.prefix = ['\u{1B}[44;37m MiraScript \u{1B}[0m'];
238
234
  }
239
235
  if (supportsColor.stderr) {
240
- panic.prefix = ['\u001B[41;37m MiraScript \u001B[0m'];
236
+ panic.prefix = ['\u{1B}[41;37m MiraScript \u{1B}[0m'];
241
237
  }
242
238
  }
@@ -1,19 +1,31 @@
1
- import { isVmExtern, isVmModule } from '../../types/index.js';
1
+ import { isVmExtern, isVmModule, type VmValue } from '../../types/index.js';
2
2
  import { expectString, required, rethrowError, VmLib } from '../helpers.js';
3
3
  const { parse, stringify } = JSON;
4
4
 
5
5
  export const to_json = VmLib(
6
6
  (data) => {
7
7
  required('data', data, null);
8
- if (isVmExtern(data) || isVmModule(data)) {
9
- try {
10
- return stringify(data.value) ?? null;
11
- } catch (ex) {
12
- rethrowError('Failed to convert extern to JSON', ex, '{}');
13
- }
14
- }
15
8
  if (typeof data == 'function') return null;
16
- return stringify(data);
9
+ return stringify(data, (key, value: VmValue) => {
10
+ if (typeof value == 'function') {
11
+ return undefined;
12
+ }
13
+ if (isVmModule(value)) {
14
+ return value.value as JSONValue;
15
+ }
16
+ if (isVmExtern(value)) {
17
+ const extern = value.value;
18
+ if ('toJSON' in extern && typeof extern.toJSON == 'function') {
19
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
20
+ return extern.toJSON() as JSONValue;
21
+ }
22
+ if (typeof extern == 'function') {
23
+ return undefined;
24
+ }
25
+ return extern as JSONValue;
26
+ }
27
+ return value as JSONValue;
28
+ });
17
29
  },
18
30
  {
19
31
  summary: '将数据转换为 JSON 字符串',
@@ -81,22 +81,16 @@ function sinpi(x: number): number {
81
81
  const N = 12;
82
82
 
83
83
  // static const double g = 6.024680040776729583740234375;
84
- const GMHALF = 5.524_680_040_776_729_583_740_234_375 as const;
84
+ const GMHALF = 5.524680040776729583740234375 as const;
85
85
 
86
86
  const SNUM = [
87
- 23_531_376_880.410_759_688_572_007_674_451_636_754_734_846_804_94,
88
- 42_919_803_642.649_098_768_957_899_047_001_988_850_926_355_848_959,
89
- 35_711_959_237.355_668_049_440_185_451_547_166_705_960_488_635_843,
90
- 17_921_034_426.037_209_699_919_755_754_458_931_112_671_403_265_39,
91
- 6_039_542_586.352_028_005_064_291_644_307_297_921_069_938_842_070_8,
92
- 1_439_720_407.311_721_673_663_223_072_794_912_393_971_548_578_677_2,
93
- 248_874_557.862_054_156_511_460_386_413_229_423_216_321_251_278_01,
94
- 31_426_415.585_400_194_380_614_231_628_318_205_362_874_684_987_64,
95
- 2_876_370.628_935_372_441_225_409_051_620_849_613_599_114_537_876_8,
96
- 186_056.265_395_223_495_040_294_989_716_045_699_282_207_842_363_28,
97
- 8071.672_002_365_816_210_638_002_902_272_250_613_821_851_632_502_4,
98
- 210.824_277_751_579_345_872_509_733_920_713_362_711_669_695_802_91,
99
- 2.506_628_274_631_000_270_164_908_177_133_837_338_626_431_079_340_8,
87
+ 23_531_376_880.41075968857200767445163675473484680494, 42_919_803_642.649098768957899047001988850926355848959,
88
+ 35_711_959_237.355668049440185451547166705960488635843, 17_921_034_426.03720969991975575445893111267140326539,
89
+ 6_039_542_586.3520280050642916443072979210699388420708, 1_439_720_407.3117216736632230727949123939715485786772,
90
+ 248_874_557.86205415651146038641322942321632125127801, 31_426_415.58540019438061423162831820536287468498764,
91
+ 2_876_370.6289353724412254090516208496135991145378768, 186_056.26539522349504029498971604569928220784236328,
92
+ 8071.6720023658162106380029022722506138218516325024, 210.82427775157934587250973392071336271166969580291,
93
+ 2.5066282746310002701649081771338373386264310793408,
100
94
  ] as const;
101
95
 
102
96
  const SDEN = [
@@ -56,8 +56,13 @@ export const entries = VmLib(
56
56
  arr.push({ 0: i, 1: data[i] ?? null });
57
57
  }
58
58
  return arr;
59
+ } else {
60
+ const arr: Array<{ 0: string; 1: VmConst }> = [];
61
+ for (const [key, value] of _entries(data)) {
62
+ arr.push({ 0: key, 1: value ?? null });
63
+ }
64
+ return arr;
59
65
  }
60
- return _entries(data).map(([key, value]) => ({ 0: key, 1: value ?? null }));
61
66
  },
62
67
  {
63
68
  summary: '返回数组或记录的键值对列表',
@@ -0,0 +1,30 @@
1
+ import { $Call } from '../../../operations/index.js';
2
+ import type { VmValue } from '../../../types/index.js';
3
+ import { VmLib, expectCallable, expectConst, iterate, required } from '../../helpers.js';
4
+
5
+ export const fold = VmLib(
6
+ (data, initial, f) => {
7
+ required('initial', initial, null);
8
+ expectConst('data', data, null);
9
+ expectCallable('f', f, data);
10
+
11
+ let acc: VmValue = initial;
12
+ iterate(data, (value, index, data) => {
13
+ acc = $Call(f, [acc, value, index, data]);
14
+ });
15
+ return acc;
16
+ },
17
+ {
18
+ summary: '对数组或记录中的每个元素应用函数,并返回累积结果',
19
+ params: {
20
+ data: { type: 'array | record', description: '要折叠的数组或记录' },
21
+ initial: { type: 'any', description: '初始累积值' },
22
+ f: {
23
+ type: 'fn(acc: type(initial), value: any, key: number | string, input: type(data)) -> type(initial)',
24
+ description: '应用于每个元素的函数',
25
+ },
26
+ },
27
+ returns: { type: 'type(initial)' },
28
+ examples: ['fold([1, 2, 3], 0, fn (acc, x) { acc + x }) // 6'],
29
+ },
30
+ );