json-as 0.9.27 → 0.9.29

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.
Files changed (39) hide show
  1. package/.prettierrc.json +3 -1
  2. package/README.md +15 -68
  3. package/assembly/__benches__/misc.bench.ts +15 -14
  4. package/assembly/__tests__/date.spec.ts +12 -0
  5. package/assembly/__tests__/types.ts +17 -0
  6. package/assembly/custom/bs.ts +189 -198
  7. package/assembly/custom/chars.ts +2 -2
  8. package/assembly/custom/types.ts +1 -0
  9. package/assembly/custom/util.ts +47 -50
  10. package/assembly/deserialize/array/array.ts +24 -24
  11. package/assembly/deserialize/array/bool.ts +1 -1
  12. package/assembly/deserialize/array/float.ts +16 -16
  13. package/assembly/deserialize/array/integer.ts +16 -16
  14. package/assembly/deserialize/array/map.ts +20 -20
  15. package/assembly/deserialize/array/object.ts +20 -20
  16. package/assembly/deserialize/array/string.ts +1 -1
  17. package/assembly/deserialize/array.ts +2 -2
  18. package/assembly/deserialize/bool.ts +15 -15
  19. package/assembly/deserialize/date.ts +4 -4
  20. package/assembly/deserialize/float.ts +15 -15
  21. package/assembly/deserialize/integer.ts +8 -8
  22. package/assembly/deserialize/map.ts +111 -161
  23. package/assembly/deserialize/object.ts +16 -76
  24. package/assembly/deserialize/string.ts +70 -85
  25. package/assembly/index.ts +25 -24
  26. package/assembly/serialize/array.ts +37 -44
  27. package/assembly/serialize/bool.ts +2 -2
  28. package/assembly/serialize/date.ts +2 -2
  29. package/assembly/serialize/float.ts +2 -2
  30. package/assembly/serialize/integer.ts +3 -3
  31. package/assembly/serialize/map.ts +16 -16
  32. package/assembly/serialize/object.ts +4 -4
  33. package/assembly/serialize/string.ts +60 -63
  34. package/assembly/test.ts +3 -2
  35. package/package.json +2 -1
  36. package/transform/lib/index.js +29 -92
  37. package/transform/lib/index.js.map +1 -1
  38. package/transform/package.json +1 -1
  39. package/transform/src/index.ts +53 -186
@@ -1,19 +1,4 @@
1
- import {
2
- ClassDeclaration,
3
- FieldDeclaration,
4
- IdentifierExpression,
5
- Parser,
6
- Source,
7
- NodeKind,
8
- Expression,
9
- CommonFlags,
10
- StringLiteralExpression,
11
- IntegerLiteralExpression,
12
- FloatLiteralExpression,
13
- NullExpression,
14
- TrueExpression,
15
- FalseExpression,
16
- } from "assemblyscript/dist/assemblyscript.js";
1
+ import { ClassDeclaration, FieldDeclaration, IdentifierExpression, Parser, Source, NodeKind, Expression, CommonFlags, StringLiteralExpression, IntegerLiteralExpression, FloatLiteralExpression, NullExpression, TrueExpression, FalseExpression } from "assemblyscript/dist/assemblyscript.js";
17
2
 
18
3
  import { toString, isStdlib } from "visitor-as/dist/utils.js";
19
4
  import { BaseVisitor, SimpleParser } from "visitor-as/dist/index.js";
@@ -24,7 +9,7 @@ class JSONTransform extends BaseVisitor {
24
9
  public currentClass!: SchemaData;
25
10
  public sources = new Set<Source>();
26
11
 
27
- visitMethodDeclaration(): void { }
12
+ visitMethodDeclaration(): void {}
28
13
  visitClassDeclaration(node: ClassDeclaration): void {
29
14
  if (!node.decorators?.length) return;
30
15
 
@@ -42,20 +27,14 @@ class JSONTransform extends BaseVisitor {
42
27
  schema.node = node;
43
28
  schema.name = node.name.text;
44
29
 
45
- const members = [
46
- ...node.members.filter((v) => v.kind === NodeKind.FieldDeclaration),
47
- ];
30
+ const members = [...node.members.filter((v) => v.kind === NodeKind.FieldDeclaration)];
48
31
 
49
32
  if (node.extendsType) {
50
- schema.parent = this.schemasList.find(
51
- (v) => v.name == node.extendsType?.name.identifier.text,
52
- ) as SchemaData | null;
33
+ schema.parent = this.schemasList.find((v) => v.name == node.extendsType?.name.identifier.text) as SchemaData | null;
53
34
 
54
35
  if (schema.parent?.members) {
55
36
  for (let i = schema.parent.members.length - 1; i >= 0; i--) {
56
- const replace = schema.members.find(
57
- (v) => v.name == schema.parent?.members[i]?.name,
58
- );
37
+ const replace = schema.members.find((v) => v.name == schema.parent?.members[i]?.name);
59
38
  if (!replace) {
60
39
  members.unshift(schema.parent?.members[i]!.node);
61
40
  }
@@ -69,8 +48,7 @@ class JSONTransform extends BaseVisitor {
69
48
 
70
49
  let INITIALIZE_EMPTY = "__INITIALIZE(): this {\n return this;\n}";
71
50
 
72
- let DESERIALIZE_EMPTY =
73
- "__DESERIALIZE(data: string, key_start: i32, key_end: i32, value_start: i32, value_end: i32): boolean {\n return false;\n}";
51
+ let DESERIALIZE_EMPTY = "__DESERIALIZE(data: string, key_start: i32, key_end: i32, value_start: i32, value_end: i32): boolean {\n return false;\n}";
74
52
 
75
53
  if (process.env["JSON_DEBUG"]) {
76
54
  console.log(SERIALIZE_RAW_EMPTY);
@@ -79,26 +57,14 @@ class JSONTransform extends BaseVisitor {
79
57
  console.log(DESERIALIZE_EMPTY);
80
58
  }
81
59
 
82
- const SERIALIZE_RAW_METHOD_EMPTY = SimpleParser.parseClassMember(
83
- SERIALIZE_RAW_EMPTY,
84
- node,
85
- );
60
+ const SERIALIZE_RAW_METHOD_EMPTY = SimpleParser.parseClassMember(SERIALIZE_RAW_EMPTY, node);
86
61
  //const SERIALIZE_PRETTY_METHOD = SimpleParser.parseClassMember(SERIALIZE_PRETTY, node);
87
- const INITIALIZE_METHOD_EMPTY = SimpleParser.parseClassMember(
88
- INITIALIZE_EMPTY,
89
- node,
90
- );
91
- const DESERIALIZE_METHOD_EMPTY = SimpleParser.parseClassMember(
92
- DESERIALIZE_EMPTY,
93
- node,
94
- );
95
-
96
- if (!node.members.find((v) => v.name.text == "__SERIALIZE"))
97
- node.members.push(SERIALIZE_RAW_METHOD_EMPTY);
98
- if (!node.members.find((v) => v.name.text == "__INITIALIZE"))
99
- node.members.push(INITIALIZE_METHOD_EMPTY);
100
- if (!node.members.find((v) => v.name.text == "__DESERIALIZE"))
101
- node.members.push(DESERIALIZE_METHOD_EMPTY);
62
+ const INITIALIZE_METHOD_EMPTY = SimpleParser.parseClassMember(INITIALIZE_EMPTY, node);
63
+ const DESERIALIZE_METHOD_EMPTY = SimpleParser.parseClassMember(DESERIALIZE_EMPTY, node);
64
+
65
+ if (!node.members.find((v) => v.name.text == "__SERIALIZE")) node.members.push(SERIALIZE_RAW_METHOD_EMPTY);
66
+ if (!node.members.find((v) => v.name.text == "__INITIALIZE")) node.members.push(INITIALIZE_METHOD_EMPTY);
67
+ if (!node.members.find((v) => v.name.text == "__DESERIALIZE")) node.members.push(DESERIALIZE_METHOD_EMPTY);
102
68
 
103
69
  this.schemasList.push(schema);
104
70
  }
@@ -107,12 +73,7 @@ class JSONTransform extends BaseVisitor {
107
73
  const name = member.name;
108
74
  if (!(member instanceof FieldDeclaration)) continue;
109
75
  if (!member.type) {
110
- throw new Error(
111
- "Fields must be strongly typed! Found " +
112
- toString(member) +
113
- " at " +
114
- node.range.source.normalizedPath,
115
- );
76
+ throw new Error("Fields must be strongly typed! Found " + toString(member) + " at " + node.range.source.normalizedPath);
116
77
  }
117
78
  const type = toString(member.type!);
118
79
  if (type.startsWith("(") && type.includes("=>")) continue;
@@ -121,6 +82,7 @@ class JSONTransform extends BaseVisitor {
121
82
  if (member.flags == CommonFlags.Static) continue;
122
83
  if (member.flags === CommonFlags.Private) continue;
123
84
  if (member.flags === CommonFlags.Protected) continue;
85
+ if (member.decorators && node.decorators.some((v) => (v.name as IdentifierExpression).text == "omit")) continue;
124
86
 
125
87
  const mem = new Property();
126
88
  mem.name = name.text;
@@ -144,11 +106,7 @@ class JSONTransform extends BaseVisitor {
144
106
 
145
107
  switch (decoratorName) {
146
108
  case "alias": {
147
- if (!args.length)
148
- throw new Error(
149
- "Expected 1 argument but got zero at @alias in " +
150
- node.range.source.normalizedPath,
151
- );
109
+ if (!args.length) throw new Error("Expected 1 argument but got zero at @alias in " + node.range.source.normalizedPath);
152
110
  mem.alias = args[0]!;
153
111
  mem.flags.set(PropertyFlags.Alias, args);
154
112
  break;
@@ -158,11 +116,7 @@ class JSONTransform extends BaseVisitor {
158
116
  break;
159
117
  }
160
118
  case "omitif": {
161
- if (!decorator.args?.length)
162
- throw new Error(
163
- "Expected 1 argument but got zero at @omitif in " +
164
- node.range.source.normalizedPath,
165
- );
119
+ if (!decorator.args?.length) throw new Error("Expected 1 argument but got zero at @omitif in " + node.range.source.normalizedPath);
166
120
  mem.flags.set(PropertyFlags.OmitIf, args);
167
121
  break;
168
122
  }
@@ -177,20 +131,7 @@ class JSONTransform extends BaseVisitor {
177
131
  mem.generate(false);
178
132
 
179
133
  if (this.schemasList.find((v) => v.name == type)) {
180
- mem.initialize =
181
- "this." +
182
- name.text +
183
- " = changetype<nonnull<" +
184
- mem.type +
185
- ">>(__new(offsetof<nonnull<" +
186
- mem.type +
187
- ">>(), idof<nonnull<" +
188
- mem.type +
189
- ">>()));\n changetype<nonnull<" +
190
- mem.type +
191
- ">>(this." +
192
- name.text +
193
- ").__INITIALIZE()";
134
+ 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()";
194
135
  } else if (mem.value) {
195
136
  mem.initialize = "this." + name.text + " = " + mem.value;
196
137
  } else if (type === "Map") {
@@ -198,22 +139,12 @@ class JSONTransform extends BaseVisitor {
198
139
  } else if (type === "string") {
199
140
  mem.initialize = "this." + name.text + ' = ""';
200
141
  } else if (type === "Array") {
201
- mem.initialize =
202
- "this." + name.text + " = instantiate<" + mem.type + ">()";
142
+ mem.initialize = "this." + name.text + " = instantiate<" + mem.type + ">()";
203
143
  } else if (type === "bool" || type === "boolean") {
204
144
  mem.initialize = "this." + name.text + " = false";
205
145
  } else if (type === "JSON.Raw") {
206
146
  mem.initialize = "this." + name.text + ' = ""';
207
- } else if (
208
- type === "u8" ||
209
- type === "u16" ||
210
- type === "u32" ||
211
- type === "u64" ||
212
- type === "i8" ||
213
- type === "i16" ||
214
- type === "i32" ||
215
- type === "i64"
216
- ) {
147
+ } else if (type === "u8" || type === "u16" || type === "u32" || type === "u64" || type === "i8" || type === "i16" || type === "i32" || type === "i64") {
217
148
  mem.initialize = "this." + name.text + " = 0";
218
149
  } else if (type === "f32" || type === "f64") {
219
150
  mem.initialize = "this." + name.text + " = 0.0";
@@ -227,18 +158,14 @@ class JSONTransform extends BaseVisitor {
227
158
 
228
159
  let INITIALIZE = "__INITIALIZE(): this {\n";
229
160
 
230
- let DESERIALIZE =
231
- "__DESERIALIZE(data: string, key_start: i32, key_end: i32, value_start: i32, value_end: i32): boolean {\n const len = key_end - key_start;\n";
161
+ 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";
232
162
  let indent = " ";
233
163
 
234
164
  if (!schema.members.length) return;
235
165
 
236
166
  found = false;
237
167
 
238
- if (
239
- schema.members[0]?.flags.has(PropertyFlags.OmitNull) ||
240
- schema.members[0]?.flags.has(PropertyFlags.OmitIf)
241
- ) {
168
+ if (schema.members[0]?.flags.has(PropertyFlags.OmitNull) || schema.members[0]?.flags.has(PropertyFlags.OmitIf)) {
242
169
  SERIALIZE_RAW += schema.members[0]?.serialize;
243
170
  SERIALIZE_PRETTY += "\\n" + schema.members[0]?.serialize;
244
171
  } else {
@@ -247,16 +174,12 @@ class JSONTransform extends BaseVisitor {
247
174
  found = true;
248
175
  }
249
176
 
250
- if (schema.members[0]?.initialize)
251
- INITIALIZE += " " + schema.members[0]?.initialize + ";\n";
177
+ if (schema.members[0]?.initialize) INITIALIZE += " " + schema.members[0]?.initialize + ";\n";
252
178
 
253
179
  for (let i = 1; i < schema.members.length; i++) {
254
180
  const member = schema.members[i]!;
255
181
  if (member.initialize) INITIALIZE += " " + member.initialize + ";\n";
256
- if (
257
- member.flags.has(PropertyFlags.OmitNull) ||
258
- member.flags.has(PropertyFlags.OmitIf)
259
- ) {
182
+ if (member.flags.has(PropertyFlags.OmitNull) || member.flags.has(PropertyFlags.OmitIf)) {
260
183
  SERIALIZE_RAW += member.serialize;
261
184
  SERIALIZE_PRETTY += member.serialize;
262
185
  } else {
@@ -267,10 +190,8 @@ class JSONTransform extends BaseVisitor {
267
190
  }
268
191
 
269
192
  if (found) {
270
- SERIALIZE_RAW +=
271
- "`;\n store<u16>(changetype<usize>(out) + ((out.length - 1) << 1), 125);\n return out;\n}";
272
- SERIALIZE_PRETTY +=
273
- "`;\n store<u32>(changetype<usize>(out) + ((out.length - 2) << 1), 8192010);\n return out;\n}";
193
+ SERIALIZE_RAW += "`;\n store<u16>(changetype<usize>(out) + ((out.length - 1) << 1), 125);\n return out;\n}";
194
+ SERIALIZE_PRETTY += "`;\n store<u32>(changetype<usize>(out) + ((out.length - 2) << 1), 8192010);\n return out;\n}";
274
195
  } else {
275
196
  SERIALIZE_RAW += "}`;\n return out;\n}";
276
197
  SERIALIZE_PRETTY += "}`;\n return out;\n}";
@@ -279,9 +200,7 @@ class JSONTransform extends BaseVisitor {
279
200
  INITIALIZE += " return this;\n}";
280
201
 
281
202
  const sortedMembers: Property[][] = [];
282
- const _sorted = schema.members.sort(
283
- (a, b) => (a.alias?.length! || a.name.length) - (b.alias?.length! || b.name.length),
284
- );
203
+ const _sorted = schema.members.sort((a, b) => (a.alias?.length! || a.name.length) - (b.alias?.length! || b.name.length));
285
204
  let len = -1;
286
205
  let offset = -1;
287
206
  for (let i = 0; i < _sorted.length; i++) {
@@ -302,30 +221,24 @@ class JSONTransform extends BaseVisitor {
302
221
  const _name = encodeKey(firstMember.alias || firstMember.name);
303
222
  if (_name.length === 1) {
304
223
  if (first) {
305
- DESERIALIZE +=
306
- " if (1 === len) {\n switch (load<u16>(changetype<usize>(data) + (key_start << 1))) {\n";
224
+ DESERIALIZE += " if (1 === len) {\n switch (load<u16>(changetype<usize>(data) + (key_start << 1))) {\n";
307
225
  first = false;
308
226
  } else {
309
- DESERIALIZE +=
310
- "else if (1 === len) {\n switch (load<u16>(changetype<usize>(data) + (key_start << 1))) {\n";
227
+ DESERIALIZE += "else if (1 === len) {\n switch (load<u16>(changetype<usize>(data) + (key_start << 1))) {\n";
311
228
  }
312
229
  } else if (_name.length === 2) {
313
230
  if (first) {
314
- DESERIALIZE +=
315
- " if (2 === len) {\n switch (load<u32>(changetype<usize>(data) + (key_start << 1))) {\n";
231
+ DESERIALIZE += " if (2 === len) {\n switch (load<u32>(changetype<usize>(data) + (key_start << 1))) {\n";
316
232
  first = false;
317
233
  } else {
318
- DESERIALIZE +=
319
- "else if (2 === len) {\n switch (load<u32>(changetype<usize>(data) + (key_start << 1))) {\n";
234
+ DESERIALIZE += "else if (2 === len) {\n switch (load<u32>(changetype<usize>(data) + (key_start << 1))) {\n";
320
235
  }
321
236
  } else if (_name.length === 4) {
322
237
  if (first) {
323
- DESERIALIZE +=
324
- " if (4 === len) {\n const code = load<u64>(changetype<usize>(data) + (key_start << 1));\n";
238
+ DESERIALIZE += " if (4 === len) {\n const code = load<u64>(changetype<usize>(data) + (key_start << 1));\n";
325
239
  first = false;
326
240
  } else {
327
- DESERIALIZE +=
328
- "else if (4 === len) {\n const code = load<u64>(changetype<usize>(data) + (key_start << 1));\n";
241
+ DESERIALIZE += "else if (4 === len) {\n const code = load<u64>(changetype<usize>(data) + (key_start << 1));\n";
329
242
  }
330
243
  } else {
331
244
  if (first) {
@@ -349,31 +262,23 @@ class JSONTransform extends BaseVisitor {
349
262
  f = false;
350
263
  DESERIALIZE += ` if (${charCodeAt64(_name, 0)} === code) { /* ${_name} */\n ${member.deserialize}\n return true;\n }\n`;
351
264
  } else {
352
- DESERIALIZE =
353
- DESERIALIZE.slice(0, DESERIALIZE.length - 1) +
354
- `else if (${charCodeAt64(_name, 0)} === code) {\n ${member.deserialize}\n return true;\n }\n`;
265
+ DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + `else if (${charCodeAt64(_name, 0)} === code) {\n ${member.deserialize}\n return true;\n }\n`;
355
266
  }
356
267
  } else {
357
268
  if (f) {
358
269
  f = false;
359
270
  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`;
360
271
  } else {
361
- DESERIALIZE =
362
- DESERIALIZE.slice(0, DESERIALIZE.length - 1) +
363
- ` 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`;
272
+ 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`;
364
273
  }
365
274
  }
366
275
  }
367
276
  if (_name.length < 3) {
368
277
  DESERIALIZE += ` default: {\n return false;\n }\n }\n`;
369
278
  } else if (_name.length == 4) {
370
- DESERIALIZE =
371
- DESERIALIZE.slice(0, DESERIALIZE.length - 1) +
372
- ` else {\n return false;\n }\n`;
279
+ DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + ` else {\n return false;\n }\n`;
373
280
  } else {
374
- DESERIALIZE =
375
- DESERIALIZE.slice(0, DESERIALIZE.length - 1) +
376
- ` else {\n return false;\n }\n`;
281
+ DESERIALIZE = DESERIALIZE.slice(0, DESERIALIZE.length - 1) + ` else {\n return false;\n }\n`;
377
282
  }
378
283
  DESERIALIZE += " } ";
379
284
  }
@@ -389,25 +294,18 @@ class JSONTransform extends BaseVisitor {
389
294
  console.log(DESERIALIZE);
390
295
  }
391
296
 
392
- const SERIALIZE_RAW_METHOD = SimpleParser.parseClassMember(
393
- SERIALIZE_RAW,
394
- node,
395
- );
396
-
397
- const DESERIALIZE_SAFE = DESERIALIZE.replaceAll("__DESERIALIZE", "__DESERIALIZE_SAFE")
297
+ const SERIALIZE_RAW_METHOD = SimpleParser.parseClassMember(SERIALIZE_RAW, node);
298
+
299
+ const DESERIALIZE_SAFE = DESERIALIZE.replaceAll("__DESERIALIZE", "__DESERIALIZE_SAFE");
398
300
  //const SERIALIZE_PRETTY_METHOD = SimpleParser.parseClassMember(SERIALIZE_PRETTY, node);
399
301
  const INITIALIZE_METHOD = SimpleParser.parseClassMember(INITIALIZE, node);
400
302
  const DESERIALIZE_METHOD = SimpleParser.parseClassMember(DESERIALIZE, node);
401
303
  const DESERIALIZE_SAFE_METHOD = SimpleParser.parseClassMember(DESERIALIZE_SAFE, node);
402
304
 
403
- if (!node.members.find((v) => v.name.text == "__SERIALIZE"))
404
- node.members.push(SERIALIZE_RAW_METHOD);
405
- if (!node.members.find((v) => v.name.text == "__INITIALIZE"))
406
- node.members.push(INITIALIZE_METHOD);
407
- if (!node.members.find((v) => v.name.text == "__DESERIALIZE"))
408
- node.members.push(DESERIALIZE_METHOD);
409
- if (!node.members.find((v) => v.name.text == "__DESERIALIZE_SAFE"))
410
- node.members.push(DESERIALIZE_SAFE_METHOD);
305
+ if (!node.members.find((v) => v.name.text == "__SERIALIZE")) node.members.push(SERIALIZE_RAW_METHOD);
306
+ if (!node.members.find((v) => v.name.text == "__INITIALIZE")) node.members.push(INITIALIZE_METHOD);
307
+ if (!node.members.find((v) => v.name.text == "__DESERIALIZE")) node.members.push(DESERIALIZE_METHOD);
308
+ if (!node.members.find((v) => v.name.text == "__DESERIALIZE_SAFE")) node.members.push(DESERIALIZE_SAFE_METHOD);
411
309
 
412
310
  this.schemasList.push(schema);
413
311
  }
@@ -454,10 +352,7 @@ export default class Transformer extends Transform {
454
352
  for (const schema of schemas) {
455
353
  if (schema.parent) {
456
354
  const parent = schemas.find((v) => v.name === schema.parent?.name);
457
- if (!parent)
458
- throw new Error(
459
- `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.`,
460
- );
355
+ 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.`);
461
356
  }
462
357
  }
463
358
  }
@@ -477,10 +372,7 @@ class Property {
477
372
  public alias: string | null = null;
478
373
  public type: string = "";
479
374
  public value: string | null = null;
480
- public flags: Map<PropertyFlags, string[]> = new Map<
481
- PropertyFlags,
482
- string[]
483
- >();
375
+ public flags: Map<PropertyFlags, string[]> = new Map<PropertyFlags, string[]>();
484
376
 
485
377
  public serialize: string | null = null;
486
378
  public deserialize: string | null = null;
@@ -499,7 +391,7 @@ class Property {
499
391
 
500
392
  if (this.flags.has(PropertyFlags.JSON_Raw)) {
501
393
  if (this.flags.has(PropertyFlags.Null)) {
502
- this.right_s = "(this." + name + " || \"null\")";
394
+ this.right_s = "(this." + name + ' || "null")';
503
395
  this.right_d = "value_start === value_end - 4 && 30399761348886638 === load<u64>(changetype<usize>(data) + (value_start << 1)) ? null : data.substring(value_start, value_end)";
504
396
  } else {
505
397
  this.right_s = "this." + name;
@@ -507,35 +399,16 @@ class Property {
507
399
  }
508
400
  } else {
509
401
  this.right_s = "__SERIALIZE<" + type + ">(this." + name + ")";
510
- this.right_d =
511
- (safe ? "__DESERIALIZE_SAFE" : "__DESERIALIZE") + "<" + type + ">(data.substring(value_start, value_end))";
402
+ this.right_d = (safe ? "__DESERIALIZE_SAFE" : "__DESERIALIZE") + "<" + type + ">(data.substring(value_start, value_end))";
512
403
  }
513
404
 
514
405
  if (this.flags.has(PropertyFlags.OmitIf)) {
515
406
  const condition = this.flags.get(PropertyFlags.OmitIf)![0];
516
- if (!condition)
517
- throw new Error(
518
- "Could not find condition when using decorator @omitif! Provide at least one condition",
519
- );
520
- this.serialize =
521
- "${" +
522
- condition +
523
- ' ? "" : \'' +
524
- escapedName +
525
- ":' + " +
526
- this.right_s +
527
- ' + ","}';
407
+ if (!condition) throw new Error("Could not find condition when using decorator @omitif! Provide at least one condition");
408
+ this.serialize = "${" + condition + ' ? "" : \'' + escapedName + ":' + " + this.right_s + ' + ","}';
528
409
  this.deserialize = "this." + name + " = " + this.right_d + ";";
529
410
  } else if (this.flags.has(PropertyFlags.OmitNull)) {
530
- this.serialize =
531
- "${changetype<usize>(this." +
532
- name +
533
- ") == <usize>0" +
534
- ' ? "" : \'' +
535
- escapedName +
536
- ":' + " +
537
- this.right_s +
538
- ' + ","}';
411
+ this.serialize = "${changetype<usize>(this." + name + ") == <usize>0" + ' ? "" : \'' + escapedName + ":' + " + this.right_s + ' + ","}';
539
412
  this.deserialize = "this." + name + " = " + this.right_d + ";";
540
413
  } else {
541
414
  this.serialize = escapedName + ":${" + this.right_s + "}";
@@ -557,9 +430,7 @@ function charCodeAt32(data: string, offset: number): number {
557
430
 
558
431
  function charCodeAt64(data: string, offset: number): bigint {
559
432
  if (offset + 3 >= data.length) {
560
- throw new Error(
561
- "The string must have at least 4 characters from the specified offset.",
562
- );
433
+ throw new Error("The string must have at least 4 characters from the specified offset.");
563
434
  }
564
435
 
565
436
  const firstCharCode = BigInt(data.charCodeAt(offset));
@@ -567,11 +438,7 @@ function charCodeAt64(data: string, offset: number): bigint {
567
438
  const thirdCharCode = BigInt(data.charCodeAt(offset + 2));
568
439
  const fourthCharCode = BigInt(data.charCodeAt(offset + 3));
569
440
 
570
- const u64Value =
571
- (fourthCharCode << 48n) |
572
- (thirdCharCode << 32n) |
573
- (secondCharCode << 16n) |
574
- firstCharCode;
441
+ const u64Value = (fourthCharCode << 48n) | (thirdCharCode << 32n) | (secondCharCode << 16n) | firstCharCode;
575
442
 
576
443
  return u64Value;
577
444
  }