json-as 0.5.11 → 0.5.12

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/asconfig.json CHANGED
@@ -10,7 +10,10 @@
10
10
  }
11
11
  },
12
12
  "options": {
13
- "transform": ["./transform"],
13
+ "transform": [
14
+ "./transform",
15
+ "./transform"
16
+ ],
14
17
  "bindings": "esm",
15
18
  "exportStart": "_start"
16
19
  },
@@ -1,7 +1,4 @@
1
- bench("1+1", () => {
2
- blackbox("1+1".split("+w"))
3
- })
4
- /*import { JSON } from "..";
1
+ import { JSON } from "..";
5
2
 
6
3
  @json
7
4
  class Vec2 {
@@ -34,15 +31,14 @@ bench("Stringify Nested Array", () => {
34
31
  blackbox(
35
32
  JSON.stringify<string[][]>(
36
33
  blackbox([
37
- ["a", "b", "c"],
38
- ["d", "e", "f"],
34
+ ["a", "b", "c"]
39
35
  ])
40
36
  )
41
37
  );
42
38
  });
43
39
 
44
40
  bench("Parse Nested Array", () => {
45
- blackbox(JSON.parse<string[][]>(blackbox('[["a","b","c"],["d","e","f"]]')));
41
+ blackbox(JSON.parse<string[][]>(blackbox('[["a","b","c"]]')));
46
42
  });
47
43
 
48
44
  bench("Stringify String", () => {
@@ -52,7 +48,7 @@ bench("Stringify String", () => {
52
48
  bench("Parse String", () => {
53
49
  blackbox(JSON.parse<string>(blackbox('"Hello"')));
54
50
  });
55
-
51
+ /*
56
52
  bench("Stringify Boolean", () => {
57
53
  blackbox(JSON.stringify(blackbox(true)));
58
54
  });
@@ -75,5 +71,4 @@ bench("Stringify Float", () => {
75
71
 
76
72
  bench("Parse Float", () => {
77
73
  blackbox(JSON.parse<f32>(blackbox("3.14")));
78
- });
79
- */
74
+ });*/
@@ -31,7 +31,7 @@ type Null = Nullable | null;
31
31
  describe("Ser/de Nulls", () => {
32
32
  canSerde<Null>(null);
33
33
  });
34
- /*
34
+
35
35
  describe("Ser/de Numbers", () => {
36
36
  it("should ser/de integers", () => {
37
37
  canSerde<i32>(0);
@@ -41,10 +41,10 @@ describe("Ser/de Numbers", () => {
41
41
  canSerde<i32>(-100);
42
42
  canSerde<i64>(-101);
43
43
 
44
- canSerde<u128>(u128.from("0"))
45
- canSerde<u128>(u128.from("100"))
46
- canSerde<u128>(u128.from("101"))
47
- `
44
+ // canSerde<u128>(u128.from("0"))
45
+ // canSerde<u128>(u128.from("100"))
46
+ // canSerde<u128>(u128.from("101"))
47
+
48
48
  canSerde<u128Safe>(u128Safe.from("0"))
49
49
  canSerde<u128Safe>(u128Safe.from("100"))
50
50
  canSerde<u128Safe>(u128Safe.from("101"))
@@ -199,4 +199,4 @@ describe("Ser/de Objects", () => {
199
199
  isVerified: true,
200
200
  });
201
201
  });
202
- });*/
202
+ });
@@ -1,5 +1,5 @@
1
1
  import { StringSink } from "as-string-sink/assembly";
2
- import { isSpace } from "assemblyscript/std/assembly/util/string";
2
+ import { isSpace } from "util/string";
3
3
  import { backSlashCode, quoteCode } from "./chars";
4
4
  import { u128, u128Safe, u256, u256Safe, i128, i128Safe, i256Safe } from "as-bignum/assembly";
5
5
 
@@ -56,6 +56,6 @@ export function escapeChar(char: string): string {
56
56
  case 0x09: return "\\t";
57
57
  case 0x0C: return "\\f";
58
58
  case 0x0B: return "\\u000b";
59
- default: return char;
59
+ default: return char;
60
60
  }
61
61
  }
package/assembly/test.ts CHANGED
@@ -3,48 +3,41 @@ import {
3
3
  JSON
4
4
  } from ".";
5
5
 
6
- // @ts-ignore
7
- @json
8
- class Stats {
9
- wins!: u128
10
- loss!: u128
11
- }
12
6
  // @ts-ignore
13
7
  @json
14
8
  class Vec3 {
15
- x!: f32;
16
- y!: f32;
17
- z!: f32;
9
+ x: f32 = 3.4;
10
+ y: f32 = 1.2;
11
+ z: f32 = 8.3;
18
12
  }
19
13
 
20
- const vec: Vec3 = {
21
- x: 3.4,
22
- y: 1.2,
23
- z: 8.3
14
+ // @ts-ignore
15
+ @json
16
+ class Stats extends Vec3 {
17
+ wins: u128
18
+ loss: u128
24
19
  }
25
20
 
26
21
  // @ts-ignore
27
22
  @json
28
23
  class Player {
29
- firstName!: string;
30
- lastName!: string;
31
- lastActive!: i32[];
32
- age!: i32;
33
- pos!: Vec3 | null;
34
- isVerified!: boolean;
35
- stats!: Stats
24
+ firstName: string;
25
+ lastName: string;
26
+ lastActive: i32[];
27
+ age: i32;
28
+ isVerified: boolean;
29
+ stats: Stats
36
30
  }
37
31
 
38
32
  const player: Player = {
39
33
  firstName: "Emmet",
40
34
  lastName: "West",
41
- lastActive: [8, 27, 2022],
35
+ lastActive: [
36
+ 8,
37
+ 27,
38
+ 2022
39
+ ],
42
40
  age: 23,
43
- pos: {
44
- x: 3.4,
45
- y: 1.2,
46
- z: 8.3
47
- },
48
41
  isVerified: true,
49
42
  stats: {
50
43
  wins: u128.fromString("443"),
@@ -55,4 +48,26 @@ const player: Player = {
55
48
  const serializedPlayer = JSON.stringify<Player>(player);
56
49
  console.log("Serialized Player: " + serializedPlayer);
57
50
  const deserializedPlayer = JSON.parse<Player>(serializedPlayer);
58
- console.log("Deserialized Player: " + JSON.stringify(deserializedPlayer));
51
+ console.log("Deserialized Player: " + JSON.stringify(deserializedPlayer));/*
52
+
53
+ @json
54
+ class Vec2 {
55
+ x: f32;
56
+ y: f32;
57
+ }
58
+
59
+ const vec: Vec2 = {
60
+ x: 0.0,
61
+ y: 0.0,
62
+ }
63
+
64
+ let i = 5_000_000;
65
+ while (i--) {
66
+ JSON.stringify<Vec2>(vec);
67
+ }
68
+ let start = Date.now();
69
+ i = 10_000_000;
70
+ while (i--) {
71
+ JSON.stringify<Vec2>(vec);
72
+ }
73
+ console.log(`Took: ${Date.now() - start}ms`)*/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-as",
3
- "version": "0.5.11",
3
+ "version": "0.5.12",
4
4
  "description": "JSON encoder/decoder for AssemblyScript",
5
5
  "types": "assembly/index.ts",
6
6
  "author": "Jairus Tanaka",
@@ -13,7 +13,7 @@
13
13
  "scripts": {
14
14
  "aspect": "asp",
15
15
  "bench:astral": "astral",
16
- "build:test": "asc assembly/test.ts --target test",
16
+ "build:test": "asc assembly/test.ts --target test --runtime stub",
17
17
  "build:transform": "tsc -p ./transform",
18
18
  "test:wasmtime": "wasmtime ./build/test.wasm",
19
19
  "test:lunatic": "lunatic ./build/test.wasm",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@json-as/transform",
3
- "version": "0.5.11",
3
+ "version": "0.5.12",
4
4
  "description": "JSON encoder/decoder for AssemblyScript",
5
5
  "main": "./lib/index.js",
6
6
  "author": "Jairus Tanaka",
@@ -9,6 +9,7 @@ import {
9
9
  } from "visitor-as/dist/decorator.js";
10
10
  import { getName, toString } from "visitor-as/dist/utils.js";
11
11
  import { SimpleParser } from "visitor-as/dist/index.js";
12
+ import { NodeKind } from "types:assemblyscript/src/ast";
12
13
 
13
14
  class SchemaData {
14
15
  public keys: string[] = [];
@@ -27,6 +28,7 @@ class AsJSONTransform extends ClassDecorator {
27
28
 
28
29
  visitMethodDeclaration(): void { }
29
30
  visitFieldDeclaration(node: FieldDeclaration): void {
31
+ if (toString(node).startsWith("static")) return;
30
32
  const lineText = toString(node);
31
33
  if (lineText.startsWith("private")) return;
32
34
  const name = getName(node);
@@ -64,6 +66,11 @@ class AsJSONTransform extends ClassDecorator {
64
66
  return;
65
67
  }
66
68
 
69
+ // Prevent from being triggered twice
70
+ for (const member of node.members) {
71
+ if (member.name.text == "__JSON_Serialize") return;
72
+ }
73
+
67
74
  this.currentClass = {
68
75
  name: toString(node.name),
69
76
  keys: [],
@@ -81,7 +88,7 @@ class AsJSONTransform extends ClassDecorator {
81
88
  return v;
82
89
  }
83
90
  });
84
- if (parentSchema.length > 0) {
91
+ if (parentSchema.length > 0 && parentSchema[0]?.encodeStmts) {
85
92
  parentSchema[0]?.encodeStmts.push(parentSchema[0]?.encodeStmts.pop() + ",")
86
93
  this.currentClass.encodeStmts.push(...parentSchema[0]?.encodeStmts)
87
94
  } else {
package/index.html DELETED
@@ -1,10 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <script type="module">
5
- import { add } from "./build/release.js";
6
- document.body.innerText = add(1, 2);
7
- </script>
8
- </head>
9
- <body></body>
10
- </html>