json-as 1.0.0-alpha.1 → 1.0.0-alpha.2
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/.gitmodules +0 -0
- package/CHANGELOG +11 -0
- package/README.md +3 -2
- package/assembly/__benches__/misc.bench.ts +0 -19
- package/assembly/deserialize/simple/object.ts +2 -3
- package/assembly/index.ts +2 -7
- package/assembly/serialize/simd/string.ts +1 -1
- package/assembly/serialize/simple/array.ts +1 -1
- package/assembly/serialize/simple/bool.ts +1 -1
- package/assembly/serialize/simple/date.ts +1 -1
- package/assembly/serialize/simple/float.ts +1 -1
- package/assembly/serialize/simple/integer.ts +1 -1
- package/assembly/serialize/simple/map.ts +1 -1
- package/assembly/serialize/simple/string.ts +2 -2
- package/assembly/test.ts +8 -13
- package/modules/as-bs/LICENSE +21 -0
- package/modules/as-bs/README.md +95 -0
- package/modules/{bs → as-bs/assembly}/index.ts +11 -12
- package/modules/as-bs/assembly/tsconfig.json +97 -0
- package/modules/as-bs/index.ts +1 -0
- package/modules/as-bs/package.json +32 -0
- package/package.json +4 -5
- package/transform/lib/builder.js +1262 -1340
- package/transform/lib/index.js +512 -572
- package/transform/lib/index.js.map +1 -1
- package/transform/lib/linker.js +10 -12
- package/transform/lib/types.js +19 -18
- package/transform/lib/types.js.map +1 -1
- package/transform/lib/util.js +34 -34
- package/transform/lib/visitor.js +526 -529
- package/transform/package.json +2 -1
- package/transform/src/index.ts +19 -8
- package/transform/src/types.ts +1 -0
- package/modules/tsconfig.json +0 -8
- package/transform/lib/index.old.js +0 -404
- package/transform/lib/index.old.js.map +0 -1
package/transform/package.json
CHANGED
package/transform/src/index.ts
CHANGED
|
@@ -137,7 +137,7 @@ class JSONTransform extends Visitor {
|
|
|
137
137
|
|
|
138
138
|
let SERIALIZE = "__SERIALIZE(ptr: usize): void {\n";
|
|
139
139
|
let INITIALIZE = "@inline __INITIALIZE(): this {\n";
|
|
140
|
-
let DESERIALIZE = "__DESERIALIZE(keyStart: usize, keyEnd: usize, valStart: usize, valEnd: usize, ptr: usize): void {\n switch (keyEnd - keyStart) {\n";
|
|
140
|
+
let DESERIALIZE = "__DESERIALIZE(keyStart: usize, keyEnd: usize, valStart: usize, valEnd: usize, ptr: usize): void {\n switch (<u32>keyEnd - <u32>keyStart) {\n";
|
|
141
141
|
let ALLOCATE = "@inline __ALLOCATE(): void {\n";
|
|
142
142
|
|
|
143
143
|
indent = " ";
|
|
@@ -151,6 +151,17 @@ class JSONTransform extends Visitor {
|
|
|
151
151
|
SERIALIZE += indent + "bs.offset += 2;\n";
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
+
for (const member of this.schema.members) {
|
|
155
|
+
const nonNullType = member.type.replace(" | null", "");
|
|
156
|
+
if (!isPrimitive(nonNullType)) {
|
|
157
|
+
const schema = this.schemas.find((v) => v.name == nonNullType);
|
|
158
|
+
if (schema && !this.schema.deps.includes(schema)) {
|
|
159
|
+
this.schema.deps.push(schema);
|
|
160
|
+
this.schema.byteSize += schema.byteSize;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
154
165
|
let isPure = this.schema.static;
|
|
155
166
|
let isRegular = isPure;
|
|
156
167
|
let isFirst = true;
|
|
@@ -214,7 +225,7 @@ class JSONTransform extends Visitor {
|
|
|
214
225
|
const arg = member.flags.get(PropertyFlags.OmitIf) as FunctionExpression;
|
|
215
226
|
// @ts-ignore: type
|
|
216
227
|
arg.declaration.signature.returnType.name = Node.createSimpleTypeName("boolean", arg.declaration.signature.returnType.name.range);
|
|
217
|
-
SERIALIZE += indent + `if ((${toString(member.flags.get(PropertyFlags.OmitIf))})(this)) {\n`;
|
|
228
|
+
SERIALIZE += indent + `if (!(${toString(member.flags.get(PropertyFlags.OmitIf))})(this)) {\n`;
|
|
218
229
|
} else {
|
|
219
230
|
SERIALIZE += indent + `if (${toString(member.flags.get(PropertyFlags.OmitIf))}) {\n`;
|
|
220
231
|
}
|
|
@@ -400,7 +411,7 @@ class JSONTransform extends Visitor {
|
|
|
400
411
|
addRequiredImports(node: ClassDeclaration): void {
|
|
401
412
|
// if (!this.imports.find((i) => i.declarations.find((d) => d.foreignName.text == "bs"))) {
|
|
402
413
|
// if (!this.bsImport) {
|
|
403
|
-
// this.bsImport =
|
|
414
|
+
// this.bsImport = "import { bs } from \"as-bs\"";
|
|
404
415
|
// if (process.env["JSON_DEBUG"]) console.log("Added as-bs import: " + this.bsImport + "\n");
|
|
405
416
|
// }
|
|
406
417
|
// }
|
|
@@ -408,7 +419,7 @@ class JSONTransform extends Visitor {
|
|
|
408
419
|
const __filename = fileURLToPath(import.meta.url);
|
|
409
420
|
const __dirname = path.dirname(__filename);
|
|
410
421
|
|
|
411
|
-
let relativePath = path.relative(path.dirname(node.range.source.normalizedPath), path.resolve(__dirname, "../../modules/bs/
|
|
422
|
+
let relativePath = path.relative(path.dirname(node.range.source.normalizedPath), path.resolve(__dirname, "../../modules/as-bs/"));
|
|
412
423
|
|
|
413
424
|
if (!relativePath.startsWith(".") && !relativePath.startsWith("/")) relativePath = "./" + relativePath;
|
|
414
425
|
// if (!existsSync(relativePath)) {
|
|
@@ -416,9 +427,9 @@ class JSONTransform extends Visitor {
|
|
|
416
427
|
// }
|
|
417
428
|
|
|
418
429
|
const txt = `import { bs } from "${relativePath}";`;
|
|
419
|
-
if (!this.
|
|
420
|
-
this.
|
|
421
|
-
if (process.env["JSON_DEBUG"]) console.log("Added bs import: " + txt + "\n");
|
|
430
|
+
if (!this.bsImport) {
|
|
431
|
+
this.bsImport = txt;
|
|
432
|
+
if (process.env["JSON_DEBUG"]) console.log("Added as-bs import: " + txt + "\n");
|
|
422
433
|
}
|
|
423
434
|
}
|
|
424
435
|
|
|
@@ -441,7 +452,7 @@ class JSONTransform extends Visitor {
|
|
|
441
452
|
}
|
|
442
453
|
}
|
|
443
454
|
|
|
444
|
-
getStores(data: string, simd: boolean =
|
|
455
|
+
getStores(data: string, simd: boolean = false): string[] {
|
|
445
456
|
const out: string[] = [];
|
|
446
457
|
const sizes = strToNum(data, simd);
|
|
447
458
|
let offset = 0;
|
package/transform/src/types.ts
CHANGED
package/modules/tsconfig.json
DELETED
|
@@ -1,404 +0,0 @@
|
|
|
1
|
-
import { FieldDeclaration, IdentifierExpression, StringLiteralExpression, IntegerLiteralExpression, FloatLiteralExpression, NullExpression, TrueExpression, FalseExpression } from "assemblyscript/dist/assemblyscript.js";
|
|
2
|
-
import { toString, isStdlib } from "visitor-as/dist/utils.js";
|
|
3
|
-
import { BaseVisitor, SimpleParser } from "visitor-as/dist/index.js";
|
|
4
|
-
import { Transform } from "assemblyscript/dist/transform.js";
|
|
5
|
-
class JSONTransform extends BaseVisitor {
|
|
6
|
-
schemasList = [];
|
|
7
|
-
currentClass;
|
|
8
|
-
sources = new Set();
|
|
9
|
-
visitMethodDeclaration() {}
|
|
10
|
-
visitClassDeclaration(node) {
|
|
11
|
-
if (!node.decorators?.length) return;
|
|
12
|
-
let found = false;
|
|
13
|
-
for (const decorator of node.decorators) {
|
|
14
|
-
const name = decorator.name.text;
|
|
15
|
-
if (name === "json" || name === "serializable") {
|
|
16
|
-
found = true;
|
|
17
|
-
break;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
if (!found) return;
|
|
21
|
-
const schema = new SchemaData();
|
|
22
|
-
schema.node = node;
|
|
23
|
-
schema.name = node.name.text;
|
|
24
|
-
const members = [...node.members.filter((v) => v.kind === 54)];
|
|
25
|
-
if (node.extendsType) {
|
|
26
|
-
schema.parent = this.schemasList.find((v) => v.name == node.extendsType?.name.identifier.text);
|
|
27
|
-
if (schema.parent?.members) {
|
|
28
|
-
for (let i = schema.parent.members.length - 1; i >= 0; i--) {
|
|
29
|
-
const replace = schema.members.find((v) => v.name == schema.parent?.members[i]?.name);
|
|
30
|
-
if (!replace) {
|
|
31
|
-
members.unshift(schema.parent?.members[i].node);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (!members.length) {
|
|
37
|
-
let SERIALIZE_RAW_EMPTY = '__SERIALIZE(): string {\n return "{}";\n}';
|
|
38
|
-
let INITIALIZE_EMPTY = "__INITIALIZE(): this {\n return this;\n}";
|
|
39
|
-
let DESERIALIZE_EMPTY = "__DESERIALIZE(data: string, key_start: i32, key_end: i32, value_start: i32, value_end: i32): boolean {\n return false;\n}";
|
|
40
|
-
if (process.env["JSON_DEBUG"]) {
|
|
41
|
-
console.log(SERIALIZE_RAW_EMPTY);
|
|
42
|
-
console.log(INITIALIZE_EMPTY);
|
|
43
|
-
console.log(DESERIALIZE_EMPTY);
|
|
44
|
-
}
|
|
45
|
-
const SERIALIZE_RAW_METHOD_EMPTY = SimpleParser.parseClassMember(SERIALIZE_RAW_EMPTY, node);
|
|
46
|
-
const INITIALIZE_METHOD_EMPTY = SimpleParser.parseClassMember(INITIALIZE_EMPTY, node);
|
|
47
|
-
const DESERIALIZE_METHOD_EMPTY = SimpleParser.parseClassMember(DESERIALIZE_EMPTY, node);
|
|
48
|
-
if (!node.members.find((v) => v.name.text == "__SERIALIZE")) node.members.push(SERIALIZE_RAW_METHOD_EMPTY);
|
|
49
|
-
if (!node.members.find((v) => v.name.text == "__INITIALIZE")) node.members.push(INITIALIZE_METHOD_EMPTY);
|
|
50
|
-
if (!node.members.find((v) => v.name.text == "__DESERIALIZE")) node.members.push(DESERIALIZE_METHOD_EMPTY);
|
|
51
|
-
this.schemasList.push(schema);
|
|
52
|
-
}
|
|
53
|
-
for (const member of members) {
|
|
54
|
-
const name = member.name;
|
|
55
|
-
if (!(member instanceof FieldDeclaration)) continue;
|
|
56
|
-
if (!member.type) {
|
|
57
|
-
throw new Error("Fields must be strongly typed! Found " + toString(member) + " at " + node.range.source.normalizedPath);
|
|
58
|
-
}
|
|
59
|
-
const type = toString(member.type);
|
|
60
|
-
if (type.startsWith("(") && type.includes("=>")) continue;
|
|
61
|
-
const value = member.initializer ? toString(member.initializer) : null;
|
|
62
|
-
if (member.flags == 32) continue;
|
|
63
|
-
if (member.flags === 512) continue;
|
|
64
|
-
if (member.flags === 1024) continue;
|
|
65
|
-
const mem = new Property();
|
|
66
|
-
mem.name = name.text;
|
|
67
|
-
mem.type = type;
|
|
68
|
-
mem.value = value;
|
|
69
|
-
mem.node = member;
|
|
70
|
-
if (type.includes("JSON.Raw")) {
|
|
71
|
-
mem.flags.set(PropertyFlags.JSON_Raw, []);
|
|
72
|
-
}
|
|
73
|
-
if (member.type.isNullable) {
|
|
74
|
-
mem.flags.set(PropertyFlags.Null, []);
|
|
75
|
-
}
|
|
76
|
-
if (member.decorators) {
|
|
77
|
-
for (const decorator of member.decorators) {
|
|
78
|
-
const decoratorName = decorator.name.text;
|
|
79
|
-
const args = getArgs(decorator.args);
|
|
80
|
-
switch (decoratorName) {
|
|
81
|
-
case "alias": {
|
|
82
|
-
if (!args.length) throw new Error("Expected 1 argument but got zero at @alias in " + node.range.source.normalizedPath);
|
|
83
|
-
mem.alias = args[0];
|
|
84
|
-
mem.flags.set(PropertyFlags.Alias, args);
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
case "omit": {
|
|
88
|
-
mem.flags.set(PropertyFlags.Omit, args);
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
91
|
-
case "omitif": {
|
|
92
|
-
if (!decorator.args?.length) throw new Error("Expected 1 argument but got zero at @omitif in " + node.range.source.normalizedPath);
|
|
93
|
-
mem.flags.set(PropertyFlags.OmitIf, args);
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
case "omitnull": {
|
|
97
|
-
mem.flags.set(PropertyFlags.OmitNull, args);
|
|
98
|
-
break;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
mem.generate(false);
|
|
104
|
-
if (this.schemasList.find((v) => v.name == type)) {
|
|
105
|
-
mem.initialize = "this." + name.text + " = changetype<nonnull<" + mem.type + ">>(__new(offsetof<nonnull<" + mem.type + ">>(), idof<nonnull<" + mem.type + ">>()));\n changetype<nonnull<" + mem.type + ">>(this." + name.text + ").__INITIALIZE()";
|
|
106
|
-
} else if (mem.value) {
|
|
107
|
-
mem.initialize = "this." + name.text + " = " + mem.value;
|
|
108
|
-
} else if (type === "Map") {
|
|
109
|
-
mem.initialize = "this." + name.text + " = new " + mem.type + "()";
|
|
110
|
-
} else if (type === "string") {
|
|
111
|
-
mem.initialize = "this." + name.text + ' = ""';
|
|
112
|
-
} else if (type === "Array") {
|
|
113
|
-
mem.initialize = "this." + name.text + " = instantiate<" + mem.type + ">()";
|
|
114
|
-
} else if (type === "bool" || type === "boolean") {
|
|
115
|
-
mem.initialize = "this." + name.text + " = false";
|
|
116
|
-
} else if (type === "JSON.Raw") {
|
|
117
|
-
mem.initialize = "this." + name.text + ' = ""';
|
|
118
|
-
} else if (type === "u8" || type === "u16" || type === "u32" || type === "u64" || type === "i8" || type === "i16" || type === "i32" || type === "i64") {
|
|
119
|
-
mem.initialize = "this." + name.text + " = 0";
|
|
120
|
-
} else if (type === "f32" || type === "f64") {
|
|
121
|
-
mem.initialize = "this." + name.text + " = 0.0";
|
|
122
|
-
}
|
|
123
|
-
schema.members.push(mem);
|
|
124
|
-
}
|
|
125
|
-
let SERIALIZE_RAW = "__SERIALIZE(): string {\n let out = `{";
|
|
126
|
-
let SERIALIZE_PRETTY = "__SERIALIZE_PRETTY(): string {\n let out = `{";
|
|
127
|
-
let INITIALIZE = "__INITIALIZE(): this {\n";
|
|
128
|
-
let DESERIALIZE = "__DESERIALIZE(data: string, key_start: i32, key_end: i32, value_start: i32, value_end: i32): boolean {\n const len = key_end - key_start;\n";
|
|
129
|
-
let indent = " ";
|
|
130
|
-
if (!schema.members.length) return;
|
|
131
|
-
found = false;
|
|
132
|
-
if (schema.members[0]?.flags.has(PropertyFlags.OmitNull) || schema.members[0]?.flags.has(PropertyFlags.OmitIf)) {
|
|
133
|
-
SERIALIZE_RAW += schema.members[0]?.serialize;
|
|
134
|
-
SERIALIZE_PRETTY += "\\n" + schema.members[0]?.serialize;
|
|
135
|
-
} else {
|
|
136
|
-
SERIALIZE_RAW += schema.members[0]?.serialize + ",";
|
|
137
|
-
SERIALIZE_PRETTY += "\\n" + schema.members[0]?.serialize + ",\\n";
|
|
138
|
-
found = true;
|
|
139
|
-
}
|
|
140
|
-
if (schema.members[0]?.initialize) INITIALIZE += " " + schema.members[0]?.initialize + ";\n";
|
|
141
|
-
for (let i = 1; i < schema.members.length; i++) {
|
|
142
|
-
const member = schema.members[i];
|
|
143
|
-
if (member.initialize) INITIALIZE += " " + member.initialize + ";\n";
|
|
144
|
-
if (member.flags.has(PropertyFlags.OmitNull) || member.flags.has(PropertyFlags.OmitIf)) {
|
|
145
|
-
SERIALIZE_RAW += member.serialize;
|
|
146
|
-
SERIALIZE_PRETTY += member.serialize;
|
|
147
|
-
} else {
|
|
148
|
-
SERIALIZE_RAW += member.serialize + ",";
|
|
149
|
-
SERIALIZE_PRETTY += indent + member.serialize + ",\\n";
|
|
150
|
-
found = true;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
if (found) {
|
|
154
|
-
SERIALIZE_RAW += "`;\n store<u16>(changetype<usize>(out) + ((out.length - 1) << 1), 125);\n return out;\n}";
|
|
155
|
-
SERIALIZE_PRETTY += "`;\n store<u32>(changetype<usize>(out) + ((out.length - 2) << 1), 8192010);\n return out;\n}";
|
|
156
|
-
} else {
|
|
157
|
-
SERIALIZE_RAW += "}`;\n return out;\n}";
|
|
158
|
-
SERIALIZE_PRETTY += "}`;\n return out;\n}";
|
|
159
|
-
}
|
|
160
|
-
INITIALIZE += " return this;\n}";
|
|
161
|
-
const sortedMembers = [];
|
|
162
|
-
const _sorted = schema.members.sort((a, b) => (a.alias?.length || a.name.length) - (b.alias?.length || b.name.length));
|
|
163
|
-
let len = -1;
|
|
164
|
-
let offset = -1;
|
|
165
|
-
for (let i = 0; i < _sorted.length; i++) {
|
|
166
|
-
const member = _sorted[i];
|
|
167
|
-
const _name = member.alias || member.name;
|
|
168
|
-
if (_name.length === len) {
|
|
169
|
-
sortedMembers[offset]?.push(member);
|
|
170
|
-
} else {
|
|
171
|
-
sortedMembers.push([member]);
|
|
172
|
-
len = _name.length;
|
|
173
|
-
offset++;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
let first = true;
|
|
177
|
-
for (const memberSet of sortedMembers) {
|
|
178
|
-
const firstMember = memberSet[0];
|
|
179
|
-
const _name = encodeKey(firstMember.alias || firstMember.name);
|
|
180
|
-
if (_name.length === 1) {
|
|
181
|
-
if (first) {
|
|
182
|
-
DESERIALIZE += " if (1 === len) {\n switch (load<u16>(changetype<usize>(data) + (key_start << 1))) {\n";
|
|
183
|
-
first = false;
|
|
184
|
-
} else {
|
|
185
|
-
DESERIALIZE += "else if (1 === len) {\n switch (load<u16>(changetype<usize>(data) + (key_start << 1))) {\n";
|
|
186
|
-
}
|
|
187
|
-
} else if (_name.length === 2) {
|
|
188
|
-
if (first) {
|
|
189
|
-
DESERIALIZE += " if (2 === len) {\n switch (load<u32>(changetype<usize>(data) + (key_start << 1))) {\n";
|
|
190
|
-
first = false;
|
|
191
|
-
} else {
|
|
192
|
-
DESERIALIZE += "else if (2 === len) {\n switch (load<u32>(changetype<usize>(data) + (key_start << 1))) {\n";
|
|
193
|
-
}
|
|
194
|
-
} else if (_name.length === 4) {
|
|
195
|
-
if (first) {
|
|
196
|
-
DESERIALIZE += " if (4 === len) {\n const code = load<u64>(changetype<usize>(data) + (key_start << 1));\n";
|
|
197
|
-
first = false;
|
|
198
|
-
} else {
|
|
199
|
-
DESERIALIZE += "else if (4 === len) {\n const code = load<u64>(changetype<usize>(data) + (key_start << 1));\n";
|
|
200
|
-
}
|
|
201
|
-
} else {
|
|
202
|
-
if (first) {
|
|
203
|
-
DESERIALIZE += " if (" + _name.length + " === len) {\n";
|
|
204
|
-
first = false;
|
|
205
|
-
} else {
|
|
206
|
-
DESERIALIZE += "else if (" + _name.length + " === len) {\n";
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
let f = true;
|
|
210
|
-
for (let i = 0; i < memberSet.length; i++) {
|
|
211
|
-
const member = memberSet[i];
|
|
212
|
-
if (!member.deserialize) continue;
|
|
213
|
-
const _name = encodeKey(member.alias || member.name);
|
|
214
|
-
if (_name.length === 1) {
|
|
215
|
-
DESERIALIZE += ` case ${_name.charCodeAt(0)}: { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
|
|
216
|
-
} else if (_name.length === 2) {
|
|
217
|
-
DESERIALIZE += ` case ${charCodeAt32(_name, 0)}: { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
|
|
218
|
-
} else if (_name.length === 4) {
|
|
219
|
-
if (f) {
|
|
220
|
-
f = false;
|
|
221
|
-
DESERIALIZE += ` if (${charCodeAt64(_name, 0)} === code) { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
|
|
222
|
-
} else {
|
|
223
|
-
DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + `else if (${charCodeAt64(_name, 0)} === code) {\n ${member.deserialize}\n return true;\n }\n`;
|
|
224
|
-
}
|
|
225
|
-
} else {
|
|
226
|
-
if (f) {
|
|
227
|
-
f = false;
|
|
228
|
-
DESERIALIZE += ` if (0 === memory.compare(changetype<usize>("${escapeQuote(escapeSlash(_name))}"), changetype<usize>(data) + (key_start << 1), ${_name.length << 1})) { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
|
|
229
|
-
} else {
|
|
230
|
-
DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + ` else if (0 === memory.compare(changetype<usize>("${escapeQuote(escapeSlash(_name))}"), changetype<usize>(data) + (key_start << 1), ${_name.length << 1})) { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
if (_name.length < 3) {
|
|
235
|
-
DESERIALIZE += ` default: {\n return false;\n }\n }\n`;
|
|
236
|
-
} else if (_name.length == 4) {
|
|
237
|
-
DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + ` else {\n return false;\n }\n`;
|
|
238
|
-
} else {
|
|
239
|
-
DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + ` else {\n return false;\n }\n`;
|
|
240
|
-
}
|
|
241
|
-
DESERIALIZE += " } ";
|
|
242
|
-
}
|
|
243
|
-
DESERIALIZE += "\n return false;\n}";
|
|
244
|
-
if (process.env["JSON_DEBUG"]) {
|
|
245
|
-
console.log(SERIALIZE_RAW);
|
|
246
|
-
console.log(INITIALIZE);
|
|
247
|
-
console.log(DESERIALIZE);
|
|
248
|
-
}
|
|
249
|
-
const SERIALIZE_RAW_METHOD = SimpleParser.parseClassMember(SERIALIZE_RAW, node);
|
|
250
|
-
const DESERIALIZE_SAFE = DESERIALIZE.replaceAll("__DESERIALIZE", "__DESERIALIZE_SAFE");
|
|
251
|
-
const INITIALIZE_METHOD = SimpleParser.parseClassMember(INITIALIZE, node);
|
|
252
|
-
const DESERIALIZE_METHOD = SimpleParser.parseClassMember(DESERIALIZE, node);
|
|
253
|
-
const DESERIALIZE_SAFE_METHOD = SimpleParser.parseClassMember(DESERIALIZE_SAFE, node);
|
|
254
|
-
if (!node.members.find((v) => v.name.text == "__SERIALIZE")) node.members.push(SERIALIZE_RAW_METHOD);
|
|
255
|
-
if (!node.members.find((v) => v.name.text == "__INITIALIZE")) node.members.push(INITIALIZE_METHOD);
|
|
256
|
-
if (!node.members.find((v) => v.name.text == "__DESERIALIZE")) node.members.push(DESERIALIZE_METHOD);
|
|
257
|
-
if (!node.members.find((v) => v.name.text == "__DESERIALIZE_SAFE")) node.members.push(DESERIALIZE_SAFE_METHOD);
|
|
258
|
-
this.schemasList.push(schema);
|
|
259
|
-
}
|
|
260
|
-
visitSource(node) {
|
|
261
|
-
super.visitSource(node);
|
|
262
|
-
if (!this.sources.has(node)) {
|
|
263
|
-
return;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
export default class Transformer extends Transform {
|
|
268
|
-
afterParse(parser) {
|
|
269
|
-
const transformer = new JSONTransform();
|
|
270
|
-
const sources = parser.sources
|
|
271
|
-
.filter((source) => !isStdlib(source))
|
|
272
|
-
.sort((_a, _b) => {
|
|
273
|
-
const a = _a.internalPath;
|
|
274
|
-
const b = _b.internalPath;
|
|
275
|
-
if (a[0] === "~" && b[0] !== "~") {
|
|
276
|
-
return -1;
|
|
277
|
-
} else if (a[0] !== "~" && b[0] === "~") {
|
|
278
|
-
return 1;
|
|
279
|
-
} else {
|
|
280
|
-
return 0;
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
for (const source of sources) {
|
|
284
|
-
if (!isStdlib(source)) {
|
|
285
|
-
transformer.visit(source);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
const schemas = transformer.schemasList;
|
|
289
|
-
for (const schema of schemas) {
|
|
290
|
-
if (schema.parent) {
|
|
291
|
-
const parent = schemas.find((v) => v.name === schema.parent?.name);
|
|
292
|
-
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.`);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
var PropertyFlags;
|
|
298
|
-
(function (PropertyFlags) {
|
|
299
|
-
PropertyFlags[(PropertyFlags["Null"] = 0)] = "Null";
|
|
300
|
-
PropertyFlags[(PropertyFlags["Omit"] = 1)] = "Omit";
|
|
301
|
-
PropertyFlags[(PropertyFlags["OmitNull"] = 2)] = "OmitNull";
|
|
302
|
-
PropertyFlags[(PropertyFlags["OmitIf"] = 3)] = "OmitIf";
|
|
303
|
-
PropertyFlags[(PropertyFlags["Alias"] = 4)] = "Alias";
|
|
304
|
-
PropertyFlags[(PropertyFlags["JSON_Raw"] = 5)] = "JSON_Raw";
|
|
305
|
-
})(PropertyFlags || (PropertyFlags = {}));
|
|
306
|
-
class Property {
|
|
307
|
-
name = "";
|
|
308
|
-
alias = null;
|
|
309
|
-
type = "";
|
|
310
|
-
value = null;
|
|
311
|
-
flags = new Map();
|
|
312
|
-
serialize = null;
|
|
313
|
-
deserialize = null;
|
|
314
|
-
initialize = null;
|
|
315
|
-
node;
|
|
316
|
-
right_s = "";
|
|
317
|
-
right_d = "";
|
|
318
|
-
generate(safe) {
|
|
319
|
-
const name = this.name;
|
|
320
|
-
const escapedName = escapeString(JSON.stringify(this.alias || this.name));
|
|
321
|
-
const type = this.type;
|
|
322
|
-
if (this.flags.has(PropertyFlags.Omit)) return;
|
|
323
|
-
if (this.flags.has(PropertyFlags.JSON_Raw)) {
|
|
324
|
-
if (this.flags.has(PropertyFlags.Null)) {
|
|
325
|
-
this.right_s = "(this." + name + ' || "null")';
|
|
326
|
-
this.right_d = "value_start === value_end - 4 && 30399761348886638 === load<u64>(changetype<usize>(data) + (value_start << 1)) ? null : data.substring(value_start, value_end)";
|
|
327
|
-
} else {
|
|
328
|
-
this.right_s = "this." + name;
|
|
329
|
-
this.right_d = "data.substring(value_start, value_end);";
|
|
330
|
-
}
|
|
331
|
-
} else {
|
|
332
|
-
this.right_s = "__SERIALIZE<" + type + ">(this." + name + ")";
|
|
333
|
-
this.right_d = (safe ? "__DESERIALIZE_SAFE" : "__DESERIALIZE") + "<" + type + ">(data.substring(value_start, value_end))";
|
|
334
|
-
}
|
|
335
|
-
if (this.flags.has(PropertyFlags.OmitIf)) {
|
|
336
|
-
const condition = this.flags.get(PropertyFlags.OmitIf)[0];
|
|
337
|
-
if (!condition) throw new Error("Could not find condition when using decorator @omitif! Provide at least one condition");
|
|
338
|
-
this.serialize = "${" + condition + ' ? "" : \'' + escapedName + ":' + " + this.right_s + ' + ","}';
|
|
339
|
-
this.deserialize = "this." + name + " = " + this.right_d + ";";
|
|
340
|
-
} else if (this.flags.has(PropertyFlags.OmitNull)) {
|
|
341
|
-
this.serialize = "${changetype<usize>(this." + name + ") == <usize>0" + ' ? "" : \'' + escapedName + ":' + " + this.right_s + ' + ","}';
|
|
342
|
-
this.deserialize = "this." + name + " = " + this.right_d + ";";
|
|
343
|
-
} else {
|
|
344
|
-
this.serialize = escapedName + ":${" + this.right_s + "}";
|
|
345
|
-
this.deserialize = "this." + name + " = " + this.right_d + ";";
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
class SchemaData {
|
|
350
|
-
name = "";
|
|
351
|
-
members = [];
|
|
352
|
-
parent = null;
|
|
353
|
-
node;
|
|
354
|
-
}
|
|
355
|
-
function charCodeAt32(data, offset) {
|
|
356
|
-
return (data.charCodeAt(offset + 1) << 16) | data.charCodeAt(offset);
|
|
357
|
-
}
|
|
358
|
-
function charCodeAt64(data, offset) {
|
|
359
|
-
if (offset + 3 >= data.length) {
|
|
360
|
-
throw new Error("The string must have at least 4 characters from the specified offset.");
|
|
361
|
-
}
|
|
362
|
-
const firstCharCode = BigInt(data.charCodeAt(offset));
|
|
363
|
-
const secondCharCode = BigInt(data.charCodeAt(offset + 1));
|
|
364
|
-
const thirdCharCode = BigInt(data.charCodeAt(offset + 2));
|
|
365
|
-
const fourthCharCode = BigInt(data.charCodeAt(offset + 3));
|
|
366
|
-
const u64Value = (fourthCharCode << 48n) | (thirdCharCode << 32n) | (secondCharCode << 16n) | firstCharCode;
|
|
367
|
-
return u64Value;
|
|
368
|
-
}
|
|
369
|
-
function encodeKey(key) {
|
|
370
|
-
const data = JSON.stringify(key);
|
|
371
|
-
return data.slice(1, data.length - 1);
|
|
372
|
-
}
|
|
373
|
-
function escapeString(data) {
|
|
374
|
-
return data.replace(/\\/g, "\\\\").replace(/\`/g, "\\`");
|
|
375
|
-
}
|
|
376
|
-
function escapeSlash(data) {
|
|
377
|
-
return data.replace(/\\/g, "\\\\").replace(/\`/g, "\\`");
|
|
378
|
-
}
|
|
379
|
-
function escapeQuote(data) {
|
|
380
|
-
return data.replace(/\"/g, '\\"');
|
|
381
|
-
}
|
|
382
|
-
function getArgs(args) {
|
|
383
|
-
if (!args) return [];
|
|
384
|
-
let out = [];
|
|
385
|
-
for (const arg of args) {
|
|
386
|
-
if (arg instanceof StringLiteralExpression) {
|
|
387
|
-
out.push(arg.value);
|
|
388
|
-
} else if (arg instanceof IntegerLiteralExpression) {
|
|
389
|
-
out.push(i64_to_string(arg.value));
|
|
390
|
-
} else if (arg instanceof FloatLiteralExpression) {
|
|
391
|
-
out.push(arg.value.toString());
|
|
392
|
-
} else if (arg instanceof NullExpression) {
|
|
393
|
-
out.push(arg.text);
|
|
394
|
-
} else if (arg instanceof TrueExpression) {
|
|
395
|
-
out.push(arg.text);
|
|
396
|
-
} else if (arg instanceof FalseExpression) {
|
|
397
|
-
out.push(arg.text);
|
|
398
|
-
} else if (arg instanceof IdentifierExpression) {
|
|
399
|
-
out.push(arg.text);
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
return out;
|
|
403
|
-
}
|
|
404
|
-
//# sourceMappingURL=index.old.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.old.js","sourceRoot":"","sources":["../src/index.old.ts"],"names":[],"mappings":"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"}
|