json-as 1.1.15 → 1.1.17
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/CHANGELOG.md +11 -2
- package/README.md +1 -10
- package/assembly/__tests__/namespace.spec.ts +63 -0
- package/assembly/test.tmp.ts +247 -286
- package/assembly/test.ts +34 -23
- package/package.json +6 -5
- package/run-tests.sh +17 -13
- package/transform/lib/index.js +58 -66
- package/transform/lib/index.js.map +1 -1
- package/transform/lib/types.js +103 -2
- package/transform/lib/types.js.map +1 -1
- package/transform/src/index.ts +69 -63
- package/transform/src/types.ts +182 -4
- package/transform/src/linkers/classes.ts +0 -50
package/assembly/test.tmp.ts
CHANGED
|
@@ -3,27 +3,24 @@ import { JSON } from ".";
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
@json
|
|
6
|
-
class
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
class Vec3 {
|
|
7
|
+
x: f32 = 0;
|
|
8
|
+
y: f32 = 0;
|
|
9
|
+
z: f32 = 0;
|
|
10
10
|
__SERIALIZE(ptr: usize): void {
|
|
11
|
-
bs.proposeSize(
|
|
12
|
-
store<u64>(bs.offset,
|
|
13
|
-
store<
|
|
14
|
-
bs.offset +=
|
|
15
|
-
JSON.__serialize<
|
|
16
|
-
store<u64>(bs.offset,
|
|
17
|
-
store<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
bs.offset
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
store<u64>(bs.offset, 16325694684725357, 16);
|
|
25
|
-
bs.offset += 24;
|
|
26
|
-
JSON.__serialize<string>(load<string>(ptr, offsetof<this>("lastName")));
|
|
11
|
+
bs.proposeSize(32);
|
|
12
|
+
store<u64>(bs.offset, 9570664606466171, 0);
|
|
13
|
+
store<u16>(bs.offset, 58, 8);
|
|
14
|
+
bs.offset += 10;
|
|
15
|
+
JSON.__serialize<f32>(load<f32>(ptr, offsetof<this>("x")));
|
|
16
|
+
store<u64>(bs.offset, 9570668901433388, 0);
|
|
17
|
+
store<u16>(bs.offset, 58, 8);
|
|
18
|
+
bs.offset += 10;
|
|
19
|
+
JSON.__serialize<f32>(load<f32>(ptr, offsetof<this>("y")));
|
|
20
|
+
store<u64>(bs.offset, 9570673196400684, 0);
|
|
21
|
+
store<u16>(bs.offset, 58, 8);
|
|
22
|
+
bs.offset += 10;
|
|
23
|
+
JSON.__serialize<f32>(load<f32>(ptr, offsetof<this>("z")));
|
|
27
24
|
store<u16>(bs.offset, 125, 0);
|
|
28
25
|
bs.offset += 2;
|
|
29
26
|
}
|
|
@@ -31,8 +28,6 @@ class Person {
|
|
|
31
28
|
|
|
32
29
|
@inline
|
|
33
30
|
__INITIALIZE(): this {
|
|
34
|
-
this.firstName = "";
|
|
35
|
-
this.lastName = "";
|
|
36
31
|
return this;
|
|
37
32
|
}
|
|
38
33
|
__DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
|
|
@@ -71,53 +66,45 @@ class Person {
|
|
|
71
66
|
while (srcStart < srcEnd) {
|
|
72
67
|
const code = load<u16>(srcStart);
|
|
73
68
|
if (code == 34 && load<u16>(srcStart - 2) !== 92) {
|
|
69
|
+
srcStart += 4;
|
|
70
|
+
keyStart = 0;
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
srcStart += 2;
|
|
74
|
+
}
|
|
75
|
+
} else if (code - 48 <= 9 || code == 45) {
|
|
76
|
+
lastIndex = srcStart;
|
|
77
|
+
srcStart += 2;
|
|
78
|
+
while (srcStart < srcEnd) {
|
|
79
|
+
const code = load<u16>(srcStart);
|
|
80
|
+
if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
|
|
74
81
|
switch (<u32>keyEnd - <u32>keyStart) {
|
|
75
|
-
case
|
|
76
|
-
const
|
|
77
|
-
if (
|
|
78
|
-
store<
|
|
79
|
-
srcStart +=
|
|
80
|
-
keyStart = 0;
|
|
81
|
-
break;
|
|
82
|
-
} else {
|
|
83
|
-
srcStart += 4;
|
|
84
|
-
keyStart = 0;
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
case 18: {
|
|
90
|
-
const codeS8 = load<u64>(keyStart, 0);
|
|
91
|
-
const codeS16 = load<u64>(keyStart, 8);
|
|
92
|
-
if (codeS8 == 32370111954878566 && codeS16 == 30681189078401140) {
|
|
93
|
-
store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("firstName"));
|
|
94
|
-
srcStart += 4;
|
|
82
|
+
case 2: {
|
|
83
|
+
const code16 = load<u16>(keyStart);
|
|
84
|
+
if (code16 == 120) {
|
|
85
|
+
store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("x"));
|
|
86
|
+
srcStart += 2;
|
|
95
87
|
keyStart = 0;
|
|
96
88
|
break;
|
|
97
|
-
} else {
|
|
98
|
-
srcStart
|
|
89
|
+
} else if (code16 == 121) {
|
|
90
|
+
store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("y"));
|
|
91
|
+
srcStart += 2;
|
|
99
92
|
keyStart = 0;
|
|
100
93
|
break;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
case 16: {
|
|
105
|
-
const codeS8 = load<u64>(keyStart, 0);
|
|
106
|
-
const codeS16 = load<u64>(keyStart, 8);
|
|
107
|
-
if (codeS8 == 32651591226032236 && codeS16 == 28429440805568590) {
|
|
108
|
-
store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("lastName"));
|
|
109
|
-
srcStart += 4;
|
|
94
|
+
} else if (code16 == 122) {
|
|
95
|
+
store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("z"));
|
|
96
|
+
srcStart += 2;
|
|
110
97
|
keyStart = 0;
|
|
111
98
|
break;
|
|
112
99
|
} else {
|
|
113
|
-
srcStart +=
|
|
100
|
+
srcStart += 2;
|
|
114
101
|
keyStart = 0;
|
|
115
102
|
break;
|
|
116
103
|
}
|
|
117
104
|
}
|
|
118
105
|
|
|
119
106
|
default: {
|
|
120
|
-
srcStart +=
|
|
107
|
+
srcStart += 2;
|
|
121
108
|
keyStart = 0;
|
|
122
109
|
break;
|
|
123
110
|
}
|
|
@@ -126,18 +113,6 @@ class Person {
|
|
|
126
113
|
}
|
|
127
114
|
srcStart += 2;
|
|
128
115
|
}
|
|
129
|
-
} else if (code - 48 <= 9 || code == 45) {
|
|
130
|
-
lastIndex = srcStart;
|
|
131
|
-
srcStart += 2;
|
|
132
|
-
while (srcStart < srcEnd) {
|
|
133
|
-
const code = load<u16>(srcStart);
|
|
134
|
-
if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
|
|
135
|
-
srcStart += 2;
|
|
136
|
-
keyStart = 0;
|
|
137
|
-
break;
|
|
138
|
-
}
|
|
139
|
-
srcStart += 2;
|
|
140
|
-
}
|
|
141
116
|
} else if (code == 123) {
|
|
142
117
|
lastIndex = srcStart;
|
|
143
118
|
depth++;
|
|
@@ -150,7 +125,32 @@ class Person {
|
|
|
150
125
|
} else if (code == 125) {
|
|
151
126
|
if (--depth == 0) {
|
|
152
127
|
srcStart += 2;
|
|
153
|
-
keyStart
|
|
128
|
+
switch (<u32>keyEnd - <u32>keyStart) {
|
|
129
|
+
case 2: {
|
|
130
|
+
const code16 = load<u16>(keyStart);
|
|
131
|
+
if (code16 == 120) {
|
|
132
|
+
store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("x"));
|
|
133
|
+
keyStart = 0;
|
|
134
|
+
break;
|
|
135
|
+
} else if (code16 == 121) {
|
|
136
|
+
store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("y"));
|
|
137
|
+
keyStart = 0;
|
|
138
|
+
break;
|
|
139
|
+
} else if (code16 == 122) {
|
|
140
|
+
store<f32>(changetype<usize>(out), JSON.__deserialize<f32>(lastIndex, srcStart), offsetof<this>("z"));
|
|
141
|
+
keyStart = 0;
|
|
142
|
+
break;
|
|
143
|
+
} else {
|
|
144
|
+
keyStart = 0;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
default: {
|
|
150
|
+
keyStart = 0;
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
154
|
break;
|
|
155
155
|
}
|
|
156
156
|
} else if (code == 123) depth++;
|
|
@@ -193,26 +193,8 @@ class Person {
|
|
|
193
193
|
} else if (code == 110) {
|
|
194
194
|
if (load<u64>(srcStart) == 30399761348886638) {
|
|
195
195
|
srcStart += 8;
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
const code32 = load<u32>(keyStart);
|
|
199
|
-
if (code32 == 6553705) {
|
|
200
|
-
store<usize>(changetype<usize>(out), 0, offsetof<this>("id"));
|
|
201
|
-
srcStart += 2;
|
|
202
|
-
keyStart = 0;
|
|
203
|
-
break;
|
|
204
|
-
} else {
|
|
205
|
-
srcStart += 2;
|
|
206
|
-
keyStart = 0;
|
|
207
|
-
break;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
default: {
|
|
212
|
-
srcStart += 2;
|
|
213
|
-
keyStart = 0;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
196
|
+
srcStart += 2;
|
|
197
|
+
keyStart = 0;
|
|
216
198
|
}
|
|
217
199
|
} else {
|
|
218
200
|
srcStart += 2;
|
|
@@ -226,175 +208,65 @@ class Person {
|
|
|
226
208
|
|
|
227
209
|
|
|
228
210
|
@json
|
|
229
|
-
class
|
|
230
|
-
people: Array<Person> = [];
|
|
231
|
-
__SERIALIZE(ptr: usize): void {
|
|
232
|
-
bs.proposeSize(22);
|
|
233
|
-
store<u64>(bs.offset, 28429453686341755, 0);
|
|
234
|
-
store<u64>(bs.offset, 28429436511584367, 8);
|
|
235
|
-
store<u32>(bs.offset, 3801122, 16);
|
|
236
|
-
bs.offset += 20;
|
|
237
|
-
JSON.__serialize<Array<Person>>(load<Array<Person>>(ptr, offsetof<this>("people")));
|
|
238
|
-
store<u16>(bs.offset, 125, 0);
|
|
239
|
-
bs.offset += 2;
|
|
240
|
-
}
|
|
211
|
+
class Player {
|
|
241
212
|
|
|
213
|
+
@alias("first name")
|
|
214
|
+
firstName!: string | null;
|
|
215
|
+
lastName!: string;
|
|
216
|
+
lastActive!: Array<i32>;
|
|
242
217
|
|
|
243
|
-
@inline
|
|
244
|
-
__INITIALIZE(): this {
|
|
245
|
-
this.people = [];
|
|
246
|
-
return this;
|
|
247
|
-
}
|
|
248
|
-
__DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
|
|
249
|
-
let keyStart: usize = 0;
|
|
250
|
-
let keyEnd: usize = 0;
|
|
251
|
-
let isKey = false;
|
|
252
|
-
let depth: i32 = 0;
|
|
253
|
-
let lastIndex: usize = 0;
|
|
254
|
-
while (srcStart < srcEnd && JSON.Util.isSpace(load<u16>(srcStart))) srcStart += 2;
|
|
255
|
-
while (srcEnd > srcStart && JSON.Util.isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
|
|
256
|
-
if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
|
|
257
|
-
if (load<u16>(srcStart) != 123) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
|
|
258
|
-
if (load<u16>(srcEnd - 2) != 125) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
|
|
259
|
-
srcStart += 2;
|
|
260
|
-
while (srcStart < srcEnd) {
|
|
261
|
-
let code = load<u16>(srcStart);
|
|
262
|
-
while (JSON.Util.isSpace(code)) code = load<u16>((srcStart += 2));
|
|
263
|
-
if (keyStart == 0) {
|
|
264
|
-
if (code == 34 && load<u16>(srcStart - 2) !== 92) {
|
|
265
|
-
if (isKey) {
|
|
266
|
-
keyStart = lastIndex;
|
|
267
|
-
keyEnd = srcStart;
|
|
268
|
-
while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
|
|
269
|
-
if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
|
|
270
|
-
isKey = false;
|
|
271
|
-
} else {
|
|
272
|
-
isKey = true;
|
|
273
|
-
lastIndex = srcStart + 2;
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
srcStart += 2;
|
|
277
|
-
} else {
|
|
278
|
-
if (code == 34) {
|
|
279
|
-
lastIndex = srcStart;
|
|
280
|
-
srcStart += 2;
|
|
281
|
-
while (srcStart < srcEnd) {
|
|
282
|
-
const code = load<u16>(srcStart);
|
|
283
|
-
if (code == 34 && load<u16>(srcStart - 2) !== 92) {
|
|
284
|
-
srcStart += 4;
|
|
285
|
-
keyStart = 0;
|
|
286
|
-
break;
|
|
287
|
-
}
|
|
288
|
-
srcStart += 2;
|
|
289
|
-
}
|
|
290
|
-
} else if (code - 48 <= 9 || code == 45) {
|
|
291
|
-
lastIndex = srcStart;
|
|
292
|
-
srcStart += 2;
|
|
293
|
-
while (srcStart < srcEnd) {
|
|
294
|
-
const code = load<u16>(srcStart);
|
|
295
|
-
if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
|
|
296
|
-
srcStart += 2;
|
|
297
|
-
keyStart = 0;
|
|
298
|
-
break;
|
|
299
|
-
}
|
|
300
|
-
srcStart += 2;
|
|
301
|
-
}
|
|
302
|
-
} else if (code == 123) {
|
|
303
|
-
lastIndex = srcStart;
|
|
304
|
-
depth++;
|
|
305
|
-
srcStart += 2;
|
|
306
|
-
while (srcStart < srcEnd) {
|
|
307
|
-
const code = load<u16>(srcStart);
|
|
308
|
-
if (code == 34) {
|
|
309
|
-
srcStart += 2;
|
|
310
|
-
while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
|
|
311
|
-
} else if (code == 125) {
|
|
312
|
-
if (--depth == 0) {
|
|
313
|
-
srcStart += 2;
|
|
314
|
-
keyStart = 0;
|
|
315
|
-
break;
|
|
316
|
-
}
|
|
317
|
-
} else if (code == 123) depth++;
|
|
318
|
-
srcStart += 2;
|
|
319
|
-
}
|
|
320
|
-
} else if (code == 91) {
|
|
321
|
-
lastIndex = srcStart;
|
|
322
|
-
depth++;
|
|
323
|
-
srcStart += 2;
|
|
324
|
-
while (srcStart < srcEnd) {
|
|
325
|
-
const code = load<u16>(srcStart);
|
|
326
|
-
if (code == 34) {
|
|
327
|
-
srcStart += 2;
|
|
328
|
-
while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
|
|
329
|
-
} else if (code == 93) {
|
|
330
|
-
if (--depth == 0) {
|
|
331
|
-
srcStart += 2;
|
|
332
|
-
switch (<u32>keyEnd - <u32>keyStart) {
|
|
333
|
-
case 12: {
|
|
334
|
-
const codeS8 = load<u64>(keyStart, 0);
|
|
335
|
-
const codeS12 = load<u32>(keyStart, 8);
|
|
336
|
-
if (codeS8 == 31525674139582576 && codeS12 == 6619244) {
|
|
337
|
-
store<Array<Person>>(changetype<usize>(out), JSON.__deserialize<Array<Person>>(lastIndex, srcStart), offsetof<this>("people"));
|
|
338
|
-
keyStart = 0;
|
|
339
|
-
break;
|
|
340
|
-
} else {
|
|
341
|
-
keyStart = 0;
|
|
342
|
-
break;
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
218
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
break;
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
break;
|
|
352
|
-
}
|
|
353
|
-
} else if (code == 91) depth++;
|
|
354
|
-
srcStart += 2;
|
|
355
|
-
}
|
|
356
|
-
} else if (code == 116) {
|
|
357
|
-
if (load<u64>(srcStart) == 28429475166421108) {
|
|
358
|
-
srcStart += 8;
|
|
359
|
-
srcStart += 2;
|
|
360
|
-
keyStart = 0;
|
|
361
|
-
} else {
|
|
362
|
-
throw new Error("Expected to find 'true' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
|
|
363
|
-
}
|
|
364
|
-
} else if (code == 102) {
|
|
365
|
-
if (load<u64>(srcStart, 2) == 28429466576093281) {
|
|
366
|
-
srcStart += 10;
|
|
367
|
-
srcStart += 2;
|
|
368
|
-
keyStart = 0;
|
|
369
|
-
} else {
|
|
370
|
-
throw new Error("Expected to find 'false' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
|
|
371
|
-
}
|
|
372
|
-
} else if (code == 110) {
|
|
373
|
-
if (load<u64>(srcStart) == 30399761348886638) {
|
|
374
|
-
srcStart += 8;
|
|
375
|
-
srcStart += 2;
|
|
376
|
-
keyStart = 0;
|
|
377
|
-
}
|
|
378
|
-
} else {
|
|
379
|
-
srcStart += 2;
|
|
380
|
-
keyStart = 0;
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
return out;
|
|
385
|
-
}
|
|
386
|
-
}
|
|
219
|
+
@omitif((self: this): boolean => self.age < 18)
|
|
220
|
+
age!: i32;
|
|
387
221
|
|
|
388
222
|
|
|
389
|
-
@
|
|
390
|
-
|
|
391
|
-
|
|
223
|
+
@omitnull()
|
|
224
|
+
pos!: Vec3 | null;
|
|
225
|
+
isVerified!: boolean;
|
|
392
226
|
__SERIALIZE(ptr: usize): void {
|
|
393
|
-
bs.proposeSize(
|
|
394
|
-
|
|
395
|
-
store<
|
|
396
|
-
bs.offset +=
|
|
397
|
-
|
|
227
|
+
bs.proposeSize(160);
|
|
228
|
+
let block: usize = 0;
|
|
229
|
+
store<u16>(bs.offset, 123, 0);
|
|
230
|
+
bs.offset += 2;
|
|
231
|
+
if (!((self: this): boolean => self.age < 18)(this)) {
|
|
232
|
+
store<u64>(bs.offset, 28429415035764770, 0);
|
|
233
|
+
store<u32>(bs.offset, 3801122, 8);
|
|
234
|
+
bs.offset += 12;
|
|
235
|
+
JSON.__serialize<i32>(load<i32>(ptr, offsetof<this>("age")));
|
|
236
|
+
store<u16>(bs.offset, 44, 0);
|
|
237
|
+
bs.offset += 2;
|
|
238
|
+
}
|
|
239
|
+
if ((block = load<usize>(ptr, offsetof<this>("pos"))) !== 0) {
|
|
240
|
+
store<u64>(bs.offset, 32370099070435362, 0);
|
|
241
|
+
store<u32>(bs.offset, 3801122, 8);
|
|
242
|
+
bs.offset += 12;
|
|
243
|
+
JSON.__serialize<Vec3 | null>(load<Vec3 | null>(ptr, offsetof<this>("pos")));
|
|
244
|
+
store<u16>(bs.offset, 44, 0);
|
|
245
|
+
bs.offset += 2;
|
|
246
|
+
}
|
|
247
|
+
store<u64>(bs.offset, 32088598323265570, 0);
|
|
248
|
+
store<u64>(bs.offset, 30962384884727923, 8);
|
|
249
|
+
store<u64>(bs.offset, 9570583007002721, 16);
|
|
250
|
+
store<u16>(bs.offset, 58, 24);
|
|
251
|
+
bs.offset += 26;
|
|
252
|
+
JSON.__serialize<string | null>(load<string | null>(ptr, offsetof<this>("firstName")));
|
|
253
|
+
store<u64>(bs.offset, 27303536599629868, 0);
|
|
254
|
+
store<u64>(bs.offset, 27303407755985011, 8);
|
|
255
|
+
store<u64>(bs.offset, 16325694684725357, 16);
|
|
256
|
+
bs.offset += 24;
|
|
257
|
+
JSON.__serialize<string>(load<string>(ptr, offsetof<this>("lastName")));
|
|
258
|
+
store<u64>(bs.offset, 27303536599629868, 0);
|
|
259
|
+
store<u64>(bs.offset, 27866301874831475, 8);
|
|
260
|
+
store<u64>(bs.offset, 28429479460798580, 16);
|
|
261
|
+
store<u32>(bs.offset, 3801122, 24);
|
|
262
|
+
bs.offset += 28;
|
|
263
|
+
JSON.__serialize<Array<i32>>(load<Array<i32>>(ptr, offsetof<this>("lastActive")));
|
|
264
|
+
store<u64>(bs.offset, 32370073295519788, 0);
|
|
265
|
+
store<u64>(bs.offset, 29555362187509846, 8);
|
|
266
|
+
store<u64>(bs.offset, 28147931469643878, 16);
|
|
267
|
+
store<u32>(bs.offset, 3801122, 24);
|
|
268
|
+
bs.offset += 28;
|
|
269
|
+
JSON.__serialize<boolean>(load<boolean>(ptr, offsetof<this>("isVerified")));
|
|
398
270
|
store<u16>(bs.offset, 125, 0);
|
|
399
271
|
bs.offset += 2;
|
|
400
272
|
}
|
|
@@ -402,10 +274,8 @@ export class Response<T> {
|
|
|
402
274
|
|
|
403
275
|
@inline
|
|
404
276
|
__INITIALIZE(): this {
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
if (isDefined(this.data.__INITIALIZE)) changetype<nonnull<T | null>>(this.data).__INITIALIZE();
|
|
408
|
-
}
|
|
277
|
+
store<string>(changetype<usize>(this), "", offsetof<this>("lastName"));
|
|
278
|
+
store<Array<i32>>(changetype<usize>(this), [], offsetof<this>("lastActive"));
|
|
409
279
|
return this;
|
|
410
280
|
}
|
|
411
281
|
__DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
|
|
@@ -445,10 +315,27 @@ export class Response<T> {
|
|
|
445
315
|
const code = load<u16>(srcStart);
|
|
446
316
|
if (code == 34 && load<u16>(srcStart - 2) !== 92) {
|
|
447
317
|
switch (<u32>keyEnd - <u32>keyStart) {
|
|
448
|
-
case
|
|
449
|
-
const
|
|
450
|
-
|
|
451
|
-
|
|
318
|
+
case 20: {
|
|
319
|
+
const codeS8 = load<u64>(keyStart, 0);
|
|
320
|
+
const codeS16 = load<u64>(keyStart, 8);
|
|
321
|
+
const codeS20 = load<u32>(keyStart, 16);
|
|
322
|
+
if (codeS8 == 32370111954878566 && codeS16 == 27303545189433460 && codeS20 == 6619245) {
|
|
323
|
+
store<string | null>(changetype<usize>(out), JSON.__deserialize<string | null>(lastIndex, srcStart + 2), offsetof<this>("firstName"));
|
|
324
|
+
srcStart += 4;
|
|
325
|
+
keyStart = 0;
|
|
326
|
+
break;
|
|
327
|
+
} else {
|
|
328
|
+
srcStart += 4;
|
|
329
|
+
keyStart = 0;
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
case 16: {
|
|
335
|
+
const codeS8 = load<u64>(keyStart, 0);
|
|
336
|
+
const codeS16 = load<u64>(keyStart, 8);
|
|
337
|
+
if (codeS8 == 32651591226032236 && codeS16 == 28429440805568590) {
|
|
338
|
+
store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("lastName"));
|
|
452
339
|
srcStart += 4;
|
|
453
340
|
keyStart = 0;
|
|
454
341
|
break;
|
|
@@ -476,10 +363,10 @@ export class Response<T> {
|
|
|
476
363
|
const code = load<u16>(srcStart);
|
|
477
364
|
if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
|
|
478
365
|
switch (<u32>keyEnd - <u32>keyStart) {
|
|
479
|
-
case
|
|
480
|
-
const
|
|
481
|
-
if (
|
|
482
|
-
store<
|
|
366
|
+
case 6: {
|
|
367
|
+
const code48 = load<u64>(keyStart) & 281474976710655;
|
|
368
|
+
if (code48 == 433798447201) {
|
|
369
|
+
store<i32>(changetype<usize>(out), JSON.__deserialize<i32>(lastIndex, srcStart), offsetof<this>("age"));
|
|
483
370
|
srcStart += 2;
|
|
484
371
|
keyStart = 0;
|
|
485
372
|
break;
|
|
@@ -513,10 +400,49 @@ export class Response<T> {
|
|
|
513
400
|
if (--depth == 0) {
|
|
514
401
|
srcStart += 2;
|
|
515
402
|
switch (<u32>keyEnd - <u32>keyStart) {
|
|
516
|
-
case
|
|
517
|
-
const
|
|
518
|
-
|
|
519
|
-
|
|
403
|
+
case 20: {
|
|
404
|
+
const codeS8 = load<u64>(keyStart, 0);
|
|
405
|
+
const codeS16 = load<u64>(keyStart, 8);
|
|
406
|
+
const codeS20 = load<u32>(keyStart, 16);
|
|
407
|
+
if (codeS8 == 32370111954878566 && codeS16 == 27303545189433460 && codeS20 == 6619245) {
|
|
408
|
+
store<string | null>(changetype<usize>(out), JSON.__deserialize<string | null>(lastIndex, srcStart), offsetof<this>("firstName"));
|
|
409
|
+
keyStart = 0;
|
|
410
|
+
break;
|
|
411
|
+
} else if (codeS8 == 32651591226032236 && codeS16 == 29555370777313345 && codeS20 == 6619254) {
|
|
412
|
+
store<Array<i32>>(changetype<usize>(out), JSON.__deserialize<Array<i32>>(lastIndex, srcStart), offsetof<this>("lastActive"));
|
|
413
|
+
keyStart = 0;
|
|
414
|
+
break;
|
|
415
|
+
} else if (codeS8 == 28429342022500457 && codeS16 == 29555310648164466 && codeS20 == 6553701) {
|
|
416
|
+
store<boolean>(changetype<usize>(out), JSON.__deserialize<boolean>(lastIndex, srcStart), offsetof<this>("isVerified"));
|
|
417
|
+
keyStart = 0;
|
|
418
|
+
break;
|
|
419
|
+
} else {
|
|
420
|
+
keyStart = 0;
|
|
421
|
+
break;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
case 6: {
|
|
426
|
+
const code48 = load<u64>(keyStart) & 281474976710655;
|
|
427
|
+
if (code48 == 433798447201) {
|
|
428
|
+
store<i32>(changetype<usize>(out), JSON.__deserialize<i32>(lastIndex, srcStart), offsetof<this>("age"));
|
|
429
|
+
keyStart = 0;
|
|
430
|
+
break;
|
|
431
|
+
} else if (code48 == 493928513648) {
|
|
432
|
+
store<Vec3 | null>(changetype<usize>(out), JSON.__deserialize<Vec3 | null>(lastIndex, srcStart), offsetof<this>("pos"));
|
|
433
|
+
keyStart = 0;
|
|
434
|
+
break;
|
|
435
|
+
} else {
|
|
436
|
+
keyStart = 0;
|
|
437
|
+
break;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
case 16: {
|
|
442
|
+
const codeS8 = load<u64>(keyStart, 0);
|
|
443
|
+
const codeS16 = load<u64>(keyStart, 8);
|
|
444
|
+
if (codeS8 == 32651591226032236 && codeS16 == 28429440805568590) {
|
|
445
|
+
store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("lastName"));
|
|
520
446
|
keyStart = 0;
|
|
521
447
|
break;
|
|
522
448
|
} else {
|
|
@@ -548,10 +474,12 @@ export class Response<T> {
|
|
|
548
474
|
if (--depth == 0) {
|
|
549
475
|
srcStart += 2;
|
|
550
476
|
switch (<u32>keyEnd - <u32>keyStart) {
|
|
551
|
-
case
|
|
552
|
-
const
|
|
553
|
-
|
|
554
|
-
|
|
477
|
+
case 20: {
|
|
478
|
+
const codeS8 = load<u64>(keyStart, 0);
|
|
479
|
+
const codeS16 = load<u64>(keyStart, 8);
|
|
480
|
+
const codeS20 = load<u32>(keyStart, 16);
|
|
481
|
+
if (codeS8 == 32651591226032236 && codeS16 == 29555370777313345 && codeS20 == 6619254) {
|
|
482
|
+
store<Array<i32>>(changetype<usize>(out), JSON.__deserialize<Array<i32>>(lastIndex, srcStart), offsetof<this>("lastActive"));
|
|
555
483
|
keyStart = 0;
|
|
556
484
|
break;
|
|
557
485
|
} else {
|
|
@@ -574,10 +502,12 @@ export class Response<T> {
|
|
|
574
502
|
if (load<u64>(srcStart) == 28429475166421108) {
|
|
575
503
|
srcStart += 8;
|
|
576
504
|
switch (<u32>keyEnd - <u32>keyStart) {
|
|
577
|
-
case
|
|
578
|
-
const
|
|
579
|
-
|
|
580
|
-
|
|
505
|
+
case 20: {
|
|
506
|
+
const codeS8 = load<u64>(keyStart, 0);
|
|
507
|
+
const codeS16 = load<u64>(keyStart, 8);
|
|
508
|
+
const codeS20 = load<u32>(keyStart, 16);
|
|
509
|
+
if (codeS8 == 28429342022500457 && codeS16 == 29555310648164466 && codeS20 == 6553701) {
|
|
510
|
+
store<boolean>(changetype<usize>(out), true, offsetof<this>("isVerified"));
|
|
581
511
|
srcStart += 2;
|
|
582
512
|
keyStart = 0;
|
|
583
513
|
break;
|
|
@@ -600,10 +530,12 @@ export class Response<T> {
|
|
|
600
530
|
if (load<u64>(srcStart, 2) == 28429466576093281) {
|
|
601
531
|
srcStart += 10;
|
|
602
532
|
switch (<u32>keyEnd - <u32>keyStart) {
|
|
603
|
-
case
|
|
604
|
-
const
|
|
605
|
-
|
|
606
|
-
|
|
533
|
+
case 20: {
|
|
534
|
+
const codeS8 = load<u64>(keyStart, 0);
|
|
535
|
+
const codeS16 = load<u64>(keyStart, 8);
|
|
536
|
+
const codeS20 = load<u32>(keyStart, 16);
|
|
537
|
+
if (codeS8 == 28429342022500457 && codeS16 == 29555310648164466 && codeS20 == 6553701) {
|
|
538
|
+
store<boolean>(changetype<usize>(out), false, offsetof<this>("isVerified"));
|
|
607
539
|
srcStart += 2;
|
|
608
540
|
keyStart = 0;
|
|
609
541
|
break;
|
|
@@ -626,10 +558,26 @@ export class Response<T> {
|
|
|
626
558
|
if (load<u64>(srcStart) == 30399761348886638) {
|
|
627
559
|
srcStart += 8;
|
|
628
560
|
switch (<u32>keyEnd - <u32>keyStart) {
|
|
629
|
-
case
|
|
630
|
-
const
|
|
631
|
-
if (
|
|
632
|
-
store<usize>(changetype<usize>(out), 0, offsetof<this>("
|
|
561
|
+
case 6: {
|
|
562
|
+
const code48 = load<u64>(keyStart) & 281474976710655;
|
|
563
|
+
if (code48 == 493928513648) {
|
|
564
|
+
store<usize>(changetype<usize>(out), 0, offsetof<this>("pos"));
|
|
565
|
+
srcStart += 2;
|
|
566
|
+
keyStart = 0;
|
|
567
|
+
break;
|
|
568
|
+
} else {
|
|
569
|
+
srcStart += 2;
|
|
570
|
+
keyStart = 0;
|
|
571
|
+
break;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
case 20: {
|
|
576
|
+
const codeS8 = load<u64>(keyStart, 0);
|
|
577
|
+
const codeS16 = load<u64>(keyStart, 8);
|
|
578
|
+
const codeS20 = load<u32>(keyStart, 16);
|
|
579
|
+
if (codeS8 == 32370111954878566 && codeS16 == 27303545189433460 && codeS20 == 6619245) {
|
|
580
|
+
store<usize>(changetype<usize>(out), 0, offsetof<this>("firstName"));
|
|
633
581
|
srcStart += 2;
|
|
634
582
|
keyStart = 0;
|
|
635
583
|
break;
|
|
@@ -655,6 +603,19 @@ export class Response<T> {
|
|
|
655
603
|
return out;
|
|
656
604
|
}
|
|
657
605
|
}
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
606
|
+
const player: Player = {
|
|
607
|
+
firstName: "Jairus",
|
|
608
|
+
lastName: "Tanaka",
|
|
609
|
+
lastActive: [3, 9, 2025],
|
|
610
|
+
age: 18,
|
|
611
|
+
pos: {
|
|
612
|
+
x: 3.4,
|
|
613
|
+
y: 1.2,
|
|
614
|
+
z: 8.3,
|
|
615
|
+
},
|
|
616
|
+
isVerified: true,
|
|
617
|
+
};
|
|
618
|
+
const serialized = JSON.stringify<Player>(player);
|
|
619
|
+
const deserialized = JSON.parse<Player>(serialized);
|
|
620
|
+
console.log("Serialized " + serialized);
|
|
621
|
+
console.log("Deserialized " + JSON.stringify(deserialized));
|