From 985e983708a8089b19200a1f095e34c1efa8488a Mon Sep 17 00:00:00 2001 From: JairusSW Date: Fri, 15 Dec 2023 08:13:00 -0800 Subject: [PATCH] release v0.6.6 --- .github/workflows/nodejs.yml | 2 +- assembly/test.ts | 9 ++++++--- package.json | 4 ++-- transform/lib/index.js | 9 +++++++++ transform/package.json | 2 +- transform/src/index.ts | 8 ++++++++ 6 files changed, 27 insertions(+), 7 deletions(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 326f676..34dd23f 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -22,4 +22,4 @@ jobs: run: yarn build:test - name: Perform tests - run: yarn run test:aspect \ No newline at end of file + run: yarn run test \ No newline at end of file diff --git a/assembly/test.ts b/assembly/test.ts index 36af1a9..52b596f 100644 --- a/assembly/test.ts +++ b/assembly/test.ts @@ -1,7 +1,7 @@ import { JSON } from "./src/json"; // @ts-ignore -@json + class Vec3 { x: f64 = 3.4; y: f64 = 1.2; @@ -10,7 +10,7 @@ class Vec3 { // @ts-ignore @json -class Player { +class Player extends Vec3 { firstName: string; lastName: string; lastActive: Date; @@ -32,6 +32,9 @@ const player: Player = { z: 8.3, }, isVerified: true, + x: 1, + y: 3, + z: 3 } let out = ""; @@ -44,7 +47,7 @@ console.log("Implemented: " + JSON.stringify(JSON.parse('{}', true))); console.log("Original: " + JSON.stringify(player)); //console.log("Revised: " + vec.__JSON_Deserialize('{"x":3,"y":1,"z":8}').__JSON_Serialize()); -console.log("Implemented: " + JSON.stringify(JSON.parse('{"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}'))); +console.log("Implemented: " + JSON.stringify(JSON.parse('{"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}'))); @serializable class Wrapper { diff --git a/package.json b/package.json index 2f61ce1..e915eb1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "json-as", - "version": "0.6.5", + "version": "0.6.6", "description": "JSON encoder/decoder for AssemblyScript", "types": "assembly/index.ts", "author": "Jairus Tanaka", @@ -14,7 +14,7 @@ ], "license": "MIT", "scripts": { - "test:aspect": "asp", + "test": "asp", "bench:astral": "astral --optimizeLevel 3 --shrinkLevel 0 --converge --noAssert --uncheckedBehavior never --runtime stub", "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", "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", diff --git a/transform/lib/index.js b/transform/lib/index.js index 261fa48..fe2fa97 100644 --- a/transform/lib/index.js +++ b/transform/lib/index.js @@ -212,5 +212,14 @@ export default class Transformer extends Transform { transformer.visit(source); } } + // Check that every parent and child class is hooked up correctly + const schemas = transformer.schemasList; + for (const schema of schemas) { + if (schema.parent) { + const parent = schemas.find((v) => v.name === schema.parent); + 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.`); + } + } } } diff --git a/transform/package.json b/transform/package.json index d19f9a6..b76426c 100644 --- a/transform/package.json +++ b/transform/package.json @@ -1,6 +1,6 @@ { "name": "@json-as/transform", - "version": "0.6.5", + "version": "0.6.6", "description": "JSON encoder/decoder for AssemblyScript", "main": "./lib/index.js", "author": "Jairus Tanaka", diff --git a/transform/src/index.ts b/transform/src/index.ts index 83d4722..32aa708 100644 --- a/transform/src/index.ts +++ b/transform/src/index.ts @@ -255,5 +255,13 @@ export default class Transformer extends Transform { transformer.visit(source); } } + // Check that every parent and child class is hooked up correctly + const schemas = transformer.schemasList; + for (const schema of schemas) { + if (schema.parent) { + const parent = schemas.find((v) => v.name === schema.parent); + 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.`); + } + } } }