json-as 0.9.9 → 0.9.10
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 -1
- package/CHANGELOG +6 -1
- package/README.md +2 -1
- package/assembly/__tests__/test.spec.ts +1 -2
- package/assembly/deserialize/map.ts +2 -0
- package/assembly/test.ts +29 -32
- package/build/test.spec.wasm +0 -0
- package/build/test.spec.wasm.map +1 -1
- package/build/test.spec.wat +3488 -8664
- package/build/test.wasm +0 -0
- package/build/test.wasm.map +1 -1
- package/build/test.wat +8885 -19439
- package/package.json +2 -3
- package/transform/lib/index.js +17 -6
- package/transform/package.json +1 -1
- package/transform/src/index.ts +21 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "json-as",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.10",
|
|
4
4
|
"description": "JSON encoder/decoder for AssemblyScript",
|
|
5
5
|
"types": "assembly/index.ts",
|
|
6
6
|
"author": "Jairus Tanaka",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"scripts": {
|
|
18
18
|
"test": "wasmtime build/test.spec.wasm",
|
|
19
19
|
"pretest": "asc assembly/__tests__/test.spec.ts --target test",
|
|
20
|
-
"build:test": "JSON_DEBUG=true asc assembly/test.ts --
|
|
20
|
+
"build:test": "JSON_DEBUG=true asc assembly/test.ts --transform ./transform -o ./build/test.wasm",
|
|
21
21
|
"build:bench": "asc bench/benchmark.ts -o bench/benchmark.wasm --transform ./transform --optimizeLevel 3 --shrinkLevel 0 --converge --noAssert --uncheckedBehavior always --runtime stub",
|
|
22
22
|
"bench:wasmtime": "wasmtime ./bench/benchmark.wasm",
|
|
23
23
|
"bench:wasmer": "wasmer --llvm ./bench/benchmark.wasm",
|
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
"assemblyscript": "^0.27.28",
|
|
36
36
|
"assemblyscript-prettier": "^3.0.1",
|
|
37
37
|
"benchmark": "^2.1.4",
|
|
38
|
-
"json-as": "link:json-as",
|
|
39
38
|
"microtime": "^3.1.1",
|
|
40
39
|
"prettier": "^3.3.2",
|
|
41
40
|
"tinybench": "^2.8.0",
|
package/transform/lib/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { FieldDeclaration } from "assemblyscript/dist/assemblyscript.js";
|
|
2
1
|
import { toString, isStdlib } from "visitor-as/dist/utils.js";
|
|
3
2
|
import { BaseVisitor, SimpleParser } from "visitor-as/dist/index.js";
|
|
4
3
|
import { Transform } from "assemblyscript/dist/transform.js";
|
|
@@ -26,7 +25,7 @@ class JSONTransform extends BaseVisitor {
|
|
|
26
25
|
schema.node = node;
|
|
27
26
|
schema.name = node.name.text;
|
|
28
27
|
const members = [
|
|
29
|
-
...node.members.filter(v => v
|
|
28
|
+
...node.members.filter(v => v.kind === 54 /* NodeKind.FieldDeclaration */)
|
|
30
29
|
];
|
|
31
30
|
if (node.extendsType) {
|
|
32
31
|
schema.parent = this.schemasList.find((v) => v.name == node.extendsType?.name.identifier.text);
|
|
@@ -63,8 +62,6 @@ class JSONTransform extends BaseVisitor {
|
|
|
63
62
|
this.schemasList.push(schema);
|
|
64
63
|
}
|
|
65
64
|
for (const member of members) {
|
|
66
|
-
if (!(member instanceof FieldDeclaration))
|
|
67
|
-
continue;
|
|
68
65
|
const name = member.name;
|
|
69
66
|
if (!member.type) {
|
|
70
67
|
throw new Error("Fields must be strongly typed! Found " + toString(member) + " at " + node.range.source.normalizedPath);
|
|
@@ -159,8 +156,22 @@ class JSONTransform extends BaseVisitor {
|
|
|
159
156
|
else if (t === "Array") {
|
|
160
157
|
mem.initialize = "this." + name.text + " = instantiate<" + mem.type + ">()";
|
|
161
158
|
}
|
|
162
|
-
else {
|
|
163
|
-
|
|
159
|
+
else if (t === "bool" || t === "boolean") {
|
|
160
|
+
mem.initialize = "this." + name.text + " = false";
|
|
161
|
+
}
|
|
162
|
+
else if (t === "u8" ||
|
|
163
|
+
t === "u16" ||
|
|
164
|
+
t === "u32" ||
|
|
165
|
+
t === "u64" ||
|
|
166
|
+
t === "i8" ||
|
|
167
|
+
t === "i16" ||
|
|
168
|
+
t === "i32" ||
|
|
169
|
+
t === "i64") {
|
|
170
|
+
mem.initialize = "this." + name.text + " = 0";
|
|
171
|
+
}
|
|
172
|
+
else if (t === "f32" ||
|
|
173
|
+
t === "f64") {
|
|
174
|
+
mem.initialize = "this." + name.text + " = 0.0";
|
|
164
175
|
}
|
|
165
176
|
schema.members.push(mem);
|
|
166
177
|
}
|
package/transform/package.json
CHANGED
package/transform/src/index.ts
CHANGED
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
NamedTypeNode,
|
|
6
6
|
StringLiteralExpression,
|
|
7
7
|
Parser,
|
|
8
|
-
Source
|
|
8
|
+
Source,
|
|
9
|
+
NodeKind
|
|
9
10
|
} from "assemblyscript/dist/assemblyscript.js";
|
|
10
11
|
|
|
11
12
|
import { toString, isStdlib } from "visitor-as/dist/utils.js";
|
|
12
13
|
import { BaseVisitor, SimpleParser } from "visitor-as/dist/index.js";
|
|
13
14
|
import { Transform } from "assemblyscript/dist/transform.js";
|
|
14
15
|
import { CommonFlags } from "types:assemblyscript/src/common";
|
|
15
|
-
import { DecoratorNode } from "types:assemblyscript/src/ast";
|
|
16
16
|
|
|
17
17
|
class JSONTransform extends BaseVisitor {
|
|
18
18
|
public schemasList: SchemaData[] = [];
|
|
@@ -38,7 +38,7 @@ class JSONTransform extends BaseVisitor {
|
|
|
38
38
|
schema.name = node.name.text;
|
|
39
39
|
|
|
40
40
|
const members = [
|
|
41
|
-
...node.members.filter(v => v
|
|
41
|
+
...node.members.filter(v => v.kind === NodeKind.FieldDeclaration)
|
|
42
42
|
];
|
|
43
43
|
|
|
44
44
|
if (node.extendsType) {
|
|
@@ -86,7 +86,6 @@ class JSONTransform extends BaseVisitor {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
for (const member of members) {
|
|
89
|
-
if (!(member instanceof FieldDeclaration)) continue;
|
|
90
89
|
const name = member.name;
|
|
91
90
|
if (!member.type) {
|
|
92
91
|
throw new Error("Fields must be strongly typed! Found " + toString(member) + " at " + node.range.source.normalizedPath);
|
|
@@ -170,8 +169,24 @@ class JSONTransform extends BaseVisitor {
|
|
|
170
169
|
mem.initialize = "this." + name.text + " = \"\"";
|
|
171
170
|
} else if (t === "Array") {
|
|
172
171
|
mem.initialize = "this." + name.text + " = instantiate<" + mem.type + ">()";
|
|
173
|
-
} else {
|
|
174
|
-
|
|
172
|
+
} else if (t === "bool" || t === "boolean") {
|
|
173
|
+
mem.initialize = "this." + name.text + " = false";
|
|
174
|
+
} else if (
|
|
175
|
+
t === "u8" ||
|
|
176
|
+
t === "u16" ||
|
|
177
|
+
t === "u32" ||
|
|
178
|
+
t === "u64" ||
|
|
179
|
+
t === "i8" ||
|
|
180
|
+
t === "i16" ||
|
|
181
|
+
t === "i32" ||
|
|
182
|
+
t === "i64"
|
|
183
|
+
) {
|
|
184
|
+
mem.initialize = "this." + name.text + " = 0";
|
|
185
|
+
} else if (
|
|
186
|
+
t === "f32" ||
|
|
187
|
+
t === "f64"
|
|
188
|
+
) {
|
|
189
|
+
mem.initialize = "this." + name.text + " = 0.0";
|
|
175
190
|
}
|
|
176
191
|
|
|
177
192
|
schema.members.push(mem);
|