json-as 1.1.4 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Change Log
2
2
 
3
- ## 2-25-05-23 - 1.1.4
3
+ ## 2025-05-23 - 1.1.5
4
+
5
+ - fix: index.js didn't point to correct file, thus creating a compiler crash
6
+
7
+ ## 2025-05-23 - 1.1.4
4
8
 
5
9
  - revert: grouping properties in favor of memory.compare
6
10
 
@@ -209,4 +213,4 @@
209
213
  - feat: reduce memory usage so that it is viable for low-memory environments
210
214
  - feat: write to a central buffer and reduce memory overhead
211
215
  - feat: rewrite the transform to properly resolve schemas and link them together
212
- - feat: pre-allocate and compute the minimum size of a schema to avoid memory out of range errors
216
+ - feat: pre-allocate and compute the minimum size of a schema to avoid memory out of range errors
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
7
7
  █████ ███████ ██████ ██ ████ ██ ██ ███████
8
8
  </span>
9
- AssemblyScript - v1.1.4
9
+ AssemblyScript - v1.1.5
10
10
  </pre>
11
11
  </h6>
12
12
 
@@ -0,0 +1,122 @@
1
+ import { JSON } from "../";
2
+ import { describe, expect } from "./lib";
3
+ import { DerivedObject, Null, ObjWithStrangeKey, ObjectWithFloat, OmitIf, Player, Vec3 } from "./types";
4
+
5
+ // describe("Should serialize objects", () => {
6
+ // expect(
7
+ // JSON.stringify<Vec3>({
8
+ // x: 3.4,
9
+ // y: 1.2,
10
+ // z: 8.3,
11
+ // }),
12
+ // ).toBe('{"x":3.4,"y":1.2,"z":8.3}');
13
+
14
+ // expect(
15
+ // JSON.stringify<Player>({
16
+ // firstName: "Emmet",
17
+ // lastName: "West",
18
+ // lastActive: [8, 27, 2022],
19
+ // age: 23,
20
+ // pos: {
21
+ // x: 3.4,
22
+ // y: 1.2,
23
+ // z: 8.3,
24
+ // },
25
+ // isVerified: true,
26
+ // }),
27
+ // ).toBe('{"firstName":"Emmet","lastName":"West","lastActive":[8,27,2022],"age":23,"pos":{"x":3.4,"y":1.2,"z":8.3},"isVerified":true}');
28
+
29
+ // expect(JSON.stringify<ObjectWithFloat>({ f: 7.23 })).toBe('{"f":7.23}');
30
+
31
+ // expect(JSON.stringify<ObjectWithFloat>({ f: 0.000001 })).toBe('{"f":0.000001}');
32
+
33
+ // expect(JSON.stringify<ObjectWithFloat>({ f: 1e-7 })).toBe('{"f":1e-7}');
34
+
35
+ // expect(JSON.stringify<ObjectWithFloat>({ f: 1e20 })).toBe('{"f":100000000000000000000.0}');
36
+
37
+ // expect(JSON.stringify<ObjectWithFloat>({ f: 1e21 })).toBe('{"f":1e+21}');
38
+
39
+ // expect(JSON.stringify<ObjWithStrangeKey<string>>({ data: "foo" })).toBe('{"a\\\\\\t\\"\\u0002b`c":"foo"}');
40
+ // });
41
+
42
+ // describe("Should serialize @omit'ed objects", () => {
43
+ // expect(
44
+ // JSON.stringify(<OmitIf>{
45
+ // y: 1,
46
+ // }),
47
+ // ).toBe('{"x":1,"y":1,"z":1}');
48
+ // });
49
+ // describe("Should deserialize class inheritance", () => {
50
+ // const jsonStr = '{"a":"1","b":"2"}';
51
+ // const obj = JSON.parse<DerivedObject>(jsonStr);
52
+
53
+ // expect((obj instanceof DerivedObject).toString()).toBe("true");
54
+ // expect(obj.a).toBe("1");
55
+ // expect(obj.b).toBe("2");
56
+ // });
57
+
58
+ // describe("Should deserialize nulls", () => {
59
+ // expect(JSON.stringify(JSON.parse<Null>("null"))).toBe("null");
60
+ // });
61
+
62
+ // describe("Should deserialize integer arrays", () => {
63
+ // expect(JSON.stringify(JSON.parse<u32[]>("[0,100,101]"))).toBe(JSON.stringify([0, 100, 101]));
64
+
65
+ // expect(JSON.stringify(JSON.parse<i32[]>("[0,100,101,-100,-101]"))).toBe(JSON.stringify([0, 100, 101, -100, -101]));
66
+ // });
67
+
68
+ // describe("Should deserialize float arrays", () => {
69
+ // expect(JSON.stringify(JSON.parse<f64[]>("[7.23,1000.0,1000.0,1.23456,1.23456,0.0,7.23]"))).toBe(JSON.stringify([7.23, 1000.0, 1000.0, 1.23456, 1.23456, 0.0, 7.23]));
70
+
71
+ // expect(JSON.stringify(JSON.parse<f64[]>("[1e+21,1e+22,1e-7,1e-8,1e-9]"))).toBe(JSON.stringify([1e21, 1e22, 1e-7, 1e-8, 1e-9]));
72
+ // });
73
+
74
+ // describe("Should deserialize boolean arrays", () => {
75
+ // expect(JSON.stringify(JSON.parse<boolean[]>("[true,false]"))).toBe(JSON.stringify([true, false]));
76
+ // });
77
+
78
+ // describe("Should deserialize string arrays", () => {
79
+ // expect(JSON.stringify(JSON.parse<string[]>('["string \\"with random spa\\nces and \\nnewlines\\n\\n\\n"]'))).toBe(JSON.stringify(['string "with random spa\nces and \nnewlines\n\n\n']));
80
+ // });
81
+
82
+ // describe("Should deserialize nested integer arrays", () => {
83
+ // expect(JSON.stringify(JSON.parse<i64[][]>("[[100,101],[-100,-101],[0]]"))).toBe(JSON.stringify([[100, 101], [-100, -101], [0]]));
84
+ // });
85
+
86
+ // describe("Should deserialize nested float arrays", () => {
87
+ // expect(JSON.stringify(JSON.parse<f64[][]>("[[7.23],[1000.0],[1000.0],[1.23456],[1.23456],[0.0],[7.23]]"))).toBe(JSON.stringify([[7.23], [1000.0], [1000.0], [1.23456], [1.23456], [0.0], [7.23]]));
88
+ // });
89
+
90
+ // describe("Should deserialize nested boolean arrays", () => {
91
+ // expect(JSON.stringify(JSON.parse<boolean[][]>("[[true],[false]]"))).toBe(JSON.stringify([[true], [false]]));
92
+ // });
93
+
94
+ // describe("Should deserialize object arrays", () => {
95
+ // expect(JSON.stringify(JSON.parse<Vec3[]>('[{"x":3.4,"y":1.2,"z":8.3},{"x":3.4,"y":-2.1,"z":9.3}]'))).toBe(
96
+ // JSON.stringify(<Vec3[]>[
97
+ // { x: 3.4, y: 1.2, z: 8.3 },
98
+ // { x: 3.4, y: -2.1, z: 9.3 },
99
+ // ]),
100
+ // );
101
+ // });
102
+
103
+ // describe("Should deserialize Objects", () => {
104
+ // expect(JSON.stringify(JSON.parse<Vec3>('{"x":3.4,"y":1.2,"z":8.3}'))).toBe(JSON.stringify(<Vec3>{ x: 3.4, y: 1.2, z: 8.3 }));
105
+
106
+ // expect(JSON.stringify(JSON.parse<Player>('{"firstName":"Emmet","lastName":"West","lastActive":[8,27,2022],"age":23,"pos":{"x":3.4,"y":1.2,"z":8.3},"isVerified":true}'))).toBe(
107
+ // JSON.stringify(<Player>{
108
+ // firstName: "Emmet",
109
+ // lastName: "West",
110
+ // lastActive: [8, 27, 2022],
111
+ // age: 23,
112
+ // pos: { x: 3.4, y: 1.2, z: 8.3 },
113
+ // isVerified: true,
114
+ // }),
115
+ // );
116
+
117
+ // expect(JSON.stringify(JSON.parse<ObjectWithFloat>('{"f":7.23}'))).toBe(JSON.stringify(<ObjectWithFloat>{ f: 7.23 }));
118
+
119
+ // expect(JSON.stringify(JSON.parse<ObjectWithFloat>('{"f":0.000001}'))).toBe(JSON.stringify(<ObjectWithFloat>{ f: 0.000001 }));
120
+
121
+ // expect(JSON.stringify(JSON.parse<ObjWithStrangeKey<string>>('{"a\\\\\\t\\"\\u0002b`c":"foo"}'))).toBe(JSON.stringify(<ObjWithStrangeKey<string>>{ data: "foo" }));
122
+ // });
package/index.ts CHANGED
@@ -1,26 +1 @@
1
- class SrvInfo {
2
- accessUrl: string = "https://example.com";
3
- cardTypes: number[] = [1, 2, 3];
4
- customService: string = "Contact us at support@example.com";
5
- invoiceApplicationStatus: number = 1;
6
- isCertification: bool = true;
7
- isOnlineRecharge: bool = false;
8
- loginTypes: number[] = [0, 1]; // e.g. 0 = password, 1 = OTP
9
- record: string = "ICP 12345678";
10
- regCompanyAudit: number = 2;
11
- regCompanyPipeline: number[] = [101, 102, 103];
12
- regPwdLimit: number = 8; // min password length
13
- serverTime: i64 = 1650000000000; // dummy timestamp
14
- srvDescription: string = "A demo service for handling customer operations.";
15
- srvHiddenMenu: string[] = ["admin", "beta"];
16
- srvHost: string = "srv.example.com";
17
- srvId: number = 999;
18
- srvKeywords: string[] = ["finance", "payments", "online"];
19
- srvLogoImgUrl: string = "https://example.com/logo.png";
20
- srvName: string = "ExampleService";
21
- srvPageId: number = 5;
22
- thirdAuthUrl: string = "https://auth.example.com";
23
- userCenterStyle: number = 1; // e.g. 1 = modern, 0 = legacy
24
- }
25
-
26
- console.log(JSON.stringify(new SrvInfo()))
1
+ export { JSON } from "./assembly/index";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-as",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "author": "Jairus Tanaka",
5
5
  "description": "The only JSON library you'll need for AssemblyScript. SIMD enabled",
6
6
  "types": "assembly/index.ts",
package/run-tests.sh CHANGED
@@ -2,9 +2,6 @@
2
2
 
3
3
  mkdir -p ./build
4
4
 
5
- npm run build:test
6
- npm run test:wasmtime
7
-
8
5
  for file in ./assembly/__tests__/*.spec.ts; do
9
6
  filename=$(basename -- "$file")
10
7
  output="./build/${filename%.ts}.wasm"
@@ -300,6 +300,7 @@ class JSONTransform extends Visitor {
300
300
  sortedMembers.object.push(member);
301
301
  }
302
302
  indent = "";
303
+ let shouldGroup = false;
303
304
  DESERIALIZE += indent + " let keyStart: usize = 0;\n";
304
305
  DESERIALIZE += indent + " let keyEnd: usize = 0;\n";
305
306
  DESERIALIZE += indent + " let isKey = false;\n";
@@ -373,6 +374,9 @@ class JSONTransform extends Visitor {
373
374
  if (members.some((m) => (m.alias || m.name).length << 1 == 8)) {
374
375
  DESERIALIZE += " const code64 = load<u64>(keyStart);\n";
375
376
  }
377
+ if (members.some((m) => (m.alias || m.name).length << 1 > 8)) {
378
+ DESERIALIZE += toMemCDecl(Math.max(...members.map((m) => (m.alias || m.name).length << 1)), " ");
379
+ }
376
380
  const complex = isStruct(members[0].type) || members[0].type != "JSON.Obj" || isArray(members[0].type);
377
381
  const firstMemberName = members[0].alias || members[0].name;
378
382
  DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
@@ -411,7 +415,7 @@ class JSONTransform extends Visitor {
411
415
  DESERIALIZE += " while (srcStart < srcEnd) {\n";
412
416
  DESERIALIZE += " const code = load<u16>(srcStart);\n";
413
417
  DESERIALIZE += " if (code == 34 && load<u16>(srcStart - 2) !== 92) {\n";
414
- generateComparisions(sortedMembers.string);
418
+ generateGroups(sortedMembers.string, generateComparisions);
415
419
  DESERIALIZE += " }\n";
416
420
  DESERIALIZE += " srcStart += 2;\n";
417
421
  DESERIALIZE += " }\n";
@@ -425,7 +429,7 @@ class JSONTransform extends Visitor {
425
429
  DESERIALIZE += " while (srcStart < srcEnd) {\n";
426
430
  DESERIALIZE += " const code = load<u16>(srcStart);\n";
427
431
  DESERIALIZE += " if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {\n";
428
- generateComparisions(sortedMembers.number);
432
+ generateGroups(sortedMembers.number, generateComparisions);
429
433
  DESERIALIZE += " }\n";
430
434
  DESERIALIZE += " srcStart += 2;\n";
431
435
  DESERIALIZE += " }\n";
@@ -446,7 +450,7 @@ class JSONTransform extends Visitor {
446
450
  DESERIALIZE += " if (--depth == 0) {\n";
447
451
  DESERIALIZE += " srcStart += 2;\n";
448
452
  indent = " ";
449
- generateComparisions(sortedMembers.object);
453
+ generateGroups(sortedMembers.object, generateComparisions);
450
454
  indent = "";
451
455
  DESERIALIZE += " }\n";
452
456
  DESERIALIZE += " } else if (code == 123) depth++;\n";
@@ -469,7 +473,7 @@ class JSONTransform extends Visitor {
469
473
  DESERIALIZE += " if (--depth == 0) {\n";
470
474
  DESERIALIZE += " srcStart += 2;\n";
471
475
  indent = " ";
472
- generateComparisions(sortedMembers.array);
476
+ generateGroups(sortedMembers.array, generateComparisions);
473
477
  indent = "";
474
478
  DESERIALIZE += " }\n";
475
479
  DESERIALIZE += " } else if (code == 91) depth++;\n";
@@ -482,65 +486,88 @@ class JSONTransform extends Visitor {
482
486
  DESERIALIZE += mbElse + "if (code == 116) {\n";
483
487
  DESERIALIZE += " if (load<u64>(srcStart) == 28429475166421108) {\n";
484
488
  DESERIALIZE += " srcStart += 8;\n";
485
- if (sortedMembers.boolean.some((m) => (m.alias || m.name).length << 1 == 2)) {
486
- DESERIALIZE += " const code16 = load<u16>(keyStart);\n";
487
- }
488
- if (sortedMembers.boolean.some((m) => (m.alias || m.name).length << 1 == 4)) {
489
- DESERIALIZE += " const code32 = load<u32>(keyStart);\n";
490
- }
491
- if (sortedMembers.boolean.some((m) => (m.alias || m.name).length << 1 == 6)) {
492
- DESERIALIZE += " const code48 = load<u64>(keyStart) & 0x0000FFFFFFFFFFFF;\n";
493
- }
494
- if (sortedMembers.boolean.some((m) => (m.alias || m.name).length << 1 == 8)) {
495
- DESERIALIZE += " const code64 = load<u64>(keyStart);\n";
496
- }
497
- const firstMemberName = sortedMembers.boolean[0].alias || sortedMembers.boolean[0].name;
498
- DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
499
- DESERIALIZE += indent + " store<" + sortedMembers.boolean[0].type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(sortedMembers.boolean[0].name) + "));\n";
500
- DESERIALIZE += indent + " srcStart += 2;\n";
501
- DESERIALIZE += indent + " keyStart = 0;\n";
502
- DESERIALIZE += indent + " break;\n";
503
- DESERIALIZE += indent + " }";
504
- for (let i = 1; i < sortedMembers.boolean.length; i++) {
505
- const member = sortedMembers.boolean[i];
506
- const memberName = member.alias || member.name;
507
- DESERIALIZE += indent + " else if (" + getComparision(memberName) + ") { // " + memberName + "\n";
508
- DESERIALIZE += indent + " store<" + member.type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(member.name) + "));\n";
509
- DESERIALIZE += indent + " srcStart += 2;\n";
510
- DESERIALIZE += indent + " keyStart = 0;\n";
511
- DESERIALIZE += indent + " break;\n";
512
- DESERIALIZE += indent + " }";
513
- }
514
- if (STRICT) {
515
- DESERIALIZE += " else {\n";
516
- DESERIALIZE += indent + ' throw new Error("Unexpected key in JSON object \'" + String.fromCharCode(load<u16>(srcStart)) + "\' at position " + (srcEnd - srcStart).toString());\n';
517
- DESERIALIZE += indent + " }\n";
518
- }
489
+ generateGroups(sortedMembers.boolean, (group) => {
490
+ if (group.some((m) => (m.alias || m.name).length << 1 == 2)) {
491
+ DESERIALIZE += " const code16 = load<u16>(keyStart);\n";
492
+ }
493
+ if (group.some((m) => (m.alias || m.name).length << 1 == 4)) {
494
+ DESERIALIZE += " const code32 = load<u32>(keyStart);\n";
495
+ }
496
+ if (group.some((m) => (m.alias || m.name).length << 1 == 6)) {
497
+ DESERIALIZE += " const code48 = load<u64>(keyStart) & 0x0000FFFFFFFFFFFF;\n";
498
+ }
499
+ if (group.some((m) => (m.alias || m.name).length << 1 == 8)) {
500
+ DESERIALIZE += " const code64 = load<u64>(keyStart);\n";
501
+ }
502
+ if (group.some((m) => (m.alias || m.name).length << 1 > 8)) {
503
+ DESERIALIZE += toMemCDecl(Math.max(...group.map((m) => (m.alias || m.name).length << 1)), " ");
504
+ }
505
+ const firstMemberName = group[0].alias || group[0].name;
506
+ DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
507
+ DESERIALIZE += indent + " store<" + group[0].type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(group[0].name) + "));\n";
508
+ DESERIALIZE += indent + " srcStart += 2;\n";
509
+ DESERIALIZE += indent + " keyStart = 0;\n";
510
+ DESERIALIZE += indent + " break;\n";
511
+ DESERIALIZE += indent + " }";
512
+ for (let i = 1; i < group.length; i++) {
513
+ const member = group[i];
514
+ const memberName = member.alias || member.name;
515
+ DESERIALIZE += indent + " else if (" + getComparision(memberName) + ") { // " + memberName + "\n";
516
+ DESERIALIZE += indent + " store<" + member.type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(member.name) + "));\n";
517
+ DESERIALIZE += indent + " srcStart += 2;\n";
518
+ DESERIALIZE += indent + " keyStart = 0;\n";
519
+ DESERIALIZE += indent + " break;\n";
520
+ DESERIALIZE += indent + " }";
521
+ }
522
+ if (STRICT) {
523
+ DESERIALIZE += " else {\n";
524
+ DESERIALIZE += indent + ' throw new Error("Unexpected key in JSON object \'" + String.fromCharCode(load<u16>(srcStart)) + "\' at position " + (srcEnd - srcStart).toString());\n';
525
+ DESERIALIZE += indent + " }\n";
526
+ }
527
+ });
519
528
  DESERIALIZE += " }";
520
529
  mbElse = " else ";
521
530
  DESERIALIZE += " else if (load<u64>(srcStart, 2) == 28429466576093281) {\n";
522
531
  DESERIALIZE += " srcStart += 10;\n";
523
- DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
524
- DESERIALIZE += indent + " store<" + sortedMembers.boolean[0].type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(sortedMembers.boolean[0].name) + "));\n";
525
- DESERIALIZE += indent + " srcStart += 2;\n";
526
- DESERIALIZE += indent + " keyStart = 0;\n";
527
- DESERIALIZE += indent + " break;\n";
528
- DESERIALIZE += indent + " }";
529
- for (let i = 1; i < sortedMembers.boolean.length; i++) {
530
- const member = sortedMembers.boolean[i];
531
- const memberName = member.alias || member.name;
532
- DESERIALIZE += indent + " else if (" + getComparision(memberName) + ") { // " + memberName + "\n";
533
- DESERIALIZE += indent + " store<" + member.type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(member.name) + "));\n";
532
+ generateGroups(sortedMembers.boolean, (group) => {
533
+ if (group.some((m) => (m.alias || m.name).length << 1 == 2)) {
534
+ DESERIALIZE += " const code16 = load<u16>(keyStart);\n";
535
+ }
536
+ if (group.some((m) => (m.alias || m.name).length << 1 == 4)) {
537
+ DESERIALIZE += " const code32 = load<u32>(keyStart);\n";
538
+ }
539
+ if (group.some((m) => (m.alias || m.name).length << 1 == 6)) {
540
+ DESERIALIZE += " const code48 = load<u64>(keyStart) & 0x0000FFFFFFFFFFFF;\n";
541
+ }
542
+ if (group.some((m) => (m.alias || m.name).length << 1 == 8)) {
543
+ DESERIALIZE += " const code64 = load<u64>(keyStart);\n";
544
+ }
545
+ if (group.some((m) => (m.alias || m.name).length << 1 > 8)) {
546
+ DESERIALIZE += toMemCDecl(Math.max(...group.map((m) => (m.alias || m.name).length << 1)), " ");
547
+ }
548
+ const firstMemberName = group[0].alias || group[0].name;
549
+ DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
550
+ DESERIALIZE += indent + " store<" + group[0].type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(group[0].name) + "));\n";
534
551
  DESERIALIZE += indent + " srcStart += 2;\n";
535
552
  DESERIALIZE += indent + " keyStart = 0;\n";
536
553
  DESERIALIZE += indent + " break;\n";
537
554
  DESERIALIZE += indent + " }";
538
- }
539
- if (STRICT) {
540
- DESERIALIZE += " else {\n";
541
- DESERIALIZE += indent + ' throw new Error("Unexpected key in JSON object \'" + String.fromCharCode(load<u16>(srcStart)) + "\' at position " + (srcEnd - srcStart).toString());\n';
542
- DESERIALIZE += indent + " }\n";
543
- }
555
+ for (let i = 1; i < group.length; i++) {
556
+ const member = group[i];
557
+ const memberName = member.alias || member.name;
558
+ DESERIALIZE += indent + " else if (" + getComparision(memberName) + ") { // " + memberName + "\n";
559
+ DESERIALIZE += indent + " store<" + member.type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(member.name) + "));\n";
560
+ DESERIALIZE += indent + " srcStart += 2;\n";
561
+ DESERIALIZE += indent + " keyStart = 0;\n";
562
+ DESERIALIZE += indent + " break;\n";
563
+ DESERIALIZE += indent + " }";
564
+ }
565
+ if (STRICT) {
566
+ DESERIALIZE += " else {\n";
567
+ DESERIALIZE += indent + ' throw new Error("Unexpected key in JSON object \'" + String.fromCharCode(load<u16>(srcStart)) + "\' at position " + (srcEnd - srcStart).toString());\n';
568
+ DESERIALIZE += indent + " }\n";
569
+ }
570
+ });
544
571
  DESERIALIZE += " }\n";
545
572
  DESERIALIZE += " }";
546
573
  }
@@ -548,40 +575,45 @@ class JSONTransform extends Visitor {
548
575
  DESERIALIZE += mbElse + "if (code == 110) {\n";
549
576
  DESERIALIZE += " if (load<u64>(srcStart) == 30399761348886638) {\n";
550
577
  DESERIALIZE += " srcStart += 8;\n";
551
- if (sortedMembers.null.some((m) => (m.alias || m.name).length << 1 == 2)) {
552
- DESERIALIZE += " const code16 = load<u16>(keyStart);\n";
553
- }
554
- if (sortedMembers.null.some((m) => (m.alias || m.name).length << 1 == 4)) {
555
- DESERIALIZE += " const code32 = load<u32>(keyStart);\n";
556
- }
557
- if (sortedMembers.null.some((m) => (m.alias || m.name).length << 1 == 6)) {
558
- DESERIALIZE += " const code48 = load<u64>(keyStart) & 0x0000FFFFFFFFFFFF;\n";
559
- }
560
- if (sortedMembers.null.some((m) => (m.alias || m.name).length << 1 == 8)) {
561
- DESERIALIZE += " const code64 = load<u64>(keyStart);\n";
562
- }
563
- const firstMemberName = sortedMembers.null[0].alias || sortedMembers.null[0].name;
564
- DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
565
- DESERIALIZE += indent + " store<" + sortedMembers.null[0].type + ">(changetype<usize>(out), null, offsetof<this>(" + JSON.stringify(sortedMembers.null[0].name) + "));\n";
566
- DESERIALIZE += indent + " srcStart += 2;\n";
567
- DESERIALIZE += indent + " keyStart = 0;\n";
568
- DESERIALIZE += indent + " break;\n";
569
- DESERIALIZE += indent + " }";
570
- for (let i = 1; i < sortedMembers.null.length; i++) {
571
- const member = sortedMembers.null[i];
572
- const memberName = member.alias || member.name;
573
- DESERIALIZE += indent + " else if (" + getComparision(memberName) + ") { // " + memberName + "\n";
574
- DESERIALIZE += indent + " store<" + member.type + ">(changetype<usize>(out), null, offsetof<this>(" + JSON.stringify(member.name) + "));\n";
578
+ generateGroups(sortedMembers.null, (group) => {
579
+ if (group.some((m) => (m.alias || m.name).length << 1 == 2)) {
580
+ DESERIALIZE += " const code16 = load<u16>(keyStart);\n";
581
+ }
582
+ if (group.some((m) => (m.alias || m.name).length << 1 == 4)) {
583
+ DESERIALIZE += " const code32 = load<u32>(keyStart);\n";
584
+ }
585
+ if (group.some((m) => (m.alias || m.name).length << 1 == 6)) {
586
+ DESERIALIZE += " const code48 = load<u64>(keyStart) & 0x0000FFFFFFFFFFFF;\n";
587
+ }
588
+ if (group.some((m) => (m.alias || m.name).length << 1 == 8)) {
589
+ DESERIALIZE += " const code64 = load<u64>(keyStart);\n";
590
+ }
591
+ if (group.some((m) => (m.alias || m.name).length << 1 > 8)) {
592
+ DESERIALIZE += toMemCDecl(Math.max(...group.map((m) => (m.alias || m.name).length << 1)), " ");
593
+ }
594
+ const firstMemberName = group[0].alias || group[0].name;
595
+ DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
596
+ DESERIALIZE += indent + " store<" + group[0].type + ">(changetype<usize>(out), null, offsetof<this>(" + JSON.stringify(group[0].name) + "));\n";
575
597
  DESERIALIZE += indent + " srcStart += 2;\n";
576
598
  DESERIALIZE += indent + " keyStart = 0;\n";
577
599
  DESERIALIZE += indent + " break;\n";
578
600
  DESERIALIZE += indent + " }";
579
- }
580
- if (STRICT) {
581
- DESERIALIZE += " else {\n";
582
- DESERIALIZE += indent + ' throw new Error("Unexpected key in JSON object \'" + String.fromCharCode(load<u16>(srcStart)) + "\' at position " + (srcEnd - srcStart).toString());\n';
583
- DESERIALIZE += indent + " }\n";
584
- }
601
+ for (let i = 1; i < group.length; i++) {
602
+ const member = group[i];
603
+ const memberName = member.alias || member.name;
604
+ DESERIALIZE += indent + " else if (" + getComparision(memberName) + ") { // " + memberName + "\n";
605
+ DESERIALIZE += indent + " store<" + group[0].type + ">(changetype<usize>(out), null, offsetof<this>(" + JSON.stringify(group[0].name) + "));\n";
606
+ DESERIALIZE += indent + " srcStart += 2;\n";
607
+ DESERIALIZE += indent + " keyStart = 0;\n";
608
+ DESERIALIZE += indent + " break;\n";
609
+ DESERIALIZE += indent + " }";
610
+ }
611
+ if (STRICT) {
612
+ DESERIALIZE += " else {\n";
613
+ DESERIALIZE += indent + ' throw new Error("Unexpected key in JSON object \'" + String.fromCharCode(load<u16>(srcStart)) + "\' at position " + (srcEnd - srcStart).toString());\n';
614
+ DESERIALIZE += indent + " }\n";
615
+ }
616
+ });
585
617
  DESERIALIZE += " }";
586
618
  DESERIALIZE += "\n }";
587
619
  mbElse = " else ";
@@ -936,7 +968,7 @@ function getComparision(data) {
936
968
  return "code64 == " + toU64(data);
937
969
  }
938
970
  default: {
939
- return "memory.compare(keyStart, changetype<usize>(" + JSON.stringify(data) + "), keyEnd - keyStart) == 0";
971
+ return toMemCCheck(data);
940
972
  }
941
973
  }
942
974
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -323,6 +323,7 @@ class JSONTransform extends Visitor {
323
323
  }
324
324
 
325
325
  indent = "";
326
+ let shouldGroup = false;
326
327
 
327
328
  // DESERIALIZE += indent + " console.log(\"data: \" + JSON.Util.ptrToStr(srcStart,srcEnd))\n";
328
329
  DESERIALIZE += indent + " let keyStart: usize = 0;\n";
@@ -356,6 +357,7 @@ class JSONTransform extends Visitor {
356
357
  DESERIALIZE += indent + " }\n";
357
358
  DESERIALIZE += indent + " srcStart += 2;\n";
358
359
  DESERIALIZE += indent + " } else {\n";
360
+ // if (shouldGroup) DESERIALIZE += " const keySize = keyEnd - keyStart;\n";
359
361
 
360
362
  const groupMembers = (members: Property[]): Property[][] => {
361
363
  const groups = new Map<number, Property[]>();
@@ -410,9 +412,9 @@ class JSONTransform extends Visitor {
410
412
  if (members.some((m) => (m.alias || m.name).length << 1 == 8)) {
411
413
  DESERIALIZE += " const code64 = load<u64>(keyStart);\n";
412
414
  }
413
- // if (members.some((m) => (m.alias || m.name).length << 1 > 8)) {
414
- // DESERIALIZE += toMemCDecl(Math.max(...members.map((m) => (m.alias || m.name).length << 1)), " ");
415
- // }
415
+ if (members.some((m) => (m.alias || m.name).length << 1 > 8)) {
416
+ DESERIALIZE += toMemCDecl(Math.max(...members.map((m) => (m.alias || m.name).length << 1)), " ");
417
+ }
416
418
 
417
419
  const complex = isStruct(members[0].type) || members[0].type != "JSON.Obj" || isArray(members[0].type);
418
420
  const firstMemberName = members[0].alias || members[0].name;
@@ -445,6 +447,7 @@ class JSONTransform extends Visitor {
445
447
 
446
448
  let mbElse = " ";
447
449
  if (sortedMembers.string.length) {
450
+ // generateGroups(sortedMembers.string, generateComparisions)
448
451
  DESERIALIZE += mbElse + "if (code == 34) {\n";
449
452
  DESERIALIZE += " lastIndex = srcStart;\n";
450
453
  DESERIALIZE += " srcStart += 2;\n";
@@ -452,7 +455,7 @@ class JSONTransform extends Visitor {
452
455
  DESERIALIZE += " const code = load<u16>(srcStart);\n";
453
456
  DESERIALIZE += " if (code == 34 && load<u16>(srcStart - 2) !== 92) {\n";
454
457
  // DESERIALIZE += " console.log(JSON.Util.ptrToStr(keyStart,keyEnd) + \" = \" + load<u16>(keyStart).toString() + \" val \" + JSON.Util.ptrToStr(lastIndex, srcStart));\n";
455
- generateComparisions(sortedMembers.string);
458
+ generateGroups(sortedMembers.string, generateComparisions);
456
459
  DESERIALIZE += " }\n"; // Close break char check
457
460
  DESERIALIZE += " srcStart += 2;\n";
458
461
  DESERIALIZE += " }\n"; // Close char scan loop
@@ -469,7 +472,7 @@ class JSONTransform extends Visitor {
469
472
  DESERIALIZE += " if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {\n";
470
473
  // DESERIALIZE += " console.log(JSON.Util.ptrToStr(keyStart,keyEnd) + \" = \" + load<u16>(keyStart).toString() + \" val \" + JSON.Util.ptrToStr(lastIndex, srcStart));\n";
471
474
 
472
- generateComparisions(sortedMembers.number);
475
+ generateGroups(sortedMembers.number, generateComparisions);
473
476
  DESERIALIZE += " }\n"; // Close break char check
474
477
  DESERIALIZE += " srcStart += 2;\n";
475
478
  DESERIALIZE += " }\n"; // Close char scan loop
@@ -492,7 +495,7 @@ class JSONTransform extends Visitor {
492
495
  DESERIALIZE += " srcStart += 2;\n";
493
496
 
494
497
  indent = " ";
495
- generateComparisions(sortedMembers.object);
498
+ generateGroups(sortedMembers.object, generateComparisions);
496
499
  indent = "";
497
500
 
498
501
  DESERIALIZE += " }\n"; // Close break char check
@@ -518,7 +521,7 @@ class JSONTransform extends Visitor {
518
521
  // DESERIALIZE += " console.log(ptrToStr(keyStart,keyEnd) + \" = \" + (load<u64>(keyStart) & 0x0000FFFFFFFFFFFF) .toString());\n";
519
522
 
520
523
  indent = " ";
521
- generateComparisions(sortedMembers.array);
524
+ generateGroups(sortedMembers.array, generateComparisions);
522
525
  indent = "";
523
526
 
524
527
  DESERIALIZE += " }\n"; // Close break char check
@@ -533,76 +536,97 @@ class JSONTransform extends Visitor {
533
536
  DESERIALIZE += mbElse + "if (code == 116) {\n";
534
537
  DESERIALIZE += " if (load<u64>(srcStart) == 28429475166421108) {\n";
535
538
  DESERIALIZE += " srcStart += 8;\n";
536
- if (sortedMembers.boolean.some((m) => (m.alias || m.name).length << 1 == 2)) {
537
- DESERIALIZE += " const code16 = load<u16>(keyStart);\n";
538
- }
539
- if (sortedMembers.boolean.some((m) => (m.alias || m.name).length << 1 == 4)) {
540
- DESERIALIZE += " const code32 = load<u32>(keyStart);\n";
541
- }
542
- if (sortedMembers.boolean.some((m) => (m.alias || m.name).length << 1 == 6)) {
543
- DESERIALIZE += " const code48 = load<u64>(keyStart) & 0x0000FFFFFFFFFFFF;\n";
544
- }
545
- if (sortedMembers.boolean.some((m) => (m.alias || m.name).length << 1 == 8)) {
546
- DESERIALIZE += " const code64 = load<u64>(keyStart);\n";
547
- }
548
- // if (sortedMembers.boolean.some((m) => (m.alias || m.name).length << 1 > 8)) {
549
- // DESERIALIZE += toMemCDecl(Math.max(...sortedMembers.boolean.map((m) => (m.alias || m.name).length << 1)), " ");
550
- // }
551
539
 
552
- const firstMemberName = sortedMembers.boolean[0].alias || sortedMembers.boolean[0].name;
553
- DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
554
- DESERIALIZE += indent + " store<" + sortedMembers.boolean[0].type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(sortedMembers.boolean[0].name) + "));\n";
555
- DESERIALIZE += indent + " srcStart += 2;\n";
556
- DESERIALIZE += indent + " keyStart = 0;\n";
557
- DESERIALIZE += indent + " break;\n";
558
- DESERIALIZE += indent + " }";
540
+ generateGroups(sortedMembers.boolean, (group) => {
541
+ if (group.some((m) => (m.alias || m.name).length << 1 == 2)) {
542
+ DESERIALIZE += " const code16 = load<u16>(keyStart);\n";
543
+ }
544
+ if (group.some((m) => (m.alias || m.name).length << 1 == 4)) {
545
+ DESERIALIZE += " const code32 = load<u32>(keyStart);\n";
546
+ }
547
+ if (group.some((m) => (m.alias || m.name).length << 1 == 6)) {
548
+ DESERIALIZE += " const code48 = load<u64>(keyStart) & 0x0000FFFFFFFFFFFF;\n";
549
+ }
550
+ if (group.some((m) => (m.alias || m.name).length << 1 == 8)) {
551
+ DESERIALIZE += " const code64 = load<u64>(keyStart);\n";
552
+ }
553
+ if (group.some((m) => (m.alias || m.name).length << 1 > 8)) {
554
+ DESERIALIZE += toMemCDecl(Math.max(...group.map((m) => (m.alias || m.name).length << 1)), " ");
555
+ }
556
+ const firstMemberName = group[0].alias || group[0].name;
559
557
 
560
- for (let i = 1; i < sortedMembers.boolean.length; i++) {
561
- const member = sortedMembers.boolean[i];
562
- const memberName = member.alias || member.name;
563
- DESERIALIZE += indent + " else if (" + getComparision(memberName) + ") { // " + memberName + "\n";
564
- DESERIALIZE += indent + " store<" + member.type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(member.name) + "));\n";
565
- DESERIALIZE += indent + " srcStart += 2;\n";
566
- DESERIALIZE += indent + " keyStart = 0;\n";
567
- DESERIALIZE += indent + " break;\n";
568
- DESERIALIZE += indent + " }";
569
- }
558
+ DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
559
+ DESERIALIZE += indent + " store<" + group[0].type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(group[0].name) + "));\n";
560
+ DESERIALIZE += indent + " srcStart += 2;\n";
561
+ DESERIALIZE += indent + " keyStart = 0;\n";
562
+ DESERIALIZE += indent + " break;\n";
563
+ DESERIALIZE += indent + " }";
570
564
 
571
- if (STRICT) {
572
- DESERIALIZE += " else {\n";
573
- DESERIALIZE += indent + ' throw new Error("Unexpected key in JSON object \'" + String.fromCharCode(load<u16>(srcStart)) + "\' at position " + (srcEnd - srcStart).toString());\n';
574
- DESERIALIZE += indent + " }\n";
575
- }
565
+ for (let i = 1; i < group.length; i++) {
566
+ const member = group[i];
567
+ const memberName = member.alias || member.name;
568
+ DESERIALIZE += indent + " else if (" + getComparision(memberName) + ") { // " + memberName + "\n";
569
+ DESERIALIZE += indent + " store<" + member.type + ">(changetype<usize>(out), true, offsetof<this>(" + JSON.stringify(member.name) + "));\n";
570
+ DESERIALIZE += indent + " srcStart += 2;\n";
571
+ DESERIALIZE += indent + " keyStart = 0;\n";
572
+ DESERIALIZE += indent + " break;\n";
573
+ DESERIALIZE += indent + " }";
574
+ }
575
+
576
+ if (STRICT) {
577
+ DESERIALIZE += " else {\n";
578
+ DESERIALIZE += indent + ' throw new Error("Unexpected key in JSON object \'" + String.fromCharCode(load<u16>(srcStart)) + "\' at position " + (srcEnd - srcStart).toString());\n';
579
+ DESERIALIZE += indent + " }\n";
580
+ }
581
+ });
576
582
 
577
583
  DESERIALIZE += " }"; // Close first char check
578
584
  mbElse = " else ";
579
585
  DESERIALIZE += " else if (load<u64>(srcStart, 2) == 28429466576093281) {\n";
580
586
  DESERIALIZE += " srcStart += 10;\n";
581
587
 
582
- DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
583
- DESERIALIZE += indent + " store<" + sortedMembers.boolean[0].type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(sortedMembers.boolean[0].name) + "));\n";
584
- DESERIALIZE += indent + " srcStart += 2;\n";
585
- DESERIALIZE += indent + " keyStart = 0;\n";
586
- DESERIALIZE += indent + " break;\n";
587
- DESERIALIZE += indent + " }";
588
+ generateGroups(sortedMembers.boolean, (group) => {
589
+ if (group.some((m) => (m.alias || m.name).length << 1 == 2)) {
590
+ DESERIALIZE += " const code16 = load<u16>(keyStart);\n";
591
+ }
592
+ if (group.some((m) => (m.alias || m.name).length << 1 == 4)) {
593
+ DESERIALIZE += " const code32 = load<u32>(keyStart);\n";
594
+ }
595
+ if (group.some((m) => (m.alias || m.name).length << 1 == 6)) {
596
+ DESERIALIZE += " const code48 = load<u64>(keyStart) & 0x0000FFFFFFFFFFFF;\n";
597
+ }
598
+ if (group.some((m) => (m.alias || m.name).length << 1 == 8)) {
599
+ DESERIALIZE += " const code64 = load<u64>(keyStart);\n";
600
+ }
601
+ if (group.some((m) => (m.alias || m.name).length << 1 > 8)) {
602
+ DESERIALIZE += toMemCDecl(Math.max(...group.map((m) => (m.alias || m.name).length << 1)), " ");
603
+ }
604
+ const firstMemberName = group[0].alias || group[0].name;
588
605
 
589
- for (let i = 1; i < sortedMembers.boolean.length; i++) {
590
- const member = sortedMembers.boolean[i];
591
- const memberName = member.alias || member.name;
592
- DESERIALIZE += indent + " else if (" + getComparision(memberName) + ") { // " + memberName + "\n";
593
- DESERIALIZE += indent + " store<" + member.type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(member.name) + "));\n";
606
+ DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
607
+ DESERIALIZE += indent + " store<" + group[0].type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(group[0].name) + "));\n";
594
608
  DESERIALIZE += indent + " srcStart += 2;\n";
595
609
  DESERIALIZE += indent + " keyStart = 0;\n";
596
610
  DESERIALIZE += indent + " break;\n";
597
611
  DESERIALIZE += indent + " }";
598
- }
599
612
 
600
- if (STRICT) {
601
- DESERIALIZE += " else {\n";
602
- DESERIALIZE += indent + ' throw new Error("Unexpected key in JSON object \'" + String.fromCharCode(load<u16>(srcStart)) + "\' at position " + (srcEnd - srcStart).toString());\n';
603
- DESERIALIZE += indent + " }\n";
604
- }
613
+ for (let i = 1; i < group.length; i++) {
614
+ const member = group[i];
615
+ const memberName = member.alias || member.name;
616
+ DESERIALIZE += indent + " else if (" + getComparision(memberName) + ") { // " + memberName + "\n";
617
+ DESERIALIZE += indent + " store<" + member.type + ">(changetype<usize>(out), false, offsetof<this>(" + JSON.stringify(member.name) + "));\n";
618
+ DESERIALIZE += indent + " srcStart += 2;\n";
619
+ DESERIALIZE += indent + " keyStart = 0;\n";
620
+ DESERIALIZE += indent + " break;\n";
621
+ DESERIALIZE += indent + " }";
622
+ }
605
623
 
624
+ if (STRICT) {
625
+ DESERIALIZE += " else {\n";
626
+ DESERIALIZE += indent + ' throw new Error("Unexpected key in JSON object \'" + String.fromCharCode(load<u16>(srcStart)) + "\' at position " + (srcEnd - srcStart).toString());\n';
627
+ DESERIALIZE += indent + " }\n";
628
+ }
629
+ });
606
630
  DESERIALIZE += " }\n"; // Close first char check
607
631
  DESERIALIZE += " }"; // Close first char check
608
632
  }
@@ -612,47 +636,48 @@ class JSONTransform extends Visitor {
612
636
 
613
637
  DESERIALIZE += " if (load<u64>(srcStart) == 30399761348886638) {\n";
614
638
  DESERIALIZE += " srcStart += 8;\n";
639
+ generateGroups(sortedMembers.null, (group) => {
640
+ if (group.some((m) => (m.alias || m.name).length << 1 == 2)) {
641
+ DESERIALIZE += " const code16 = load<u16>(keyStart);\n";
642
+ }
643
+ if (group.some((m) => (m.alias || m.name).length << 1 == 4)) {
644
+ DESERIALIZE += " const code32 = load<u32>(keyStart);\n";
645
+ }
646
+ if (group.some((m) => (m.alias || m.name).length << 1 == 6)) {
647
+ DESERIALIZE += " const code48 = load<u64>(keyStart) & 0x0000FFFFFFFFFFFF;\n";
648
+ }
649
+ if (group.some((m) => (m.alias || m.name).length << 1 == 8)) {
650
+ DESERIALIZE += " const code64 = load<u64>(keyStart);\n";
651
+ }
652
+ if (group.some((m) => (m.alias || m.name).length << 1 > 8)) {
653
+ DESERIALIZE += toMemCDecl(Math.max(...group.map((m) => (m.alias || m.name).length << 1)), " ");
654
+ }
615
655
 
616
- if (sortedMembers.null.some((m) => (m.alias || m.name).length << 1 == 2)) {
617
- DESERIALIZE += " const code16 = load<u16>(keyStart);\n";
618
- }
619
- if (sortedMembers.null.some((m) => (m.alias || m.name).length << 1 == 4)) {
620
- DESERIALIZE += " const code32 = load<u32>(keyStart);\n";
621
- }
622
- if (sortedMembers.null.some((m) => (m.alias || m.name).length << 1 == 6)) {
623
- DESERIALIZE += " const code48 = load<u64>(keyStart) & 0x0000FFFFFFFFFFFF;\n";
624
- }
625
- if (sortedMembers.null.some((m) => (m.alias || m.name).length << 1 == 8)) {
626
- DESERIALIZE += " const code64 = load<u64>(keyStart);\n";
627
- }
628
- // if (sortedMembers.null.some((m) => (m.alias || m.name).length << 1 > 8)) {
629
- // DESERIALIZE += toMemCDecl(Math.max(...sortedMembers.null.map((m) => (m.alias || m.name).length << 1)), " ");
630
- // }
631
-
632
- const firstMemberName = sortedMembers.null[0].alias || sortedMembers.null[0].name;
633
- DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
634
- DESERIALIZE += indent + " store<" + sortedMembers.null[0].type + ">(changetype<usize>(out), null, offsetof<this>(" + JSON.stringify(sortedMembers.null[0].name) + "));\n";
635
- DESERIALIZE += indent + " srcStart += 2;\n";
636
- DESERIALIZE += indent + " keyStart = 0;\n";
637
- DESERIALIZE += indent + " break;\n";
638
- DESERIALIZE += indent + " }";
639
-
640
- for (let i = 1; i < sortedMembers.null.length; i++) {
641
- const member = sortedMembers.null[i];
642
- const memberName = member.alias || member.name;
643
- DESERIALIZE += indent + " else if (" + getComparision(memberName) + ") { // " + memberName + "\n";
644
- DESERIALIZE += indent + " store<" + member.type + ">(changetype<usize>(out), null, offsetof<this>(" + JSON.stringify(member.name) + "));\n";
656
+ const firstMemberName = group[0].alias || group[0].name;
657
+ DESERIALIZE += indent + " if (" + getComparision(firstMemberName) + ") { // " + firstMemberName + "\n";
658
+ DESERIALIZE += indent + " store<" + group[0].type + ">(changetype<usize>(out), null, offsetof<this>(" + JSON.stringify(group[0].name) + "));\n";
645
659
  DESERIALIZE += indent + " srcStart += 2;\n";
646
660
  DESERIALIZE += indent + " keyStart = 0;\n";
647
661
  DESERIALIZE += indent + " break;\n";
648
662
  DESERIALIZE += indent + " }";
649
- }
650
663
 
651
- if (STRICT) {
652
- DESERIALIZE += " else {\n";
653
- DESERIALIZE += indent + ' throw new Error("Unexpected key in JSON object \'" + String.fromCharCode(load<u16>(srcStart)) + "\' at position " + (srcEnd - srcStart).toString());\n';
654
- DESERIALIZE += indent + " }\n";
655
- }
664
+ for (let i = 1; i < group.length; i++) {
665
+ const member = group[i];
666
+ const memberName = member.alias || member.name;
667
+ DESERIALIZE += indent + " else if (" + getComparision(memberName) + ") { // " + memberName + "\n";
668
+ DESERIALIZE += indent + " store<" + group[0].type + ">(changetype<usize>(out), null, offsetof<this>(" + JSON.stringify(group[0].name) + "));\n";
669
+ DESERIALIZE += indent + " srcStart += 2;\n";
670
+ DESERIALIZE += indent + " keyStart = 0;\n";
671
+ DESERIALIZE += indent + " break;\n";
672
+ DESERIALIZE += indent + " }";
673
+ }
674
+
675
+ if (STRICT) {
676
+ DESERIALIZE += " else {\n";
677
+ DESERIALIZE += indent + ' throw new Error("Unexpected key in JSON object \'" + String.fromCharCode(load<u16>(srcStart)) + "\' at position " + (srcEnd - srcStart).toString());\n';
678
+ DESERIALIZE += indent + " }\n";
679
+ }
680
+ });
656
681
 
657
682
  DESERIALIZE += " }"; // Close first char check
658
683
  DESERIALIZE += "\n }"; // Close first char check
@@ -1072,7 +1097,7 @@ function getComparision(data: string) {
1072
1097
  return "code64 == " + toU64(data);
1073
1098
  }
1074
1099
  default: {
1075
- return "memory.compare(keyStart, changetype<usize>(" + JSON.stringify(data)+"), keyEnd - keyStart) == 0"; //toMemCCheck(data);
1100
+ return toMemCCheck(data);
1076
1101
  }
1077
1102
  }
1078
1103
  }
@@ -1,149 +0,0 @@
1
- // misc.spec.ts
2
-
3
- import { JSON } from "..";
4
- import { describe, expect } from "./lib";
5
-
6
- @json
7
- class Obj {
8
- a: string = "hello";
9
- b: string = "world";
10
- c: string = '"\t\f\u0000\u0001';
11
- }
12
-
13
- @json
14
- class Vec3 {
15
- x: f32 = 0.0;
16
- y: f32 = 0.0;
17
- z: f32 = 0.0;
18
- }
19
-
20
- @json
21
- class Player {
22
- @alias("first name")
23
- firstName!: string;
24
- lastName!: string;
25
- lastActive!: i32[];
26
- @omitif((self: Player) => self.age < 18)
27
- age!: i32;
28
- @omitnull()
29
- pos!: Vec3 | null;
30
- isVerified!: boolean;
31
- }
32
-
33
- @json class Point {}
34
-
35
- @json
36
- class NewPoint {
37
- x: f64 = 0.0;
38
- y: f64 = 0.0;
39
-
40
- constructor(x: f64, y: f64) {
41
- this.x = x;
42
- this.y = y;
43
- }
44
-
45
- @serializer
46
- serializer(self: NewPoint): string {
47
- return `x=${self.x},y=${self.y}`;
48
- }
49
-
50
- @deserializer
51
- deserializer(data: string): NewPoint {
52
- const c = data.indexOf(",");
53
- const x = data.slice(2, c);
54
- const y = data.slice(c + 3);
55
- return new NewPoint(f64.parse(x), f64.parse(y));
56
- }
57
- }
58
-
59
- @json class InnerObj<T> { obj: T = instantiate<T>(); }
60
- @json class ObjWithBracketString { data: string = ""; }
61
-
62
- @json
63
- class Foo {
64
- id: string = "";
65
- firstName: string = "";
66
- lastName: string = "";
67
- }
68
-
69
- @json
70
- class SrvInfo {
71
- accessUrl: string = "https://example.com";
72
- cardTypes: i32[] = [1, 2, 3];
73
- customService: string = "Contact us at support@example.com";
74
- invoiceApplicationStatus: i32 = 1;
75
- isCertification: bool = true;
76
- isOnlineRecharge: bool = false;
77
- loginTypes: i32[] = [0, 1];
78
- record: string = "ICP 12345678";
79
- regCompanyAudit: i32 = 2;
80
- regCompanyPipeline: i32[] = [101, 102, 103];
81
- regPwdLimit: i32 = 8;
82
- serverTime: i64 = 1650000000000;
83
- srvDescription: string = "A demo service for handling customer operations.";
84
- srvHiddenMenu: string[] = ["admin", "beta"];
85
- srvHost: string = "srv.example.com";
86
- srvId: i32 = 999;
87
- srvKeywords: string[] = ["finance", "payments", "online"];
88
- srvLogoImgUrl: string = "https://example.com/logo.png";
89
- srvName: string = "ExampleService";
90
- srvPageId: i32 = 5;
91
- thirdAuthUrl: string = "https://auth.example.com";
92
- userCenterStyle: i32 = 1;
93
- }
94
-
95
- describe("Basic JSON.stringify behavior", () => {
96
- expect(JSON.stringify(new Obj())).toBe('{"a":"hello","b":"world","c":"\\"\\t\\f\\u0000\\u0001"}');
97
-
98
- const player: Player = {
99
- firstName: "Jairus",
100
- lastName: "Tanaka",
101
- lastActive: [2, 7, 2025],
102
- age: 18,
103
- pos: { x: 3.4, y: 1.2, z: 8.3 },
104
- isVerified: true,
105
- };
106
-
107
- expect(JSON.stringify(player)).toBe(
108
- '{"age":18,"pos":{"x":3.4,"y":1.2,"z":8.3},"first name":"Jairus","lastName":"Tanaka","lastActive":[2,7,2025],"isVerified":true}'
109
- );
110
-
111
- const raw = JSON.Raw.from('"hello world"');
112
- expect(JSON.stringify<JSON.Raw>(raw)).toBe('"hello world"');
113
-
114
- const emptyObj = new JSON.Obj();
115
- expect(JSON.stringify(emptyObj)).toBe("{}");
116
-
117
- emptyObj.set("x", 1.5);
118
- emptyObj.set("y", 5.4);
119
- emptyObj.set("z", 9.8);
120
- expect(JSON.stringify(emptyObj)).toBe('{"x":1.5,"y":5.4,"z":9.8}');
121
- });
122
-
123
- describe("Parse and stringify combinations", () => {
124
- const input = '{"x":3.4,"y":1.2,"z":8.3}';
125
- const parsed = JSON.parse<JSON.Obj>(input);
126
- expect(JSON.stringify(parsed)).toBe(input);
127
-
128
- const strange = JSON.parse<InnerObj<ObjWithBracketString>>('{"obj":{"data":"hello} world"}}');
129
- expect(JSON.stringify(strange)).toBe('{"obj":{"data":"hello} world"}}');
130
-
131
- const point = new Point();
132
- expect(JSON.stringify(point)).toBe('{}');
133
- expect(JSON.stringify(JSON.parse<Point>(JSON.stringify(point)))).toBe('{}');
134
-
135
- const np = new NewPoint(1.0, 2.0);
136
- const ser = JSON.stringify(np);
137
- expect(ser).toBe('x=1.0,y=2.0');
138
- expect(JSON.stringify(JSON.parse<NewPoint>(ser))).toBe('x=1.0,y=2.0');
139
- });
140
-
141
- describe("SrvInfo consistency", () => {
142
- const srv = new SrvInfo();
143
- const serialized = JSON.stringify(srv);
144
- const expected = '{"accessUrl":"https://example.com","cardTypes":[1,2,3],"customService":"Contact us at support@example.com","invoiceApplicationStatus":1,"isCertification":true,"isOnlineRecharge":false,"loginTypes":[0,1],"record":"ICP 12345678","regCompanyAudit":2,"regCompanyPipeline":[101,102,103],"regPwdLimit":8,"serverTime":1650000000000,"srvDescription":"A demo service for handling customer operations.","srvHiddenMenu":["admin","beta"],"srvHost":"srv.example.com","srvId":999,"srvKeywords":["finance","payments","online"],"srvLogoImgUrl":"https://example.com/logo.png","srvName":"ExampleService","srvPageId":5,"thirdAuthUrl":"https://auth.example.com","userCenterStyle":1}';
145
-
146
- expect(serialized).toBe(expected);
147
- const parsed = JSON.parse<SrvInfo>(serialized);
148
- expect(JSON.stringify(parsed)).toBe(expected);
149
- });