json-as 1.1.15-preview.5 → 1.1.16

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.
@@ -1,70 +1,614 @@
1
- import {
2
- bs
3
- } from "../lib/as-bs";
4
- import {
5
- JSON
6
- } from ".";
1
+ import { bs } from "../lib/as-bs";
2
+ import { JSON } from ".";
3
+
7
4
  @json
8
- class ByteArray extends Uint8Array {
9
- constructor(length: i32) {
10
- (length);
5
+ class Vec3 {
6
+ x: f32 = 0;
7
+ y: f32 = 0;
8
+ z: f32 = 0;
9
+ __SERIALIZE(ptr: usize): void {
10
+ bs.proposeSize(32);
11
+ store<u64>(bs.offset, 9570664606466171, 0);
12
+ store<u16>(bs.offset, 58, 8);
13
+ bs.offset += 10;
14
+ JSON.__serialize<f32>(load<f32>(ptr, offsetof<this>("x")));
15
+ store<u64>(bs.offset, 9570668901433388, 0);
16
+ store<u16>(bs.offset, 58, 8);
17
+ bs.offset += 10;
18
+ JSON.__serialize<f32>(load<f32>(ptr, offsetof<this>("y")));
19
+ store<u64>(bs.offset, 9570673196400684, 0);
20
+ store<u16>(bs.offset, 58, 8);
21
+ bs.offset += 10;
22
+ JSON.__serialize<f32>(load<f32>(ptr, offsetof<this>("z")));
23
+ store<u16>(bs.offset, 125, 0);
24
+ bs.offset += 2;
11
25
  }
12
- @serializer
26
+
13
27
  @inline
14
- serialize(): string {
15
- return `"${toHexString(this.buffer)}"`;
28
+ __INITIALIZE(): this {
29
+ return this;
16
30
  }
17
- @deserializer
18
- @inline
19
- deserialize(data: string): ByteArray {
20
- if (data.charCodeAt(0) != 34 || data.charCodeAt(data.length - 1) != 34) throw new Error("Expected Address to be of type string but found otherwise!");
21
- ;
22
- const out = new ByteArray((data.length / 2) - i32(data.startsWith("0x")));
23
- store<ArrayBuffer>(changetype<usize>(out), fromHexString(data), offsetof<ByteArray>("buffer"));
31
+ __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
32
+ let keyStart: usize = 0;
33
+ let keyEnd: usize = 0;
34
+ let isKey = false;
35
+ let depth: i32 = 0;
36
+ let lastIndex: usize = 0;
37
+ while (srcStart < srcEnd && JSON.Util.isSpace(load<u16>(srcStart))) srcStart += 2;
38
+ while (srcEnd > srcStart && JSON.Util.isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
39
+ if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
40
+ if (load<u16>(srcStart) != 123) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
41
+ if (load<u16>(srcEnd - 2) != 125) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
42
+ srcStart += 2;
43
+ while (srcStart < srcEnd) {
44
+ let code = load<u16>(srcStart);
45
+ while (JSON.Util.isSpace(code)) code = load<u16>((srcStart += 2));
46
+ if (keyStart == 0) {
47
+ if (code == 34 && load<u16>(srcStart - 2) !== 92) {
48
+ if (isKey) {
49
+ keyStart = lastIndex;
50
+ keyEnd = srcStart;
51
+ while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
52
+ if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
53
+ isKey = false;
54
+ } else {
55
+ isKey = true;
56
+ lastIndex = srcStart + 2;
57
+ }
58
+ }
59
+ srcStart += 2;
60
+ } else {
61
+ if (code == 34) {
62
+ lastIndex = srcStart;
63
+ srcStart += 2;
64
+ while (srcStart < srcEnd) {
65
+ const code = load<u16>(srcStart);
66
+ if (code == 34 && load<u16>(srcStart - 2) !== 92) {
67
+ srcStart += 4;
68
+ keyStart = 0;
69
+ break;
70
+ }
71
+ srcStart += 2;
72
+ }
73
+ } else if (code - 48 <= 9 || code == 45) {
74
+ lastIndex = srcStart;
75
+ srcStart += 2;
76
+ while (srcStart < srcEnd) {
77
+ const code = load<u16>(srcStart);
78
+ if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
79
+ switch (<u32>keyEnd - <u32>keyStart) {
80
+ case 2: {
81
+ const code16 = load<u16>(keyStart);
82
+ if (code16 == 120) {
83
+ store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("x"));
84
+ srcStart += 2;
85
+ keyStart = 0;
86
+ break;
87
+ } else if (code16 == 121) {
88
+ store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("y"));
89
+ srcStart += 2;
90
+ keyStart = 0;
91
+ break;
92
+ } else if (code16 == 122) {
93
+ store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("z"));
94
+ srcStart += 2;
95
+ keyStart = 0;
96
+ break;
97
+ } else {
98
+ srcStart += 2;
99
+ keyStart = 0;
100
+ break;
101
+ }
102
+ }
103
+
104
+ default: {
105
+ srcStart += 2;
106
+ keyStart = 0;
107
+ break;
108
+ }
109
+ }
110
+ break;
111
+ }
112
+ srcStart += 2;
113
+ }
114
+ } else if (code == 123) {
115
+ lastIndex = srcStart;
116
+ depth++;
117
+ srcStart += 2;
118
+ while (srcStart < srcEnd) {
119
+ const code = load<u16>(srcStart);
120
+ if (code == 34) {
121
+ srcStart += 2;
122
+ while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
123
+ } else if (code == 125) {
124
+ if (--depth == 0) {
125
+ srcStart += 2;
126
+ switch (<u32>keyEnd - <u32>keyStart) {
127
+ case 2: {
128
+ const code16 = load<u16>(keyStart);
129
+ if (code16 == 120) {
130
+ store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("x"));
131
+ keyStart = 0;
132
+ break;
133
+ } else if (code16 == 121) {
134
+ store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("y"));
135
+ keyStart = 0;
136
+ break;
137
+ } else if (code16 == 122) {
138
+ store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("z"));
139
+ keyStart = 0;
140
+ break;
141
+ } else {
142
+ keyStart = 0;
143
+ break;
144
+ }
145
+ }
146
+
147
+ default: {
148
+ keyStart = 0;
149
+ break;
150
+ }
151
+ }
152
+ break;
153
+ }
154
+ } else if (code == 123) depth++;
155
+ srcStart += 2;
156
+ }
157
+ } else if (code == 91) {
158
+ lastIndex = srcStart;
159
+ depth++;
160
+ srcStart += 2;
161
+ while (srcStart < srcEnd) {
162
+ const code = load<u16>(srcStart);
163
+ if (code == 34) {
164
+ srcStart += 2;
165
+ while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
166
+ } else if (code == 93) {
167
+ if (--depth == 0) {
168
+ srcStart += 2;
169
+ keyStart = 0;
170
+ break;
171
+ }
172
+ } else if (code == 91) depth++;
173
+ srcStart += 2;
174
+ }
175
+ } else if (code == 116) {
176
+ if (load<u64>(srcStart) == 28429475166421108) {
177
+ srcStart += 8;
178
+ srcStart += 2;
179
+ keyStart = 0;
180
+ } else {
181
+ throw new Error("Expected to find 'true' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
182
+ }
183
+ } else if (code == 102) {
184
+ if (load<u64>(srcStart, 2) == 28429466576093281) {
185
+ srcStart += 10;
186
+ srcStart += 2;
187
+ keyStart = 0;
188
+ } else {
189
+ throw new Error("Expected to find 'false' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
190
+ }
191
+ } else if (code == 110) {
192
+ if (load<u64>(srcStart) == 30399761348886638) {
193
+ srcStart += 8;
194
+ srcStart += 2;
195
+ keyStart = 0;
196
+ }
197
+ } else {
198
+ srcStart += 2;
199
+ keyStart = 0;
200
+ }
201
+ }
202
+ }
24
203
  return out;
25
204
  }
26
- static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): ByteArray {
27
- return changetype<ByteArray>(Uint8Array.wrap(buffer, byteOffset, length));
28
- }
205
+ }
206
+
207
+ @json
208
+ class Player {
209
+
210
+ @alias("first name")
211
+ firstName!: string | null;
212
+ lastName!: string;
213
+ lastActive!: Array<i32>;
214
+
215
+ @omitif((self: this): boolean => self.age < 18)
216
+ age!: i32;
217
+
218
+ @omitnull()
219
+ pos!: Vec3 | null;
220
+ isVerified!: boolean;
29
221
  __SERIALIZE(ptr: usize): void {
30
- const data = this.serialize();
31
- const dataSize = data.length << 1;
32
- memory.copy(bs.offset, changetype<usize>(data), dataSize);
33
- bs.offset += dataSize;
222
+ bs.proposeSize(160);
223
+ let block: usize = 0;
224
+ store<u16>(bs.offset, 123, 0);
225
+ bs.offset += 2;
226
+ if (!((self: this): boolean => self.age < 18)(this)) {
227
+ store<u64>(bs.offset, 28429415035764770, 0);
228
+ store<u32>(bs.offset, 3801122, 8);
229
+ bs.offset += 12;
230
+ JSON.__serialize<i32>(load<i32>(ptr, offsetof<this>("age")));
231
+ store<u16>(bs.offset, 44, 0);
232
+ bs.offset += 2;
233
+ }
234
+ if ((block = load<usize>(ptr, offsetof<this>("pos"))) !== 0) {
235
+ store<u64>(bs.offset, 32370099070435362, 0);
236
+ store<u32>(bs.offset, 3801122, 8);
237
+ bs.offset += 12;
238
+ JSON.__serialize<Vec3 | null>(load<Vec3 | null>(ptr, offsetof<this>("pos")));
239
+ store<u16>(bs.offset, 44, 0);
240
+ bs.offset += 2;
241
+ }
242
+ store<u64>(bs.offset, 32088598323265570, 0);
243
+ store<u64>(bs.offset, 30962384884727923, 8);
244
+ store<u64>(bs.offset, 9570583007002721, 16);
245
+ store<u16>(bs.offset, 58, 24);
246
+ bs.offset += 26;
247
+ JSON.__serialize<string | null>(load<string | null>(ptr, offsetof<this>("firstName")));
248
+ store<u64>(bs.offset, 27303536599629868, 0);
249
+ store<u64>(bs.offset, 27303407755985011, 8);
250
+ store<u64>(bs.offset, 16325694684725357, 16);
251
+ bs.offset += 24;
252
+ JSON.__serialize<string>(load<string>(ptr, offsetof<this>("lastName")));
253
+ store<u64>(bs.offset, 27303536599629868, 0);
254
+ store<u64>(bs.offset, 27866301874831475, 8);
255
+ store<u64>(bs.offset, 28429479460798580, 16);
256
+ store<u32>(bs.offset, 3801122, 24);
257
+ bs.offset += 28;
258
+ JSON.__serialize<Array<i32>>(load<Array<i32>>(ptr, offsetof<this>("lastActive")));
259
+ store<u64>(bs.offset, 32370073295519788, 0);
260
+ store<u64>(bs.offset, 29555362187509846, 8);
261
+ store<u64>(bs.offset, 28147931469643878, 16);
262
+ store<u32>(bs.offset, 3801122, 24);
263
+ bs.offset += 28;
264
+ JSON.__serialize<boolean>(load<boolean>(ptr, offsetof<this>("isVerified")));
265
+ store<u16>(bs.offset, 125, 0);
266
+ bs.offset += 2;
34
267
  }
268
+
35
269
  @inline
36
270
  __INITIALIZE(): this {
271
+ store<string>(changetype<usize>(this), "", offsetof<this>("lastName"));
272
+ store<Array<i32>>(changetype<usize>(this), [], offsetof<this>("lastActive"));
37
273
  return this;
38
274
  }
39
275
  __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
40
- return inline.always(this.deserialize(JSON.Util.ptrToStr(srcStart, srcEnd)));
41
- }
42
- }
43
- function toHexString(buffer: ArrayBuffer): string {
44
- const view = Uint8Array.wrap(buffer);
45
- let hex = "0x";
46
- for (let i = 0; i < view.length; i++) {
47
- let byte = view[i];
48
- hex += byte.toString(16).padStart(2, "0");
49
- }
50
- return hex;
51
- }
52
- function fromHexString(data: string): ArrayBuffer {
53
- if (data.startsWith("\"0x") || data.startsWith("\"0X")) {
54
- data = data.slice(3, data.length - 1);
55
- } else {
56
- data = data.slice(1, data.length - 1);
57
- }
58
- const length = data.length >>> 1;
59
- const buffer = new ArrayBuffer(length);
60
- const view = Uint8Array.wrap(buffer);
61
- for (let i = 0; i < length; i++) {
62
- const hexByte = data.substr(i * 2, 2);
63
- view[i] = i8.parse(hexByte, 16);
276
+ let keyStart: usize = 0;
277
+ let keyEnd: usize = 0;
278
+ let isKey = false;
279
+ let depth: i32 = 0;
280
+ let lastIndex: usize = 0;
281
+ while (srcStart < srcEnd && JSON.Util.isSpace(load<u16>(srcStart))) srcStart += 2;
282
+ while (srcEnd > srcStart && JSON.Util.isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
283
+ if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
284
+ if (load<u16>(srcStart) != 123) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
285
+ if (load<u16>(srcEnd - 2) != 125) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
286
+ srcStart += 2;
287
+ while (srcStart < srcEnd) {
288
+ let code = load<u16>(srcStart);
289
+ while (JSON.Util.isSpace(code)) code = load<u16>((srcStart += 2));
290
+ if (keyStart == 0) {
291
+ if (code == 34 && load<u16>(srcStart - 2) !== 92) {
292
+ if (isKey) {
293
+ keyStart = lastIndex;
294
+ keyEnd = srcStart;
295
+ while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
296
+ if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
297
+ isKey = false;
298
+ } else {
299
+ isKey = true;
300
+ lastIndex = srcStart + 2;
301
+ }
302
+ }
303
+ srcStart += 2;
304
+ } else {
305
+ if (code == 34) {
306
+ lastIndex = srcStart;
307
+ srcStart += 2;
308
+ while (srcStart < srcEnd) {
309
+ const code = load<u16>(srcStart);
310
+ if (code == 34 && load<u16>(srcStart - 2) !== 92) {
311
+ switch (<u32>keyEnd - <u32>keyStart) {
312
+ case 20: {
313
+ const codeS8 = load<u64>(keyStart, 0);
314
+ const codeS16 = load<u64>(keyStart, 8);
315
+ const codeS20 = load<u32>(keyStart, 16);
316
+ if (codeS8 == 32370111954878566 && codeS16 == 27303545189433460 && codeS20 == 6619245) {
317
+ store<string | null>(changetype<usize>(out), JSON.__deserialize<string | null>(lastIndex, srcStart + 2), offsetof<this>("firstName"));
318
+ srcStart += 4;
319
+ keyStart = 0;
320
+ break;
321
+ } else {
322
+ srcStart += 4;
323
+ keyStart = 0;
324
+ break;
325
+ }
326
+ }
327
+
328
+ case 16: {
329
+ const codeS8 = load<u64>(keyStart, 0);
330
+ const codeS16 = load<u64>(keyStart, 8);
331
+ if (codeS8 == 32651591226032236 && codeS16 == 28429440805568590) {
332
+ store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("lastName"));
333
+ srcStart += 4;
334
+ keyStart = 0;
335
+ break;
336
+ } else {
337
+ srcStart += 4;
338
+ keyStart = 0;
339
+ break;
340
+ }
341
+ }
342
+
343
+ default: {
344
+ srcStart += 4;
345
+ keyStart = 0;
346
+ break;
347
+ }
348
+ }
349
+ break;
350
+ }
351
+ srcStart += 2;
352
+ }
353
+ } else if (code - 48 <= 9 || code == 45) {
354
+ lastIndex = srcStart;
355
+ srcStart += 2;
356
+ while (srcStart < srcEnd) {
357
+ const code = load<u16>(srcStart);
358
+ if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
359
+ switch (<u32>keyEnd - <u32>keyStart) {
360
+ case 6: {
361
+ const code48 = load<u64>(keyStart) & 281474976710655;
362
+ if (code48 == 433798447201) {
363
+ store<i32>(changetype<usize>(out), JSON.__deserialize<i32>(lastIndex, srcStart), offsetof<this>("age"));
364
+ srcStart += 2;
365
+ keyStart = 0;
366
+ break;
367
+ } else {
368
+ srcStart += 2;
369
+ keyStart = 0;
370
+ break;
371
+ }
372
+ }
373
+
374
+ default: {
375
+ srcStart += 2;
376
+ keyStart = 0;
377
+ break;
378
+ }
379
+ }
380
+ break;
381
+ }
382
+ srcStart += 2;
383
+ }
384
+ } else if (code == 123) {
385
+ lastIndex = srcStart;
386
+ depth++;
387
+ srcStart += 2;
388
+ while (srcStart < srcEnd) {
389
+ const code = load<u16>(srcStart);
390
+ if (code == 34) {
391
+ srcStart += 2;
392
+ while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
393
+ } else if (code == 125) {
394
+ if (--depth == 0) {
395
+ srcStart += 2;
396
+ switch (<u32>keyEnd - <u32>keyStart) {
397
+ case 20: {
398
+ const codeS8 = load<u64>(keyStart, 0);
399
+ const codeS16 = load<u64>(keyStart, 8);
400
+ const codeS20 = load<u32>(keyStart, 16);
401
+ if (codeS8 == 32370111954878566 && codeS16 == 27303545189433460 && codeS20 == 6619245) {
402
+ store<string | null>(changetype<usize>(out), JSON.__deserialize<string | null>(lastIndex, srcStart), offsetof<this>("firstName"));
403
+ keyStart = 0;
404
+ break;
405
+ } else if (codeS8 == 32651591226032236 && codeS16 == 29555370777313345 && codeS20 == 6619254) {
406
+ store<Array<i32>>(changetype<usize>(out), JSON.__deserialize<Array<i32>>(lastIndex, srcStart), offsetof<this>("lastActive"));
407
+ keyStart = 0;
408
+ break;
409
+ } else if (codeS8 == 28429342022500457 && codeS16 == 29555310648164466 && codeS20 == 6553701) {
410
+ store<boolean>(changetype<usize>(out), JSON.__deserialize<boolean>(lastIndex, srcStart), offsetof<this>("isVerified"));
411
+ keyStart = 0;
412
+ break;
413
+ } else {
414
+ keyStart = 0;
415
+ break;
416
+ }
417
+ }
418
+
419
+ case 6: {
420
+ const code48 = load<u64>(keyStart) & 281474976710655;
421
+ if (code48 == 433798447201) {
422
+ store<i32>(changetype<usize>(out), JSON.__deserialize<i32>(lastIndex, srcStart), offsetof<this>("age"));
423
+ keyStart = 0;
424
+ break;
425
+ } else if (code48 == 493928513648) {
426
+ store<Vec3 | null>(changetype<usize>(out), JSON.__deserialize<Vec3 | null>(lastIndex, srcStart), offsetof<this>("pos"));
427
+ keyStart = 0;
428
+ break;
429
+ } else {
430
+ keyStart = 0;
431
+ break;
432
+ }
433
+ }
434
+
435
+ case 16: {
436
+ const codeS8 = load<u64>(keyStart, 0);
437
+ const codeS16 = load<u64>(keyStart, 8);
438
+ if (codeS8 == 32651591226032236 && codeS16 == 28429440805568590) {
439
+ store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("lastName"));
440
+ keyStart = 0;
441
+ break;
442
+ } else {
443
+ keyStart = 0;
444
+ break;
445
+ }
446
+ }
447
+
448
+ default: {
449
+ keyStart = 0;
450
+ break;
451
+ }
452
+ }
453
+ break;
454
+ }
455
+ } else if (code == 123) depth++;
456
+ srcStart += 2;
457
+ }
458
+ } else if (code == 91) {
459
+ lastIndex = srcStart;
460
+ depth++;
461
+ srcStart += 2;
462
+ while (srcStart < srcEnd) {
463
+ const code = load<u16>(srcStart);
464
+ if (code == 34) {
465
+ srcStart += 2;
466
+ while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
467
+ } else if (code == 93) {
468
+ if (--depth == 0) {
469
+ srcStart += 2;
470
+ switch (<u32>keyEnd - <u32>keyStart) {
471
+ case 20: {
472
+ const codeS8 = load<u64>(keyStart, 0);
473
+ const codeS16 = load<u64>(keyStart, 8);
474
+ const codeS20 = load<u32>(keyStart, 16);
475
+ if (codeS8 == 32651591226032236 && codeS16 == 29555370777313345 && codeS20 == 6619254) {
476
+ store<Array<i32>>(changetype<usize>(out), JSON.__deserialize<Array<i32>>(lastIndex, srcStart), offsetof<this>("lastActive"));
477
+ keyStart = 0;
478
+ break;
479
+ } else {
480
+ keyStart = 0;
481
+ break;
482
+ }
483
+ }
484
+
485
+ default: {
486
+ keyStart = 0;
487
+ break;
488
+ }
489
+ }
490
+ break;
491
+ }
492
+ } else if (code == 91) depth++;
493
+ srcStart += 2;
494
+ }
495
+ } else if (code == 116) {
496
+ if (load<u64>(srcStart) == 28429475166421108) {
497
+ srcStart += 8;
498
+ switch (<u32>keyEnd - <u32>keyStart) {
499
+ case 20: {
500
+ const codeS8 = load<u64>(keyStart, 0);
501
+ const codeS16 = load<u64>(keyStart, 8);
502
+ const codeS20 = load<u32>(keyStart, 16);
503
+ if (codeS8 == 28429342022500457 && codeS16 == 29555310648164466 && codeS20 == 6553701) {
504
+ store<boolean>(changetype<usize>(out), true, offsetof<this>("isVerified"));
505
+ srcStart += 2;
506
+ keyStart = 0;
507
+ break;
508
+ } else {
509
+ srcStart += 2;
510
+ keyStart = 0;
511
+ break;
512
+ }
513
+ }
514
+
515
+ default: {
516
+ srcStart += 2;
517
+ keyStart = 0;
518
+ }
519
+ }
520
+ } else {
521
+ throw new Error("Expected to find 'true' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
522
+ }
523
+ } else if (code == 102) {
524
+ if (load<u64>(srcStart, 2) == 28429466576093281) {
525
+ srcStart += 10;
526
+ switch (<u32>keyEnd - <u32>keyStart) {
527
+ case 20: {
528
+ const codeS8 = load<u64>(keyStart, 0);
529
+ const codeS16 = load<u64>(keyStart, 8);
530
+ const codeS20 = load<u32>(keyStart, 16);
531
+ if (codeS8 == 28429342022500457 && codeS16 == 29555310648164466 && codeS20 == 6553701) {
532
+ store<boolean>(changetype<usize>(out), false, offsetof<this>("isVerified"));
533
+ srcStart += 2;
534
+ keyStart = 0;
535
+ break;
536
+ } else {
537
+ srcStart += 2;
538
+ keyStart = 0;
539
+ break;
540
+ }
541
+ }
542
+
543
+ default: {
544
+ srcStart += 2;
545
+ keyStart = 0;
546
+ }
547
+ }
548
+ } else {
549
+ throw new Error("Expected to find 'false' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
550
+ }
551
+ } else if (code == 110) {
552
+ if (load<u64>(srcStart) == 30399761348886638) {
553
+ srcStart += 8;
554
+ switch (<u32>keyEnd - <u32>keyStart) {
555
+ case 6: {
556
+ const code48 = load<u64>(keyStart) & 281474976710655;
557
+ if (code48 == 493928513648) {
558
+ store<usize>(changetype<usize>(out), 0, offsetof<this>("pos"));
559
+ srcStart += 2;
560
+ keyStart = 0;
561
+ break;
562
+ } else {
563
+ srcStart += 2;
564
+ keyStart = 0;
565
+ break;
566
+ }
567
+ }
568
+
569
+ case 20: {
570
+ const codeS8 = load<u64>(keyStart, 0);
571
+ const codeS16 = load<u64>(keyStart, 8);
572
+ const codeS20 = load<u32>(keyStart, 16);
573
+ if (codeS8 == 32370111954878566 && codeS16 == 27303545189433460 && codeS20 == 6619245) {
574
+ store<usize>(changetype<usize>(out), 0, offsetof<this>("firstName"));
575
+ srcStart += 2;
576
+ keyStart = 0;
577
+ break;
578
+ } else {
579
+ srcStart += 2;
580
+ keyStart = 0;
581
+ break;
582
+ }
583
+ }
584
+
585
+ default: {
586
+ srcStart += 2;
587
+ keyStart = 0;
588
+ }
589
+ }
590
+ }
591
+ } else {
592
+ srcStart += 2;
593
+ keyStart = 0;
594
+ }
595
+ }
596
+ }
597
+ return out;
64
598
  }
65
- return buffer;
66
599
  }
67
- const s1 = JSON.stringify(ByteArray.wrap(String.UTF8.encode("Hello there")));
68
- console.log("s1: " + s1);
69
- const s2 = JSON.parse<ByteArray>(s1);
70
- console.log("s2: " + JSON.stringify(s2));
600
+ const player: Player = {
601
+ lastName: "Tanaka",
602
+ lastActive: [3, 9, 2025],
603
+ age: 18,
604
+ pos: {
605
+ x: 3.4,
606
+ y: 1.2,
607
+ z: 8.3,
608
+ },
609
+ isVerified: true,
610
+ };
611
+ const serialized = JSON.stringify<Player>(player);
612
+ const deserialized = JSON.parse<Player>(serialized);
613
+ console.log("Serialized " + serialized);
614
+ console.log("Deserialized " + JSON.stringify(deserialized));