json-as 0.8.7 → 0.8.8
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/.github/workflows/nodejs.yml +1 -7
- package/CHANGELOG +1 -3
- package/README.md +16 -26
- package/assembly/__benches__/as-json.ts +88 -0
- package/assembly/__benches__/as-tral.d.ts +1 -0
- package/assembly/__tests__/as-json.spec.ts +673 -0
- package/assembly/__tests__/as-pect.d.ts +1 -0
- package/assembly/deserialize/array/array.ts +1 -1
- package/assembly/deserialize/array/map.ts +1 -1
- package/assembly/deserialize/array/object.ts +1 -1
- package/assembly/deserialize/array.ts +1 -1
- package/assembly/deserialize/box.ts +1 -4
- package/assembly/deserialize/map.ts +1 -1
- package/assembly/deserialize/object.ts +125 -122
- package/assembly/index.d.ts +1 -7
- package/assembly/index.ts +1 -129
- package/assembly/serialize/array.ts +2 -3
- package/assembly/serialize/box.ts +1 -1
- package/assembly/serialize/map.ts +1 -1
- package/assembly/src/json.ts +124 -0
- package/assembly/test.ts +22 -33
- package/bench/benchmark.ts +3 -7
- package/bench.js +3 -14
- package/index.ts +1 -1
- package/package.json +8 -6
- package/transform/lib/index.js +183 -301
- package/transform/package.json +1 -1
- package/transform/src/index.ts +215 -301
- package/transform/tsconfig.json +2 -2
- package/tsconfig.json +102 -94
- package/assembly/__tests__/deserialize.spec.ts +0 -298
- package/assembly/__tests__/serialize.spec.ts +0 -375
- package/transform/lib/index.old.js +0 -257
- package/transform/lib/types.js +0 -17
- package/transform/src/index.old.ts +0 -312
package/assembly/test.ts
CHANGED
|
@@ -1,41 +1,30 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Box } from "as-container";
|
|
2
|
+
import { JSON } from "./src/json";
|
|
2
3
|
|
|
3
4
|
@json
|
|
4
|
-
class
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
class Foo {
|
|
6
|
+
@omitnull
|
|
7
|
+
optionalNumber: Box<i32> | null = null;
|
|
8
|
+
@omitif("this.tristateValue!.unwrap() == false")
|
|
9
|
+
tristateValue: Box<bool> | null = null;
|
|
8
10
|
}
|
|
9
11
|
|
|
10
12
|
@json
|
|
11
|
-
class
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
lastName!: string;
|
|
15
|
-
lastActive!: i32[];
|
|
16
|
-
@omitif("this.age < 18")
|
|
17
|
-
age!: i32;
|
|
18
|
-
@omitnull()
|
|
19
|
-
pos!: Vec3 | null;
|
|
20
|
-
isVerified!: boolean;
|
|
13
|
+
class TestBody {
|
|
14
|
+
a!: string;
|
|
15
|
+
b!: u8;
|
|
21
16
|
}
|
|
22
17
|
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
y: 1.2,
|
|
31
|
-
z: 8.3
|
|
32
|
-
},
|
|
33
|
-
isVerified: true
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const stringified = JSON.stringify<Player>(player);
|
|
37
|
-
|
|
38
|
-
const parsed = JSON.parse<Player>(stringified);
|
|
18
|
+
const foo: Foo = {
|
|
19
|
+
optionalNumber: null,
|
|
20
|
+
tristateValue: Box.from(true)
|
|
21
|
+
}
|
|
22
|
+
console.log(JSON.stringify(JSON.parse<TestBody[]>('[{"a":"hi","b":5},{"a":"bye","b":6}]')))
|
|
23
|
+
console.log(JSON.stringify([foo, foo]))
|
|
24
|
+
console.log(JSON.stringify(foo));
|
|
39
25
|
|
|
40
|
-
|
|
41
|
-
console.log(
|
|
26
|
+
const p1 = JSON.parse<Box<i32> | null>("null");
|
|
27
|
+
console.log(JSON.stringify<Box<i32> | null>(p1));
|
|
28
|
+
console.log(changetype<usize>(p1).toString())
|
|
29
|
+
const p2 = JSON.parse<Foo>("{\"optionalNumber\":null,\"tristateValue\":false}");
|
|
30
|
+
console.log(JSON.stringify(p2));
|
package/bench/benchmark.ts
CHANGED
|
@@ -26,14 +26,14 @@ bench("Parse Number ATOI", () => {
|
|
|
26
26
|
bench("Parse Number STDLIB", () => {
|
|
27
27
|
blackbox<i32>(i32.parse("12345"));
|
|
28
28
|
});
|
|
29
|
-
|
|
29
|
+
*/
|
|
30
30
|
bench("Stringify Object (Vec3)", () => {
|
|
31
31
|
blackbox<string>(JSON.stringify(vec));
|
|
32
|
-
})
|
|
32
|
+
});
|
|
33
33
|
|
|
34
34
|
bench("Parse Object (Vec3)", () => {
|
|
35
35
|
blackbox<Vec3>(JSON.parse<Vec3>('{"x":0,"y":0,"z":0}'));
|
|
36
|
-
})
|
|
36
|
+
});
|
|
37
37
|
|
|
38
38
|
bench("Stringify Number Array", () => {
|
|
39
39
|
blackbox<string>(JSON.stringify<i32[]>([1, 2, 3]));
|
|
@@ -47,10 +47,6 @@ bench("Stringify String", () => {
|
|
|
47
47
|
blackbox<string>(JSON.stringify(blackbox('Hello "World!')));
|
|
48
48
|
});
|
|
49
49
|
|
|
50
|
-
bench("Parse Number ATOI", () => {
|
|
51
|
-
blackbox<i32>(__atoi_fast<i32>("12345"));
|
|
52
|
-
})
|
|
53
|
-
|
|
54
50
|
bench("Parse String", () => {
|
|
55
51
|
blackbox<string>(JSON.parse<string>(blackbox('"Hello "World!"')));
|
|
56
52
|
});
|
package/bench.js
CHANGED
|
@@ -34,18 +34,7 @@ const vec = {
|
|
|
34
34
|
let data;
|
|
35
35
|
|
|
36
36
|
const bench = new Bench({ time: 1000 })
|
|
37
|
-
|
|
38
|
-
data = JSON.stringify(1.2345)
|
|
39
|
-
})
|
|
40
|
-
.add("parse float", () => {
|
|
41
|
-
data = JSON.parse("1.2345")
|
|
42
|
-
})
|
|
43
|
-
.add("stringify iny", () => {
|
|
44
|
-
data = JSON.stringify(12345)
|
|
45
|
-
})
|
|
46
|
-
.add("parse int", () => {
|
|
47
|
-
data = JSON.parse("12345")
|
|
48
|
-
})
|
|
37
|
+
|
|
49
38
|
.add("Stringify Object (Vec3)", () => {
|
|
50
39
|
data = JSON.stringify(vec);
|
|
51
40
|
})
|
|
@@ -65,9 +54,9 @@ const bench = new Bench({ time: 1000 })
|
|
|
65
54
|
.add("Stringify String", () => {
|
|
66
55
|
data = JSON.stringify('Hello "World!');
|
|
67
56
|
})
|
|
68
|
-
|
|
57
|
+
|
|
69
58
|
.add("Parse String", () => {
|
|
70
|
-
data = JSON.parse('
|
|
59
|
+
data = JSON.parse('"Hello "World!"');
|
|
71
60
|
})
|
|
72
61
|
.todo("unimplemented .add");
|
|
73
62
|
|
package/index.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { JSON } from "./assembly/
|
|
1
|
+
export { JSON } from "./assembly/src/json";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "json-as",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.8",
|
|
4
4
|
"description": "JSON encoder/decoder for AssemblyScript",
|
|
5
5
|
"types": "assembly/index.ts",
|
|
6
6
|
"author": "Jairus Tanaka",
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
],
|
|
16
16
|
"license": "MIT",
|
|
17
17
|
"scripts": {
|
|
18
|
-
"test": "
|
|
19
|
-
"
|
|
20
|
-
"build:test": "asc assembly/test.ts -o build/test.wasm --transform ./transform --config ./node_modules/@assemblyscript/wasi-shim/asconfig.json --optimizeLevel 0 --shrinkLevel 0 --noAssert --uncheckedBehavior always",
|
|
18
|
+
"test": "asp",
|
|
19
|
+
"bench:astral": "astral --optimizeLevel 3 --shrinkLevel 0 --converge --noAssert --uncheckedBehavior never --runtime stub",
|
|
20
|
+
"build:test": "asc assembly/test.ts -o build/test.wasm --transform ./transform --config ./node_modules/@assemblyscript/wasi-shim/asconfig.json --optimizeLevel 0 --shrinkLevel 0 --noAssert --uncheckedBehavior always --runtime stub",
|
|
21
21
|
"build:bench": "asc bench/benchmark.ts -o bench/benchmark.wasm --transform ./transform --config ./node_modules/@assemblyscript/wasi-shim/asconfig.json --optimizeLevel 3 --shrinkLevel 0 --converge --noAssert --uncheckedBehavior always --runtime stub",
|
|
22
22
|
"bench:wasmtime": "wasmtime ./bench/benchmark.wasm",
|
|
23
|
-
"bench:
|
|
23
|
+
"bench:wavm": "wavm run ./bench/benchmark.wasm",
|
|
24
24
|
"build:transform": "tsc -p ./transform",
|
|
25
25
|
"test:wasmtime": "wasmtime ./build/test.wasm",
|
|
26
26
|
"test:wavm": "wavm run ./build/test.wasm",
|
|
@@ -29,12 +29,14 @@
|
|
|
29
29
|
"prettier": "as-prettier -w ."
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
+
"@as-pect/cli": "^8.1.0",
|
|
33
|
+
"@as-tral/cli": "^3.0.2",
|
|
32
34
|
"@assemblyscript/wasi-shim": "^0.1.0",
|
|
33
35
|
"as-bench": "^0.0.0-alpha",
|
|
34
|
-
"as-test": "JairusSW/as-test",
|
|
35
36
|
"assemblyscript": "^0.27.22",
|
|
36
37
|
"assemblyscript-prettier": "^3.0.1",
|
|
37
38
|
"benchmark": "^2.1.4",
|
|
39
|
+
"kati": "^0.6.2",
|
|
38
40
|
"microtime": "^3.1.1",
|
|
39
41
|
"prettier": "^3.1.1",
|
|
40
42
|
"tinybench": "^2.5.1",
|