json-as 1.1.19 → 1.1.21

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,609 +1,16 @@
1
- import { JSON } from "../assembly/index";
2
- import { bs } from "../lib/as-bs";
3
-
4
- @json
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;
25
- }
26
-
27
- @inline
28
- __INITIALIZE(): this {
29
- return this;
30
- }
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
- }
203
- return out;
204
- }
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
- pos!: Vec3 | null;
218
- isVerified!: boolean;
219
- __SERIALIZE(ptr: usize): void {
220
- bs.proposeSize(158);
221
- store<u16>(bs.offset, 123, 0);
222
- bs.offset += 2;
223
- if (!((self: this): boolean => self.age < 18)(this)) {
224
- store<u64>(bs.offset, 28429415035764770, 0);
225
- store<u32>(bs.offset, 3801122, 8);
226
- bs.offset += 12;
227
- JSON.__serialize<i32>(load<i32>(ptr, offsetof<this>("age")));
228
- store<u16>(bs.offset, 44, 0);
229
- bs.offset += 2;
230
- }
231
- store<u64>(bs.offset, 32088598323265570, 0);
232
- store<u64>(bs.offset, 30962384884727923, 8);
233
- store<u64>(bs.offset, 9570583007002721, 16);
234
- store<u16>(bs.offset, 58, 24);
235
- bs.offset += 26;
236
- JSON.__serialize<string | null>(load<string | null>(ptr, offsetof<this>("firstName")));
237
- store<u64>(bs.offset, 27303536599629868, 0);
238
- store<u64>(bs.offset, 27303407755985011, 8);
239
- store<u64>(bs.offset, 16325694684725357, 16);
240
- bs.offset += 24;
241
- JSON.__serialize<string>(load<string>(ptr, offsetof<this>("lastName")));
242
- store<u64>(bs.offset, 27303536599629868, 0);
243
- store<u64>(bs.offset, 27866301874831475, 8);
244
- store<u64>(bs.offset, 28429479460798580, 16);
245
- store<u32>(bs.offset, 3801122, 24);
246
- bs.offset += 28;
247
- JSON.__serialize<Array<i32>>(load<Array<i32>>(ptr, offsetof<this>("lastActive")));
248
- store<u64>(bs.offset, 31244203453448236, 0);
249
- store<u32>(bs.offset, 2228339, 8);
250
- store<u16>(bs.offset, 58, 12);
251
- bs.offset += 14;
252
- JSON.__serialize<Vec3 | null>(load<Vec3 | null>(ptr, offsetof<this>("pos")));
253
- store<u64>(bs.offset, 32370073295519788, 0);
254
- store<u64>(bs.offset, 29555362187509846, 8);
255
- store<u64>(bs.offset, 28147931469643878, 16);
256
- store<u32>(bs.offset, 3801122, 24);
257
- bs.offset += 28;
258
- JSON.__serialize<boolean>(load<boolean>(ptr, offsetof<this>("isVerified")));
259
- store<u16>(bs.offset, 125, 0);
260
- bs.offset += 2;
261
- }
262
-
263
- @inline
264
- __INITIALIZE(): this {
265
- store<string>(changetype<usize>(this), "", offsetof<this>("lastName"));
266
- store<Array<i32>>(changetype<usize>(this), [], offsetof<this>("lastActive"));
267
- return this;
268
- }
269
- __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
270
- let keyStart: usize = 0;
271
- let keyEnd: usize = 0;
272
- let isKey = false;
273
- let depth: i32 = 0;
274
- let lastIndex: usize = 0;
275
- while (srcStart < srcEnd && JSON.Util.isSpace(load<u16>(srcStart))) srcStart += 2;
276
- while (srcEnd > srcStart && JSON.Util.isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
277
- if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
278
- if (load<u16>(srcStart) != 123) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
279
- if (load<u16>(srcEnd - 2) != 125) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
280
- srcStart += 2;
281
- while (srcStart < srcEnd) {
282
- let code = load<u16>(srcStart);
283
- while (JSON.Util.isSpace(code)) code = load<u16>((srcStart += 2));
284
- if (keyStart == 0) {
285
- if (code == 34 && load<u16>(srcStart - 2) !== 92) {
286
- if (isKey) {
287
- keyStart = lastIndex;
288
- keyEnd = srcStart;
289
- while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
290
- if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
291
- isKey = false;
292
- } else {
293
- isKey = true;
294
- lastIndex = srcStart + 2;
295
- }
296
- }
297
- srcStart += 2;
298
- } else {
299
- if (code == 34) {
300
- lastIndex = srcStart;
301
- srcStart += 2;
302
- while (srcStart < srcEnd) {
303
- const code = load<u16>(srcStart);
304
- if (code == 34 && load<u16>(srcStart - 2) !== 92) {
305
- switch (<u32>keyEnd - <u32>keyStart) {
306
- case 20: {
307
- const codeS8 = load<u64>(keyStart, 0);
308
- const codeS16 = load<u64>(keyStart, 8);
309
- const codeS20 = load<u32>(keyStart, 16);
310
- if (codeS8 == 32370111954878566 && codeS16 == 27303545189433460 && codeS20 == 6619245) {
311
- store<string | null>(changetype<usize>(out), JSON.__deserialize<string | null>(lastIndex, srcStart + 2), offsetof<this>("firstName"));
312
- srcStart += 4;
313
- keyStart = 0;
314
- break;
315
- } else {
316
- srcStart += 4;
317
- keyStart = 0;
318
- break;
319
- }
320
- }
321
-
322
- case 16: {
323
- const codeS8 = load<u64>(keyStart, 0);
324
- const codeS16 = load<u64>(keyStart, 8);
325
- if (codeS8 == 32651591226032236 && codeS16 == 28429440805568590) {
326
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("lastName"));
327
- srcStart += 4;
328
- keyStart = 0;
329
- break;
330
- } else {
331
- srcStart += 4;
332
- keyStart = 0;
333
- break;
334
- }
335
- }
336
-
337
- default: {
338
- srcStart += 4;
339
- keyStart = 0;
340
- break;
341
- }
342
- }
343
- break;
344
- }
345
- srcStart += 2;
346
- }
347
- } else if (code - 48 <= 9 || code == 45) {
348
- lastIndex = srcStart;
349
- srcStart += 2;
350
- while (srcStart < srcEnd) {
351
- const code = load<u16>(srcStart);
352
- if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
353
- switch (<u32>keyEnd - <u32>keyStart) {
354
- case 6: {
355
- const code48 = load<u64>(keyStart) & 281474976710655;
356
- if (code48 == 433798447201) {
357
- store<i32>(changetype<usize>(out), JSON.__deserialize<i32>(lastIndex, srcStart), offsetof<this>("age"));
358
- srcStart += 2;
359
- keyStart = 0;
360
- break;
361
- } else {
362
- srcStart += 2;
363
- keyStart = 0;
364
- break;
365
- }
366
- }
367
-
368
- default: {
369
- srcStart += 2;
370
- keyStart = 0;
371
- break;
372
- }
373
- }
374
- break;
375
- }
376
- srcStart += 2;
377
- }
378
- } else if (code == 123) {
379
- lastIndex = srcStart;
380
- depth++;
381
- srcStart += 2;
382
- while (srcStart < srcEnd) {
383
- const code = load<u16>(srcStart);
384
- if (code == 34) {
385
- srcStart += 2;
386
- while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
387
- } else if (code == 125) {
388
- if (--depth == 0) {
389
- srcStart += 2;
390
- switch (<u32>keyEnd - <u32>keyStart) {
391
- case 20: {
392
- const codeS8 = load<u64>(keyStart, 0);
393
- const codeS16 = load<u64>(keyStart, 8);
394
- const codeS20 = load<u32>(keyStart, 16);
395
- if (codeS8 == 32370111954878566 && codeS16 == 27303545189433460 && codeS20 == 6619245) {
396
- store<string | null>(changetype<usize>(out), JSON.__deserialize<string | null>(lastIndex, srcStart), offsetof<this>("firstName"));
397
- keyStart = 0;
398
- break;
399
- } else if (codeS8 == 32651591226032236 && codeS16 == 29555370777313345 && codeS20 == 6619254) {
400
- store<Array<i32>>(changetype<usize>(out), JSON.__deserialize<Array<i32>>(lastIndex, srcStart), offsetof<this>("lastActive"));
401
- keyStart = 0;
402
- break;
403
- } else if (codeS8 == 28429342022500457 && codeS16 == 29555310648164466 && codeS20 == 6553701) {
404
- store<boolean>(changetype<usize>(out), JSON.__deserialize<boolean>(lastIndex, srcStart), offsetof<this>("isVerified"));
405
- keyStart = 0;
406
- break;
407
- } else {
408
- keyStart = 0;
409
- break;
410
- }
411
- }
412
-
413
- case 6: {
414
- const code48 = load<u64>(keyStart) & 281474976710655;
415
- if (code48 == 433798447201) {
416
- store<i32>(changetype<usize>(out), JSON.__deserialize<i32>(lastIndex, srcStart), offsetof<this>("age"));
417
- keyStart = 0;
418
- break;
419
- } else if (code48 == 493928513648) {
420
- store<Vec3 | null>(changetype<usize>(out), JSON.__deserialize<Vec3 | null>(lastIndex, srcStart), offsetof<this>("pos"));
421
- keyStart = 0;
422
- break;
423
- } else {
424
- keyStart = 0;
425
- break;
426
- }
427
- }
428
-
429
- case 16: {
430
- const codeS8 = load<u64>(keyStart, 0);
431
- const codeS16 = load<u64>(keyStart, 8);
432
- if (codeS8 == 32651591226032236 && codeS16 == 28429440805568590) {
433
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("lastName"));
434
- keyStart = 0;
435
- break;
436
- } else {
437
- keyStart = 0;
438
- break;
439
- }
440
- }
441
-
442
- default: {
443
- keyStart = 0;
444
- break;
445
- }
446
- }
447
- break;
448
- }
449
- } else if (code == 123) depth++;
450
- srcStart += 2;
451
- }
452
- } else if (code == 91) {
453
- lastIndex = srcStart;
454
- depth++;
455
- srcStart += 2;
456
- while (srcStart < srcEnd) {
457
- const code = load<u16>(srcStart);
458
- if (code == 34) {
459
- srcStart += 2;
460
- while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
461
- } else if (code == 93) {
462
- if (--depth == 0) {
463
- srcStart += 2;
464
- switch (<u32>keyEnd - <u32>keyStart) {
465
- case 20: {
466
- const codeS8 = load<u64>(keyStart, 0);
467
- const codeS16 = load<u64>(keyStart, 8);
468
- const codeS20 = load<u32>(keyStart, 16);
469
- if (codeS8 == 32651591226032236 && codeS16 == 29555370777313345 && codeS20 == 6619254) {
470
- store<Array<i32>>(changetype<usize>(out), JSON.__deserialize<Array<i32>>(lastIndex, srcStart), offsetof<this>("lastActive"));
471
- keyStart = 0;
472
- break;
473
- } else {
474
- keyStart = 0;
475
- break;
476
- }
477
- }
478
-
479
- default: {
480
- keyStart = 0;
481
- break;
482
- }
483
- }
484
- break;
485
- }
486
- } else if (code == 91) depth++;
487
- srcStart += 2;
488
- }
489
- } else if (code == 116) {
490
- if (load<u64>(srcStart) == 28429475166421108) {
491
- srcStart += 8;
492
- switch (<u32>keyEnd - <u32>keyStart) {
493
- case 20: {
494
- const codeS8 = load<u64>(keyStart, 0);
495
- const codeS16 = load<u64>(keyStart, 8);
496
- const codeS20 = load<u32>(keyStart, 16);
497
- if (codeS8 == 28429342022500457 && codeS16 == 29555310648164466 && codeS20 == 6553701) {
498
- store<boolean>(changetype<usize>(out), true, offsetof<this>("isVerified"));
499
- srcStart += 2;
500
- keyStart = 0;
501
- break;
502
- } else {
503
- srcStart += 2;
504
- keyStart = 0;
505
- break;
506
- }
507
- }
508
-
509
- default: {
510
- srcStart += 2;
511
- keyStart = 0;
512
- }
513
- }
514
- } else {
515
- throw new Error("Expected to find 'true' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
516
- }
517
- } else if (code == 102) {
518
- if (load<u64>(srcStart, 2) == 28429466576093281) {
519
- srcStart += 10;
520
- switch (<u32>keyEnd - <u32>keyStart) {
521
- case 20: {
522
- const codeS8 = load<u64>(keyStart, 0);
523
- const codeS16 = load<u64>(keyStart, 8);
524
- const codeS20 = load<u32>(keyStart, 16);
525
- if (codeS8 == 28429342022500457 && codeS16 == 29555310648164466 && codeS20 == 6553701) {
526
- store<boolean>(changetype<usize>(out), false, offsetof<this>("isVerified"));
527
- srcStart += 2;
528
- keyStart = 0;
529
- break;
530
- } else {
531
- srcStart += 2;
532
- keyStart = 0;
533
- break;
534
- }
535
- }
536
-
537
- default: {
538
- srcStart += 2;
539
- keyStart = 0;
540
- }
541
- }
542
- } else {
543
- throw new Error("Expected to find 'false' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
544
- }
545
- } else if (code == 110) {
546
- if (load<u64>(srcStart) == 30399761348886638) {
547
- srcStart += 8;
548
- switch (<u32>keyEnd - <u32>keyStart) {
549
- case 20: {
550
- const codeS8 = load<u64>(keyStart, 0);
551
- const codeS16 = load<u64>(keyStart, 8);
552
- const codeS20 = load<u32>(keyStart, 16);
553
- if (codeS8 == 32370111954878566 && codeS16 == 27303545189433460 && codeS20 == 6619245) {
554
- store<usize>(changetype<usize>(out), 0, offsetof<this>("firstName"));
555
- srcStart += 2;
556
- keyStart = 0;
557
- break;
558
- } else {
559
- srcStart += 2;
560
- keyStart = 0;
561
- break;
562
- }
563
- }
564
-
565
- case 6: {
566
- const code48 = load<u64>(keyStart) & 281474976710655;
567
- if (code48 == 493928513648) {
568
- store<usize>(changetype<usize>(out), 0, offsetof<this>("pos"));
569
- srcStart += 2;
570
- keyStart = 0;
571
- break;
572
- } else {
573
- srcStart += 2;
574
- keyStart = 0;
575
- break;
576
- }
577
- }
578
-
579
- default: {
580
- srcStart += 2;
581
- keyStart = 0;
582
- }
583
- }
584
- }
585
- } else {
586
- srcStart += 2;
587
- keyStart = 0;
588
- }
589
- }
590
- }
591
- return out;
592
- }
593
- }
594
- const player: Player = {
595
- firstName: "Jairus",
596
- lastName: "Tanaka",
597
- lastActive: [3, 9, 2025],
598
- age: 18,
599
- pos: {
600
- x: 3.4,
601
- y: 1.2,
602
- z: 8.3,
603
- },
604
- isVerified: true,
605
- };
606
- const serialized = JSON.stringify<Player>(player);
607
- const deserialized = JSON.parse<Player>(serialized);
608
- console.log("Serialized " + serialized);
609
- console.log("Deserialized " + JSON.stringify(deserialized));
1
+ import { JSON } from ".";
2
+ const o = new JSON.Obj();
3
+ o.set("schema", "http://json-schema.org/draft-07/schema#");
4
+ o.set("additionalProperties", false);
5
+ o.set("properties", new JSON.Obj());
6
+ o.get("properties")!.as<JSON.Obj>().set("duration", new JSON.Obj());
7
+ o.get("properties")!.as<JSON.Obj>().get("duration")!.as<JSON.Obj>().set("default", 10);
8
+ o.get("properties")!.as<JSON.Obj>().get("duration")!.as<JSON.Obj>().set("description", "Duration of the operation in seconds");
9
+ o.get("properties")!.as<JSON.Obj>().get("duration")!.as<JSON.Obj>().set("type", "number");
10
+ o.get("properties")!.as<JSON.Obj>().set("steps", new JSON.Obj());
11
+ o.get("properties")!.as<JSON.Obj>().get("steps")!.as<JSON.Obj>().set("default", 5);
12
+ o.get("properties")!.as<JSON.Obj>().get("steps")!.as<JSON.Obj>().set("description", "Number of steps in the operation");
13
+ o.get("properties")!.as<JSON.Obj>().get("steps")!.as<JSON.Obj>().set("type", "number");
14
+ o.set("type", "object");
15
+ console.log(o.toString());
16
+ console.log((o.toString().length << 1).toString() + " == 596");
package/assembly/test.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { JSON } from ".";
2
+
1
3
 
2
4
  @json
3
5
  class Vec3 {
@@ -6,15 +6,22 @@ const v2 = '"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"';
6
6
  bench(
7
7
  "Serialize Alphabet",
8
8
  () => {
9
- JSON.stringify(v1);
9
+ blackbox(JSON.stringify(blackbox(v1)));
10
10
  },
11
11
  64_000_00,
12
+ v1.length << 1,
12
13
  );
13
14
 
14
15
  bench(
15
16
  "Deserialize Alphabet",
16
17
  () => {
17
- JSON.parse(v2);
18
+ blackbox(JSON.parse(blackbox(v2)));
18
19
  },
19
20
  64_000_00,
21
+ v2.length << 1,
20
22
  );
23
+
24
+ function blackbox<T>(value: T): T {
25
+ (globalThis as any).__blackhole = value;
26
+ return globalThis.__blackhole;
27
+ }