json-as 0.6.5 → 0.6.6

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.
@@ -22,4 +22,4 @@ jobs:
22
22
  run: yarn build:test
23
23
 
24
24
  - name: Perform tests
25
- run: yarn run test:aspect
25
+ run: yarn run test
package/assembly/test.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { JSON } from "./src/json";
2
2
 
3
3
  // @ts-ignore
4
- @json
4
+
5
5
  class Vec3 {
6
6
  x: f64 = 3.4;
7
7
  y: f64 = 1.2;
@@ -10,7 +10,7 @@ class Vec3 {
10
10
 
11
11
  // @ts-ignore
12
12
  @json
13
- class Player {
13
+ class Player extends Vec3 {
14
14
  firstName: string;
15
15
  lastName: string;
16
16
  lastActive: Date;
@@ -32,6 +32,9 @@ const player: Player = {
32
32
  z: 8.3,
33
33
  },
34
34
  isVerified: true,
35
+ x: 1,
36
+ y: 3,
37
+ z: 3
35
38
  }
36
39
 
37
40
  let out = "";
@@ -44,7 +47,7 @@ console.log("Implemented: " + JSON.stringify(JSON.parse<Vec3>('{}', true)));
44
47
 
45
48
  console.log("Original: " + JSON.stringify(player));
46
49
  //console.log("Revised: " + vec.__JSON_Deserialize('{"x":3,"y":1,"z":8}').__JSON_Serialize());
47
- console.log("Implemented: " + JSON.stringify(JSON.parse<Player>('{"firstName":"Emmet","lastName":"West","lastActive":"2023-11-16T04:06:35.108285303Z","age":23,"pos":{"x":3.4,"y":1.2,"z":8.3},"isVerified":true}')));
50
+ console.log("Implemented: " + JSON.stringify(JSON.parse<Player>('{"firstName":"Emmet","lastName":"West","lastActive":"2023-11-16T04:06:35.108285303Z","age":23,"pos":{"x":3.4,"y":1.2,"z":8.3},"isVerified":true,"x":5","y":4","z":3}')));
48
51
 
49
52
  @serializable
50
53
  class Wrapper<T> {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-as",
3
- "version": "0.6.5",
3
+ "version": "0.6.6",
4
4
  "description": "JSON encoder/decoder for AssemblyScript",
5
5
  "types": "assembly/index.ts",
6
6
  "author": "Jairus Tanaka",
@@ -14,7 +14,7 @@
14
14
  ],
15
15
  "license": "MIT",
16
16
  "scripts": {
17
- "test:aspect": "asp",
17
+ "test": "asp",
18
18
  "bench:astral": "astral --optimizeLevel 3 --shrinkLevel 0 --converge --noAssert --uncheckedBehavior never --runtime stub",
19
19
  "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",
20
20
  "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",
@@ -212,5 +212,14 @@ export default class Transformer extends Transform {
212
212
  transformer.visit(source);
213
213
  }
214
214
  }
215
+ // Check that every parent and child class is hooked up correctly
216
+ const schemas = transformer.schemasList;
217
+ for (const schema of schemas) {
218
+ if (schema.parent) {
219
+ const parent = schemas.find((v) => v.name === schema.parent);
220
+ if (!parent)
221
+ throw new Error(`Class ${schema.name} extends its parent class ${schema.parent}, but ${schema.parent} does not include a @json or @serializable decorator! Add the decorator and rebuild.`);
222
+ }
223
+ }
215
224
  }
216
225
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@json-as/transform",
3
- "version": "0.6.5",
3
+ "version": "0.6.6",
4
4
  "description": "JSON encoder/decoder for AssemblyScript",
5
5
  "main": "./lib/index.js",
6
6
  "author": "Jairus Tanaka",
@@ -255,5 +255,13 @@ export default class Transformer extends Transform {
255
255
  transformer.visit(source);
256
256
  }
257
257
  }
258
+ // Check that every parent and child class is hooked up correctly
259
+ const schemas = transformer.schemasList;
260
+ for (const schema of schemas) {
261
+ if (schema.parent) {
262
+ const parent = schemas.find((v) => v.name === schema.parent);
263
+ if (!parent) throw new Error(`Class ${schema.name} extends its parent class ${schema.parent}, but ${schema.parent} does not include a @json or @serializable decorator! Add the decorator and rebuild.`);
264
+ }
265
+ }
258
266
  }
259
267
  }