Comparing version
@@ -7,3 +7,3 @@ import { u128 } from "as-bignum/assembly"; | ||
// @ts-ignore | ||
@json | ||
@JSON | ||
class Vec3 { | ||
@@ -16,3 +16,3 @@ x: f32 = 3.4; | ||
// @ts-ignore | ||
@json | ||
@JSON | ||
class Stats extends Vec3 { | ||
@@ -19,0 +19,0 @@ wins: u128 |
{ | ||
"name": "json-as", | ||
"version": "0.5.13", | ||
"version": "0.5.14", | ||
"description": "JSON encoder/decoder for AssemblyScript", | ||
@@ -5,0 +5,0 @@ "types": "assembly/index.ts", |
@@ -40,4 +40,4 @@ # AS-JSON | ||
// @ts-ignore | ||
@json | ||
// @json or @serializable work here | ||
@JSON | ||
class Vec3 { | ||
@@ -49,4 +49,3 @@ x!: f32; | ||
// @ts-ignore | ||
@json | ||
@JSON | ||
class Player { | ||
@@ -53,0 +52,0 @@ firstName!: string; |
@@ -1,4 +0,4 @@ | ||
import { ClassDecorator, registerDecorator, } from "visitor-as/dist/decorator.js"; | ||
import { getName, toString } from "visitor-as/dist/utils.js"; | ||
import { SimpleParser } from "visitor-as/dist/index.js"; | ||
import { BaseVisitor, SimpleParser } from "visitor-as/dist/index.js"; | ||
import { Transform } from "assemblyscript/dist/transform.js"; | ||
class SchemaData { | ||
@@ -15,3 +15,3 @@ constructor() { | ||
} | ||
class AsJSONTransform extends ClassDecorator { | ||
class AsJSONTransform extends BaseVisitor { | ||
constructor() { | ||
@@ -53,2 +53,10 @@ super(...arguments); | ||
var _a, _b, _c, _d; | ||
let foundDecorator = false; | ||
for (const decorator of node.decorators) { | ||
// @ts-ignore | ||
if (decorator.name.text.toLowerCase() == "json" || decorator.name.text.toLowerCase() == "serializable") | ||
foundDecorator = true; | ||
} | ||
if (!foundDecorator) | ||
return; | ||
if (!node.members) { | ||
@@ -119,6 +127,20 @@ return; | ||
} | ||
get name() { | ||
return "json"; | ||
visitSource(node) { | ||
super.visitSource(node); | ||
} | ||
} | ||
export default registerDecorator(new AsJSONTransform()); | ||
export default class Transformer extends Transform { | ||
// Trigger the transform after parse. | ||
afterParse(parser) { | ||
// Create new transform | ||
const transformer = new AsJSONTransform(); | ||
// Loop over every source | ||
for (const source of parser.sources) { | ||
// Ignore all lib (std lib). Visit everything else. | ||
if (!source.isLibrary && !source.internalPath.startsWith(`~lib/`)) { | ||
transformer.visit(source); | ||
} | ||
} | ||
} | ||
} | ||
; |
{ | ||
"name": "@json-as/transform", | ||
"version": "0.5.13", | ||
"version": "0.5.14", | ||
"description": "JSON encoder/decoder for AssemblyScript", | ||
@@ -5,0 +5,0 @@ "main": "./lib/index.js", |
@@ -5,2 +5,3 @@ import { | ||
Source, | ||
Parser | ||
} from "assemblyscript/dist/assemblyscript"; | ||
@@ -12,4 +13,4 @@ import { | ||
import { getName, toString } from "visitor-as/dist/utils.js"; | ||
import { SimpleParser } from "visitor-as/dist/index.js"; | ||
import { NodeKind } from "types:assemblyscript/src/ast"; | ||
import { BaseVisitor, SimpleParser } from "visitor-as/dist/index.js"; | ||
import { Transform } from "assemblyscript/dist/transform.js"; | ||
@@ -26,3 +27,3 @@ class SchemaData { | ||
} | ||
class AsJSONTransform extends ClassDecorator { | ||
class AsJSONTransform extends BaseVisitor { | ||
public schemasList: SchemaData[] = []; | ||
@@ -68,2 +69,8 @@ public currentClass!: SchemaData; | ||
visitClassDeclaration(node: ClassDeclaration): void { | ||
let foundDecorator = false; | ||
for (const decorator of node.decorators!) { | ||
// @ts-ignore | ||
if (decorator.name.text.toLowerCase() == "json" || decorator.name.text.toLowerCase() == "serializable") foundDecorator = true; | ||
} | ||
if (!foundDecorator) return; | ||
if (!node.members) { | ||
@@ -150,7 +157,20 @@ return; | ||
} | ||
get name(): string { | ||
return "json"; | ||
visitSource(node: Source): void { | ||
super.visitSource(node); | ||
} | ||
} | ||
export default registerDecorator(new AsJSONTransform()); | ||
export default class Transformer extends Transform { | ||
// Trigger the transform after parse. | ||
afterParse(parser: Parser): void { | ||
// Create new transform | ||
const transformer = new AsJSONTransform(); | ||
// Loop over every source | ||
for (const source of parser.sources) { | ||
// Ignore all lib (std lib). Visit everything else. | ||
if (!source.isLibrary && !source.internalPath.startsWith(`~lib/`)) { | ||
transformer.visit(source); | ||
} | ||
} | ||
} | ||
}; |
64173
2.42%1432
3.02%114
-0.87%